Files
letta-server/memgpt/models/chat_completion_response.py

67 lines
1.5 KiB
Python

from typing import List, Optional, Union, Dict, Literal
from pydantic import BaseModel, Field
import datetime
# class ToolCallFunction(BaseModel):
# name: str
# arguments: str
class FunctionCall(BaseModel):
arguments: str
name: str
class ToolCall(BaseModel):
id: str
# "Currently, only function is supported"
type: Literal["function"] = "function"
# function: ToolCallFunction
function: FunctionCall
class LogProbToken(BaseModel):
token: str
logprob: float
bytes: Optional[List[int]]
class MessageContentLogProb(BaseModel):
token: str
logprob: float
bytes: Optional[List[int]]
top_logprobs: Optional[List[LogProbToken]]
class Message(BaseModel):
content: Optional[str] = None
tool_calls: Optional[List[ToolCall]] = None
role: str
function_call: Optional[FunctionCall] = None # Deprecated
class Choice(BaseModel):
finish_reason: str
index: int
message: Message
logprobs: Optional[Dict[str, Union[List[MessageContentLogProb], None]]] = None
class UsageStatistics(BaseModel):
completion_tokens: int
prompt_tokens: int
total_tokens: int
class ChatCompletionResponse(BaseModel):
id: str
choices: List[Choice]
created: datetime.datetime
model: str
# system_fingerprint: str # docs say this is mandatory, but in reality API returns None
system_fingerprint: Optional[str] = None
# object: str = Field(default="chat.completion")
object: Literal["chat.completion"] = "chat.completion"
usage: UsageStatistics