forked from phoenix/litellm-mirror
194 lines
5.7 KiB
Python
194 lines
5.7 KiB
Python
from typing import List, Optional, Union, Iterable
|
|
|
|
from pydantic import BaseModel, ConfigDict, validator
|
|
|
|
from typing_extensions import Literal, Required, TypedDict
|
|
|
|
|
|
class ChatCompletionSystemMessageParam(TypedDict, total=False):
|
|
content: Required[str]
|
|
"""The contents of the system message."""
|
|
|
|
role: Required[Literal["system"]]
|
|
"""The role of the messages author, in this case `system`."""
|
|
|
|
name: str
|
|
"""An optional name for the participant.
|
|
|
|
Provides the model information to differentiate between participants of the same
|
|
role.
|
|
"""
|
|
|
|
|
|
class ChatCompletionContentPartTextParam(TypedDict, total=False):
|
|
text: Required[str]
|
|
"""The text content."""
|
|
|
|
type: Required[Literal["text"]]
|
|
"""The type of the content part."""
|
|
|
|
|
|
class ImageURL(TypedDict, total=False):
|
|
url: Required[str]
|
|
"""Either a URL of the image or the base64 encoded image data."""
|
|
|
|
detail: Literal["auto", "low", "high"]
|
|
"""Specifies the detail level of the image.
|
|
|
|
Learn more in the
|
|
[Vision guide](https://platform.openai.com/docs/guides/vision/low-or-high-fidelity-image-understanding).
|
|
"""
|
|
|
|
|
|
class ChatCompletionContentPartImageParam(TypedDict, total=False):
|
|
image_url: Required[ImageURL]
|
|
|
|
type: Required[Literal["image_url"]]
|
|
"""The type of the content part."""
|
|
|
|
|
|
ChatCompletionContentPartParam = Union[
|
|
ChatCompletionContentPartTextParam, ChatCompletionContentPartImageParam
|
|
]
|
|
|
|
|
|
class ChatCompletionUserMessageParam(TypedDict, total=False):
|
|
content: Required[Union[str, Iterable[ChatCompletionContentPartParam]]]
|
|
"""The contents of the user message."""
|
|
|
|
role: Required[Literal["user"]]
|
|
"""The role of the messages author, in this case `user`."""
|
|
|
|
name: str
|
|
"""An optional name for the participant.
|
|
|
|
Provides the model information to differentiate between participants of the same
|
|
role.
|
|
"""
|
|
|
|
|
|
class FunctionCall(TypedDict, total=False):
|
|
arguments: Required[str]
|
|
"""
|
|
The arguments to call the function with, as generated by the model in JSON
|
|
format. Note that the model does not always generate valid JSON, and may
|
|
hallucinate parameters not defined by your function schema. Validate the
|
|
arguments in your code before calling your function.
|
|
"""
|
|
|
|
name: Required[str]
|
|
"""The name of the function to call."""
|
|
|
|
|
|
class Function(TypedDict, total=False):
|
|
arguments: Required[str]
|
|
"""
|
|
The arguments to call the function with, as generated by the model in JSON
|
|
format. Note that the model does not always generate valid JSON, and may
|
|
hallucinate parameters not defined by your function schema. Validate the
|
|
arguments in your code before calling your function.
|
|
"""
|
|
|
|
name: Required[str]
|
|
"""The name of the function to call."""
|
|
|
|
|
|
class ChatCompletionToolMessageParam(TypedDict, total=False):
|
|
content: Required[str]
|
|
"""The contents of the tool message."""
|
|
|
|
role: Required[Literal["tool"]]
|
|
"""The role of the messages author, in this case `tool`."""
|
|
|
|
tool_call_id: Required[str]
|
|
"""Tool call that this message is responding to."""
|
|
|
|
|
|
class ChatCompletionFunctionMessageParam(TypedDict, total=False):
|
|
content: Required[Optional[str]]
|
|
"""The contents of the function message."""
|
|
|
|
name: Required[str]
|
|
"""The name of the function to call."""
|
|
|
|
role: Required[Literal["function"]]
|
|
"""The role of the messages author, in this case `function`."""
|
|
|
|
|
|
class ChatCompletionMessageToolCallParam(TypedDict, total=False):
|
|
id: Required[str]
|
|
"""The ID of the tool call."""
|
|
|
|
function: Required[Function]
|
|
"""The function that the model called."""
|
|
|
|
type: Required[Literal["function"]]
|
|
"""The type of the tool. Currently, only `function` is supported."""
|
|
|
|
|
|
class ChatCompletionAssistantMessageParam(TypedDict, total=False):
|
|
role: Required[Literal["assistant"]]
|
|
"""The role of the messages author, in this case `assistant`."""
|
|
|
|
content: Optional[str]
|
|
"""The contents of the assistant message.
|
|
|
|
Required unless `tool_calls` or `function_call` is specified.
|
|
"""
|
|
|
|
function_call: FunctionCall
|
|
"""Deprecated and replaced by `tool_calls`.
|
|
|
|
The name and arguments of a function that should be called, as generated by the
|
|
model.
|
|
"""
|
|
|
|
name: str
|
|
"""An optional name for the participant.
|
|
|
|
Provides the model information to differentiate between participants of the same
|
|
role.
|
|
"""
|
|
|
|
tool_calls: Iterable[ChatCompletionMessageToolCallParam]
|
|
"""The tool calls generated by the model, such as function calls."""
|
|
|
|
|
|
ChatCompletionMessageParam = Union[
|
|
ChatCompletionSystemMessageParam,
|
|
ChatCompletionUserMessageParam,
|
|
ChatCompletionAssistantMessageParam,
|
|
ChatCompletionFunctionMessageParam,
|
|
ChatCompletionToolMessageParam,
|
|
]
|
|
|
|
|
|
class CompletionRequest(BaseModel):
|
|
model: str
|
|
messages: List[str] = []
|
|
timeout: Optional[Union[float, int]] = None
|
|
temperature: Optional[float] = None
|
|
top_p: Optional[float] = None
|
|
n: Optional[int] = None
|
|
stream: Optional[bool] = None
|
|
stop: Optional[dict] = None
|
|
max_tokens: Optional[int] = None
|
|
presence_penalty: Optional[float] = None
|
|
frequency_penalty: Optional[float] = None
|
|
logit_bias: Optional[dict] = None
|
|
user: Optional[str] = None
|
|
response_format: Optional[dict] = None
|
|
seed: Optional[int] = None
|
|
tools: Optional[List[str]] = None
|
|
tool_choice: Optional[str] = None
|
|
logprobs: Optional[bool] = None
|
|
top_logprobs: Optional[int] = None
|
|
deployment_id: Optional[str] = None
|
|
functions: Optional[List[str]] = None
|
|
function_call: Optional[str] = None
|
|
base_url: Optional[str] = None
|
|
api_version: Optional[str] = None
|
|
api_key: Optional[str] = None
|
|
model_list: Optional[List[str]] = None
|
|
|
|
model_config = ConfigDict(protected_namespaces=(), extra="allow")
|