ChatbotRAG / chat_routes_integration.py
minhvtt's picture
Upload 14 files
91fe002 verified
# Integration code để thêm vào main.py
# ADD THIS IMPORT near line 20:
from chat_endpoint import chat_endpoint
# ADD THESE ROUTES before "if __name__ == '__main__':" (around line 1000):
@app.post("/chat", response_model=ChatResponse)
async def chat(request: ChatRequest):
"""
Multi-turn conversational chatbot với RAG + Function Calling
Features:
- Server-side session management
- Conversation history tracking
- RAG context retrieval
- Function calling (API integration)
Example:
```
# First message - creates session
POST /chat
{
"message": "Tìm sự kiện hòa nhạc",
"use_rag": true
}
Response: { "session_id": "abc-123", ... }
# Follow-up message - uses session
POST /chat
{
"message": "Ngày tổ chức chính xác là khi nào?",
"session_id": "abc-123"
}
# Bot understands context và calls API nếu cần
```
"""
return await chat_endpoint(
request=request,
conversation_service=conversation_service,
tools_service=tools_service,
advanced_rag=advanced_rag,
embedding_service=embedding_service,
qdrant_service=qdrant_service,
chat_history_collection=chat_history_collection,
hf_token=hf_token
)
@app.post("/chat/clear-session")
async def clear_chat_session(session_id: str):
"""
Clear conversation history cho một session
Args:
session_id: Session identifier to clear
Returns:
Success message
Example:
```
POST /chat/clear-session?session_id=abc-123
```
"""
success = conversation_service.clear_session(session_id)
if success:
return {
"success": True,
"message": f"Session {session_id} cleared successfully"
}
else:
raise HTTPException(
status_code=404,
detail=f"Session {session_id} not found or already cleared"
)
@app.get("/chat/session/{session_id}")
async def get_session_info(session_id: str):
"""
Get thông tin về một conversation session
Args:
session_id: Session identifier
Returns:
Session metadata và message count
Example:
```
GET /chat/session/abc-123
```
"""
session = conversation_service.get_session_info(session_id)
if not session:
raise HTTPException(
status_code=404,
detail=f"Session {session_id} not found"
)
# Get message count
history = conversation_service.get_conversation_history(
session_id,
include_metadata=True
)
return {
"session_id": session["session_id"],
"created_at": session["created_at"],
"updated_at": session["updated_at"],
"message_count": len(history),
"metadata": session.get("metadata", {})
}