CoolFace
Apppublic

Dayende/rag-administration-bf

sourceHugging Faceupdated 11mo agoView on Hugging Face
1likes
api.py63 linesDownload Raw Back to root
1from fastapi import FastAPI2from pydantic import BaseModel3from src.rag.retriever import Retriever4from src.rag.generator import Generator5import uvicorn6import os7from fastapi.middleware.cors import CORSMiddleware8from typing import List, Dict, Any9 10# ... (Vérification 'qdrant_data' et chargement des modèles) ...11print("Initialisation du Retriever et du Generator...")12retriever = Retriever()13generator = Generator() # Utilise flan-t5-base14print("✅ API RAG prête à l'emploi.")15 16app = FastAPI(title="API RAG Administration BF")17 18# ... (Configuration CORS - C'est très important, gardez-le) ...19app.add_middleware(20    CORSMiddleware,21    allow_origins=["*"], 22    allow_credentials=True,23    allow_methods=["*"],24    allow_headers=["*"],25)26 27 28# Un endpoint "hello world" à la racine (/)29@app.get("/")30def read_root():31    """Endpoint racine pour vérifier que l'API est en ligne."""32    return {"message": "Bonjour ! C'est l'API RAG. Je suis prêt à travailler. \n Pour acceder à mon GUI ici: https://huggingface.co/spaces/Dayende/frontend-rag"}33# --------------------34 35class Query(BaseModel):36    question: str37    top_k: int = 2 38 39class Source(BaseModel):40    titre: str | None41    url: str | None42 43class Response(BaseModel):44    answer: str45    sources: List[Source]46 47 48@app.post("/generate", response_model=Response)49def ask_rag_endpoint(query: Query):50    if not query.question:51        return {"answer": "Veuillez poser une question.", "sources": []}52    53    docs = retriever.retrieve(query.question, top_k=1)54    (answer_text, source_doc) = generator.generate(query.question, docs)55    56    sources_list = []57    if source_doc:58        sources_list.append(Source(59            titre=source_doc.get("titre", "Source inconnue"),60            url=source_doc.get("url", "#")61        ))62 63    return Response(answer=answer_text, sources=sources_list)