Files
openrouter-python-sdk-retry…/src/openrouter/components/responsesrequest.py
T
github-actions[bot]GitHubspeakeasybotspeakeasy-github[bot] <128539517+speakeasy-github[bot]@users.noreply.github.com>
28299a788d chore: 🐝 Update SDK - Generate (spec change merged) 0.11.1 (#385)
Co-authored-by: speakeasybot <bot@speakeasyapi.dev>
Co-authored-by: speakeasy-github[bot] <128539517+speakeasy-github[bot]@users.noreply.github.com>
2026-07-01 16:17:40 +00:00

534 lines
22 KiB
Python

"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from __future__ import annotations
from .advisorservertool_openrouter import (
AdvisorServerToolOpenRouter,
AdvisorServerToolOpenRouterTypedDict,
)
from .anthropiccachecontroldirective import (
AnthropicCacheControlDirective,
AnthropicCacheControlDirectiveTypedDict,
)
from .applypatchservertool import ApplyPatchServerTool, ApplyPatchServerToolTypedDict
from .applypatchservertool_openrouter import (
ApplyPatchServerToolOpenRouter,
ApplyPatchServerToolOpenRouterTypedDict,
)
from .autorouterplugin import AutoRouterPlugin, AutoRouterPluginTypedDict
from .bashservertool import BashServerTool, BashServerToolTypedDict
from .chatdebugoptions import ChatDebugOptions, ChatDebugOptionsTypedDict
from .chatsearchmodelsservertool import (
ChatSearchModelsServerTool,
ChatSearchModelsServerToolTypedDict,
)
from .codeinterpreterservertool import (
CodeInterpreterServerTool,
CodeInterpreterServerToolTypedDict,
)
from .codexlocalshelltool import CodexLocalShellTool, CodexLocalShellToolTypedDict
from .computeruseservertool import ComputerUseServerTool, ComputerUseServerToolTypedDict
from .contextcompressionplugin import (
ContextCompressionPlugin,
ContextCompressionPluginTypedDict,
)
from .customtool import CustomTool, CustomToolTypedDict
from .datetimeservertool import DatetimeServerTool, DatetimeServerToolTypedDict
from .fileparserplugin import FileParserPlugin, FileParserPluginTypedDict
from .filesearchservertool import FileSearchServerTool, FileSearchServerToolTypedDict
from .filesservertool import FilesServerTool, FilesServerToolTypedDict
from .fusionplugin import FusionPlugin, FusionPluginTypedDict
from .fusionservertool_openrouter import (
FusionServerToolOpenRouter,
FusionServerToolOpenRouterTypedDict,
)
from .imageconfig import ImageConfig, ImageConfigTypedDict
from .imagegenerationservertool import (
ImageGenerationServerTool,
ImageGenerationServerToolTypedDict,
)
from .imagegenerationservertool_openrouter import (
ImageGenerationServerToolOpenRouter,
ImageGenerationServerToolOpenRouterTypedDict,
)
from .inputs_union import InputsUnion, InputsUnionTypedDict
from .legacy_websearchservertool import (
LegacyWebSearchServerTool,
LegacyWebSearchServerToolTypedDict,
)
from .mcpservertool import McpServerTool, McpServerToolTypedDict
from .moderationplugin import ModerationPlugin, ModerationPluginTypedDict
from .openairesponsestoolchoice_union import (
OpenAIResponsesToolChoiceUnion,
OpenAIResponsesToolChoiceUnionTypedDict,
)
from .openairesponsestruncation import OpenAIResponsesTruncation
from .outputmodalityenum import OutputModalityEnum
from .paretorouterplugin import ParetoRouterPlugin, ParetoRouterPluginTypedDict
from .preview_20250311_websearchservertool import (
Preview20250311WebSearchServerTool,
Preview20250311WebSearchServerToolTypedDict,
)
from .preview_websearchservertool import (
PreviewWebSearchServerTool,
PreviewWebSearchServerToolTypedDict,
)
from .providerpreferences import ProviderPreferences, ProviderPreferencesTypedDict
from .reasoningconfig import ReasoningConfig, ReasoningConfigTypedDict
from .responsehealingplugin import ResponseHealingPlugin, ResponseHealingPluginTypedDict
from .responseincludesenum import ResponseIncludesEnum
from .shellservertool import ShellServerTool, ShellServerToolTypedDict
from .shellservertool_openrouter import (
ShellServerToolOpenRouter,
ShellServerToolOpenRouterTypedDict,
)
from .stopservertoolswhencondition import (
StopServerToolsWhenCondition,
StopServerToolsWhenConditionTypedDict,
)
from .storedprompttemplate import StoredPromptTemplate, StoredPromptTemplateTypedDict
from .subagentservertool_openrouter import (
SubagentServerToolOpenRouter,
SubagentServerToolOpenRouterTypedDict,
)
from .textextendedconfig import TextExtendedConfig, TextExtendedConfigTypedDict
from .traceconfig import TraceConfig, TraceConfigTypedDict
from .webfetchplugin import WebFetchPlugin, WebFetchPluginTypedDict
from .webfetchservertool import WebFetchServerTool, WebFetchServerToolTypedDict
from .websearchplugin import WebSearchPlugin, WebSearchPluginTypedDict
from .websearchservertool import WebSearchServerTool, WebSearchServerToolTypedDict
from .websearchservertool_openrouter import (
WebSearchServerToolOpenRouter,
WebSearchServerToolOpenRouterTypedDict,
)
from openrouter.types import (
BaseModel,
Nullable,
OptionalNullable,
UNSET,
UNSET_SENTINEL,
UnrecognizedStr,
)
from openrouter.utils import get_discriminator, validate_const
import pydantic
from pydantic import Discriminator, Tag, model_serializer
from pydantic.functional_validators import AfterValidator
from typing import Any, Dict, List, Literal, Optional, Union
from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict
ResponsesRequestPluginTypedDict = TypeAliasType(
"ResponsesRequestPluginTypedDict",
Union[
ModerationPluginTypedDict,
ResponseHealingPluginTypedDict,
FileParserPluginTypedDict,
ContextCompressionPluginTypedDict,
ParetoRouterPluginTypedDict,
AutoRouterPluginTypedDict,
WebFetchPluginTypedDict,
FusionPluginTypedDict,
WebSearchPluginTypedDict,
],
)
ResponsesRequestPlugin = Annotated[
Union[
Annotated[AutoRouterPlugin, Tag("auto-router")],
Annotated[ContextCompressionPlugin, Tag("context-compression")],
Annotated[FileParserPlugin, Tag("file-parser")],
Annotated[FusionPlugin, Tag("fusion")],
Annotated[ModerationPlugin, Tag("moderation")],
Annotated[ParetoRouterPlugin, Tag("pareto-router")],
Annotated[ResponseHealingPlugin, Tag("response-healing")],
Annotated[WebSearchPlugin, Tag("web")],
Annotated[WebFetchPlugin, Tag("web-fetch")],
],
Discriminator(lambda m: get_discriminator(m, "id", "id")),
]
ResponsesRequestServiceTier = Union[
Literal[
"auto",
"default",
"flex",
"priority",
"scale",
],
UnrecognizedStr,
]
ResponsesRequestType = Literal["function",]
class ResponsesRequestToolFunctionTypedDict(TypedDict):
r"""Function tool definition"""
name: str
parameters: Nullable[Dict[str, Nullable[Any]]]
type: ResponsesRequestType
description: NotRequired[Nullable[str]]
strict: NotRequired[Nullable[bool]]
class ResponsesRequestToolFunction(BaseModel):
r"""Function tool definition"""
name: str
parameters: Nullable[Dict[str, Nullable[Any]]]
type: ResponsesRequestType
description: OptionalNullable[str] = UNSET
strict: OptionalNullable[bool] = UNSET
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(["description", "strict"])
nullable_fields = set(["description", "parameters", "strict"])
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
is_nullable_and_explicitly_set = (
k in nullable_fields
and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
)
if val != UNSET_SENTINEL:
if (
val is not None
or k not in optional_fields
or is_nullable_and_explicitly_set
):
m[k] = val
return m
ResponsesRequestToolUnionTypedDict = TypeAliasType(
"ResponsesRequestToolUnionTypedDict",
Union[
CodexLocalShellToolTypedDict,
ApplyPatchServerToolTypedDict,
ShellServerToolTypedDict,
FusionServerToolOpenRouterTypedDict,
ImageGenerationServerToolOpenRouterTypedDict,
ShellServerToolOpenRouterTypedDict,
BashServerToolTypedDict,
CodeInterpreterServerToolTypedDict,
ApplyPatchServerToolOpenRouterTypedDict,
WebSearchServerToolOpenRouterTypedDict,
WebFetchServerToolTypedDict,
ChatSearchModelsServerToolTypedDict,
FilesServerToolTypedDict,
DatetimeServerToolTypedDict,
AdvisorServerToolOpenRouterTypedDict,
SubagentServerToolOpenRouterTypedDict,
CustomToolTypedDict,
ComputerUseServerToolTypedDict,
ResponsesRequestToolFunctionTypedDict,
FileSearchServerToolTypedDict,
PreviewWebSearchServerToolTypedDict,
WebSearchServerToolTypedDict,
Preview20250311WebSearchServerToolTypedDict,
LegacyWebSearchServerToolTypedDict,
McpServerToolTypedDict,
ImageGenerationServerToolTypedDict,
],
)
ResponsesRequestToolUnion = Annotated[
Union[
Annotated[ResponsesRequestToolFunction, Tag("function")],
Annotated[PreviewWebSearchServerTool, Tag("web_search_preview")],
Annotated[
Preview20250311WebSearchServerTool, Tag("web_search_preview_2025_03_11")
],
Annotated[LegacyWebSearchServerTool, Tag("web_search")],
Annotated[WebSearchServerTool, Tag("web_search_2025_08_26")],
Annotated[FileSearchServerTool, Tag("file_search")],
Annotated[ComputerUseServerTool, Tag("computer_use_preview")],
Annotated[CodeInterpreterServerTool, Tag("code_interpreter")],
Annotated[McpServerTool, Tag("mcp")],
Annotated[ImageGenerationServerTool, Tag("image_generation")],
Annotated[CodexLocalShellTool, Tag("local_shell")],
Annotated[ShellServerTool, Tag("shell")],
Annotated[ApplyPatchServerTool, Tag("apply_patch")],
Annotated[CustomTool, Tag("custom")],
Annotated[AdvisorServerToolOpenRouter, Tag("openrouter:advisor")],
Annotated[SubagentServerToolOpenRouter, Tag("openrouter:subagent")],
Annotated[DatetimeServerTool, Tag("openrouter:datetime")],
Annotated[FilesServerTool, Tag("openrouter:files")],
Annotated[FusionServerToolOpenRouter, Tag("openrouter:fusion")],
Annotated[
ImageGenerationServerToolOpenRouter, Tag("openrouter:image_generation")
],
Annotated[
ChatSearchModelsServerTool, Tag("openrouter:experimental__search_models")
],
Annotated[WebFetchServerTool, Tag("openrouter:web_fetch")],
Annotated[WebSearchServerToolOpenRouter, Tag("openrouter:web_search")],
Annotated[ApplyPatchServerToolOpenRouter, Tag("openrouter:apply_patch")],
Annotated[BashServerTool, Tag("openrouter:bash")],
Annotated[ShellServerToolOpenRouter, Tag("openrouter:shell")],
],
Discriminator(lambda m: get_discriminator(m, "type", "type")),
]
class ResponsesRequestTypedDict(TypedDict):
r"""Request schema for Responses endpoint"""
background: NotRequired[Nullable[bool]]
cache_control: NotRequired[AnthropicCacheControlDirectiveTypedDict]
r"""Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models."""
debug: NotRequired[ChatDebugOptionsTypedDict]
r"""Debug options for inspecting request transformations (streaming only)"""
frequency_penalty: NotRequired[Nullable[float]]
image_config: NotRequired[Dict[str, ImageConfigTypedDict]]
r"""Provider-specific image configuration options. Keys and values vary by model/provider. See https://openrouter.ai/docs/guides/overview/multimodal/image-generation for more details."""
include: NotRequired[Nullable[List[ResponseIncludesEnum]]]
input: NotRequired[InputsUnionTypedDict]
r"""Input for a response request - can be a string or array of items"""
instructions: NotRequired[Nullable[str]]
max_output_tokens: NotRequired[Nullable[int]]
max_tool_calls: NotRequired[Nullable[int]]
metadata: NotRequired[Nullable[Dict[str, str]]]
r"""Metadata key-value pairs for the request. Keys must be ≤64 characters and cannot contain brackets. Values must be ≤512 characters. Maximum 16 pairs allowed."""
modalities: NotRequired[List[OutputModalityEnum]]
r"""Output modalities for the response. Supported values are \"text\" and \"image\"."""
model: NotRequired[str]
models: NotRequired[List[str]]
parallel_tool_calls: NotRequired[Nullable[bool]]
plugins: NotRequired[List[ResponsesRequestPluginTypedDict]]
r"""Plugins you want to enable for this request, including their settings."""
presence_penalty: NotRequired[Nullable[float]]
previous_response_id: NotRequired[Nullable[str]]
prompt: NotRequired[Nullable[StoredPromptTemplateTypedDict]]
prompt_cache_key: NotRequired[Nullable[str]]
provider: NotRequired[Nullable[ProviderPreferencesTypedDict]]
r"""When multiple model providers are available, optionally indicate your routing preference."""
reasoning: NotRequired[Nullable[ReasoningConfigTypedDict]]
r"""Configuration for reasoning mode in the response"""
safety_identifier: NotRequired[Nullable[str]]
service_tier: NotRequired[Nullable[ResponsesRequestServiceTier]]
session_id: NotRequired[str]
r"""A unique identifier for grouping related requests (e.g., a conversation or agent workflow). When provided, OpenRouter uses it as the sticky routing key, routing all requests in the session to the same provider to maximize prompt cache hits. Also used for observability grouping. If provided in both the request body and the x-session-id header, the body value takes precedence. Maximum of 256 characters."""
stop_server_tools_when: NotRequired[List[StopServerToolsWhenConditionTypedDict]]
r"""Stop conditions for the server-tool agent loop. Any condition firing halts the loop (OR logic). When set, this overrides `max_tool_calls`."""
store: Literal[False]
stream: NotRequired[bool]
temperature: NotRequired[Nullable[float]]
text: NotRequired[TextExtendedConfigTypedDict]
r"""Text output configuration including format and verbosity"""
tool_choice: NotRequired[OpenAIResponsesToolChoiceUnionTypedDict]
tools: NotRequired[List[ResponsesRequestToolUnionTypedDict]]
top_k: NotRequired[int]
top_logprobs: NotRequired[Nullable[int]]
top_p: NotRequired[Nullable[float]]
trace: NotRequired[TraceConfigTypedDict]
r"""Metadata for observability and tracing. Known keys (trace_id, trace_name, span_name, generation_name, parent_span_id) have special handling. Additional keys are passed through as custom metadata to configured broadcast destinations."""
truncation: NotRequired[Nullable[OpenAIResponsesTruncation]]
user: NotRequired[str]
r"""A unique identifier representing your end-user, which helps distinguish between different users of your app. This allows your app to identify specific users in case of abuse reports, preventing your entire app from being affected by the actions of individual users. Maximum of 256 characters."""
class ResponsesRequest(BaseModel):
r"""Request schema for Responses endpoint"""
background: OptionalNullable[bool] = UNSET
cache_control: Optional[AnthropicCacheControlDirective] = None
r"""Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models."""
debug: Optional[ChatDebugOptions] = None
r"""Debug options for inspecting request transformations (streaming only)"""
frequency_penalty: OptionalNullable[float] = UNSET
image_config: Optional[Dict[str, ImageConfig]] = None
r"""Provider-specific image configuration options. Keys and values vary by model/provider. See https://openrouter.ai/docs/guides/overview/multimodal/image-generation for more details."""
include: OptionalNullable[List[ResponseIncludesEnum]] = UNSET
input: Optional[InputsUnion] = None
r"""Input for a response request - can be a string or array of items"""
instructions: OptionalNullable[str] = UNSET
max_output_tokens: OptionalNullable[int] = UNSET
max_tool_calls: OptionalNullable[int] = UNSET
metadata: OptionalNullable[Dict[str, str]] = UNSET
r"""Metadata key-value pairs for the request. Keys must be ≤64 characters and cannot contain brackets. Values must be ≤512 characters. Maximum 16 pairs allowed."""
modalities: Optional[List[OutputModalityEnum]] = None
r"""Output modalities for the response. Supported values are \"text\" and \"image\"."""
model: Optional[str] = None
models: Optional[List[str]] = None
parallel_tool_calls: OptionalNullable[bool] = UNSET
plugins: Optional[List[ResponsesRequestPlugin]] = None
r"""Plugins you want to enable for this request, including their settings."""
presence_penalty: OptionalNullable[float] = UNSET
previous_response_id: OptionalNullable[str] = UNSET
prompt: OptionalNullable[StoredPromptTemplate] = UNSET
prompt_cache_key: OptionalNullable[str] = UNSET
provider: OptionalNullable[ProviderPreferences] = UNSET
r"""When multiple model providers are available, optionally indicate your routing preference."""
reasoning: OptionalNullable[ReasoningConfig] = UNSET
r"""Configuration for reasoning mode in the response"""
safety_identifier: OptionalNullable[str] = UNSET
service_tier: OptionalNullable[ResponsesRequestServiceTier] = "auto"
session_id: Optional[str] = None
r"""A unique identifier for grouping related requests (e.g., a conversation or agent workflow). When provided, OpenRouter uses it as the sticky routing key, routing all requests in the session to the same provider to maximize prompt cache hits. Also used for observability grouping. If provided in both the request body and the x-session-id header, the body value takes precedence. Maximum of 256 characters."""
stop_server_tools_when: Optional[List[StopServerToolsWhenCondition]] = None
r"""Stop conditions for the server-tool agent loop. Any condition firing halts the loop (OR logic). When set, this overrides `max_tool_calls`."""
STORE: Annotated[
Annotated[Optional[Literal[False]], AfterValidator(validate_const(False))],
pydantic.Field(alias="store"),
] = False
stream: Optional[bool] = False
temperature: OptionalNullable[float] = UNSET
text: Optional[TextExtendedConfig] = None
r"""Text output configuration including format and verbosity"""
tool_choice: Optional[OpenAIResponsesToolChoiceUnion] = None
tools: Optional[List[ResponsesRequestToolUnion]] = None
top_k: Optional[int] = None
top_logprobs: OptionalNullable[int] = UNSET
top_p: OptionalNullable[float] = UNSET
trace: Optional[TraceConfig] = None
r"""Metadata for observability and tracing. Known keys (trace_id, trace_name, span_name, generation_name, parent_span_id) have special handling. Additional keys are passed through as custom metadata to configured broadcast destinations."""
truncation: OptionalNullable[OpenAIResponsesTruncation] = UNSET
user: Optional[str] = None
r"""A unique identifier representing your end-user, which helps distinguish between different users of your app. This allows your app to identify specific users in case of abuse reports, preventing your entire app from being affected by the actions of individual users. Maximum of 256 characters."""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
[
"background",
"cache_control",
"debug",
"frequency_penalty",
"image_config",
"include",
"input",
"instructions",
"max_output_tokens",
"max_tool_calls",
"metadata",
"modalities",
"model",
"models",
"parallel_tool_calls",
"plugins",
"presence_penalty",
"previous_response_id",
"prompt",
"prompt_cache_key",
"provider",
"reasoning",
"safety_identifier",
"service_tier",
"session_id",
"stop_server_tools_when",
"store",
"stream",
"temperature",
"text",
"tool_choice",
"tools",
"top_k",
"top_logprobs",
"top_p",
"trace",
"truncation",
"user",
]
)
nullable_fields = set(
[
"background",
"frequency_penalty",
"include",
"instructions",
"max_output_tokens",
"max_tool_calls",
"metadata",
"parallel_tool_calls",
"presence_penalty",
"previous_response_id",
"prompt",
"prompt_cache_key",
"provider",
"reasoning",
"safety_identifier",
"service_tier",
"temperature",
"top_logprobs",
"top_p",
"truncation",
]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
is_nullable_and_explicitly_set = (
k in nullable_fields
and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
)
if val != UNSET_SENTINEL:
if (
val is not None
or k not in optional_fields
or is_nullable_and_explicitly_set
):
m[k] = val
return m
try:
ResponsesRequest.model_rebuild()
except NameError:
pass