Files
Agents/api/v1/chat.py
T

70 lines
1.7 KiB
Python

from fastapi import APIRouter, Body, Depends
from openai import OpenAI
from pydantic import BaseModel
from api.dependencies import get_llm_client
router = APIRouter()
class ChatRequest(BaseModel):
message: str
session_id: str | None = None
def run_agent(client: OpenAI, message: str, session_id: str | None = None) -> str:
response = client.chat.completions.create(
model="deepseek-chat",
messages=[
{"role": "system", "content": "You are a helpful agent."},
{"role": "user", "content": message},
],
)
return response.choices[0].message.content
@router.get("/")
def root():
return {"status": "ok"}
@router.post("/chat")
def chat(req: ChatRequest, client: OpenAI = Depends(get_llm_client)):
response = run_agent(client, req.message, req.session_id)
return {"response": response, "session_id": req.session_id}
@router.get("/models")
def list_models():
return {
"object": "list",
"data": [
{
"id": "agent-model",
"object": "model",
"created": 0,
"owned_by": "local-agent",
}
],
}
@router.post("/chat/completions")
def chat_completions(
payload: dict = Body(...),
client: OpenAI = Depends(get_llm_client),
):
messages = payload["messages"]
user_message = messages[-1]["content"]
response = run_agent(client, user_message)
return {
"id": "chatcmpl-local",
"object": "chat.completion",
"choices": [
{
"index": 0,
"message": {"role": "assistant", "content": response},
}
],
}