|
|
from typing import List, Optional, Union, Dict, Any, Literal
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
|
|
|
class ChatMessage(BaseModel):
|
|
|
role: str = Field()
|
|
|
content: str = Field()
|
|
|
|
|
|
|
|
|
class Logprob(BaseModel):
|
|
|
token: str
|
|
|
logprob: float
|
|
|
top_logprobs: Optional[List[Dict[str, Any]]] = None
|
|
|
|
|
|
|
|
|
class LogprobsContent(BaseModel):
|
|
|
content: Optional[List[Logprob]] = None
|
|
|
refusal: Optional[List[Logprob]] = None
|
|
|
|
|
|
|
|
|
class FunctionCall(BaseModel):
|
|
|
name: str
|
|
|
arguments: str
|
|
|
|
|
|
|
|
|
class ChatCompletionMessage(BaseModel):
|
|
|
role: Optional[str] = Field(
|
|
|
None, description="The role of the author of this message"
|
|
|
)
|
|
|
content: Optional[str] = Field(None, description="The contents of the message")
|
|
|
reasoning_content: Optional[str] = Field(
|
|
|
None, description="The reasoning contents of the message"
|
|
|
)
|
|
|
tool_calls: Optional[List[Dict[str, Any]]] = Field(
|
|
|
None, description="Tool calls generated by the model"
|
|
|
)
|
|
|
|
|
|
|
|
|
class PromptTokensDetails(BaseModel):
|
|
|
cached_tokens: int
|
|
|
|
|
|
|
|
|
class CompletionTokensDetails(BaseModel):
|
|
|
reasoning_tokens: int
|
|
|
accepted_prediction_tokens: int
|
|
|
rejected_prediction_tokens: int
|
|
|
|
|
|
|
|
|
class Usage(BaseModel):
|
|
|
prompt_tokens: int
|
|
|
completion_tokens: int
|
|
|
total_tokens: int
|
|
|
prompt_tokens_details: Optional[PromptTokensDetails]
|
|
|
|
|
|
|
|
|
|
|
|
class ChatCompletionChoice(BaseModel):
|
|
|
index: int
|
|
|
message: Optional[ChatCompletionMessage] = None
|
|
|
delta: Optional[ChatCompletionMessage] = None
|
|
|
logprobs: Optional[LogprobsContent] = None
|
|
|
finish_reason: Optional[str] = Field(
|
|
|
..., description="Reason for stopping: stop, length, content_filter, tool_calls"
|
|
|
)
|
|
|
|
|
|
|
|
|
class ChatCompletion(BaseModel):
|
|
|
id: str = Field(..., description="Unique identifier for the chat completion")
|
|
|
object: Literal["chat.completion"] = "chat.completion"
|
|
|
created: int = Field(..., description="Unix timestamp of creation")
|
|
|
model: str
|
|
|
choices: List[ChatCompletionChoice]
|
|
|
usage: Usage
|
|
|
|
|
|
|
|
|
class ChatCompletionChunk(BaseModel):
|
|
|
id: str = Field(..., description="Unique identifier for the chat completion")
|
|
|
object: Literal["chat.completion.chunk"] = "chat.completion.chunk"
|
|
|
created: int = Field(..., description="Unix timestamp of creation")
|
|
|
model: str
|
|
|
choices: List[ChatCompletionChoice]
|
|
|
usage: Optional[Usage]
|
|
|
|