arxplorer / src /schema /chat.py
Subhadeep Mandal
Fresh deploy
54eb2ce
Raw
History Blame Contribute Delete
1.46 kB
from pydantic import BaseModel, Field
from typing import Optional
from .user_settings import ApiKeyItem
class ChatQueryRequest(BaseModel):
"""Request model for chat queries."""
query: str = Field(..., description="The user's question or query")
paper_id: str = Field(..., description="The paper ID to query against")
session_id: int = Field(
..., description="The session/thread ID for conversation history"
)
model_name: str = Field(default="gpt-4o-mini", description="The LLM model to use")
temperature: float = Field(
default=0.7, ge=0.0, le=2.0, description="Model temperature"
)
max_tokens: int = Field(
default=2048, ge=1, le=8192, description="Maximum tokens to generate"
)
top_k: int = Field(
default=5, ge=1, le=20, description="Number of documents to retrieve"
)
use_web_search: bool = Field(default=False, description="Whether to use web search")
web_search_topic: str = Field(default="general", description="Topic for web search")
api_keys_encrypted: Optional[list[ApiKeyItem]] = Field(
None, description="List of encrypted API keys from user settings"
)
class ChatQueryResponse(BaseModel):
"""Response model for chat queries."""
session_id: int
query: str
response: str
model_used: str
tokens_used: Optional[dict] = None
class Config:
from_attributes = True