33 lines
708 B
Python
33 lines
708 B
Python
from fastapi import APIRouter, HTTPException
|
|
from pydantic import BaseModel
|
|
|
|
from api.services.ai import chat
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
class Message(BaseModel):
|
|
role: str
|
|
content: str
|
|
|
|
|
|
class ChatRequest(BaseModel):
|
|
messages: list[Message]
|
|
context: dict | None = None
|
|
|
|
|
|
class ChatResponse(BaseModel):
|
|
reply: str
|
|
|
|
|
|
@router.post("/chat", response_model=ChatResponse)
|
|
async def chat_endpoint(request: ChatRequest):
|
|
try:
|
|
reply = await chat(
|
|
messages=[m.model_dump() for m in request.messages],
|
|
context=request.context,
|
|
)
|
|
return ChatResponse(reply=reply)
|
|
except Exception as e:
|
|
raise HTTPException(status_code=500, detail=str(e))
|