| from fastapi import APIRouter, HTTPException |
| from pydantic import BaseModel |
| from typing import Optional |
|
|
| from src.services.rag_service import rag_service |
|
|
| router = APIRouter() |
|
|
| class ChatRequest(BaseModel): |
| question: str |
| highlighted_text: Optional[str] = None |
|
|
| class ChatResponse(BaseModel): |
| answer: str |
|
|
| @router.post("/chat", response_model=ChatResponse, tags=["Chat"]) |
| async def chat_endpoint(request: ChatRequest): |
| """ |
| Handles user questions by passing them to the RAG service to generate an answer. |
| """ |
| try: |
| answer = rag_service.get_answer( |
| question=request.question, |
| highlighted_text=request.highlighted_text |
| ) |
| return ChatResponse(answer=answer) |
| except Exception as e: |
| |
| print(f"An unexpected error occurred in the chat endpoint: {e}") |
| raise HTTPException(status_code=500, detail="An internal error occurred.") |
|
|
|
|