Spaces:
Sleeping
Sleeping
| from fastapi import APIRouter, HTTPException, Query | |
| from pydantic import BaseModel | |
| from typing import Optional | |
| from app.services.prediction_service import predict_answer | |
| router = APIRouter() | |
| class PredictionRequest(BaseModel): | |
| user_input: str | |
| class PredictionResponse(BaseModel): | |
| status: str | |
| answer: Optional[str] = None | |
| score: Optional[str] = None | |
| message: Optional[str] = None | |
| async def get_prediction( | |
| request: PredictionRequest, | |
| threshold_q: float = Query(0.7, description="Threshold for question matching"), | |
| threshold_a: float = Query(0.65, description="Threshold for answer matching"), | |
| ): | |
| """ | |
| Predict an answer based on user input. | |
| - **user_input**: The user's question or input text | |
| - **threshold_q**: Threshold for question matching (default: 0.7) | |
| - **threshold_a**: Threshold for answer matching (default: 0.65) | |
| Returns the predicted answer and match type. | |
| """ | |
| result = predict_answer(request.user_input, threshold_q, threshold_a) | |
| if result["status"] == "error": | |
| raise HTTPException(status_code=500, detail=result["message"]) | |
| return result | |