tungtung-chatbot / app /api /chat.py
diminch's picture
Deploy chatbot version 1
eaf961b
from fastapi import APIRouter, HTTPException
from pydantic import BaseModel
from app.llm.gemini import GeminiProvider
from app.rag.retriever import retrieve_documents
from typing import List, Optional
router = APIRouter()
llm_provider = GeminiProvider()
class ChatRequest(BaseModel):
message: str
history: Optional[List[dict]] = []
user_role: str = "general"
class ChatResponse(BaseModel):
reply: str
@router.post("/message", response_model=ChatResponse)
async def chat(request: ChatRequest):
try:
search_query = f"Trả lời cho đối tượng {request.user_role}: {request.message}"
context_docs = retrieve_documents(search_query) # Tìm bằng query đã mở rộng
context_text = "\n\n".join(context_docs) if context_docs else "Không có tài liệu cụ thể."
reply_text = llm_provider.generate_response(
context=context_text,
question=request.message,
history=request.history,
user_role=request.user_role
)
return ChatResponse(reply=reply_text)
except Exception as e:
print(f"Error processing chat: {str(e)}")
raise HTTPException(status_code=500, detail="Lỗi hệ thống khi xử lý tin nhắn")