Source code for autogen_ext.models.openai.config
from typing import Awaitable, Callable, Dict, List, Literal, Optional, Union
from autogen_core import ComponentModel
from autogen_core.models import ModelCapabilities, ModelInfo # type: ignore
from pydantic import BaseModel, SecretStr
from typing_extensions import Required, TypedDict
[docs]
class JSONSchema(TypedDict, total=False):
name: Required[str]
"""The name of the response format. Must be a-z, A-Z, 0-9, or contain underscores and
dashes, with a maximum length of 64."""
description: str
"""A description of what the response format is for, used by the model to determine
how to respond in the format."""
schema: Dict[str, object]
"""The schema for the response format, described as a JSON Schema object."""
strict: Optional[bool]
"""Whether to enable strict schema adherence when generating the output.
If set to true, the model will always follow the exact schema defined in the
`schema` field. Only a subset of JSON Schema is supported when `strict` is
`true`. To learn more, read the
[Structured Outputs guide](https://platform.openai.com/docs/guides/structured-outputs).
"""
[docs]
class StreamOptions(TypedDict):
include_usage: bool
[docs]
class CreateArguments(TypedDict, total=False):
frequency_penalty: Optional[float]
logit_bias: Optional[Dict[str, int]]
max_tokens: Optional[int]
n: Optional[int]
presence_penalty: Optional[float]
response_format: ResponseFormat
seed: Optional[int]
stop: Union[Optional[str], List[str]]
temperature: Optional[float]
top_p: Optional[float]
user: str
stream_options: Optional[StreamOptions]
parallel_tool_calls: Optional[bool]
AsyncAzureADTokenProvider = Callable[[], Union[str, Awaitable[str]]]
[docs]
class BaseOpenAIClientConfiguration(CreateArguments, total=False):
model: str
api_key: str
timeout: Union[float, None]
max_retries: int
model_capabilities: ModelCapabilities # type: ignore
model_info: ModelInfo
add_name_prefixes: bool
"""What functionality the model supports, determined by default from model name but is overriden if value passed."""
include_name_in_message: bool
"""Whether to include the 'name' field in user message parameters. Defaults to True. Set to False for providers that don't support the 'name' field."""
default_headers: Dict[str, str] | None
# See OpenAI docs for explanation of these parameters
[docs]
class OpenAIClientConfiguration(BaseOpenAIClientConfiguration, total=False):
organization: str
base_url: str
[docs]
class AzureOpenAIClientConfiguration(BaseOpenAIClientConfiguration, total=False):
# Azure specific
azure_endpoint: Required[str]
azure_deployment: str
api_version: Required[str]
azure_ad_token: str
azure_ad_token_provider: AsyncAzureADTokenProvider # Or AzureTokenProvider
# Pydantic equivalents of the above TypedDicts
[docs]
class CreateArgumentsConfigModel(BaseModel):
frequency_penalty: float | None = None
logit_bias: Dict[str, int] | None = None
max_tokens: int | None = None
n: int | None = None
presence_penalty: float | None = None
response_format: ResponseFormat | None = None
seed: int | None = None
stop: str | List[str] | None = None
temperature: float | None = None
top_p: float | None = None
user: str | None = None
stream_options: StreamOptions | None = None
parallel_tool_calls: bool | None = None
[docs]
class BaseOpenAIClientConfigurationConfigModel(CreateArgumentsConfigModel):
model: str
api_key: SecretStr | None = None
timeout: float | None = None
max_retries: int | None = None
model_capabilities: ModelCapabilities | None = None # type: ignore
model_info: ModelInfo | None = None
add_name_prefixes: bool | None = None
include_name_in_message: bool | None = None
default_headers: Dict[str, str] | None = None
# See OpenAI docs for explanation of these parameters
[docs]
class OpenAIClientConfigurationConfigModel(BaseOpenAIClientConfigurationConfigModel):
organization: str | None = None
base_url: str | None = None
[docs]
class AzureOpenAIClientConfigurationConfigModel(BaseOpenAIClientConfigurationConfigModel):
# Azure specific
azure_endpoint: str
azure_deployment: str | None = None
api_version: str
azure_ad_token: str | None = None
azure_ad_token_provider: ComponentModel | None = None