"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations from .advisorservertool_openrouter import ( AdvisorServerToolOpenRouter, AdvisorServerToolOpenRouterTypedDict, ) from .bashservertool import BashServerTool, BashServerToolTypedDict from .chatcontentcachecontrol import ( ChatContentCacheControl, ChatContentCacheControlTypedDict, ) from .chatsearchmodelsservertool import ( ChatSearchModelsServerTool, ChatSearchModelsServerToolTypedDict, ) from .chatwebsearchshorthand import ( ChatWebSearchShorthand, ChatWebSearchShorthandTypedDict, ) from .datetimeservertool import DatetimeServerTool, DatetimeServerToolTypedDict from .imagegenerationservertool_openrouter import ( ImageGenerationServerToolOpenRouter, ImageGenerationServerToolOpenRouterTypedDict, ) from .openrouterwebsearchservertool import ( OpenRouterWebSearchServerTool, OpenRouterWebSearchServerToolTypedDict, ) from .webfetchservertool import WebFetchServerTool, WebFetchServerToolTypedDict from openrouter.types import ( BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL, ) from openrouter.utils import get_discriminator from pydantic import Discriminator, Tag, model_serializer from typing import Any, Dict, Literal, Optional, Union from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict class ChatFunctionToolFunctionFunctionTypedDict(TypedDict): r"""Function definition for tool calling""" name: str r"""Function name (a-z, A-Z, 0-9, underscores, dashes, max 64 chars)""" description: NotRequired[str] r"""Function description for the model""" parameters: NotRequired[Dict[str, Nullable[Any]]] r"""Function parameters as JSON Schema object""" strict: NotRequired[Nullable[bool]] r"""Enable strict schema adherence""" class ChatFunctionToolFunctionFunction(BaseModel): r"""Function definition for tool calling""" name: str r"""Function name (a-z, A-Z, 0-9, underscores, dashes, max 64 chars)""" description: Optional[str] = None r"""Function description for the model""" parameters: Optional[Dict[str, Nullable[Any]]] = None r"""Function parameters as JSON Schema object""" strict: OptionalNullable[bool] = UNSET r"""Enable strict schema adherence""" @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = ["description", "parameters", "strict"] nullable_fields = ["strict"] null_default_fields = [] serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) serialized.pop(k, None) optional_nullable = k in optional_fields and k in nullable_fields is_set = ( self.__pydantic_fields_set__.intersection({n}) or k in null_default_fields ) # pylint: disable=no-member if val is not None and val != UNSET_SENTINEL: m[k] = val elif val != UNSET_SENTINEL and ( not k in optional_fields or (optional_nullable and is_set) ): m[k] = val return m ChatFunctionToolType = Literal["function",] class ChatFunctionToolFunctionTypedDict(TypedDict): function: ChatFunctionToolFunctionFunctionTypedDict r"""Function definition for tool calling""" type: ChatFunctionToolType cache_control: NotRequired[ChatContentCacheControlTypedDict] r"""Cache control for the content part""" class ChatFunctionToolFunction(BaseModel): function: ChatFunctionToolFunctionFunction r"""Function definition for tool calling""" type: ChatFunctionToolType cache_control: Optional[ChatContentCacheControl] = None r"""Cache control for the content part""" ChatFunctionToolTypedDict = TypeAliasType( "ChatFunctionToolTypedDict", Union[ AdvisorServerToolOpenRouterTypedDict, BashServerToolTypedDict, DatetimeServerToolTypedDict, ImageGenerationServerToolOpenRouterTypedDict, ChatSearchModelsServerToolTypedDict, WebFetchServerToolTypedDict, OpenRouterWebSearchServerToolTypedDict, ChatFunctionToolFunctionTypedDict, ChatWebSearchShorthandTypedDict, ], ) r"""Tool definition for function calling (regular function or OpenRouter built-in server tool)""" ChatFunctionTool = Annotated[ Union[ Annotated[ChatFunctionToolFunction, Tag("function")], Annotated[AdvisorServerToolOpenRouter, Tag("openrouter:advisor")], Annotated[BashServerTool, Tag("openrouter:bash")], Annotated[DatetimeServerTool, Tag("openrouter:datetime")], Annotated[ ImageGenerationServerToolOpenRouter, Tag("openrouter:image_generation") ], Annotated[ ChatSearchModelsServerTool, Tag("openrouter:experimental__search_models") ], Annotated[WebFetchServerTool, Tag("openrouter:web_fetch")], Annotated[OpenRouterWebSearchServerTool, Tag("openrouter:web_search")], Annotated[ChatWebSearchShorthand, Tag("web_search")], Annotated[ChatWebSearchShorthand, Tag("web_search_preview")], Annotated[ChatWebSearchShorthand, Tag("web_search_preview_2025_03_11")], Annotated[ChatWebSearchShorthand, Tag("web_search_2025_08_26")], ], Discriminator(lambda m: get_discriminator(m, "type", "type")), ] r"""Tool definition for function calling (regular function or OpenRouter built-in server tool)"""