from typing import Iterable, List, Optional, Union 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[Union[str, Iterable[ChatCompletionContentPartParam]]] """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[Union[str, Iterable[ChatCompletionContentPartParam]]] """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")