Files
Unraid-AppOps-Gateway-Public/backend/app/api/routes_knowledge.py
T

42 lines
1.2 KiB
Python

from __future__ import annotations
from fastapi import APIRouter, Depends, HTTPException
from pydantic import BaseModel, ConfigDict, Field
from sqlmodel import Session
from ..core.security import operator_auth
from ..db.session import get_session
from ..services import knowledge_service
router = APIRouter(prefix="/api/ai/rag", dependencies=[Depends(operator_auth)])
class RagQueryRequest(BaseModel):
model_config = ConfigDict(extra="forbid")
question: str = Field(min_length=2, max_length=500)
limit: int = Field(default=6, ge=1, le=10)
@router.get("/status")
def status(session: Session = Depends(get_session)):
return knowledge_service.index_status(session)
@router.post("/reindex")
def reindex(session: Session = Depends(get_session)):
return knowledge_service.rebuild_index(session)
@router.post("/query")
def query(payload: RagQueryRequest, session: Session = Depends(get_session)):
try:
return knowledge_service.query(session, payload.question, limit=payload.limit)
except ValueError as exc:
raise HTTPException(status_code=422, detail=str(exc)) from exc
@router.get("/evaluate")
def evaluate(session: Session = Depends(get_session)):
return knowledge_service.evaluate_retrieval(session)