Spaces:
Running
Running
| """ | |
| Pydantic request/response models for the Kerdos AI RAG API. | |
| """ | |
| from __future__ import annotations | |
| from typing import List, Optional | |
| from pydantic import BaseModel, Field | |
| # ─── Session ──────────────────────────────────────────────────────────────── | |
| class SessionCreateResponse(BaseModel): | |
| session_id: str = Field(..., description="Unique session identifier") | |
| message: str = Field(default="Session created successfully") | |
| class SessionStatusResponse(BaseModel): | |
| session_id: str | |
| document_count: int = Field(..., description="Number of uploaded documents") | |
| chunk_count: int = Field(..., description="Number of indexed text chunks") | |
| history_length: int = Field(..., description="Number of turns in conversation history") | |
| created_at: str | |
| expires_at: str | |
| # ─── Documents ────────────────────────────────────────────────────────────── | |
| class IndexResponse(BaseModel): | |
| session_id: str | |
| indexed_files: List[str] = Field(..., description="Names of successfully indexed files") | |
| failed_files: List[str] = Field(default_factory=list, description="Files that failed to parse") | |
| chunk_count: int = Field(..., description="Total chunks in FAISS index") | |
| message: str = Field(default="Documents indexed successfully") | |
| # ─── Chat ──────────────────────────────────────────────────────────────────── | |
| class Source(BaseModel): | |
| filename: str | |
| chunk_index: int | |
| excerpt: str = Field(..., description="Short preview of the retrieved chunk") | |
| class ChatRequest(BaseModel): | |
| question: str = Field(..., min_length=1, description="The question to ask about your documents") | |
| hf_token: str = Field(..., description="Hugging Face API token (Write access required for Llama 3)") | |
| top_k: int = Field(default=5, ge=1, le=20, description="Number of chunks to retrieve") | |
| temperature: float = Field(default=0.3, ge=0.0, le=1.0) | |
| max_new_tokens: int = Field(default=512, ge=64, le=2048) | |
| class ChatResponse(BaseModel): | |
| session_id: str | |
| question: str | |
| answer: str | |
| sources: List[Source] = Field(default_factory=list) | |
| model: str = Field(default="meta-llama/Llama-3.1-8B-Instruct") | |
| # ─── Health ────────────────────────────────────────────────────────────────── | |
| class HealthResponse(BaseModel): | |
| status: str = "ok" | |
| version: str | |
| uptime_seconds: float | |
| active_sessions: int | |
| # ─── Generic ───────────────────────────────────────────────────────────────── | |
| class MessageResponse(BaseModel): | |
| message: str | |