mirror of
https://github.com/wassname/openrouter-python-sdk-retry-errors.git
synced 2026-08-01 12:40:23 +08:00
## Python SDK Changes:
* `open_router.benchmarks.get_benchmarks()`: **Added** * `open_router.datasets.get_benchmarks_artificial_analysis()`: **Deleted** **Breaking** ⚠️ * `open_router.datasets.get_benchmarks_design_arena()`: **Deleted** **Breaking** ⚠️ * `open_router.embeddings.list_models()`: `response.data.[].reasoning` **Added** * `open_router.models.get()`: `response.data.reasoning` **Added** * `open_router.models.list()`: `response.data.[].reasoning` **Added** * `open_router.models.list_for_user()`: `response.data.[].reasoning` **Added**
This commit is contained in:
@@ -3,10 +3,10 @@
|
||||
import importlib.metadata
|
||||
|
||||
__title__: str = "openrouter"
|
||||
__version__: str = "0.10.0"
|
||||
__version__: str = "0.10.1"
|
||||
__openapi_doc_version__: str = "1.0.0"
|
||||
__gen_version__: str = "2.788.4"
|
||||
__user_agent__: str = "speakeasy-sdk/python 0.10.0 2.788.4 1.0.0 openrouter"
|
||||
__user_agent__: str = "speakeasy-sdk/python 0.10.1 2.788.4 1.0.0 openrouter"
|
||||
|
||||
try:
|
||||
if __package__ is not None:
|
||||
|
||||
@@ -0,0 +1,303 @@
|
||||
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
||||
|
||||
from .basesdk import BaseSDK
|
||||
from openrouter import components, errors, operations, utils
|
||||
from openrouter._hooks import HookContext
|
||||
from openrouter.types import OptionalNullable, UNSET
|
||||
from openrouter.utils import get_security_from_env
|
||||
from openrouter.utils.unmarshal_json_response import unmarshal_json_response
|
||||
from typing import Any, Mapping, Optional
|
||||
|
||||
|
||||
class Benchmarks(BaseSDK):
|
||||
r"""Benchmarks endpoints"""
|
||||
|
||||
def get_benchmarks(
|
||||
self,
|
||||
*,
|
||||
source: operations.Source,
|
||||
http_referer: Optional[str] = None,
|
||||
x_open_router_title: Optional[str] = None,
|
||||
x_open_router_categories: Optional[str] = None,
|
||||
task_type: Optional[operations.TaskType] = None,
|
||||
arena: Optional[operations.Arena] = None,
|
||||
category: Optional[str] = None,
|
||||
max_results: Optional[int] = 50,
|
||||
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
||||
server_url: Optional[str] = None,
|
||||
timeout_ms: Optional[int] = None,
|
||||
http_headers: Optional[Mapping[str, str]] = None,
|
||||
) -> components.UnifiedBenchmarksResponse:
|
||||
r"""List Benchmarks
|
||||
|
||||
Unified benchmark endpoint that aggregates scores from multiple benchmark sources (Artificial Analysis, Design Arena). Filter by source to reproduce the exact shapes from the legacy per-source endpoints, or use task_type to find models suited for specific workloads. Authenticate with any valid OpenRouter API key. Rate-limited to 30 requests/minute per key and 500 requests/day per account.
|
||||
|
||||
:param source: Benchmark source to query. Determines the shape of the returned items.
|
||||
:param http_referer: The app identifier should be your app's URL and is used as the primary identifier for rankings.
|
||||
This is used to track API usage per application.
|
||||
|
||||
:param x_open_router_title: The app display name allows you to customize how your app appears in OpenRouter's dashboard.
|
||||
|
||||
:param x_open_router_categories: Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
|
||||
|
||||
:param task_type: Filter results by task type. For Artificial Analysis, maps to the corresponding index. For Design Arena, maps to the matching category.
|
||||
:param arena: Design Arena only: arena to query. Defaults to `models` when source is `design-arena`.
|
||||
:param category: Design Arena only: category within the arena (e.g. `codecategories`, `uicomponent`, `gamedev`, `3d`, `dataviz`, `image`, `video`, `svg`). When omitted, returns all categories.
|
||||
:param max_results: Max results to return (1–100, default 50).
|
||||
:param retries: Override the default retry configuration for this method
|
||||
:param server_url: Override the default server URL for this method
|
||||
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
||||
:param http_headers: Additional headers to set or replace on requests.
|
||||
"""
|
||||
base_url = None
|
||||
url_variables = None
|
||||
if timeout_ms is None:
|
||||
timeout_ms = self.sdk_configuration.timeout_ms
|
||||
|
||||
if server_url is not None:
|
||||
base_url = server_url
|
||||
else:
|
||||
base_url = self._get_url(base_url, url_variables)
|
||||
|
||||
request = operations.GetBenchmarksRequest(
|
||||
http_referer=http_referer,
|
||||
x_open_router_title=x_open_router_title,
|
||||
x_open_router_categories=x_open_router_categories,
|
||||
source=source,
|
||||
task_type=task_type,
|
||||
arena=arena,
|
||||
category=category,
|
||||
max_results=max_results,
|
||||
)
|
||||
|
||||
req = self._build_request(
|
||||
method="GET",
|
||||
path="/benchmarks",
|
||||
base_url=base_url,
|
||||
url_variables=url_variables,
|
||||
request=request,
|
||||
request_body_required=False,
|
||||
request_has_path_params=False,
|
||||
request_has_query_params=True,
|
||||
user_agent_header="user-agent",
|
||||
accept_header_value="application/json",
|
||||
http_headers=http_headers,
|
||||
_globals=operations.GetBenchmarksGlobals(
|
||||
http_referer=self.sdk_configuration.globals.http_referer,
|
||||
x_open_router_title=self.sdk_configuration.globals.x_open_router_title,
|
||||
x_open_router_categories=self.sdk_configuration.globals.x_open_router_categories,
|
||||
),
|
||||
security=self.sdk_configuration.security,
|
||||
allow_empty_value=None,
|
||||
timeout_ms=timeout_ms,
|
||||
)
|
||||
|
||||
if retries == UNSET:
|
||||
if self.sdk_configuration.retry_config is not UNSET:
|
||||
retries = self.sdk_configuration.retry_config
|
||||
else:
|
||||
retries = utils.RetryConfig(
|
||||
"backoff", utils.BackoffStrategy(500, 60000, 1.5, 3600000), True
|
||||
)
|
||||
|
||||
retry_config = None
|
||||
if isinstance(retries, utils.RetryConfig):
|
||||
retry_config = (retries, ["5XX"])
|
||||
|
||||
http_res = self.do_request(
|
||||
hook_ctx=HookContext(
|
||||
config=self.sdk_configuration,
|
||||
base_url=base_url or "",
|
||||
operation_id="getBenchmarks",
|
||||
oauth2_scopes=None,
|
||||
security_source=get_security_from_env(
|
||||
self.sdk_configuration.security, components.Security
|
||||
),
|
||||
),
|
||||
request=req,
|
||||
error_status_codes=["400", "401", "429", "4XX", "500", "5XX"],
|
||||
retry_config=retry_config,
|
||||
)
|
||||
|
||||
response_data: Any = None
|
||||
if utils.match_response(http_res, "200", "application/json"):
|
||||
return unmarshal_json_response(
|
||||
components.UnifiedBenchmarksResponse, http_res
|
||||
)
|
||||
if utils.match_response(http_res, "400", "application/json"):
|
||||
response_data = unmarshal_json_response(
|
||||
errors.BadRequestResponseErrorData, http_res
|
||||
)
|
||||
raise errors.BadRequestResponseError(response_data, http_res)
|
||||
if utils.match_response(http_res, "401", "application/json"):
|
||||
response_data = unmarshal_json_response(
|
||||
errors.UnauthorizedResponseErrorData, http_res
|
||||
)
|
||||
raise errors.UnauthorizedResponseError(response_data, http_res)
|
||||
if utils.match_response(http_res, "429", "application/json"):
|
||||
response_data = unmarshal_json_response(
|
||||
errors.TooManyRequestsResponseErrorData, http_res
|
||||
)
|
||||
raise errors.TooManyRequestsResponseError(response_data, http_res)
|
||||
if utils.match_response(http_res, "500", "application/json"):
|
||||
response_data = unmarshal_json_response(
|
||||
errors.InternalServerResponseErrorData, http_res
|
||||
)
|
||||
raise errors.InternalServerResponseError(response_data, http_res)
|
||||
if utils.match_response(http_res, "4XX", "*"):
|
||||
http_res_text = utils.stream_to_text(http_res)
|
||||
raise errors.OpenRouterDefaultError(
|
||||
"API error occurred", http_res, http_res_text
|
||||
)
|
||||
if utils.match_response(http_res, "5XX", "*"):
|
||||
http_res_text = utils.stream_to_text(http_res)
|
||||
raise errors.OpenRouterDefaultError(
|
||||
"API error occurred", http_res, http_res_text
|
||||
)
|
||||
|
||||
raise errors.OpenRouterDefaultError("Unexpected response received", http_res)
|
||||
|
||||
async def get_benchmarks_async(
|
||||
self,
|
||||
*,
|
||||
source: operations.Source,
|
||||
http_referer: Optional[str] = None,
|
||||
x_open_router_title: Optional[str] = None,
|
||||
x_open_router_categories: Optional[str] = None,
|
||||
task_type: Optional[operations.TaskType] = None,
|
||||
arena: Optional[operations.Arena] = None,
|
||||
category: Optional[str] = None,
|
||||
max_results: Optional[int] = 50,
|
||||
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
||||
server_url: Optional[str] = None,
|
||||
timeout_ms: Optional[int] = None,
|
||||
http_headers: Optional[Mapping[str, str]] = None,
|
||||
) -> components.UnifiedBenchmarksResponse:
|
||||
r"""List Benchmarks
|
||||
|
||||
Unified benchmark endpoint that aggregates scores from multiple benchmark sources (Artificial Analysis, Design Arena). Filter by source to reproduce the exact shapes from the legacy per-source endpoints, or use task_type to find models suited for specific workloads. Authenticate with any valid OpenRouter API key. Rate-limited to 30 requests/minute per key and 500 requests/day per account.
|
||||
|
||||
:param source: Benchmark source to query. Determines the shape of the returned items.
|
||||
:param http_referer: The app identifier should be your app's URL and is used as the primary identifier for rankings.
|
||||
This is used to track API usage per application.
|
||||
|
||||
:param x_open_router_title: The app display name allows you to customize how your app appears in OpenRouter's dashboard.
|
||||
|
||||
:param x_open_router_categories: Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
|
||||
|
||||
:param task_type: Filter results by task type. For Artificial Analysis, maps to the corresponding index. For Design Arena, maps to the matching category.
|
||||
:param arena: Design Arena only: arena to query. Defaults to `models` when source is `design-arena`.
|
||||
:param category: Design Arena only: category within the arena (e.g. `codecategories`, `uicomponent`, `gamedev`, `3d`, `dataviz`, `image`, `video`, `svg`). When omitted, returns all categories.
|
||||
:param max_results: Max results to return (1–100, default 50).
|
||||
:param retries: Override the default retry configuration for this method
|
||||
:param server_url: Override the default server URL for this method
|
||||
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
||||
:param http_headers: Additional headers to set or replace on requests.
|
||||
"""
|
||||
base_url = None
|
||||
url_variables = None
|
||||
if timeout_ms is None:
|
||||
timeout_ms = self.sdk_configuration.timeout_ms
|
||||
|
||||
if server_url is not None:
|
||||
base_url = server_url
|
||||
else:
|
||||
base_url = self._get_url(base_url, url_variables)
|
||||
|
||||
request = operations.GetBenchmarksRequest(
|
||||
http_referer=http_referer,
|
||||
x_open_router_title=x_open_router_title,
|
||||
x_open_router_categories=x_open_router_categories,
|
||||
source=source,
|
||||
task_type=task_type,
|
||||
arena=arena,
|
||||
category=category,
|
||||
max_results=max_results,
|
||||
)
|
||||
|
||||
req = self._build_request_async(
|
||||
method="GET",
|
||||
path="/benchmarks",
|
||||
base_url=base_url,
|
||||
url_variables=url_variables,
|
||||
request=request,
|
||||
request_body_required=False,
|
||||
request_has_path_params=False,
|
||||
request_has_query_params=True,
|
||||
user_agent_header="user-agent",
|
||||
accept_header_value="application/json",
|
||||
http_headers=http_headers,
|
||||
_globals=operations.GetBenchmarksGlobals(
|
||||
http_referer=self.sdk_configuration.globals.http_referer,
|
||||
x_open_router_title=self.sdk_configuration.globals.x_open_router_title,
|
||||
x_open_router_categories=self.sdk_configuration.globals.x_open_router_categories,
|
||||
),
|
||||
security=self.sdk_configuration.security,
|
||||
allow_empty_value=None,
|
||||
timeout_ms=timeout_ms,
|
||||
)
|
||||
|
||||
if retries == UNSET:
|
||||
if self.sdk_configuration.retry_config is not UNSET:
|
||||
retries = self.sdk_configuration.retry_config
|
||||
else:
|
||||
retries = utils.RetryConfig(
|
||||
"backoff", utils.BackoffStrategy(500, 60000, 1.5, 3600000), True
|
||||
)
|
||||
|
||||
retry_config = None
|
||||
if isinstance(retries, utils.RetryConfig):
|
||||
retry_config = (retries, ["5XX"])
|
||||
|
||||
http_res = await self.do_request_async(
|
||||
hook_ctx=HookContext(
|
||||
config=self.sdk_configuration,
|
||||
base_url=base_url or "",
|
||||
operation_id="getBenchmarks",
|
||||
oauth2_scopes=None,
|
||||
security_source=get_security_from_env(
|
||||
self.sdk_configuration.security, components.Security
|
||||
),
|
||||
),
|
||||
request=req,
|
||||
error_status_codes=["400", "401", "429", "4XX", "500", "5XX"],
|
||||
retry_config=retry_config,
|
||||
)
|
||||
|
||||
response_data: Any = None
|
||||
if utils.match_response(http_res, "200", "application/json"):
|
||||
return unmarshal_json_response(
|
||||
components.UnifiedBenchmarksResponse, http_res
|
||||
)
|
||||
if utils.match_response(http_res, "400", "application/json"):
|
||||
response_data = unmarshal_json_response(
|
||||
errors.BadRequestResponseErrorData, http_res
|
||||
)
|
||||
raise errors.BadRequestResponseError(response_data, http_res)
|
||||
if utils.match_response(http_res, "401", "application/json"):
|
||||
response_data = unmarshal_json_response(
|
||||
errors.UnauthorizedResponseErrorData, http_res
|
||||
)
|
||||
raise errors.UnauthorizedResponseError(response_data, http_res)
|
||||
if utils.match_response(http_res, "429", "application/json"):
|
||||
response_data = unmarshal_json_response(
|
||||
errors.TooManyRequestsResponseErrorData, http_res
|
||||
)
|
||||
raise errors.TooManyRequestsResponseError(response_data, http_res)
|
||||
if utils.match_response(http_res, "500", "application/json"):
|
||||
response_data = unmarshal_json_response(
|
||||
errors.InternalServerResponseErrorData, http_res
|
||||
)
|
||||
raise errors.InternalServerResponseError(response_data, http_res)
|
||||
if utils.match_response(http_res, "4XX", "*"):
|
||||
http_res_text = await utils.stream_to_text_async(http_res)
|
||||
raise errors.OpenRouterDefaultError(
|
||||
"API error occurred", http_res, http_res_text
|
||||
)
|
||||
if utils.match_response(http_res, "5XX", "*"):
|
||||
http_res_text = await utils.stream_to_text_async(http_res)
|
||||
raise errors.OpenRouterDefaultError(
|
||||
"API error occurred", http_res, http_res_text
|
||||
)
|
||||
|
||||
raise errors.OpenRouterDefaultError("Unexpected response received", http_res)
|
||||
@@ -276,38 +276,6 @@ if TYPE_CHECKING:
|
||||
BashServerToolEnvironment,
|
||||
BashServerToolEnvironmentTypedDict,
|
||||
)
|
||||
from .benchmarkpricing import BenchmarkPricing, BenchmarkPricingTypedDict
|
||||
from .benchmarksaaitem import BenchmarksAAItem, BenchmarksAAItemTypedDict
|
||||
from .benchmarksaameta import (
|
||||
BenchmarksAAMeta,
|
||||
BenchmarksAAMetaSource,
|
||||
BenchmarksAAMetaSourceURL,
|
||||
BenchmarksAAMetaTypedDict,
|
||||
BenchmarksAAMetaVersion,
|
||||
)
|
||||
from .benchmarksaaresponse import (
|
||||
BenchmarksAAResponse,
|
||||
BenchmarksAAResponseTypedDict,
|
||||
)
|
||||
from .benchmarksdaitem import (
|
||||
BenchmarksDAItem,
|
||||
BenchmarksDAItemTypedDict,
|
||||
TournamentStats,
|
||||
TournamentStatsTypedDict,
|
||||
)
|
||||
from .benchmarksdameta import (
|
||||
BenchmarksDAMeta,
|
||||
BenchmarksDAMetaSource,
|
||||
BenchmarksDAMetaSourceURL,
|
||||
BenchmarksDAMetaTypedDict,
|
||||
BenchmarksDAMetaVersion,
|
||||
EloBounds,
|
||||
EloBoundsTypedDict,
|
||||
)
|
||||
from .benchmarksdaresponse import (
|
||||
BenchmarksDAResponse,
|
||||
BenchmarksDAResponseTypedDict,
|
||||
)
|
||||
from .bulkaddworkspacemembersrequest import (
|
||||
BulkAddWorkspaceMembersRequest,
|
||||
BulkAddWorkspaceMembersRequestTypedDict,
|
||||
@@ -1436,6 +1404,7 @@ if TYPE_CHECKING:
|
||||
from .modelbenchmarks import ModelBenchmarks, ModelBenchmarksTypedDict
|
||||
from .modelgroup import ModelGroup
|
||||
from .modellinks import ModelLinks, ModelLinksTypedDict
|
||||
from .modelreasoning import DefaultEffort, ModelReasoning, ModelReasoningTypedDict
|
||||
from .modelresponse import ModelResponse, ModelResponseTypedDict
|
||||
from .modelscountresponse import (
|
||||
ModelsCountResponse,
|
||||
@@ -2348,6 +2317,34 @@ if TYPE_CHECKING:
|
||||
UnauthorizedResponseErrorData,
|
||||
UnauthorizedResponseErrorDataTypedDict,
|
||||
)
|
||||
from .unifiedbenchmarkpricing import (
|
||||
UnifiedBenchmarkPricing,
|
||||
UnifiedBenchmarkPricingTypedDict,
|
||||
)
|
||||
from .unifiedbenchmarksaaitem import (
|
||||
UnifiedBenchmarksAAItem,
|
||||
UnifiedBenchmarksAAItemSource,
|
||||
UnifiedBenchmarksAAItemTypedDict,
|
||||
)
|
||||
from .unifiedbenchmarksdaitem import (
|
||||
TournamentStats,
|
||||
TournamentStatsTypedDict,
|
||||
UnifiedBenchmarksDAItem,
|
||||
UnifiedBenchmarksDAItemSource,
|
||||
UnifiedBenchmarksDAItemTypedDict,
|
||||
)
|
||||
from .unifiedbenchmarksmeta import (
|
||||
UnifiedBenchmarksMeta,
|
||||
UnifiedBenchmarksMetaSource,
|
||||
UnifiedBenchmarksMetaTypedDict,
|
||||
UnifiedBenchmarksMetaVersion,
|
||||
)
|
||||
from .unifiedbenchmarksresponse import (
|
||||
Data,
|
||||
DataTypedDict,
|
||||
UnifiedBenchmarksResponse,
|
||||
UnifiedBenchmarksResponseTypedDict,
|
||||
)
|
||||
from .unprocessableentityresponseerrordata import (
|
||||
UnprocessableEntityResponseErrorData,
|
||||
UnprocessableEntityResponseErrorDataTypedDict,
|
||||
@@ -2728,26 +2725,6 @@ __all__ = [
|
||||
"BashServerToolEnvironmentTypedDict",
|
||||
"BashServerToolType",
|
||||
"BashServerToolTypedDict",
|
||||
"BenchmarkPricing",
|
||||
"BenchmarkPricingTypedDict",
|
||||
"BenchmarksAAItem",
|
||||
"BenchmarksAAItemTypedDict",
|
||||
"BenchmarksAAMeta",
|
||||
"BenchmarksAAMetaSource",
|
||||
"BenchmarksAAMetaSourceURL",
|
||||
"BenchmarksAAMetaTypedDict",
|
||||
"BenchmarksAAMetaVersion",
|
||||
"BenchmarksAAResponse",
|
||||
"BenchmarksAAResponseTypedDict",
|
||||
"BenchmarksDAItem",
|
||||
"BenchmarksDAItemTypedDict",
|
||||
"BenchmarksDAMeta",
|
||||
"BenchmarksDAMetaSource",
|
||||
"BenchmarksDAMetaSourceURL",
|
||||
"BenchmarksDAMetaTypedDict",
|
||||
"BenchmarksDAMetaVersion",
|
||||
"BenchmarksDAResponse",
|
||||
"BenchmarksDAResponseTypedDict",
|
||||
"BulkAddWorkspaceMembersRequest",
|
||||
"BulkAddWorkspaceMembersRequestTypedDict",
|
||||
"BulkAddWorkspaceMembersResponse",
|
||||
@@ -3069,13 +3046,16 @@ __all__ = [
|
||||
"CustomToolTypedDict",
|
||||
"DABenchmarkEntry",
|
||||
"DABenchmarkEntryTypedDict",
|
||||
"Data",
|
||||
"DataCollection",
|
||||
"DataRegion",
|
||||
"DataTypedDict",
|
||||
"DatetimeServerTool",
|
||||
"DatetimeServerToolConfig",
|
||||
"DatetimeServerToolConfigTypedDict",
|
||||
"DatetimeServerToolType",
|
||||
"DatetimeServerToolTypedDict",
|
||||
"DefaultEffort",
|
||||
"DefaultParameters",
|
||||
"DefaultParametersTypedDict",
|
||||
"DeleteBYOKKeyResponse",
|
||||
@@ -3120,8 +3100,6 @@ __all__ = [
|
||||
"EditCompact20260112TypedDict",
|
||||
"EditTypeInputTokens",
|
||||
"EditTypedDict",
|
||||
"EloBounds",
|
||||
"EloBoundsTypedDict",
|
||||
"EndpointInfo",
|
||||
"EndpointInfoTypedDict",
|
||||
"EndpointStatus",
|
||||
@@ -3518,6 +3496,8 @@ __all__ = [
|
||||
"ModelGroup",
|
||||
"ModelLinks",
|
||||
"ModelLinksTypedDict",
|
||||
"ModelReasoning",
|
||||
"ModelReasoningTypedDict",
|
||||
"ModelResponse",
|
||||
"ModelResponseTypedDict",
|
||||
"ModelTypedDict",
|
||||
@@ -4277,6 +4257,20 @@ __all__ = [
|
||||
"URLCitationTypedDict",
|
||||
"UnauthorizedResponseErrorData",
|
||||
"UnauthorizedResponseErrorDataTypedDict",
|
||||
"UnifiedBenchmarkPricing",
|
||||
"UnifiedBenchmarkPricingTypedDict",
|
||||
"UnifiedBenchmarksAAItem",
|
||||
"UnifiedBenchmarksAAItemSource",
|
||||
"UnifiedBenchmarksAAItemTypedDict",
|
||||
"UnifiedBenchmarksDAItem",
|
||||
"UnifiedBenchmarksDAItemSource",
|
||||
"UnifiedBenchmarksDAItemTypedDict",
|
||||
"UnifiedBenchmarksMeta",
|
||||
"UnifiedBenchmarksMetaSource",
|
||||
"UnifiedBenchmarksMetaTypedDict",
|
||||
"UnifiedBenchmarksMetaVersion",
|
||||
"UnifiedBenchmarksResponse",
|
||||
"UnifiedBenchmarksResponseTypedDict",
|
||||
"UniqueInsight",
|
||||
"UniqueInsightTypedDict",
|
||||
"UnprocessableEntityResponseErrorData",
|
||||
@@ -4569,30 +4563,6 @@ _dynamic_imports: dict[str, str] = {
|
||||
"BashServerToolEngine": ".bashservertoolengine",
|
||||
"BashServerToolEnvironment": ".bashservertoolenvironment",
|
||||
"BashServerToolEnvironmentTypedDict": ".bashservertoolenvironment",
|
||||
"BenchmarkPricing": ".benchmarkpricing",
|
||||
"BenchmarkPricingTypedDict": ".benchmarkpricing",
|
||||
"BenchmarksAAItem": ".benchmarksaaitem",
|
||||
"BenchmarksAAItemTypedDict": ".benchmarksaaitem",
|
||||
"BenchmarksAAMeta": ".benchmarksaameta",
|
||||
"BenchmarksAAMetaSource": ".benchmarksaameta",
|
||||
"BenchmarksAAMetaSourceURL": ".benchmarksaameta",
|
||||
"BenchmarksAAMetaTypedDict": ".benchmarksaameta",
|
||||
"BenchmarksAAMetaVersion": ".benchmarksaameta",
|
||||
"BenchmarksAAResponse": ".benchmarksaaresponse",
|
||||
"BenchmarksAAResponseTypedDict": ".benchmarksaaresponse",
|
||||
"BenchmarksDAItem": ".benchmarksdaitem",
|
||||
"BenchmarksDAItemTypedDict": ".benchmarksdaitem",
|
||||
"TournamentStats": ".benchmarksdaitem",
|
||||
"TournamentStatsTypedDict": ".benchmarksdaitem",
|
||||
"BenchmarksDAMeta": ".benchmarksdameta",
|
||||
"BenchmarksDAMetaSource": ".benchmarksdameta",
|
||||
"BenchmarksDAMetaSourceURL": ".benchmarksdameta",
|
||||
"BenchmarksDAMetaTypedDict": ".benchmarksdameta",
|
||||
"BenchmarksDAMetaVersion": ".benchmarksdameta",
|
||||
"EloBounds": ".benchmarksdameta",
|
||||
"EloBoundsTypedDict": ".benchmarksdameta",
|
||||
"BenchmarksDAResponse": ".benchmarksdaresponse",
|
||||
"BenchmarksDAResponseTypedDict": ".benchmarksdaresponse",
|
||||
"BulkAddWorkspaceMembersRequest": ".bulkaddworkspacemembersrequest",
|
||||
"BulkAddWorkspaceMembersRequestTypedDict": ".bulkaddworkspacemembersrequest",
|
||||
"BulkAddWorkspaceMembersResponse": ".bulkaddworkspacemembersresponse",
|
||||
@@ -5459,6 +5429,9 @@ _dynamic_imports: dict[str, str] = {
|
||||
"ModelGroup": ".modelgroup",
|
||||
"ModelLinks": ".modellinks",
|
||||
"ModelLinksTypedDict": ".modellinks",
|
||||
"DefaultEffort": ".modelreasoning",
|
||||
"ModelReasoning": ".modelreasoning",
|
||||
"ModelReasoningTypedDict": ".modelreasoning",
|
||||
"ModelResponse": ".modelresponse",
|
||||
"ModelResponseTypedDict": ".modelresponse",
|
||||
"ModelsCountResponse": ".modelscountresponse",
|
||||
@@ -6127,6 +6100,24 @@ _dynamic_imports: dict[str, str] = {
|
||||
"Truncation": ".truncation",
|
||||
"UnauthorizedResponseErrorData": ".unauthorizedresponseerrordata",
|
||||
"UnauthorizedResponseErrorDataTypedDict": ".unauthorizedresponseerrordata",
|
||||
"UnifiedBenchmarkPricing": ".unifiedbenchmarkpricing",
|
||||
"UnifiedBenchmarkPricingTypedDict": ".unifiedbenchmarkpricing",
|
||||
"UnifiedBenchmarksAAItem": ".unifiedbenchmarksaaitem",
|
||||
"UnifiedBenchmarksAAItemSource": ".unifiedbenchmarksaaitem",
|
||||
"UnifiedBenchmarksAAItemTypedDict": ".unifiedbenchmarksaaitem",
|
||||
"TournamentStats": ".unifiedbenchmarksdaitem",
|
||||
"TournamentStatsTypedDict": ".unifiedbenchmarksdaitem",
|
||||
"UnifiedBenchmarksDAItem": ".unifiedbenchmarksdaitem",
|
||||
"UnifiedBenchmarksDAItemSource": ".unifiedbenchmarksdaitem",
|
||||
"UnifiedBenchmarksDAItemTypedDict": ".unifiedbenchmarksdaitem",
|
||||
"UnifiedBenchmarksMeta": ".unifiedbenchmarksmeta",
|
||||
"UnifiedBenchmarksMetaSource": ".unifiedbenchmarksmeta",
|
||||
"UnifiedBenchmarksMetaTypedDict": ".unifiedbenchmarksmeta",
|
||||
"UnifiedBenchmarksMetaVersion": ".unifiedbenchmarksmeta",
|
||||
"Data": ".unifiedbenchmarksresponse",
|
||||
"DataTypedDict": ".unifiedbenchmarksresponse",
|
||||
"UnifiedBenchmarksResponse": ".unifiedbenchmarksresponse",
|
||||
"UnifiedBenchmarksResponseTypedDict": ".unifiedbenchmarksresponse",
|
||||
"UnprocessableEntityResponseErrorData": ".unprocessableentityresponseerrordata",
|
||||
"UnprocessableEntityResponseErrorDataTypedDict": ".unprocessableentityresponseerrordata",
|
||||
"UpdateBYOKKeyRequest": ".updatebyokkeyrequest",
|
||||
|
||||
@@ -1,53 +0,0 @@
|
||||
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
||||
|
||||
from __future__ import annotations
|
||||
from openrouter.types import BaseModel
|
||||
from typing import Literal
|
||||
from typing_extensions import TypedDict
|
||||
|
||||
|
||||
BenchmarksAAMetaSource = Literal["artificial-analysis",]
|
||||
r"""Data source identifier."""
|
||||
|
||||
|
||||
BenchmarksAAMetaSourceURL = Literal["https://artificialanalysis.ai",]
|
||||
r"""URL of the upstream data source."""
|
||||
|
||||
|
||||
BenchmarksAAMetaVersion = Literal["v1",]
|
||||
r"""Dataset version."""
|
||||
|
||||
|
||||
class BenchmarksAAMetaTypedDict(TypedDict):
|
||||
as_of: str
|
||||
r"""ISO-8601 timestamp of when this data was last updated."""
|
||||
citation: str
|
||||
r"""Required attribution when republishing this data."""
|
||||
model_count: int
|
||||
r"""Number of unique models in the response."""
|
||||
source: BenchmarksAAMetaSource
|
||||
r"""Data source identifier."""
|
||||
source_url: BenchmarksAAMetaSourceURL
|
||||
r"""URL of the upstream data source."""
|
||||
version: BenchmarksAAMetaVersion
|
||||
r"""Dataset version."""
|
||||
|
||||
|
||||
class BenchmarksAAMeta(BaseModel):
|
||||
as_of: str
|
||||
r"""ISO-8601 timestamp of when this data was last updated."""
|
||||
|
||||
citation: str
|
||||
r"""Required attribution when republishing this data."""
|
||||
|
||||
model_count: int
|
||||
r"""Number of unique models in the response."""
|
||||
|
||||
source: BenchmarksAAMetaSource
|
||||
r"""Data source identifier."""
|
||||
|
||||
source_url: BenchmarksAAMetaSourceURL
|
||||
r"""URL of the upstream data source."""
|
||||
|
||||
version: BenchmarksAAMetaVersion
|
||||
r"""Dataset version."""
|
||||
@@ -1,19 +0,0 @@
|
||||
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
||||
|
||||
from __future__ import annotations
|
||||
from .benchmarksaaitem import BenchmarksAAItem, BenchmarksAAItemTypedDict
|
||||
from .benchmarksaameta import BenchmarksAAMeta, BenchmarksAAMetaTypedDict
|
||||
from openrouter.types import BaseModel
|
||||
from typing import List
|
||||
from typing_extensions import TypedDict
|
||||
|
||||
|
||||
class BenchmarksAAResponseTypedDict(TypedDict):
|
||||
data: List[BenchmarksAAItemTypedDict]
|
||||
meta: BenchmarksAAMetaTypedDict
|
||||
|
||||
|
||||
class BenchmarksAAResponse(BaseModel):
|
||||
data: List[BenchmarksAAItem]
|
||||
|
||||
meta: BenchmarksAAMeta
|
||||
@@ -1,118 +0,0 @@
|
||||
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
||||
|
||||
from __future__ import annotations
|
||||
from openrouter.types import BaseModel, Nullable, UNSET_SENTINEL
|
||||
from pydantic import model_serializer
|
||||
from typing import Literal
|
||||
from typing_extensions import TypedDict
|
||||
|
||||
|
||||
class EloBoundsTypedDict(TypedDict):
|
||||
r"""ELO range across all returned models for normalization."""
|
||||
|
||||
max: float
|
||||
r"""Maximum ELO in the result set."""
|
||||
min: float
|
||||
r"""Minimum ELO in the result set."""
|
||||
|
||||
|
||||
class EloBounds(BaseModel):
|
||||
r"""ELO range across all returned models for normalization."""
|
||||
|
||||
max: float
|
||||
r"""Maximum ELO in the result set."""
|
||||
|
||||
min: float
|
||||
r"""Minimum ELO in the result set."""
|
||||
|
||||
|
||||
BenchmarksDAMetaSource = Literal["design-arena",]
|
||||
r"""Data source identifier."""
|
||||
|
||||
|
||||
BenchmarksDAMetaSourceURL = Literal["https://www.designarena.ai",]
|
||||
r"""URL of the upstream data source."""
|
||||
|
||||
|
||||
BenchmarksDAMetaVersion = Literal["v1",]
|
||||
r"""Dataset version."""
|
||||
|
||||
|
||||
class BenchmarksDAMetaTypedDict(TypedDict):
|
||||
arena: str
|
||||
r"""The arena filter applied."""
|
||||
as_of: str
|
||||
r"""ISO-8601 timestamp of when this data was generated."""
|
||||
category: Nullable[str]
|
||||
r"""The category filter applied, or null if showing all."""
|
||||
citation: str
|
||||
r"""Required attribution when republishing this data."""
|
||||
elo_bounds: EloBoundsTypedDict
|
||||
r"""ELO range across all returned models for normalization."""
|
||||
model_count: int
|
||||
r"""Number of unique models in the response."""
|
||||
source: BenchmarksDAMetaSource
|
||||
r"""Data source identifier."""
|
||||
source_url: BenchmarksDAMetaSourceURL
|
||||
r"""URL of the upstream data source."""
|
||||
version: BenchmarksDAMetaVersion
|
||||
r"""Dataset version."""
|
||||
|
||||
|
||||
class BenchmarksDAMeta(BaseModel):
|
||||
arena: str
|
||||
r"""The arena filter applied."""
|
||||
|
||||
as_of: str
|
||||
r"""ISO-8601 timestamp of when this data was generated."""
|
||||
|
||||
category: Nullable[str]
|
||||
r"""The category filter applied, or null if showing all."""
|
||||
|
||||
citation: str
|
||||
r"""Required attribution when republishing this data."""
|
||||
|
||||
elo_bounds: EloBounds
|
||||
r"""ELO range across all returned models for normalization."""
|
||||
|
||||
model_count: int
|
||||
r"""Number of unique models in the response."""
|
||||
|
||||
source: BenchmarksDAMetaSource
|
||||
r"""Data source identifier."""
|
||||
|
||||
source_url: BenchmarksDAMetaSourceURL
|
||||
r"""URL of the upstream data source."""
|
||||
|
||||
version: BenchmarksDAMetaVersion
|
||||
r"""Dataset version."""
|
||||
|
||||
@model_serializer(mode="wrap")
|
||||
def serialize_model(self, handler):
|
||||
optional_fields = []
|
||||
nullable_fields = ["category"]
|
||||
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
|
||||
@@ -1,19 +0,0 @@
|
||||
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
||||
|
||||
from __future__ import annotations
|
||||
from .benchmarksdaitem import BenchmarksDAItem, BenchmarksDAItemTypedDict
|
||||
from .benchmarksdameta import BenchmarksDAMeta, BenchmarksDAMetaTypedDict
|
||||
from openrouter.types import BaseModel
|
||||
from typing import List
|
||||
from typing_extensions import TypedDict
|
||||
|
||||
|
||||
class BenchmarksDAResponseTypedDict(TypedDict):
|
||||
data: List[BenchmarksDAItemTypedDict]
|
||||
meta: BenchmarksDAMetaTypedDict
|
||||
|
||||
|
||||
class BenchmarksDAResponse(BaseModel):
|
||||
data: List[BenchmarksDAItem]
|
||||
|
||||
meta: BenchmarksDAMeta
|
||||
@@ -5,6 +5,7 @@ from .defaultparameters import DefaultParameters, DefaultParametersTypedDict
|
||||
from .modelarchitecture import ModelArchitecture, ModelArchitectureTypedDict
|
||||
from .modelbenchmarks import ModelBenchmarks, ModelBenchmarksTypedDict
|
||||
from .modellinks import ModelLinks, ModelLinksTypedDict
|
||||
from .modelreasoning import ModelReasoning, ModelReasoningTypedDict
|
||||
from .parameter import Parameter
|
||||
from .perrequestlimits import PerRequestLimits, PerRequestLimitsTypedDict
|
||||
from .publicpricing import PublicPricing, PublicPricingTypedDict
|
||||
@@ -62,6 +63,8 @@ class ModelTypedDict(TypedDict):
|
||||
r"""Hugging Face model identifier, if applicable"""
|
||||
knowledge_cutoff: NotRequired[Nullable[str]]
|
||||
r"""The date up to which the model was trained on data. ISO 8601 date string (YYYY-MM-DD) or null if unknown."""
|
||||
reasoning: NotRequired[ModelReasoningTypedDict]
|
||||
r"""Reasoning effort configuration. Omitted for non-reasoning models and dynamic router models."""
|
||||
|
||||
|
||||
class Model(BaseModel):
|
||||
@@ -123,6 +126,9 @@ class Model(BaseModel):
|
||||
knowledge_cutoff: OptionalNullable[str] = UNSET
|
||||
r"""The date up to which the model was trained on data. ISO 8601 date string (YYYY-MM-DD) or null if unknown."""
|
||||
|
||||
reasoning: Optional[ModelReasoning] = None
|
||||
r"""Reasoning effort configuration. Omitted for non-reasoning models and dynamic router models."""
|
||||
|
||||
@model_serializer(mode="wrap")
|
||||
def serialize_model(self, handler):
|
||||
optional_fields = [
|
||||
@@ -131,6 +137,7 @@ class Model(BaseModel):
|
||||
"expiration_date",
|
||||
"hugging_face_id",
|
||||
"knowledge_cutoff",
|
||||
"reasoning",
|
||||
]
|
||||
nullable_fields = [
|
||||
"context_length",
|
||||
|
||||
@@ -0,0 +1,106 @@
|
||||
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
||||
|
||||
from __future__ import annotations
|
||||
from .reasoningeffort import ReasoningEffort
|
||||
from openrouter.types import (
|
||||
BaseModel,
|
||||
Nullable,
|
||||
OptionalNullable,
|
||||
UNSET,
|
||||
UNSET_SENTINEL,
|
||||
UnrecognizedStr,
|
||||
)
|
||||
from openrouter.utils import validate_open_enum
|
||||
from pydantic import model_serializer
|
||||
from pydantic.functional_validators import PlainValidator
|
||||
from typing import List, Literal, Optional, Union
|
||||
from typing_extensions import Annotated, NotRequired, TypedDict
|
||||
|
||||
|
||||
DefaultEffort = Union[
|
||||
Literal[
|
||||
"xhigh",
|
||||
"high",
|
||||
"medium",
|
||||
"low",
|
||||
"minimal",
|
||||
"none",
|
||||
],
|
||||
UnrecognizedStr,
|
||||
]
|
||||
r"""Default reasoning effort when the client enables reasoning without specifying effort. Maps to `reasoning.effort` in chat requests. When `\"none\"`, prefer omitting effort unless the user explicitly disables reasoning."""
|
||||
|
||||
|
||||
class ModelReasoningTypedDict(TypedDict):
|
||||
r"""Reasoning effort configuration. Omitted for non-reasoning models and dynamic router models."""
|
||||
|
||||
mandatory: bool
|
||||
r"""When true, reasoning cannot be disabled and effort \"none\" is rejected."""
|
||||
default_effort: NotRequired[Nullable[DefaultEffort]]
|
||||
default_enabled: NotRequired[bool]
|
||||
r"""Default reasoning enabled state when the client does not set `reasoning.enabled`."""
|
||||
supported_efforts: NotRequired[Nullable[List[Nullable[ReasoningEffort]]]]
|
||||
r"""Allowed reasoning effort values for this model, in descending effort order (highest first). Null means no allowlist — all gateway effort values are accepted."""
|
||||
supports_max_tokens: NotRequired[bool]
|
||||
r"""Present and `true` when the model accepts `reasoning.max_tokens` in requests (Anthropic-style) instead of or in addition to `reasoning.effort`. Omitted otherwise."""
|
||||
|
||||
|
||||
class ModelReasoning(BaseModel):
|
||||
r"""Reasoning effort configuration. Omitted for non-reasoning models and dynamic router models."""
|
||||
|
||||
mandatory: bool
|
||||
r"""When true, reasoning cannot be disabled and effort \"none\" is rejected."""
|
||||
|
||||
default_effort: Annotated[
|
||||
OptionalNullable[DefaultEffort], PlainValidator(validate_open_enum(False))
|
||||
] = UNSET
|
||||
|
||||
default_enabled: Optional[bool] = None
|
||||
r"""Default reasoning enabled state when the client does not set `reasoning.enabled`."""
|
||||
|
||||
supported_efforts: OptionalNullable[
|
||||
List[
|
||||
Annotated[
|
||||
Nullable[ReasoningEffort], PlainValidator(validate_open_enum(False))
|
||||
]
|
||||
]
|
||||
] = UNSET
|
||||
r"""Allowed reasoning effort values for this model, in descending effort order (highest first). Null means no allowlist — all gateway effort values are accepted."""
|
||||
|
||||
supports_max_tokens: Optional[bool] = None
|
||||
r"""Present and `true` when the model accepts `reasoning.max_tokens` in requests (Anthropic-style) instead of or in addition to `reasoning.effort`. Omitted otherwise."""
|
||||
|
||||
@model_serializer(mode="wrap")
|
||||
def serialize_model(self, handler):
|
||||
optional_fields = [
|
||||
"default_effort",
|
||||
"default_enabled",
|
||||
"supported_efforts",
|
||||
"supports_max_tokens",
|
||||
]
|
||||
nullable_fields = ["default_effort", "supported_efforts"]
|
||||
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
|
||||
+2
-2
@@ -5,7 +5,7 @@ from openrouter.types import BaseModel
|
||||
from typing_extensions import TypedDict
|
||||
|
||||
|
||||
class BenchmarkPricingTypedDict(TypedDict):
|
||||
class UnifiedBenchmarkPricingTypedDict(TypedDict):
|
||||
r"""OpenRouter pricing per token for this model. Null if pricing is unavailable."""
|
||||
|
||||
completion: str
|
||||
@@ -14,7 +14,7 @@ class BenchmarkPricingTypedDict(TypedDict):
|
||||
r"""Cost per input token (USD, decimal string)."""
|
||||
|
||||
|
||||
class BenchmarkPricing(BaseModel):
|
||||
class UnifiedBenchmarkPricing(BaseModel):
|
||||
r"""OpenRouter pricing per token for this model. Null if pricing is unavailable."""
|
||||
|
||||
completion: str
|
||||
+23
-10
@@ -1,46 +1,59 @@
|
||||
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
||||
|
||||
from __future__ import annotations
|
||||
from .benchmarkpricing import BenchmarkPricing, BenchmarkPricingTypedDict
|
||||
from .unifiedbenchmarkpricing import (
|
||||
UnifiedBenchmarkPricing,
|
||||
UnifiedBenchmarkPricingTypedDict,
|
||||
)
|
||||
from openrouter.types import BaseModel, Nullable, UNSET_SENTINEL
|
||||
from pydantic import model_serializer
|
||||
from typing import Literal
|
||||
from typing_extensions import TypedDict
|
||||
|
||||
|
||||
class BenchmarksAAItemTypedDict(TypedDict):
|
||||
aa_name: str
|
||||
r"""Model name as listed on Artificial Analysis."""
|
||||
UnifiedBenchmarksAAItemSource = Literal["artificial-analysis",]
|
||||
r"""Benchmark source discriminator."""
|
||||
|
||||
|
||||
class UnifiedBenchmarksAAItemTypedDict(TypedDict):
|
||||
agentic_index: Nullable[float]
|
||||
r"""Artificial Analysis Agentic Index composite score. Higher is better."""
|
||||
coding_index: Nullable[float]
|
||||
r"""Artificial Analysis Coding Index composite score. Higher is better."""
|
||||
display_name: str
|
||||
r"""Model name as listed on Artificial Analysis."""
|
||||
intelligence_index: Nullable[float]
|
||||
r"""Artificial Analysis Intelligence Index composite score. Higher is better."""
|
||||
model_permaslug: str
|
||||
r"""Stable OpenRouter model identifier."""
|
||||
pricing: Nullable[BenchmarkPricingTypedDict]
|
||||
pricing: Nullable[UnifiedBenchmarkPricingTypedDict]
|
||||
r"""OpenRouter pricing per token for this model. Null if pricing is unavailable."""
|
||||
source: UnifiedBenchmarksAAItemSource
|
||||
r"""Benchmark source discriminator."""
|
||||
|
||||
|
||||
class BenchmarksAAItem(BaseModel):
|
||||
aa_name: str
|
||||
r"""Model name as listed on Artificial Analysis."""
|
||||
|
||||
class UnifiedBenchmarksAAItem(BaseModel):
|
||||
agentic_index: Nullable[float]
|
||||
r"""Artificial Analysis Agentic Index composite score. Higher is better."""
|
||||
|
||||
coding_index: Nullable[float]
|
||||
r"""Artificial Analysis Coding Index composite score. Higher is better."""
|
||||
|
||||
display_name: str
|
||||
r"""Model name as listed on Artificial Analysis."""
|
||||
|
||||
intelligence_index: Nullable[float]
|
||||
r"""Artificial Analysis Intelligence Index composite score. Higher is better."""
|
||||
|
||||
model_permaslug: str
|
||||
r"""Stable OpenRouter model identifier."""
|
||||
|
||||
pricing: Nullable[BenchmarkPricing]
|
||||
pricing: Nullable[UnifiedBenchmarkPricing]
|
||||
r"""OpenRouter pricing per token for this model. Null if pricing is unavailable."""
|
||||
|
||||
source: UnifiedBenchmarksAAItemSource
|
||||
r"""Benchmark source discriminator."""
|
||||
|
||||
@model_serializer(mode="wrap")
|
||||
def serialize_model(self, handler):
|
||||
optional_fields = []
|
||||
+20
-7
@@ -1,12 +1,20 @@
|
||||
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
||||
|
||||
from __future__ import annotations
|
||||
from .benchmarkpricing import BenchmarkPricing, BenchmarkPricingTypedDict
|
||||
from .unifiedbenchmarkpricing import (
|
||||
UnifiedBenchmarkPricing,
|
||||
UnifiedBenchmarkPricingTypedDict,
|
||||
)
|
||||
from openrouter.types import BaseModel, Nullable, UNSET_SENTINEL
|
||||
from pydantic import model_serializer
|
||||
from typing import Literal
|
||||
from typing_extensions import TypedDict
|
||||
|
||||
|
||||
UnifiedBenchmarksDAItemSource = Literal["design-arena",]
|
||||
r"""Benchmark source discriminator."""
|
||||
|
||||
|
||||
class TournamentStatsTypedDict(TypedDict):
|
||||
r"""Placement distribution from tournament matches."""
|
||||
|
||||
@@ -67,7 +75,7 @@ class TournamentStats(BaseModel):
|
||||
return m
|
||||
|
||||
|
||||
class BenchmarksDAItemTypedDict(TypedDict):
|
||||
class UnifiedBenchmarksDAItemTypedDict(TypedDict):
|
||||
arena: str
|
||||
r"""Arena this ranking belongs to."""
|
||||
avg_generation_time_ms: Nullable[float]
|
||||
@@ -79,16 +87,18 @@ class BenchmarksDAItemTypedDict(TypedDict):
|
||||
elo: float
|
||||
r"""ELO rating from head-to-head arena battles."""
|
||||
model_permaslug: str
|
||||
r"""Stable OpenRouter model identifier when the model is on OpenRouter; otherwise the upstream Design Arena model id. Use pricing != null to detect OpenRouter-mapped models."""
|
||||
pricing: Nullable[BenchmarkPricingTypedDict]
|
||||
r"""Stable OpenRouter model identifier when mapped; otherwise the upstream Design Arena model id."""
|
||||
pricing: Nullable[UnifiedBenchmarkPricingTypedDict]
|
||||
r"""OpenRouter pricing per token for this model. Null if pricing is unavailable."""
|
||||
source: UnifiedBenchmarksDAItemSource
|
||||
r"""Benchmark source discriminator."""
|
||||
tournament_stats: TournamentStatsTypedDict
|
||||
r"""Placement distribution from tournament matches."""
|
||||
win_rate: float
|
||||
r"""Win rate as a percentage (0–100)."""
|
||||
|
||||
|
||||
class BenchmarksDAItem(BaseModel):
|
||||
class UnifiedBenchmarksDAItem(BaseModel):
|
||||
arena: str
|
||||
r"""Arena this ranking belongs to."""
|
||||
|
||||
@@ -105,11 +115,14 @@ class BenchmarksDAItem(BaseModel):
|
||||
r"""ELO rating from head-to-head arena battles."""
|
||||
|
||||
model_permaslug: str
|
||||
r"""Stable OpenRouter model identifier when the model is on OpenRouter; otherwise the upstream Design Arena model id. Use pricing != null to detect OpenRouter-mapped models."""
|
||||
r"""Stable OpenRouter model identifier when mapped; otherwise the upstream Design Arena model id."""
|
||||
|
||||
pricing: Nullable[BenchmarkPricing]
|
||||
pricing: Nullable[UnifiedBenchmarkPricing]
|
||||
r"""OpenRouter pricing per token for this model. Null if pricing is unavailable."""
|
||||
|
||||
source: UnifiedBenchmarksDAItemSource
|
||||
r"""Benchmark source discriminator."""
|
||||
|
||||
tournament_stats: TournamentStats
|
||||
r"""Placement distribution from tournament matches."""
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
||||
|
||||
from __future__ import annotations
|
||||
from openrouter.types import BaseModel, Nullable, UNSET_SENTINEL, UnrecognizedStr
|
||||
from openrouter.utils import validate_open_enum
|
||||
from pydantic import model_serializer
|
||||
from pydantic.functional_validators import PlainValidator
|
||||
from typing import Literal, Union
|
||||
from typing_extensions import Annotated, TypedDict
|
||||
|
||||
|
||||
UnifiedBenchmarksMetaSource = Union[
|
||||
Literal[
|
||||
"artificial-analysis",
|
||||
"design-arena",
|
||||
],
|
||||
UnrecognizedStr,
|
||||
]
|
||||
r"""The source filter applied."""
|
||||
|
||||
|
||||
UnifiedBenchmarksMetaVersion = Literal["v1",]
|
||||
r"""Dataset version."""
|
||||
|
||||
|
||||
class UnifiedBenchmarksMetaTypedDict(TypedDict):
|
||||
as_of: str
|
||||
r"""ISO-8601 timestamp of when this data was last updated."""
|
||||
citation: str
|
||||
r"""Required attribution when republishing this data."""
|
||||
model_count: int
|
||||
r"""Number of unique models in the response."""
|
||||
source: UnifiedBenchmarksMetaSource
|
||||
r"""The source filter applied."""
|
||||
source_url: str
|
||||
r"""URL of the upstream data source."""
|
||||
task_type: Nullable[str]
|
||||
r"""The task_type filter applied, or null if showing all."""
|
||||
version: UnifiedBenchmarksMetaVersion
|
||||
r"""Dataset version."""
|
||||
|
||||
|
||||
class UnifiedBenchmarksMeta(BaseModel):
|
||||
as_of: str
|
||||
r"""ISO-8601 timestamp of when this data was last updated."""
|
||||
|
||||
citation: str
|
||||
r"""Required attribution when republishing this data."""
|
||||
|
||||
model_count: int
|
||||
r"""Number of unique models in the response."""
|
||||
|
||||
source: Annotated[
|
||||
UnifiedBenchmarksMetaSource, PlainValidator(validate_open_enum(False))
|
||||
]
|
||||
r"""The source filter applied."""
|
||||
|
||||
source_url: str
|
||||
r"""URL of the upstream data source."""
|
||||
|
||||
task_type: Nullable[str]
|
||||
r"""The task_type filter applied, or null if showing all."""
|
||||
|
||||
version: UnifiedBenchmarksMetaVersion
|
||||
r"""Dataset version."""
|
||||
|
||||
@model_serializer(mode="wrap")
|
||||
def serialize_model(self, handler):
|
||||
optional_fields = []
|
||||
nullable_fields = ["task_type"]
|
||||
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
|
||||
@@ -0,0 +1,43 @@
|
||||
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
||||
|
||||
from __future__ import annotations
|
||||
from .unifiedbenchmarksaaitem import (
|
||||
UnifiedBenchmarksAAItem,
|
||||
UnifiedBenchmarksAAItemTypedDict,
|
||||
)
|
||||
from .unifiedbenchmarksdaitem import (
|
||||
UnifiedBenchmarksDAItem,
|
||||
UnifiedBenchmarksDAItemTypedDict,
|
||||
)
|
||||
from .unifiedbenchmarksmeta import UnifiedBenchmarksMeta, UnifiedBenchmarksMetaTypedDict
|
||||
from openrouter.types import BaseModel
|
||||
from openrouter.utils import get_discriminator
|
||||
from pydantic import Discriminator, Tag
|
||||
from typing import List, Union
|
||||
from typing_extensions import Annotated, TypeAliasType, TypedDict
|
||||
|
||||
|
||||
DataTypedDict = TypeAliasType(
|
||||
"DataTypedDict",
|
||||
Union[UnifiedBenchmarksAAItemTypedDict, UnifiedBenchmarksDAItemTypedDict],
|
||||
)
|
||||
|
||||
|
||||
Data = Annotated[
|
||||
Union[
|
||||
Annotated[UnifiedBenchmarksAAItem, Tag("artificial-analysis")],
|
||||
Annotated[UnifiedBenchmarksDAItem, Tag("design-arena")],
|
||||
],
|
||||
Discriminator(lambda m: get_discriminator(m, "source", "source")),
|
||||
]
|
||||
|
||||
|
||||
class UnifiedBenchmarksResponseTypedDict(TypedDict):
|
||||
data: List[DataTypedDict]
|
||||
meta: UnifiedBenchmarksMetaTypedDict
|
||||
|
||||
|
||||
class UnifiedBenchmarksResponse(BaseModel):
|
||||
data: List[Data]
|
||||
|
||||
meta: UnifiedBenchmarksMeta
|
||||
@@ -426,542 +426,6 @@ class Datasets(BaseSDK):
|
||||
|
||||
raise errors.OpenRouterDefaultError("Unexpected response received", http_res)
|
||||
|
||||
def get_benchmarks_artificial_analysis(
|
||||
self,
|
||||
*,
|
||||
http_referer: Optional[str] = None,
|
||||
x_open_router_title: Optional[str] = None,
|
||||
x_open_router_categories: Optional[str] = None,
|
||||
max_results: Optional[int] = 50,
|
||||
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
||||
server_url: Optional[str] = None,
|
||||
timeout_ms: Optional[int] = None,
|
||||
http_headers: Optional[Mapping[str, str]] = None,
|
||||
) -> components.BenchmarksAAResponse:
|
||||
r"""Artificial Analysis Benchmark Indices
|
||||
|
||||
Returns composite index scores (Intelligence, Coding, Agentic) from Artificial Analysis for LLM models. Includes OpenRouter pricing per model. Authenticate with any valid OpenRouter API key. Rate-limited to 30 requests/minute per key and 500 requests/day per account.
|
||||
|
||||
:param http_referer: The app identifier should be your app's URL and is used as the primary identifier for rankings.
|
||||
This is used to track API usage per application.
|
||||
|
||||
:param x_open_router_title: The app display name allows you to customize how your app appears in OpenRouter's dashboard.
|
||||
|
||||
:param x_open_router_categories: Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
|
||||
|
||||
:param max_results: Max results to return (1–100, default 50).
|
||||
:param retries: Override the default retry configuration for this method
|
||||
:param server_url: Override the default server URL for this method
|
||||
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
||||
:param http_headers: Additional headers to set or replace on requests.
|
||||
"""
|
||||
base_url = None
|
||||
url_variables = None
|
||||
if timeout_ms is None:
|
||||
timeout_ms = self.sdk_configuration.timeout_ms
|
||||
|
||||
if server_url is not None:
|
||||
base_url = server_url
|
||||
else:
|
||||
base_url = self._get_url(base_url, url_variables)
|
||||
|
||||
request = operations.GetBenchmarksArtificialAnalysisRequest(
|
||||
http_referer=http_referer,
|
||||
x_open_router_title=x_open_router_title,
|
||||
x_open_router_categories=x_open_router_categories,
|
||||
max_results=max_results,
|
||||
)
|
||||
|
||||
req = self._build_request(
|
||||
method="GET",
|
||||
path="/datasets/benchmarks/artificial-analysis",
|
||||
base_url=base_url,
|
||||
url_variables=url_variables,
|
||||
request=request,
|
||||
request_body_required=False,
|
||||
request_has_path_params=False,
|
||||
request_has_query_params=True,
|
||||
user_agent_header="user-agent",
|
||||
accept_header_value="application/json",
|
||||
http_headers=http_headers,
|
||||
_globals=operations.GetBenchmarksArtificialAnalysisGlobals(
|
||||
http_referer=self.sdk_configuration.globals.http_referer,
|
||||
x_open_router_title=self.sdk_configuration.globals.x_open_router_title,
|
||||
x_open_router_categories=self.sdk_configuration.globals.x_open_router_categories,
|
||||
),
|
||||
security=self.sdk_configuration.security,
|
||||
allow_empty_value=None,
|
||||
timeout_ms=timeout_ms,
|
||||
)
|
||||
|
||||
if retries == UNSET:
|
||||
if self.sdk_configuration.retry_config is not UNSET:
|
||||
retries = self.sdk_configuration.retry_config
|
||||
else:
|
||||
retries = utils.RetryConfig(
|
||||
"backoff", utils.BackoffStrategy(500, 60000, 1.5, 3600000), True
|
||||
)
|
||||
|
||||
retry_config = None
|
||||
if isinstance(retries, utils.RetryConfig):
|
||||
retry_config = (retries, ["5XX"])
|
||||
|
||||
http_res = self.do_request(
|
||||
hook_ctx=HookContext(
|
||||
config=self.sdk_configuration,
|
||||
base_url=base_url or "",
|
||||
operation_id="getBenchmarksArtificialAnalysis",
|
||||
oauth2_scopes=None,
|
||||
security_source=get_security_from_env(
|
||||
self.sdk_configuration.security, components.Security
|
||||
),
|
||||
),
|
||||
request=req,
|
||||
error_status_codes=["400", "401", "429", "4XX", "500", "5XX"],
|
||||
retry_config=retry_config,
|
||||
)
|
||||
|
||||
response_data: Any = None
|
||||
if utils.match_response(http_res, "200", "application/json"):
|
||||
return unmarshal_json_response(components.BenchmarksAAResponse, http_res)
|
||||
if utils.match_response(http_res, "400", "application/json"):
|
||||
response_data = unmarshal_json_response(
|
||||
errors.BadRequestResponseErrorData, http_res
|
||||
)
|
||||
raise errors.BadRequestResponseError(response_data, http_res)
|
||||
if utils.match_response(http_res, "401", "application/json"):
|
||||
response_data = unmarshal_json_response(
|
||||
errors.UnauthorizedResponseErrorData, http_res
|
||||
)
|
||||
raise errors.UnauthorizedResponseError(response_data, http_res)
|
||||
if utils.match_response(http_res, "429", "application/json"):
|
||||
response_data = unmarshal_json_response(
|
||||
errors.TooManyRequestsResponseErrorData, http_res
|
||||
)
|
||||
raise errors.TooManyRequestsResponseError(response_data, http_res)
|
||||
if utils.match_response(http_res, "500", "application/json"):
|
||||
response_data = unmarshal_json_response(
|
||||
errors.InternalServerResponseErrorData, http_res
|
||||
)
|
||||
raise errors.InternalServerResponseError(response_data, http_res)
|
||||
if utils.match_response(http_res, "4XX", "*"):
|
||||
http_res_text = utils.stream_to_text(http_res)
|
||||
raise errors.OpenRouterDefaultError(
|
||||
"API error occurred", http_res, http_res_text
|
||||
)
|
||||
if utils.match_response(http_res, "5XX", "*"):
|
||||
http_res_text = utils.stream_to_text(http_res)
|
||||
raise errors.OpenRouterDefaultError(
|
||||
"API error occurred", http_res, http_res_text
|
||||
)
|
||||
|
||||
raise errors.OpenRouterDefaultError("Unexpected response received", http_res)
|
||||
|
||||
async def get_benchmarks_artificial_analysis_async(
|
||||
self,
|
||||
*,
|
||||
http_referer: Optional[str] = None,
|
||||
x_open_router_title: Optional[str] = None,
|
||||
x_open_router_categories: Optional[str] = None,
|
||||
max_results: Optional[int] = 50,
|
||||
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
||||
server_url: Optional[str] = None,
|
||||
timeout_ms: Optional[int] = None,
|
||||
http_headers: Optional[Mapping[str, str]] = None,
|
||||
) -> components.BenchmarksAAResponse:
|
||||
r"""Artificial Analysis Benchmark Indices
|
||||
|
||||
Returns composite index scores (Intelligence, Coding, Agentic) from Artificial Analysis for LLM models. Includes OpenRouter pricing per model. Authenticate with any valid OpenRouter API key. Rate-limited to 30 requests/minute per key and 500 requests/day per account.
|
||||
|
||||
:param http_referer: The app identifier should be your app's URL and is used as the primary identifier for rankings.
|
||||
This is used to track API usage per application.
|
||||
|
||||
:param x_open_router_title: The app display name allows you to customize how your app appears in OpenRouter's dashboard.
|
||||
|
||||
:param x_open_router_categories: Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
|
||||
|
||||
:param max_results: Max results to return (1–100, default 50).
|
||||
:param retries: Override the default retry configuration for this method
|
||||
:param server_url: Override the default server URL for this method
|
||||
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
||||
:param http_headers: Additional headers to set or replace on requests.
|
||||
"""
|
||||
base_url = None
|
||||
url_variables = None
|
||||
if timeout_ms is None:
|
||||
timeout_ms = self.sdk_configuration.timeout_ms
|
||||
|
||||
if server_url is not None:
|
||||
base_url = server_url
|
||||
else:
|
||||
base_url = self._get_url(base_url, url_variables)
|
||||
|
||||
request = operations.GetBenchmarksArtificialAnalysisRequest(
|
||||
http_referer=http_referer,
|
||||
x_open_router_title=x_open_router_title,
|
||||
x_open_router_categories=x_open_router_categories,
|
||||
max_results=max_results,
|
||||
)
|
||||
|
||||
req = self._build_request_async(
|
||||
method="GET",
|
||||
path="/datasets/benchmarks/artificial-analysis",
|
||||
base_url=base_url,
|
||||
url_variables=url_variables,
|
||||
request=request,
|
||||
request_body_required=False,
|
||||
request_has_path_params=False,
|
||||
request_has_query_params=True,
|
||||
user_agent_header="user-agent",
|
||||
accept_header_value="application/json",
|
||||
http_headers=http_headers,
|
||||
_globals=operations.GetBenchmarksArtificialAnalysisGlobals(
|
||||
http_referer=self.sdk_configuration.globals.http_referer,
|
||||
x_open_router_title=self.sdk_configuration.globals.x_open_router_title,
|
||||
x_open_router_categories=self.sdk_configuration.globals.x_open_router_categories,
|
||||
),
|
||||
security=self.sdk_configuration.security,
|
||||
allow_empty_value=None,
|
||||
timeout_ms=timeout_ms,
|
||||
)
|
||||
|
||||
if retries == UNSET:
|
||||
if self.sdk_configuration.retry_config is not UNSET:
|
||||
retries = self.sdk_configuration.retry_config
|
||||
else:
|
||||
retries = utils.RetryConfig(
|
||||
"backoff", utils.BackoffStrategy(500, 60000, 1.5, 3600000), True
|
||||
)
|
||||
|
||||
retry_config = None
|
||||
if isinstance(retries, utils.RetryConfig):
|
||||
retry_config = (retries, ["5XX"])
|
||||
|
||||
http_res = await self.do_request_async(
|
||||
hook_ctx=HookContext(
|
||||
config=self.sdk_configuration,
|
||||
base_url=base_url or "",
|
||||
operation_id="getBenchmarksArtificialAnalysis",
|
||||
oauth2_scopes=None,
|
||||
security_source=get_security_from_env(
|
||||
self.sdk_configuration.security, components.Security
|
||||
),
|
||||
),
|
||||
request=req,
|
||||
error_status_codes=["400", "401", "429", "4XX", "500", "5XX"],
|
||||
retry_config=retry_config,
|
||||
)
|
||||
|
||||
response_data: Any = None
|
||||
if utils.match_response(http_res, "200", "application/json"):
|
||||
return unmarshal_json_response(components.BenchmarksAAResponse, http_res)
|
||||
if utils.match_response(http_res, "400", "application/json"):
|
||||
response_data = unmarshal_json_response(
|
||||
errors.BadRequestResponseErrorData, http_res
|
||||
)
|
||||
raise errors.BadRequestResponseError(response_data, http_res)
|
||||
if utils.match_response(http_res, "401", "application/json"):
|
||||
response_data = unmarshal_json_response(
|
||||
errors.UnauthorizedResponseErrorData, http_res
|
||||
)
|
||||
raise errors.UnauthorizedResponseError(response_data, http_res)
|
||||
if utils.match_response(http_res, "429", "application/json"):
|
||||
response_data = unmarshal_json_response(
|
||||
errors.TooManyRequestsResponseErrorData, http_res
|
||||
)
|
||||
raise errors.TooManyRequestsResponseError(response_data, http_res)
|
||||
if utils.match_response(http_res, "500", "application/json"):
|
||||
response_data = unmarshal_json_response(
|
||||
errors.InternalServerResponseErrorData, http_res
|
||||
)
|
||||
raise errors.InternalServerResponseError(response_data, http_res)
|
||||
if utils.match_response(http_res, "4XX", "*"):
|
||||
http_res_text = await utils.stream_to_text_async(http_res)
|
||||
raise errors.OpenRouterDefaultError(
|
||||
"API error occurred", http_res, http_res_text
|
||||
)
|
||||
if utils.match_response(http_res, "5XX", "*"):
|
||||
http_res_text = await utils.stream_to_text_async(http_res)
|
||||
raise errors.OpenRouterDefaultError(
|
||||
"API error occurred", http_res, http_res_text
|
||||
)
|
||||
|
||||
raise errors.OpenRouterDefaultError("Unexpected response received", http_res)
|
||||
|
||||
def get_benchmarks_design_arena(
|
||||
self,
|
||||
*,
|
||||
http_referer: Optional[str] = None,
|
||||
x_open_router_title: Optional[str] = None,
|
||||
x_open_router_categories: Optional[str] = None,
|
||||
arena: Optional[operations.Arena] = "models",
|
||||
category: Optional[str] = None,
|
||||
max_results: Optional[int] = 50,
|
||||
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
||||
server_url: Optional[str] = None,
|
||||
timeout_ms: Optional[int] = None,
|
||||
http_headers: Optional[Mapping[str, str]] = None,
|
||||
) -> components.BenchmarksDAResponse:
|
||||
r"""Design Arena Benchmark Rankings
|
||||
|
||||
Returns ELO ratings from head-to-head arena battles on Design Arena. Filterable by arena (models/builders/agents) and category. Includes OpenRouter pricing per model. Authenticate with any valid OpenRouter API key. Rate-limited to 30 requests/minute per key and 500 requests/day per account.
|
||||
|
||||
:param http_referer: The app identifier should be your app's URL and is used as the primary identifier for rankings.
|
||||
This is used to track API usage per application.
|
||||
|
||||
:param x_open_router_title: The app display name allows you to customize how your app appears in OpenRouter's dashboard.
|
||||
|
||||
:param x_open_router_categories: Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
|
||||
|
||||
:param arena: Arena to query. Defaults to `models`.
|
||||
:param category: Category within the arena (e.g. `codecategories`, `uicomponent`, `gamedev`, `3d`, `dataviz`, `image`, `video`, `svg`). When omitted, returns all categories.
|
||||
:param max_results: Max results to return: per category when no category filter is applied (1–100, default 50).
|
||||
:param retries: Override the default retry configuration for this method
|
||||
:param server_url: Override the default server URL for this method
|
||||
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
||||
:param http_headers: Additional headers to set or replace on requests.
|
||||
"""
|
||||
base_url = None
|
||||
url_variables = None
|
||||
if timeout_ms is None:
|
||||
timeout_ms = self.sdk_configuration.timeout_ms
|
||||
|
||||
if server_url is not None:
|
||||
base_url = server_url
|
||||
else:
|
||||
base_url = self._get_url(base_url, url_variables)
|
||||
|
||||
request = operations.GetBenchmarksDesignArenaRequest(
|
||||
http_referer=http_referer,
|
||||
x_open_router_title=x_open_router_title,
|
||||
x_open_router_categories=x_open_router_categories,
|
||||
arena=arena,
|
||||
category=category,
|
||||
max_results=max_results,
|
||||
)
|
||||
|
||||
req = self._build_request(
|
||||
method="GET",
|
||||
path="/datasets/benchmarks/design-arena",
|
||||
base_url=base_url,
|
||||
url_variables=url_variables,
|
||||
request=request,
|
||||
request_body_required=False,
|
||||
request_has_path_params=False,
|
||||
request_has_query_params=True,
|
||||
user_agent_header="user-agent",
|
||||
accept_header_value="application/json",
|
||||
http_headers=http_headers,
|
||||
_globals=operations.GetBenchmarksDesignArenaGlobals(
|
||||
http_referer=self.sdk_configuration.globals.http_referer,
|
||||
x_open_router_title=self.sdk_configuration.globals.x_open_router_title,
|
||||
x_open_router_categories=self.sdk_configuration.globals.x_open_router_categories,
|
||||
),
|
||||
security=self.sdk_configuration.security,
|
||||
allow_empty_value=None,
|
||||
timeout_ms=timeout_ms,
|
||||
)
|
||||
|
||||
if retries == UNSET:
|
||||
if self.sdk_configuration.retry_config is not UNSET:
|
||||
retries = self.sdk_configuration.retry_config
|
||||
else:
|
||||
retries = utils.RetryConfig(
|
||||
"backoff", utils.BackoffStrategy(500, 60000, 1.5, 3600000), True
|
||||
)
|
||||
|
||||
retry_config = None
|
||||
if isinstance(retries, utils.RetryConfig):
|
||||
retry_config = (retries, ["5XX"])
|
||||
|
||||
http_res = self.do_request(
|
||||
hook_ctx=HookContext(
|
||||
config=self.sdk_configuration,
|
||||
base_url=base_url or "",
|
||||
operation_id="getBenchmarksDesignArena",
|
||||
oauth2_scopes=None,
|
||||
security_source=get_security_from_env(
|
||||
self.sdk_configuration.security, components.Security
|
||||
),
|
||||
),
|
||||
request=req,
|
||||
error_status_codes=["400", "401", "429", "4XX", "500", "5XX"],
|
||||
retry_config=retry_config,
|
||||
)
|
||||
|
||||
response_data: Any = None
|
||||
if utils.match_response(http_res, "200", "application/json"):
|
||||
return unmarshal_json_response(components.BenchmarksDAResponse, http_res)
|
||||
if utils.match_response(http_res, "400", "application/json"):
|
||||
response_data = unmarshal_json_response(
|
||||
errors.BadRequestResponseErrorData, http_res
|
||||
)
|
||||
raise errors.BadRequestResponseError(response_data, http_res)
|
||||
if utils.match_response(http_res, "401", "application/json"):
|
||||
response_data = unmarshal_json_response(
|
||||
errors.UnauthorizedResponseErrorData, http_res
|
||||
)
|
||||
raise errors.UnauthorizedResponseError(response_data, http_res)
|
||||
if utils.match_response(http_res, "429", "application/json"):
|
||||
response_data = unmarshal_json_response(
|
||||
errors.TooManyRequestsResponseErrorData, http_res
|
||||
)
|
||||
raise errors.TooManyRequestsResponseError(response_data, http_res)
|
||||
if utils.match_response(http_res, "500", "application/json"):
|
||||
response_data = unmarshal_json_response(
|
||||
errors.InternalServerResponseErrorData, http_res
|
||||
)
|
||||
raise errors.InternalServerResponseError(response_data, http_res)
|
||||
if utils.match_response(http_res, "4XX", "*"):
|
||||
http_res_text = utils.stream_to_text(http_res)
|
||||
raise errors.OpenRouterDefaultError(
|
||||
"API error occurred", http_res, http_res_text
|
||||
)
|
||||
if utils.match_response(http_res, "5XX", "*"):
|
||||
http_res_text = utils.stream_to_text(http_res)
|
||||
raise errors.OpenRouterDefaultError(
|
||||
"API error occurred", http_res, http_res_text
|
||||
)
|
||||
|
||||
raise errors.OpenRouterDefaultError("Unexpected response received", http_res)
|
||||
|
||||
async def get_benchmarks_design_arena_async(
|
||||
self,
|
||||
*,
|
||||
http_referer: Optional[str] = None,
|
||||
x_open_router_title: Optional[str] = None,
|
||||
x_open_router_categories: Optional[str] = None,
|
||||
arena: Optional[operations.Arena] = "models",
|
||||
category: Optional[str] = None,
|
||||
max_results: Optional[int] = 50,
|
||||
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
||||
server_url: Optional[str] = None,
|
||||
timeout_ms: Optional[int] = None,
|
||||
http_headers: Optional[Mapping[str, str]] = None,
|
||||
) -> components.BenchmarksDAResponse:
|
||||
r"""Design Arena Benchmark Rankings
|
||||
|
||||
Returns ELO ratings from head-to-head arena battles on Design Arena. Filterable by arena (models/builders/agents) and category. Includes OpenRouter pricing per model. Authenticate with any valid OpenRouter API key. Rate-limited to 30 requests/minute per key and 500 requests/day per account.
|
||||
|
||||
:param http_referer: The app identifier should be your app's URL and is used as the primary identifier for rankings.
|
||||
This is used to track API usage per application.
|
||||
|
||||
:param x_open_router_title: The app display name allows you to customize how your app appears in OpenRouter's dashboard.
|
||||
|
||||
:param x_open_router_categories: Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
|
||||
|
||||
:param arena: Arena to query. Defaults to `models`.
|
||||
:param category: Category within the arena (e.g. `codecategories`, `uicomponent`, `gamedev`, `3d`, `dataviz`, `image`, `video`, `svg`). When omitted, returns all categories.
|
||||
:param max_results: Max results to return: per category when no category filter is applied (1–100, default 50).
|
||||
:param retries: Override the default retry configuration for this method
|
||||
:param server_url: Override the default server URL for this method
|
||||
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
||||
:param http_headers: Additional headers to set or replace on requests.
|
||||
"""
|
||||
base_url = None
|
||||
url_variables = None
|
||||
if timeout_ms is None:
|
||||
timeout_ms = self.sdk_configuration.timeout_ms
|
||||
|
||||
if server_url is not None:
|
||||
base_url = server_url
|
||||
else:
|
||||
base_url = self._get_url(base_url, url_variables)
|
||||
|
||||
request = operations.GetBenchmarksDesignArenaRequest(
|
||||
http_referer=http_referer,
|
||||
x_open_router_title=x_open_router_title,
|
||||
x_open_router_categories=x_open_router_categories,
|
||||
arena=arena,
|
||||
category=category,
|
||||
max_results=max_results,
|
||||
)
|
||||
|
||||
req = self._build_request_async(
|
||||
method="GET",
|
||||
path="/datasets/benchmarks/design-arena",
|
||||
base_url=base_url,
|
||||
url_variables=url_variables,
|
||||
request=request,
|
||||
request_body_required=False,
|
||||
request_has_path_params=False,
|
||||
request_has_query_params=True,
|
||||
user_agent_header="user-agent",
|
||||
accept_header_value="application/json",
|
||||
http_headers=http_headers,
|
||||
_globals=operations.GetBenchmarksDesignArenaGlobals(
|
||||
http_referer=self.sdk_configuration.globals.http_referer,
|
||||
x_open_router_title=self.sdk_configuration.globals.x_open_router_title,
|
||||
x_open_router_categories=self.sdk_configuration.globals.x_open_router_categories,
|
||||
),
|
||||
security=self.sdk_configuration.security,
|
||||
allow_empty_value=None,
|
||||
timeout_ms=timeout_ms,
|
||||
)
|
||||
|
||||
if retries == UNSET:
|
||||
if self.sdk_configuration.retry_config is not UNSET:
|
||||
retries = self.sdk_configuration.retry_config
|
||||
else:
|
||||
retries = utils.RetryConfig(
|
||||
"backoff", utils.BackoffStrategy(500, 60000, 1.5, 3600000), True
|
||||
)
|
||||
|
||||
retry_config = None
|
||||
if isinstance(retries, utils.RetryConfig):
|
||||
retry_config = (retries, ["5XX"])
|
||||
|
||||
http_res = await self.do_request_async(
|
||||
hook_ctx=HookContext(
|
||||
config=self.sdk_configuration,
|
||||
base_url=base_url or "",
|
||||
operation_id="getBenchmarksDesignArena",
|
||||
oauth2_scopes=None,
|
||||
security_source=get_security_from_env(
|
||||
self.sdk_configuration.security, components.Security
|
||||
),
|
||||
),
|
||||
request=req,
|
||||
error_status_codes=["400", "401", "429", "4XX", "500", "5XX"],
|
||||
retry_config=retry_config,
|
||||
)
|
||||
|
||||
response_data: Any = None
|
||||
if utils.match_response(http_res, "200", "application/json"):
|
||||
return unmarshal_json_response(components.BenchmarksDAResponse, http_res)
|
||||
if utils.match_response(http_res, "400", "application/json"):
|
||||
response_data = unmarshal_json_response(
|
||||
errors.BadRequestResponseErrorData, http_res
|
||||
)
|
||||
raise errors.BadRequestResponseError(response_data, http_res)
|
||||
if utils.match_response(http_res, "401", "application/json"):
|
||||
response_data = unmarshal_json_response(
|
||||
errors.UnauthorizedResponseErrorData, http_res
|
||||
)
|
||||
raise errors.UnauthorizedResponseError(response_data, http_res)
|
||||
if utils.match_response(http_res, "429", "application/json"):
|
||||
response_data = unmarshal_json_response(
|
||||
errors.TooManyRequestsResponseErrorData, http_res
|
||||
)
|
||||
raise errors.TooManyRequestsResponseError(response_data, http_res)
|
||||
if utils.match_response(http_res, "500", "application/json"):
|
||||
response_data = unmarshal_json_response(
|
||||
errors.InternalServerResponseErrorData, http_res
|
||||
)
|
||||
raise errors.InternalServerResponseError(response_data, http_res)
|
||||
if utils.match_response(http_res, "4XX", "*"):
|
||||
http_res_text = await utils.stream_to_text_async(http_res)
|
||||
raise errors.OpenRouterDefaultError(
|
||||
"API error occurred", http_res, http_res_text
|
||||
)
|
||||
if utils.match_response(http_res, "5XX", "*"):
|
||||
http_res_text = await utils.stream_to_text_async(http_res)
|
||||
raise errors.OpenRouterDefaultError(
|
||||
"API error occurred", http_res, http_res_text
|
||||
)
|
||||
|
||||
raise errors.OpenRouterDefaultError("Unexpected response received", http_res)
|
||||
|
||||
def get_rankings_daily(
|
||||
self,
|
||||
*,
|
||||
|
||||
@@ -290,18 +290,14 @@ if TYPE_CHECKING:
|
||||
GetAppRankingsSort,
|
||||
Subcategory,
|
||||
)
|
||||
from .getbenchmarksartificialanalysis import (
|
||||
GetBenchmarksArtificialAnalysisGlobals,
|
||||
GetBenchmarksArtificialAnalysisGlobalsTypedDict,
|
||||
GetBenchmarksArtificialAnalysisRequest,
|
||||
GetBenchmarksArtificialAnalysisRequestTypedDict,
|
||||
)
|
||||
from .getbenchmarksdesignarena import (
|
||||
from .getbenchmarks import (
|
||||
Arena,
|
||||
GetBenchmarksDesignArenaGlobals,
|
||||
GetBenchmarksDesignArenaGlobalsTypedDict,
|
||||
GetBenchmarksDesignArenaRequest,
|
||||
GetBenchmarksDesignArenaRequestTypedDict,
|
||||
GetBenchmarksGlobals,
|
||||
GetBenchmarksGlobalsTypedDict,
|
||||
GetBenchmarksRequest,
|
||||
GetBenchmarksRequestTypedDict,
|
||||
Source,
|
||||
TaskType,
|
||||
)
|
||||
from .getbyokkey import (
|
||||
GetBYOKKeyGlobals,
|
||||
@@ -899,14 +895,10 @@ __all__ = [
|
||||
"GetBYOKKeyGlobalsTypedDict",
|
||||
"GetBYOKKeyRequest",
|
||||
"GetBYOKKeyRequestTypedDict",
|
||||
"GetBenchmarksArtificialAnalysisGlobals",
|
||||
"GetBenchmarksArtificialAnalysisGlobalsTypedDict",
|
||||
"GetBenchmarksArtificialAnalysisRequest",
|
||||
"GetBenchmarksArtificialAnalysisRequestTypedDict",
|
||||
"GetBenchmarksDesignArenaGlobals",
|
||||
"GetBenchmarksDesignArenaGlobalsTypedDict",
|
||||
"GetBenchmarksDesignArenaRequest",
|
||||
"GetBenchmarksDesignArenaRequestTypedDict",
|
||||
"GetBenchmarksGlobals",
|
||||
"GetBenchmarksGlobalsTypedDict",
|
||||
"GetBenchmarksRequest",
|
||||
"GetBenchmarksRequestTypedDict",
|
||||
"GetCreditsData",
|
||||
"GetCreditsDataTypedDict",
|
||||
"GetCreditsGlobals",
|
||||
@@ -1163,7 +1155,9 @@ __all__ = [
|
||||
"SendChatCompletionRequestRequestTypedDict",
|
||||
"SendChatCompletionRequestResponse",
|
||||
"SendChatCompletionRequestResponseTypedDict",
|
||||
"Source",
|
||||
"Subcategory",
|
||||
"TaskType",
|
||||
"TimeRange",
|
||||
"TimeRangeTypedDict",
|
||||
"TypeImageURL",
|
||||
@@ -1435,15 +1429,13 @@ _dynamic_imports: dict[str, str] = {
|
||||
"GetAppRankingsResponseTypedDict": ".getapprankings",
|
||||
"GetAppRankingsSort": ".getapprankings",
|
||||
"Subcategory": ".getapprankings",
|
||||
"GetBenchmarksArtificialAnalysisGlobals": ".getbenchmarksartificialanalysis",
|
||||
"GetBenchmarksArtificialAnalysisGlobalsTypedDict": ".getbenchmarksartificialanalysis",
|
||||
"GetBenchmarksArtificialAnalysisRequest": ".getbenchmarksartificialanalysis",
|
||||
"GetBenchmarksArtificialAnalysisRequestTypedDict": ".getbenchmarksartificialanalysis",
|
||||
"Arena": ".getbenchmarksdesignarena",
|
||||
"GetBenchmarksDesignArenaGlobals": ".getbenchmarksdesignarena",
|
||||
"GetBenchmarksDesignArenaGlobalsTypedDict": ".getbenchmarksdesignarena",
|
||||
"GetBenchmarksDesignArenaRequest": ".getbenchmarksdesignarena",
|
||||
"GetBenchmarksDesignArenaRequestTypedDict": ".getbenchmarksdesignarena",
|
||||
"Arena": ".getbenchmarks",
|
||||
"GetBenchmarksGlobals": ".getbenchmarks",
|
||||
"GetBenchmarksGlobalsTypedDict": ".getbenchmarks",
|
||||
"GetBenchmarksRequest": ".getbenchmarks",
|
||||
"GetBenchmarksRequestTypedDict": ".getbenchmarks",
|
||||
"Source": ".getbenchmarks",
|
||||
"TaskType": ".getbenchmarks",
|
||||
"GetBYOKKeyGlobals": ".getbyokkey",
|
||||
"GetBYOKKeyGlobalsTypedDict": ".getbyokkey",
|
||||
"GetBYOKKeyRequest": ".getbyokkey",
|
||||
|
||||
+49
-12
@@ -14,7 +14,7 @@ from typing import Literal, Optional, Union
|
||||
from typing_extensions import Annotated, NotRequired, TypedDict
|
||||
|
||||
|
||||
class GetBenchmarksDesignArenaGlobalsTypedDict(TypedDict):
|
||||
class GetBenchmarksGlobalsTypedDict(TypedDict):
|
||||
http_referer: NotRequired[str]
|
||||
r"""The app identifier should be your app's URL and is used as the primary identifier for rankings.
|
||||
This is used to track API usage per application.
|
||||
@@ -30,7 +30,7 @@ class GetBenchmarksDesignArenaGlobalsTypedDict(TypedDict):
|
||||
"""
|
||||
|
||||
|
||||
class GetBenchmarksDesignArenaGlobals(BaseModel):
|
||||
class GetBenchmarksGlobals(BaseModel):
|
||||
http_referer: Annotated[
|
||||
Optional[str],
|
||||
pydantic.Field(alias="HTTP-Referer"),
|
||||
@@ -60,6 +60,27 @@ class GetBenchmarksDesignArenaGlobals(BaseModel):
|
||||
"""
|
||||
|
||||
|
||||
Source = Union[
|
||||
Literal[
|
||||
"artificial-analysis",
|
||||
"design-arena",
|
||||
],
|
||||
UnrecognizedStr,
|
||||
]
|
||||
r"""Benchmark source to query. Determines the shape of the returned items."""
|
||||
|
||||
|
||||
TaskType = Union[
|
||||
Literal[
|
||||
"coding",
|
||||
"intelligence",
|
||||
"agentic",
|
||||
],
|
||||
UnrecognizedStr,
|
||||
]
|
||||
r"""Filter results by task type. For Artificial Analysis, maps to the corresponding index. For Design Arena, maps to the matching category."""
|
||||
|
||||
|
||||
Arena = Union[
|
||||
Literal[
|
||||
"models",
|
||||
@@ -68,10 +89,12 @@ Arena = Union[
|
||||
],
|
||||
UnrecognizedStr,
|
||||
]
|
||||
r"""Arena to query. Defaults to `models`."""
|
||||
r"""Design Arena only: arena to query. Defaults to `models` when source is `design-arena`."""
|
||||
|
||||
|
||||
class GetBenchmarksDesignArenaRequestTypedDict(TypedDict):
|
||||
class GetBenchmarksRequestTypedDict(TypedDict):
|
||||
source: Source
|
||||
r"""Benchmark source to query. Determines the shape of the returned items."""
|
||||
http_referer: NotRequired[str]
|
||||
r"""The app identifier should be your app's URL and is used as the primary identifier for rankings.
|
||||
This is used to track API usage per application.
|
||||
@@ -85,15 +108,23 @@ class GetBenchmarksDesignArenaRequestTypedDict(TypedDict):
|
||||
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
|
||||
|
||||
"""
|
||||
task_type: NotRequired[TaskType]
|
||||
r"""Filter results by task type. For Artificial Analysis, maps to the corresponding index. For Design Arena, maps to the matching category."""
|
||||
arena: NotRequired[Arena]
|
||||
r"""Arena to query. Defaults to `models`."""
|
||||
r"""Design Arena only: arena to query. Defaults to `models` when source is `design-arena`."""
|
||||
category: NotRequired[str]
|
||||
r"""Category within the arena (e.g. `codecategories`, `uicomponent`, `gamedev`, `3d`, `dataviz`, `image`, `video`, `svg`). When omitted, returns all categories."""
|
||||
r"""Design Arena only: category within the arena (e.g. `codecategories`, `uicomponent`, `gamedev`, `3d`, `dataviz`, `image`, `video`, `svg`). When omitted, returns all categories."""
|
||||
max_results: NotRequired[int]
|
||||
r"""Max results to return: per category when no category filter is applied (1–100, default 50)."""
|
||||
r"""Max results to return (1–100, default 50)."""
|
||||
|
||||
|
||||
class GetBenchmarksDesignArenaRequest(BaseModel):
|
||||
class GetBenchmarksRequest(BaseModel):
|
||||
source: Annotated[
|
||||
Annotated[Source, PlainValidator(validate_open_enum(False))],
|
||||
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
||||
]
|
||||
r"""Benchmark source to query. Determines the shape of the returned items."""
|
||||
|
||||
http_referer: Annotated[
|
||||
Optional[str],
|
||||
pydantic.Field(alias="HTTP-Referer"),
|
||||
@@ -122,20 +153,26 @@ class GetBenchmarksDesignArenaRequest(BaseModel):
|
||||
|
||||
"""
|
||||
|
||||
task_type: Annotated[
|
||||
Annotated[Optional[TaskType], PlainValidator(validate_open_enum(False))],
|
||||
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
||||
] = None
|
||||
r"""Filter results by task type. For Artificial Analysis, maps to the corresponding index. For Design Arena, maps to the matching category."""
|
||||
|
||||
arena: Annotated[
|
||||
Annotated[Optional[Arena], PlainValidator(validate_open_enum(False))],
|
||||
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
||||
] = "models"
|
||||
r"""Arena to query. Defaults to `models`."""
|
||||
] = None
|
||||
r"""Design Arena only: arena to query. Defaults to `models` when source is `design-arena`."""
|
||||
|
||||
category: Annotated[
|
||||
Optional[str],
|
||||
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
||||
] = None
|
||||
r"""Category within the arena (e.g. `codecategories`, `uicomponent`, `gamedev`, `3d`, `dataviz`, `image`, `video`, `svg`). When omitted, returns all categories."""
|
||||
r"""Design Arena only: category within the arena (e.g. `codecategories`, `uicomponent`, `gamedev`, `3d`, `dataviz`, `image`, `video`, `svg`). When omitted, returns all categories."""
|
||||
|
||||
max_results: Annotated[
|
||||
Optional[int],
|
||||
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
||||
] = 50
|
||||
r"""Max results to return: per category when no category filter is applied (1–100, default 50)."""
|
||||
r"""Max results to return (1–100, default 50)."""
|
||||
@@ -1,108 +0,0 @@
|
||||
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
||||
|
||||
from __future__ import annotations
|
||||
from openrouter.types import BaseModel
|
||||
from openrouter.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata
|
||||
import pydantic
|
||||
from typing import Optional
|
||||
from typing_extensions import Annotated, NotRequired, TypedDict
|
||||
|
||||
|
||||
class GetBenchmarksArtificialAnalysisGlobalsTypedDict(TypedDict):
|
||||
http_referer: NotRequired[str]
|
||||
r"""The app identifier should be your app's URL and is used as the primary identifier for rankings.
|
||||
This is used to track API usage per application.
|
||||
|
||||
"""
|
||||
x_open_router_title: NotRequired[str]
|
||||
r"""The app display name allows you to customize how your app appears in OpenRouter's dashboard.
|
||||
|
||||
"""
|
||||
x_open_router_categories: NotRequired[str]
|
||||
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
|
||||
|
||||
"""
|
||||
|
||||
|
||||
class GetBenchmarksArtificialAnalysisGlobals(BaseModel):
|
||||
http_referer: Annotated[
|
||||
Optional[str],
|
||||
pydantic.Field(alias="HTTP-Referer"),
|
||||
FieldMetadata(header=HeaderMetadata(style="simple", explode=False)),
|
||||
] = None
|
||||
r"""The app identifier should be your app's URL and is used as the primary identifier for rankings.
|
||||
This is used to track API usage per application.
|
||||
|
||||
"""
|
||||
|
||||
x_open_router_title: Annotated[
|
||||
Optional[str],
|
||||
pydantic.Field(alias="X-OpenRouter-Title"),
|
||||
FieldMetadata(header=HeaderMetadata(style="simple", explode=False)),
|
||||
] = None
|
||||
r"""The app display name allows you to customize how your app appears in OpenRouter's dashboard.
|
||||
|
||||
"""
|
||||
|
||||
x_open_router_categories: Annotated[
|
||||
Optional[str],
|
||||
pydantic.Field(alias="X-OpenRouter-Categories"),
|
||||
FieldMetadata(header=HeaderMetadata(style="simple", explode=False)),
|
||||
] = None
|
||||
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
|
||||
|
||||
"""
|
||||
|
||||
|
||||
class GetBenchmarksArtificialAnalysisRequestTypedDict(TypedDict):
|
||||
http_referer: NotRequired[str]
|
||||
r"""The app identifier should be your app's URL and is used as the primary identifier for rankings.
|
||||
This is used to track API usage per application.
|
||||
|
||||
"""
|
||||
x_open_router_title: NotRequired[str]
|
||||
r"""The app display name allows you to customize how your app appears in OpenRouter's dashboard.
|
||||
|
||||
"""
|
||||
x_open_router_categories: NotRequired[str]
|
||||
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
|
||||
|
||||
"""
|
||||
max_results: NotRequired[int]
|
||||
r"""Max results to return (1–100, default 50)."""
|
||||
|
||||
|
||||
class GetBenchmarksArtificialAnalysisRequest(BaseModel):
|
||||
http_referer: Annotated[
|
||||
Optional[str],
|
||||
pydantic.Field(alias="HTTP-Referer"),
|
||||
FieldMetadata(header=HeaderMetadata(style="simple", explode=False)),
|
||||
] = None
|
||||
r"""The app identifier should be your app's URL and is used as the primary identifier for rankings.
|
||||
This is used to track API usage per application.
|
||||
|
||||
"""
|
||||
|
||||
x_open_router_title: Annotated[
|
||||
Optional[str],
|
||||
pydantic.Field(alias="X-OpenRouter-Title"),
|
||||
FieldMetadata(header=HeaderMetadata(style="simple", explode=False)),
|
||||
] = None
|
||||
r"""The app display name allows you to customize how your app appears in OpenRouter's dashboard.
|
||||
|
||||
"""
|
||||
|
||||
x_open_router_categories: Annotated[
|
||||
Optional[str],
|
||||
pydantic.Field(alias="X-OpenRouter-Categories"),
|
||||
FieldMetadata(header=HeaderMetadata(style="simple", explode=False)),
|
||||
] = None
|
||||
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
|
||||
|
||||
"""
|
||||
|
||||
max_results: Annotated[
|
||||
Optional[int],
|
||||
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
||||
] = 50
|
||||
r"""Max results to return (1–100, default 50)."""
|
||||
@@ -18,6 +18,7 @@ import weakref
|
||||
if TYPE_CHECKING:
|
||||
from openrouter.analytics import Analytics
|
||||
from openrouter.api_keys import APIKeys
|
||||
from openrouter.benchmarks import Benchmarks
|
||||
from openrouter.beta import Beta
|
||||
from openrouter.byok import Byok
|
||||
from openrouter.chat import Chat
|
||||
@@ -55,6 +56,8 @@ class OpenRouter(BaseSDK):
|
||||
r"""Speech-to-text endpoints"""
|
||||
o_auth: "OAuth"
|
||||
r"""OAuth authentication endpoints"""
|
||||
benchmarks: "Benchmarks"
|
||||
r"""Benchmarks endpoints"""
|
||||
byok: "Byok"
|
||||
r"""BYOK endpoints"""
|
||||
chat: "Chat"
|
||||
@@ -96,6 +99,7 @@ class OpenRouter(BaseSDK):
|
||||
"tts": ("openrouter.tts", "Tts"),
|
||||
"stt": ("openrouter.stt", "Stt"),
|
||||
"o_auth": ("openrouter.oauth", "OAuth"),
|
||||
"benchmarks": ("openrouter.benchmarks", "Benchmarks"),
|
||||
"byok": ("openrouter.byok", "Byok"),
|
||||
"chat": ("openrouter.chat", "Chat"),
|
||||
"credits": ("openrouter.credits", "Credits"),
|
||||
|
||||
Reference in New Issue
Block a user