Spaces:
Running
Running
"""Types and request signatures for OpenAI compatibility | |
NOTE: These types may change to match the OpenAI OpenAPI specification. | |
Based on the OpenAI OpenAPI specification: | |
https://github.com/openai/openai-openapi/blob/master/openapi.yaml | |
""" | |
from typing import Any, List, Optional, Dict, Union | |
from typing_extensions import TypedDict, NotRequired, Literal | |
# NOTE: Defining this correctly using annotations seems to break pydantic validation. | |
# This is a workaround until we can figure out how to do this correctly | |
# JsonType = Union[None, int, str, bool, List["JsonType"], Dict[str, "JsonType"]] | |
JsonType = Union[None, int, str, bool, List[Any], Dict[str, Any]] | |
class EmbeddingUsage(TypedDict): | |
prompt_tokens: int | |
total_tokens: int | |
class Embedding(TypedDict): | |
index: int | |
object: str | |
embedding: Union[List[float], List[List[float]]] | |
class CreateEmbeddingResponse(TypedDict): | |
object: Literal["list"] | |
model: str | |
data: List[Embedding] | |
usage: EmbeddingUsage | |
class CompletionLogprobs(TypedDict): | |
text_offset: List[int] | |
token_logprobs: List[Optional[float]] | |
tokens: List[str] | |
top_logprobs: List[Optional[Dict[str, float]]] | |
class CompletionChoice(TypedDict): | |
text: str | |
index: int | |
logprobs: Optional[CompletionLogprobs] | |
finish_reason: Optional[Literal["stop", "length"]] | |
class CompletionUsage(TypedDict): | |
prompt_tokens: int | |
completion_tokens: int | |
total_tokens: int | |
class CreateCompletionResponse(TypedDict): | |
id: str | |
object: Literal["text_completion"] | |
created: int | |
model: str | |
choices: List[CompletionChoice] | |
usage: NotRequired[CompletionUsage] | |
class ChatCompletionResponseFunctionCall(TypedDict): | |
name: str | |
arguments: str | |
class ChatCompletionResponseMessage(TypedDict): | |
content: Optional[str] | |
tool_calls: NotRequired["ChatCompletionMessageToolCalls"] | |
role: Literal["assistant", "function"] # NOTE: "function" may be incorrect here | |
function_call: NotRequired[ChatCompletionResponseFunctionCall] # DEPRECATED | |
class ChatCompletionFunction(TypedDict): | |
name: str | |
description: NotRequired[str] | |
parameters: Dict[str, JsonType] # TODO: make this more specific | |
class ChatCompletionResponseChoice(TypedDict): | |
index: int | |
message: "ChatCompletionResponseMessage" | |
logprobs: Optional[CompletionLogprobs] | |
finish_reason: Optional[str] | |
class CreateChatCompletionResponse(TypedDict): | |
id: str | |
object: Literal["chat.completion"] | |
created: int | |
model: str | |
choices: List["ChatCompletionResponseChoice"] | |
usage: CompletionUsage | |
class ChatCompletionMessageToolCallChunkFunction(TypedDict): | |
name: Optional[str] | |
arguments: str | |
class ChatCompletionMessageToolCallChunk(TypedDict): | |
index: int | |
id: NotRequired[str] | |
type: Literal["function"] | |
function: ChatCompletionMessageToolCallChunkFunction | |
class ChatCompletionStreamResponseDeltaEmpty(TypedDict): | |
pass | |
class ChatCompletionStreamResponseDeltaFunctionCall(TypedDict): | |
name: str | |
arguments: str | |
class ChatCompletionStreamResponseDelta(TypedDict): | |
content: NotRequired[Optional[str]] | |
function_call: NotRequired[ | |
Optional[ChatCompletionStreamResponseDeltaFunctionCall] | |
] # DEPRECATED | |
tool_calls: NotRequired[Optional[List[ChatCompletionMessageToolCallChunk]]] | |
role: NotRequired[Optional[Literal["system", "user", "assistant", "tool"]]] | |
class ChatCompletionStreamResponseChoice(TypedDict): | |
index: int | |
delta: Union[ | |
ChatCompletionStreamResponseDelta, ChatCompletionStreamResponseDeltaEmpty | |
] | |
finish_reason: Optional[Literal["stop", "length", "tool_calls", "function_call"]] | |
logprobs: NotRequired[Optional[CompletionLogprobs]] | |
class CreateChatCompletionStreamResponse(TypedDict): | |
id: str | |
model: str | |
object: Literal["chat.completion.chunk"] | |
created: int | |
choices: List[ChatCompletionStreamResponseChoice] | |
class ChatCompletionFunctions(TypedDict): | |
name: str | |
description: NotRequired[str] | |
parameters: Dict[str, JsonType] # TODO: make this more specific | |
class ChatCompletionFunctionCallOption(TypedDict): | |
name: str | |
class ChatCompletionRequestResponseFormat(TypedDict): | |
type: Literal["text", "json_object"] | |
schema: NotRequired[JsonType] # https://docs.endpoints.anyscale.com/guides/json_mode/ | |
class ChatCompletionRequestMessageContentPartText(TypedDict): | |
type: Literal["text"] | |
text: str | |
class ChatCompletionRequestMessageContentPartImageImageUrl(TypedDict): | |
url: str | |
detail: NotRequired[Literal["auto", "low", "high"]] | |
class ChatCompletionRequestMessageContentPartImage(TypedDict): | |
type: Literal["image_url"] | |
image_url: Union[str, ChatCompletionRequestMessageContentPartImageImageUrl] | |
ChatCompletionRequestMessageContentPart = Union[ | |
ChatCompletionRequestMessageContentPartText, | |
ChatCompletionRequestMessageContentPartImage, | |
] | |
class ChatCompletionRequestSystemMessage(TypedDict): | |
role: Literal["system"] | |
content: Optional[str] | |
class ChatCompletionRequestUserMessage(TypedDict): | |
role: Literal["user"] | |
content: Optional[Union[str, List[ChatCompletionRequestMessageContentPart]]] | |
class ChatCompletionMessageToolCallFunction(TypedDict): | |
name: str | |
arguments: str | |
class ChatCompletionMessageToolCall(TypedDict): | |
id: str | |
type: Literal["function"] | |
function: ChatCompletionMessageToolCallFunction | |
ChatCompletionMessageToolCalls = List[ChatCompletionMessageToolCall] | |
class ChatCompletionRequestAssistantMessageFunctionCall(TypedDict): | |
name: str | |
arguments: str | |
class ChatCompletionRequestAssistantMessage(TypedDict): | |
role: Literal["assistant"] | |
content: Optional[str] | |
tool_calls: NotRequired[ChatCompletionMessageToolCalls] | |
function_call: NotRequired[ | |
ChatCompletionRequestAssistantMessageFunctionCall | |
] # DEPRECATED | |
class ChatCompletionRequestToolMessage(TypedDict): | |
role: Literal["tool"] | |
content: Optional[str] | |
tool_call_id: str | |
class ChatCompletionRequestFunctionMessage(TypedDict): | |
role: Literal["function"] | |
content: Optional[str] | |
name: str | |
ChatCompletionRequestMessage = Union[ | |
ChatCompletionRequestSystemMessage, | |
ChatCompletionRequestUserMessage, | |
ChatCompletionRequestAssistantMessage, | |
ChatCompletionRequestUserMessage, | |
ChatCompletionRequestToolMessage, | |
ChatCompletionRequestFunctionMessage, | |
] | |
class ChatCompletionRequestFunctionCallOption(TypedDict): | |
name: str | |
ChatCompletionRequestFunctionCall = Union[ | |
Literal["none", "auto"], ChatCompletionRequestFunctionCallOption | |
] | |
ChatCompletionFunctionParameters = Dict[str, JsonType] # TODO: make this more specific | |
class ChatCompletionToolFunction(TypedDict): | |
name: str | |
description: NotRequired[str] | |
parameters: ChatCompletionFunctionParameters | |
class ChatCompletionTool(TypedDict): | |
type: Literal["function"] | |
function: ChatCompletionToolFunction | |
class ChatCompletionNamedToolChoiceFunction(TypedDict): | |
name: str | |
class ChatCompletionNamedToolChoice(TypedDict): | |
type: Literal["function"] | |
function: ChatCompletionNamedToolChoiceFunction | |
ChatCompletionToolChoiceOption = Union[ | |
Literal["none", "auto"], ChatCompletionNamedToolChoice | |
] | |
# NOTE: The following type names are not part of the OpenAI OpenAPI specification | |
# and will be removed in a future major release. | |
EmbeddingData = Embedding | |
CompletionChunk = CreateCompletionResponse | |
Completion = CreateCompletionResponse | |
CreateCompletionStreamResponse = CreateCompletionResponse | |
ChatCompletionMessage = ChatCompletionResponseMessage | |
ChatCompletionChoice = ChatCompletionResponseChoice | |
ChatCompletion = CreateChatCompletionResponse | |
ChatCompletionChunkDeltaEmpty = ChatCompletionStreamResponseDeltaEmpty | |
ChatCompletionChunkChoice = ChatCompletionStreamResponseChoice | |
ChatCompletionChunkDelta = ChatCompletionStreamResponseDelta | |
ChatCompletionChunk = CreateChatCompletionStreamResponse | |
ChatCompletionStreamResponse = CreateChatCompletionStreamResponse | |
ChatCompletionResponseFunction = ChatCompletionFunction | |
ChatCompletionFunctionCall = ChatCompletionResponseFunctionCall | |