bluewinliang's picture
Upload 25 files
f4baae1 verified
"""
Application data models
"""
from typing import Dict, List, Optional, Any, Union, Literal
from pydantic import BaseModel
class ContentPart(BaseModel):
"""Content part model for OpenAI's new content format"""
type: str
text: Optional[str] = None
class Message(BaseModel):
"""Chat message model"""
role: str
content: Optional[Union[str, List[ContentPart]]] = None
reasoning_content: Optional[str] = None
tool_calls: Optional[List[Dict[str, Any]]] = None
class OpenAIRequest(BaseModel):
"""OpenAI-compatible request model"""
model: str
messages: List[Message]
stream: Optional[bool] = False
temperature: Optional[float] = None
max_tokens: Optional[int] = None
tools: Optional[List[Dict[str, Any]]] = None
tool_choice: Optional[Any] = None
class ModelItem(BaseModel):
"""Model information item"""
id: str
name: str
owned_by: str
class UpstreamRequest(BaseModel):
"""Upstream service request model"""
stream: bool
model: str
messages: List[Message]
params: Dict[str, Any] = {}
features: Dict[str, Any] = {}
background_tasks: Optional[Dict[str, bool]] = None
chat_id: Optional[str] = None
id: Optional[str] = None
mcp_servers: Optional[List[str]] = None
model_item: Optional[ModelItem] = None
tool_servers: Optional[List[str]] = None
variables: Optional[Dict[str, str]] = None
model_config = {"protected_namespaces": ()}
class Delta(BaseModel):
"""Stream delta model"""
role: Optional[str] = None
content: Optional[str] = "" or None
reasoning_content: Optional[str] = None
tool_calls: Optional[List[Dict[str, Any]]] = None
class Choice(BaseModel):
"""Response choice model"""
index: int
message: Optional[Message] = None
delta: Optional[Delta] = None
finish_reason: Optional[str] = None
class Usage(BaseModel):
"""Token usage statistics"""
prompt_tokens: int = 0
completion_tokens: int = 0
total_tokens: int = 0
class OpenAIResponse(BaseModel):
"""OpenAI-compatible response model"""
id: str
object: str
created: int
model: str
choices: List[Choice]
usage: Optional[Usage] = None
class UpstreamError(BaseModel):
"""Upstream error model"""
detail: str
code: int
class UpstreamDataInner(BaseModel):
"""Inner upstream data model"""
error: Optional[UpstreamError] = None
class UpstreamDataData(BaseModel):
"""Upstream data content model"""
delta_content: str = ""
edit_content: str = ""
phase: str = ""
done: bool = False
usage: Optional[Usage] = None
error: Optional[UpstreamError] = None
inner: Optional[UpstreamDataInner] = None
class UpstreamData(BaseModel):
"""Upstream data model"""
type: str
data: UpstreamDataData
error: Optional[UpstreamError] = None
class Model(BaseModel):
"""Model information for listing"""
id: str
object: str = "model"
created: int
owned_by: str
class ModelsResponse(BaseModel):
"""Models list response model"""
object: str = "list"
data: List[Model]