35 lines
781 B
Python
35 lines
781 B
Python
|
|
from typing import Dict, Any, Optional
|
||
|
|
from pydantic import BaseModel
|
||
|
|
|
||
|
|
|
||
|
|
class UserMessage(BaseModel):
|
||
|
|
content: str
|
||
|
|
timestamp: Optional[str] = None
|
||
|
|
|
||
|
|
|
||
|
|
class AssistantMessage(BaseModel):
|
||
|
|
content: str
|
||
|
|
citations_mapping_csv: Optional[str] = None
|
||
|
|
timestamp: Optional[str] = None
|
||
|
|
|
||
|
|
|
||
|
|
class ToolMessage(BaseModel):
|
||
|
|
tool_name: str
|
||
|
|
tool_call_id: str
|
||
|
|
content: str # Usually JSON string of results
|
||
|
|
timestamp: Optional[str] = None
|
||
|
|
|
||
|
|
|
||
|
|
class ChatRequest(BaseModel):
|
||
|
|
session_id: str
|
||
|
|
messages: list[Dict[str, Any]]
|
||
|
|
client_hints: Optional[Dict[str, Any]] = None
|
||
|
|
|
||
|
|
|
||
|
|
class ChatResponse(BaseModel):
|
||
|
|
"""Base response for non-streaming endpoints"""
|
||
|
|
answer: str
|
||
|
|
citations_mapping_csv: str
|
||
|
|
tool_results: list[Dict[str, Any]]
|
||
|
|
session_id: str
|