diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index d609ec8..3a9f001 100644 --- a/.speakeasy/gen.lock +++ b/.speakeasy/gen.lock @@ -1,18 +1,18 @@ lockVersion: 2.0.0 id: c75567cf-9def-4617-8ae7-65af6f367b68 management: - docChecksum: 2708188f6b0d7f57e65458a739069779 + docChecksum: 32083c7c0293bed80ed2dec2b52fc53f docVersion: 2.0.0 - speakeasyVersion: 1.635.1 - generationVersion: 2.722.2 - releaseVersion: 1.3.0 - configChecksum: bcf5568c877247dd91d99325a08aa512 + speakeasyVersion: 1.648.0 + generationVersion: 2.737.0 + releaseVersion: 1.6.4 + configChecksum: 5e7ddbc1dd0d76c87f1e6822f99a63a7 features: python: additionalDependencies: 1.0.0 additionalProperties: 1.0.1 constsAndDefaults: 1.0.5 - core: 5.22.1 + core: 5.23.4 customCodeRegions: 0.1.1 defaultEnabledRetries: 0.2.0 devContainers: 3.0.0 @@ -23,15 +23,15 @@ features: globalSecurity: 3.0.4 globalSecurityCallbacks: 1.0.0 globalSecurityFlattening: 1.0.0 - globalServerURLs: 3.1.1 - groups: 3.0.0 + globalServerURLs: 3.2.0 + groups: 3.0.1 methodArguments: 1.0.2 nameOverrides: 3.0.1 nullables: 1.0.1 responseFormat: 1.0.1 retries: 3.0.2 sdkHooks: 1.1.0 - serverEvents: 1.0.10 + serverEvents: 1.0.11 unions: 3.1.0 generatedFiles: - .devcontainer/README.md @@ -221,6 +221,7 @@ generatedFiles: - docs/models/listmodelaliasesmodelsaliasesgetrequest.md - docs/models/listmodelaliasesresponseitem.md - docs/models/listmodelsmodelsgetrequest.md + - docs/models/listrerankmodelsresponse.md - docs/models/listspanmetricsresponse.md - docs/models/listtracesresponse.md - docs/models/listtracestracesgetrequest.md @@ -241,6 +242,7 @@ generatedFiles: - docs/models/paginatedresponselistknowledgebasesresponse.md - docs/models/paginatedresponselistlanguagemodelsresponse.md - docs/models/paginatedresponselistmodelaliasesresponseitem.md + - docs/models/paginatedresponselistrerankmodelsresponse.md - docs/models/paginatedresponselistspanmetricsresponse.md - docs/models/paginatedresponselisttracesresponse.md - docs/models/payload.md @@ -255,6 +257,11 @@ generatedFiles: - docs/models/registerfileuploadknowledgeknowledgebaseidregisterfilepostrequest.md - docs/models/registerfileuploadrequest.md - docs/models/registerfileuploadresponse.md + - docs/models/rerankcost.md + - docs/models/rerankdocument.md + - docs/models/rerankrequestmodel.md + - docs/models/rerankresponsemodel.md + - docs/models/rerankresult.md - docs/models/responseformatjsonobject.md - docs/models/responseformatjsonschema.md - docs/models/responseformattext.md @@ -317,9 +324,9 @@ generatedFiles: - docs/sdks/functions/README.md - docs/sdks/knowledge/README.md - docs/sdks/languagemodels/README.md - - docs/sdks/models/README.md - docs/sdks/openai/README.md - docs/sdks/opper/README.md + - docs/sdks/rerank/README.md - docs/sdks/revisions/README.md - docs/sdks/spanmetrics/README.md - docs/sdks/spans/README.md @@ -488,6 +495,7 @@ generatedFiles: - src/opperai/models/listknowledgebasesresponse.py - src/opperai/models/listlanguagemodelsresponse.py - src/opperai/models/listmodelaliasesresponseitem.py + - src/opperai/models/listrerankmodelsresponse.py - src/opperai/models/listspanmetricsresponse.py - src/opperai/models/listtracesresponse.py - src/opperai/models/meta.py @@ -506,6 +514,7 @@ generatedFiles: - src/opperai/models/paginatedresponse_listknowledgebasesresponse_.py - src/opperai/models/paginatedresponse_listlanguagemodelsresponse_.py - src/opperai/models/paginatedresponse_listmodelaliasesresponseitem_.py + - src/opperai/models/paginatedresponse_listrerankmodelsresponse_.py - src/opperai/models/paginatedresponse_listspanmetricsresponse_.py - src/opperai/models/paginatedresponse_listtracesresponse_.py - src/opperai/models/prompttokensdetails.py @@ -519,6 +528,11 @@ generatedFiles: - src/opperai/models/registercustommodelresponse.py - src/opperai/models/registerfileuploadrequest.py - src/opperai/models/registerfileuploadresponse.py + - src/opperai/models/rerankcost.py + - src/opperai/models/rerankdocument.py + - src/opperai/models/rerankrequestmodel.py + - src/opperai/models/rerankresponsemodel.py + - src/opperai/models/rerankresult.py - src/opperai/models/responseformatjsonobject.py - src/opperai/models/responseformatjsonschema.py - src/opperai/models/responseformattext.py @@ -555,9 +569,9 @@ generatedFiles: - src/opperai/models/websearchoptions.py - src/opperai/models/websearchoptionsuserlocation.py - src/opperai/models/websearchoptionsuserlocationapproximate.py - - src/opperai/models_.py - src/opperai/openai.py - src/opperai/py.typed + - src/opperai/rerank.py - src/opperai/revisions.py - src/opperai/sdk.py - src/opperai/sdkconfiguration.py @@ -861,7 +875,7 @@ examples: path: span_id: "77b258a2-45c1-4b87-a50c-9116bc8ed1d6" requestBody: - application/json: {"name": "my span", "start_time": "2025-10-06T16:05:03.988919Z", "type": "email_tool", "end_time": "2025-10-06T16:05:03.989013Z", "input": "Hello, world!", "output": "Hello, world!", "error": "Exception: This is an error message", "meta": {"key": "value"}, "score": 10} + application/json: {"name": "my span", "start_time": "2025-11-04T12:46:20.444851Z", "type": "email_tool", "end_time": "2025-11-04T12:46:20.444947Z", "input": "Hello, world!", "output": "Hello, world!", "error": "Exception: This is an error message", "meta": {"key": "value"}, "score": 10} responses: "200": application/json: {"name": "my span", "start_time": "2024-03-20T10:00:00+00:00", "id": "84d9ffc8-336c-4953-b92f-fe05d5405951", "trace_id": "123e4567-e89b-12d3-a456-426614174000", "parent_id": "123e4567-e89b-12d3-a456-426614174000", "type": "email_tool", "end_time": "2024-03-20T10:00:10+00:00", "input": "Hello, world!", "output": "Hello, world!", "error": "Exception: This is an error message", "meta": {"key": "value"}, "score": 10} @@ -1830,5 +1844,33 @@ examples: application/json: {"type": "NotFoundError", "message": "The resource was not found", "detail": "Span 123e4567-e89b-12d3-a456-426614174000 not found"} "422": application/json: {"type": "RequestValidationError", "message": "The request is invalid", "detail": {"input": "input value", "loc": ["path", "to", "error"], "msg": "error message", "type": "type of error"}} + rerank_documents_rerank_post: + speakeasy-default-rerank-documents-rerank-post: + requestBody: + application/json: {"query": "", "documents": [{"text": ""}], "model": "Mustang", "return_documents": true} + responses: + "200": + application/json: {"id": "", "results": [], "model": "Model Y", "usage": {}} + "400": + application/json: {"type": "BadRequestError", "message": "The request is invalid", "detail": "The request is invalid"} + "401": + application/json: {"type": "UnauthorizedError", "message": "The request is unauthorized", "detail": "The API key is invalid"} + "404": + application/json: {"type": "NotFoundError", "message": "The resource was not found", "detail": "Span 123e4567-e89b-12d3-a456-426614174000 not found"} + "422": + application/json: {"type": "RequestValidationError", "message": "The request is invalid", "detail": {"input": "input value", "loc": ["path", "to", "error"], "msg": "error message", "type": "type of error"}} + list_rerank_models_rerank_models_get: + speakeasy-default-list-rerank-models-rerank-models-get: + responses: + "200": + application/json: {"meta": {"total_count": 1}, "data": [{"hosting_provider": "Cohere", "name": "rerank-v3.5", "location": "US", "cost_per_request": 0.002}]} + "400": + application/json: {"type": "BadRequestError", "message": "The request is invalid", "detail": "The request is invalid"} + "401": + application/json: {"type": "UnauthorizedError", "message": "The request is unauthorized", "detail": "The API key is invalid"} + "404": + application/json: {"type": "NotFoundError", "message": "The resource was not found", "detail": "Span 123e4567-e89b-12d3-a456-426614174000 not found"} + "422": + application/json: {"type": "RequestValidationError", "message": "The request is invalid", "detail": {"input": "input value", "loc": ["path", "to", "error"], "msg": "error message", "type": "type of error"}} examplesVersion: 1.0.2 generatedTests: {} diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index 4f8759d..b0eba3b 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -21,12 +21,14 @@ generation: oAuth2PasswordEnabled: true hoistGlobalSecurity: true sdkHooksConfigAccess: true + schemas: + allOfMergeStrategy: shallowMerge tests: generateTests: true generateNewTests: false skipResponseBodyAssertions: false python: - version: 1.3.0 + version: 1.6.4 additionalDependencies: dev: {} main: {} diff --git a/.speakeasy/speakeasy-modifications-overlay.yaml b/.speakeasy/speakeasy-modifications-overlay.yaml index 8d46464..8312cfc 100644 --- a/.speakeasy/speakeasy-modifications-overlay.yaml +++ b/.speakeasy/speakeasy-modifications-overlay.yaml @@ -2,7 +2,7 @@ overlay: 1.0.0 x-speakeasy-jsonpath: rfc9535 info: title: Speakeasy Modifications - version: 0.0.30 + version: 0.0.32 x-speakeasy-metadata: after: "" before: "" @@ -718,3 +718,90 @@ actions: created_at: 1751029113444 reviewed_at: 1751029118113 type: method-name + - target: $["paths"]["/models/aliases/{alias_id}"]["delete"] + update: + x-speakeasy-name-override: delete_alias + x-speakeasy-group: language_models + x-speakeasy-metadata: + after: sdk.models.delete_alias() + before: sdk.models.delete_model_alias_models_aliases__alias_id__delete() + created_at: 1762265966139 + reviewed_at: 1762265978991 + type: method-name + - target: $["paths"]["/models/aliases"]["get"] + update: + x-speakeasy-name-override: list_aliases + x-speakeasy-group: language_models + x-speakeasy-metadata: + after: sdk.models.list_aliases() + before: sdk.models.list_model_aliases_models_aliases_get() + created_at: 1762265966139 + reviewed_at: 1762265978991 + type: method-name + - target: $["paths"]["/models/aliases/{alias_id}"]["patch"] + update: + x-speakeasy-name-override: update_alias + x-speakeasy-group: language_models + x-speakeasy-metadata: + after: sdk.models.update_alias() + before: sdk.models.update_model_alias_models_aliases__alias_id__patch() + created_at: 1762265966139 + reviewed_at: 1762265978991 + type: method-name + - target: $["paths"]["/models/aliases/by-name/{name}"]["get"] + update: + x-speakeasy-name-override: get_alias_by_name + x-speakeasy-group: language_models + x-speakeasy-metadata: + after: sdk.models.get_alias_by_name() + before: sdk.models.get_model_alias_by_name_models_aliases_by_name__name__get() + created_at: 1762265966139 + reviewed_at: 1762265978991 + type: method-name + - target: $["paths"]["/models/aliases"]["post"] + update: + x-speakeasy-name-override: create_alias + x-speakeasy-group: language_models + x-speakeasy-metadata: + after: sdk.models.create_alias() + before: sdk.models.create_model_alias_models_aliases_post() + created_at: 1762265966139 + reviewed_at: 1762265978991 + type: method-name + - target: $["paths"]["/rerank"]["post"] + update: + x-speakeasy-name-override: documents + x-speakeasy-metadata: + after: sdk.rerank.documents() + before: sdk.rerank.rerank_documents_rerank_post() + created_at: 1762265966139 + reviewed_at: 1762265978991 + type: method-name + - target: $["paths"]["/rerank/models"]["get"] + update: + x-speakeasy-name-override: list_models + x-speakeasy-metadata: + after: sdk.rerank.list_models() + before: sdk.rerank.list_rerank_models_rerank_models_get() + created_at: 1762265966139 + reviewed_at: 1762265978991 + type: method-name + - target: $["paths"]["/models/aliases/{alias_id}"]["get"] + update: + x-speakeasy-name-override: get_alias + x-speakeasy-group: language_models + x-speakeasy-metadata: + after: sdk.models.get_alias() + before: sdk.models.get_model_alias_models_aliases__alias_id__get() + created_at: 1762265966139 + reviewed_at: 1762265978991 + type: method-name + - target: $["paths"]["/knowledge/{knowledge_base_id}/query"]["delete"] + update: + x-speakeasy-name-override: delete_documents + x-speakeasy-metadata: + after: sdk.knowledge.delete_documents() + before: sdk.knowledge.delete_documents_knowledge__knowledge_base_id__query_delete() + created_at: 1762265966139 + reviewed_at: 1762265978991 + type: method-name diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index a5162d5..382d0f7 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -1,21 +1,20 @@ -speakeasyVersion: 1.635.1 +speakeasyVersion: 1.648.0 sources: FastAPI: sourceNamespace: fast-api - sourceRevisionDigest: sha256:ff0cd89b7ab617d8c619b615017f9711be1be2578358b9670994d82fc4204a3b - sourceBlobDigest: sha256:9916f8da9a98f5bca1f009c69d20e12551da49abb560ff86e194cbd44817a2f6 + sourceRevisionDigest: sha256:7f6113b631e591c5172b1fecf220daf1e60612c9d0b960fbf174ec61d4576e9f + sourceBlobDigest: sha256:d1c93e3507577ac57bb74e778dc551fdeb807d6e786fc7fd67d36857bc824926 tags: - latest - - main - 2.0.0 targets: opper: source: FastAPI sourceNamespace: fast-api - sourceRevisionDigest: sha256:ff0cd89b7ab617d8c619b615017f9711be1be2578358b9670994d82fc4204a3b - sourceBlobDigest: sha256:9916f8da9a98f5bca1f009c69d20e12551da49abb560ff86e194cbd44817a2f6 + sourceRevisionDigest: sha256:7f6113b631e591c5172b1fecf220daf1e60612c9d0b960fbf174ec61d4576e9f + sourceBlobDigest: sha256:d1c93e3507577ac57bb74e778dc551fdeb807d6e786fc7fd67d36857bc824926 codeSamplesNamespace: fast-api-python-code-samples - codeSamplesRevisionDigest: sha256:e532b01f440cf513db80c3a9adb0a8fd613bf977cc55ac404e535dd92faab776 + codeSamplesRevisionDigest: sha256:ff9823a33bef438987661b4235c4ebf0fb9b91189578dc6f5433524146185510 workflow: workflowVersion: 1.0.0 speakeasyVersion: latest diff --git a/README.md b/README.md index 8ce5896..e28b219 100644 --- a/README.md +++ b/README.md @@ -12,176 +12,263 @@ ## Summary -[![Sign Up and Start Using Opper](https://img.shields.io/badge/Sign%20Up-Start%20Using%20Opper-blue?style=for-the-badge&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMTUgMzE1Ij48dGl0bGU+T3BwZXI8L3RpdGxlPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTA1LjA0IDE1Ny41MkMxMjAuNiAxNTcuMzQgMTYwLjUyIDE1MS41NCAxNjAuNTIgOTYuNTYwMUMxNjAuNTIgMTUxLjU0IDIwMC40NCAxNTcuMzQgMjE2IDE1Ny41MkMxNjQuMSAxNjEuNjMgMTYwLjUyIDIxNy45OCAxNjAuNTIgMjE3Ljk4QzE2MC41MiAyMTcuOTggMTU2Ljk0IDE2MS42NSAxMDUuMDQgMTU3LjUyWk0xNTkuNzggMzE1QzcxLjUzIDMxNSAwIDI0NC40OSAwIDE1Ny41QzAgLTE4Ljk0OTkgMTU5Ljc4IDAuNjUwMDc1IDE1OS43OCAwLjY1MDA3NUMxNTkuNzggODcuMjIgODguMzYgMTU3LjQgMC4yIDE1Ny41QzE0OS44IDE1Ny42NCAxNTkuNzggMzE1IDE1OS43OCAzMTVaIiBmaWxsPSJ1cmwoI2dyYWQpIi8+PC9nPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD0iZ3JhZCIgeDE9IjcyLjM4IiB5MT0iNTQuNzgwMSIgeDI9IjEzOS41MiIgeTI9IjI3MC44IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agc3RvcC1jb2xvcj0iIzhDRUNGMiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0Y5QjU4QyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjwvc3ZnPg== -)](https://opper.ai/) -Welcome to the OpperAI python SDK - - - -Opper is a task completion platform for building reliable AI integrations. The Opper platform builds a happy path for declarative programming with AI models, combined with in context reinforcement learning, observability and cost tracking all in one platform - for reliable results in no time! - -This SDK is generated using Speakeasy, read our detailed docs with many guides and examples at -[![Explore Docs](https://img.shields.io/badge/Docs-Read%20the%20Docs-black??style=for-the-badge&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMTUgMzE1Ij48dGl0bGU+T3BwZXI8L3RpdGxlPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTA1LjA0IDE1Ny41MkMxMjAuNiAxNTcuMzQgMTYwLjUyIDE1MS41NCAxNjAuNTIgOTYuNTYwMUMxNjAuNTIgMTUxLjU0IDIwMC40NCAxNTcuMzQgMjE2IDE1Ny41MkMxNjQuMSAxNjEuNjMgMTYwLjUyIDIxNy45OCAxNjAuNTIgMjE3Ljk4QzE2MC41MiAyMTcuOTggMTU2Ljk0IDE2MS42NSAxMDUuMDQgMTU3LjUyWk0xNTkuNzggMzE1QzcxLjUzIDMxNSAwIDI0NC40OSAwIDE1Ny41QzAgLTE4Ljk0OTkgMTU5Ljc4IDAuNjUwMDc1IDE1OS43OCAwLjY1MDA3NUMxNTkuNzggODcuMjIgODguMzYgMTU3LjQgMC4yIDE1Ny41QzE0OS44IDE1Ny42NCAxNTkuNzggMzE1IDE1OS43OCAzMTVaIiBmaWxsPSJ1cmwoI2dyYWQpIi8+PC9nPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD0iZ3JhZCIgeDE9IjcyLjM4IiB5MT0iNTQuNzgwMSIgeDI9IjEzOS41MiIgeTI9IjI3MC44IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agc3RvcC1jb2xvcj0iIzhDRUNGMiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0Y5QjU4QyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjwvc3ZnPg== -)](https://docs.opper.ai) ## Table of Contents -- [opperai](#opperai) - - [Summary](#summary) - - [Table of Contents](#table-of-contents) - - [SDK Installation](#sdk-installation) - - [PIP](#pip) - - [Poetry / UV](#poetry--uv) - - [SDK Example Usage](#sdk-example-usage) - - [First steps](#first-steps) - - [Example](#example) - - [Authentication](#authentication) - - [Available Resources and Operations](#available-resources-and-operations) - - [analytics](#analytics) - - [datasets](#datasets) - - [datasets.entries](#datasetsentries) - - [embeddings](#embeddings) - - [functions](#functions) - - [functions.revisions](#functionsrevisions) - - [knowledge](#knowledge) - - [language\_models](#language_models) - - [Opper SDK](#opper-sdk) - - [span\_metrics](#span_metrics) - - [spans](#spans) - - [traces](#traces) - - [Server-sent event streaming](#server-sent-event-streaming) - - [Retries](#retries) - - [Error Handling](#error-handling) - - [Example](#example-1) - - [Custom HTTP Client](#custom-http-client) - - [Resource Management](#resource-management) - - [Debugging](#debugging) -- [Development](#development) - - [Maturity](#maturity) - - [Contributions](#contributions) - - [SDK Created by Speakeasy](#sdk-created-by-speakeasy) +* [opperai](#opperai) + * [SDK Installation](#sdk-installation) + * [IDE Support](#ide-support) + * [SDK Example Usage](#sdk-example-usage) + * [Authentication](#authentication) + * [Available Resources and Operations](#available-resources-and-operations) + * [Server-sent event streaming](#server-sent-event-streaming) + * [Retries](#retries) + * [Error Handling](#error-handling) + * [Custom HTTP Client](#custom-http-client) + * [Server Selection](#server-selection) + * [Custom HTTP Client](#custom-http-client-1) + * [Resource Management](#resource-management) + * [Debugging](#debugging) +* [Development](#development) + * [Maturity](#maturity) + * [Contributions](#contributions) ## SDK Installation +> [!TIP] +> To finish publishing your SDK to PyPI you must [run your first generation action](https://www.speakeasy.com/docs/github-setup#step-by-step-guide). + + +> [!NOTE] +> **Python version upgrade policy** +> +> Once a Python version reaches its [official end of life date](https://devguide.python.org/versions/), a 3-month grace period is provided for users to upgrade. Following this grace period, the minimum python version supported in the SDK will be updated. + +The SDK can be installed with *uv*, *pip*, or *poetry* package managers. + +### uv + +*uv* is a fast Python package installer and resolver, designed as a drop-in replacement for pip and pip-tools. It's recommended for its speed and modern Python tooling capabilities. + +```bash +uv add git+.git +``` ### PIP *PIP* is the default package installer for Python, enabling easy installation and management of packages from PyPI via the command line. ```bash -pip install opperai +pip install git+.git ``` -### Poetry / UV +### Poetry -If you use [UV](https://docs.astral.sh/uv/) +*Poetry* is a modern tool that simplifies dependency management and package publishing by using a single `pyproject.toml` file to handle project metadata and dependencies. ```bash -uv add opperai +poetry add git+.git ``` +### Shell and script usage with `uv` -Poetry +You can use this SDK in a Python shell with [uv](https://docs.astral.sh/uv/) and the `uvx` command that comes with it like so: -```bash -poetry add opperai +```shell +uvx --from opperai python ``` +It's also possible to write a standalone Python script without needing to set up a whole project like so: + +```python +#!/usr/bin/env -S uv run --script +# /// script +# requires-python = ">=3.9" +# dependencies = [ +# "opperai", +# ] +# /// +from opperai import Opper +sdk = Opper( + # SDK arguments +) -## SDK Example Usage -[![Explore Docs](https://img.shields.io/badge/Docs-Read%20the%20Docs-black??style=for-the-badge&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMTUgMzE1Ij48dGl0bGU+T3BwZXI8L3RpdGxlPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTA1LjA0IDE1Ny41MkMxMjAuNiAxNTcuMzQgMTYwLjUyIDE1MS41NCAxNjAuNTIgOTYuNTYwMUMxNjAuNTIgMTUxLjU0IDIwMC40NCAxNTcuMzQgMjE2IDE1Ny41MkMxNjQuMSAxNjEuNjMgMTYwLjUyIDIxNy45OCAxNjAuNTIgMjE3Ljk4QzE2MC41MiAyMTcuOTggMTU2Ljk0IDE2MS42NSAxMDUuMDQgMTU3LjUyWk0xNTkuNzggMzE1QzcxLjUzIDMxNSAwIDI0NC40OSAwIDE1Ny41QzAgLTE4Ljk0OTkgMTU5Ljc4IDAuNjUwMDc1IDE1OS43OCAwLjY1MDA3NUMxNTkuNzggODcuMjIgODguMzYgMTU3LjQgMC4yIDE1Ny41QzE0OS44IDE1Ny42NCAxNTkuNzggMzE1IDE1OS43OCAzMTVaIiBmaWxsPSJ1cmwoI2dyYWQpIi8+PC9nPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD0iZ3JhZCIgeDE9IjcyLjM4IiB5MT0iNTQuNzgwMSIgeDI9IjEzOS41MiIgeTI9IjI3MC44IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agc3RvcC1jb2xvcj0iIzhDRUNGMiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0Y5QjU4QyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjwvc3ZnPg== -)](https://docs.opper.ai) +# Rest of script here... +``` -### First steps -Log in at [opper](platform.opper.ai) and create your own API key in the top right menu. Each api key is associated with a project, you will have all calls, functions, indexes and traces associated with this project. There is a default project for each organization but it is recommended to create a new project to better being able to separate the different applications and environments. +Once that is saved to a file, you can run it with `uv run script.py` where +`script.py` can be replaced with the actual file name. + + +## IDE Support -For many **examples** and **guides** of how to use our sdks check out our examples folder [examples](./examples/) +### PyCharm + +Generally, the SDK will work well with most IDEs out of the box. However, when using PyCharm, you can enjoy much better integration with Pydantic by installing an additional plugin. + +- [PyCharm Pydantic Plugin](https://docs.pydantic.dev/latest/integrations/pycharm/) + + + +## SDK Example Usage ### Example ```python -from opperai import Opper -# Our SDK supports Pydantic to provide structured output -from pydantic import BaseModel +# Synchronous Example +from opperai import Opper, models import os -# Define the output structure -class RoomDescription(BaseModel): - room_count: int - view: str - bed_size: str - hotel_name: str -def main(): - opper = Opper(http_bearer=os.getenv("OPPER_API_KEY")) - - # Complete a task - completion = opper.call( - name="extractRoom", - instructions="Extract details about the room from the provided text", - input="The Grand Hotel offers a luxurious suite with 3 spacious rooms, each providing a breathtaking view of the ocean. The suite includes a king-sized bed, an en-suite bathroom, and a private balcony for an unforgettable stay.", - output_schema=RoomDescription, - ) +with Opper( + http_bearer=os.getenv("OPPER_HTTP_BEARER", ""), +) as opper: - print(completion.json_payload) - #{'room_count': 3, 'view': 'ocean', 'bed_size': 'king-sized', 'hotel_name': 'The Grand Hotel'} + res = opper.call(name="add_numbers", instructions="Calculate the sum of two numbers", input_schema={ + "properties": { + "x": { + "title": "X", + "type": "integer", + }, + "y": { + "title": "Y", + "type": "integer", + }, + }, + "required": [ + "x", + "y", + ], + "title": "OpperInputExample", + "type": "object", + }, output_schema={ + "properties": { + "sum": { + "title": "Sum", + "type": "integer", + }, + }, + "required": [ + "sum", + ], + "title": "OpperOutputExample", + "type": "object", + }, input={ + "x": 4, + "y": 5, + }, examples=[ + { + "input": { + "x": 1, + "y": 3, + }, + "output": { + "sum": 4, + }, + "comment": "Adds two numbers", + }, + ], parent_span_id="123e4567-e89b-12d3-a456-426614174000", tags={ + "project": "project_456", + "user": "company_123", + }, configuration=models.FunctionCallConfiguration( + beta_evaluation=models.EvaluationConfig( + scorers=models.ScorersEnum1.BASE, + ), + )) -main() + # Handle response + print(res) ``` +
-The same SDK client can also be used to make asychronous requests by importing asyncio. Just add `_async` to the call -
-Async example +The same SDK client can also be used to make asynchronous requests by importing asyncio. ```python # Asynchronous Example import asyncio +from opperai import Opper, models import os -from opperai import Opper -from pydantic import BaseModel - -# Define the output structure -class RoomDescription(BaseModel): - room_count: int - view: str - bed_size: str - hotel_name: str async def main(): - opper = Opper(http_bearer=os.getenv("OPPER_API_KEY")) - # Complete a task asynchronously - completion = await opper.call_async( - name="extractRoom", - instructions="Extract details about the room from the provided text", - input="The Grand Hotel offers a luxurious suite with 3 spacious rooms, each providing a breathtaking view of the ocean. The suite includes a king-sized bed, an en-suite bathroom, and a private balcony for an unforgettable stay.", - output_schema=RoomDescription, - ) + async with Opper( + http_bearer=os.getenv("OPPER_HTTP_BEARER", ""), + ) as opper: - print(completion.json_payload) - # {'room_count': 3, 'view': 'ocean', 'bed_size': 'king-sized', 'hotel_name': 'The Grand Hotel'} + res = await opper.call_async(name="add_numbers", instructions="Calculate the sum of two numbers", input_schema={ + "properties": { + "x": { + "title": "X", + "type": "integer", + }, + "y": { + "title": "Y", + "type": "integer", + }, + }, + "required": [ + "x", + "y", + ], + "title": "OpperInputExample", + "type": "object", + }, output_schema={ + "properties": { + "sum": { + "title": "Sum", + "type": "integer", + }, + }, + "required": [ + "sum", + ], + "title": "OpperOutputExample", + "type": "object", + }, input={ + "x": 4, + "y": 5, + }, examples=[ + { + "input": { + "x": 1, + "y": 3, + }, + "output": { + "sum": 4, + }, + "comment": "Adds two numbers", + }, + ], parent_span_id="123e4567-e89b-12d3-a456-426614174000", tags={ + "project": "project_456", + "user": "company_123", + }, configuration=models.FunctionCallConfiguration( + beta_evaluation=models.EvaluationConfig( + scorers=models.ScorersEnum1.BASE, + ), + )) + + # Handle response + print(res) -# Run the async main function asyncio.run(main()) ``` -
## Authentication -See our authenthication docs [auth](https://docs.opper.ai/api-reference/authentication) +### Per-Client Security Schemes This SDK supports the following security scheme globally: @@ -191,11 +278,68 @@ This SDK supports the following security scheme globally: To authenticate with the API the `http_bearer` parameter must be set when initializing the SDK client instance. For example: ```python -from opperai import Opper +from opperai import Opper, models import os -http_bearer="YOUR_API_KEY" -opper = Opper(http_bearer) + +with Opper( + http_bearer=os.getenv("OPPER_HTTP_BEARER", ""), +) as opper: + + res = opper.call(name="add_numbers", instructions="Calculate the sum of two numbers", input_schema={ + "properties": { + "x": { + "title": "X", + "type": "integer", + }, + "y": { + "title": "Y", + "type": "integer", + }, + }, + "required": [ + "x", + "y", + ], + "title": "OpperInputExample", + "type": "object", + }, output_schema={ + "properties": { + "sum": { + "title": "Sum", + "type": "integer", + }, + }, + "required": [ + "sum", + ], + "title": "OpperOutputExample", + "type": "object", + }, input={ + "x": 4, + "y": 5, + }, examples=[ + { + "input": { + "x": 1, + "y": 3, + }, + "output": { + "sum": 4, + }, + "comment": "Adds two numbers", + }, + ], parent_span_id="123e4567-e89b-12d3-a456-426614174000", tags={ + "project": "project_456", + "user": "company_123", + }, configuration=models.FunctionCallConfiguration( + beta_evaluation=models.EvaluationConfig( + scorers=models.ScorersEnum1.BASE, + ), + )) + + # Handle response + print(res) ``` @@ -255,6 +399,7 @@ opper = Opper(http_bearer) * [register_file_upload](docs/sdks/knowledge/README.md#register_file_upload) - Register File Upload * [delete_file](docs/sdks/knowledge/README.md#delete_file) - Delete File From Knowledge Base * [query](docs/sdks/knowledge/README.md#query) - Query Knowledge Base +* [delete_documents](docs/sdks/knowledge/README.md#delete_documents) - Delete Documents * [add](docs/sdks/knowledge/README.md#add) - Add ### [language_models](docs/sdks/languagemodels/README.md) @@ -266,12 +411,27 @@ opper = Opper(http_bearer) * [update_custom](docs/sdks/languagemodels/README.md#update_custom) - Update Custom Model * [delete_custom](docs/sdks/languagemodels/README.md#delete_custom) - Delete Custom Model * [get_custom_by_name](docs/sdks/languagemodels/README.md#get_custom_by_name) - Get Custom Model By Name +* [create_alias](docs/sdks/languagemodels/README.md#create_alias) - Create Model Alias +* [list_aliases](docs/sdks/languagemodels/README.md#list_aliases) - List Model Aliases +* [get_alias](docs/sdks/languagemodels/README.md#get_alias) - Get Model Alias +* [update_alias](docs/sdks/languagemodels/README.md#update_alias) - Update Model Alias +* [delete_alias](docs/sdks/languagemodels/README.md#delete_alias) - Delete Model Alias +* [get_alias_by_name](docs/sdks/languagemodels/README.md#get_alias_by_name) - Get Model Alias By Name + +### [openai](docs/sdks/openai/README.md) + +* [create_chat_completion](docs/sdks/openai/README.md#create_chat_completion) - Chat Completions ### [Opper SDK](docs/sdks/opper/README.md) * [call](docs/sdks/opper/README.md#call) - Function Call * [stream](docs/sdks/opper/README.md#stream) - Function Stream +### [rerank](docs/sdks/rerank/README.md) + +* [documents](docs/sdks/rerank/README.md#documents) - Rerank Documents +* [list_models](docs/sdks/rerank/README.md#list_models) - List Rerank Models + ### [span_metrics](docs/sdks/spanmetrics/README.md) * [create_metric](docs/sdks/spanmetrics/README.md#create_metric) - Create Metric @@ -305,41 +465,11 @@ can be consumed using a simple `for` loop. The loop will terminate when the server no longer has any events to send and closes the underlying connection. -```python -from opperai import Opper -import os - - -opper = Opper(http_bearer=os.getenv("OPPER_API_KEY")) - -def stream_call(): - """Print the assistant’s answer as it streams back from Opper.""" - outer = opper.stream( - name="python/sdk/bare-minimum-with-stream", - instructions="answer the following question", - input="what are some uses of 42", - ) - - # Pull out the inner EventStream object in one line. - stream = next(value for key, value in outer if key == "result") - - # Read each Server-Sent Event and emit the delta text. - for event in stream: # event: ServerSentEvent - delta = getattr(event.data, "delta", None) - if delta: # skip keep-alives, etc. - print(delta, end="", flush=True) - -``` - - - -The stream is also a [Context Manager][context-manager] and can be used with the `with` statement and will close the underlying connection when the context is exited. -
- Context Manager Stream Example - +The stream is also a [Context Manager][context-manager] and can be used with the `with` statement and will close the +underlying connection when the context is exited. ```python -from opperai import Opper +from opperai import Opper, models import os @@ -393,7 +523,11 @@ with Opper( ], parent_span_id="123e4567-e89b-12d3-a456-426614174000", tags={ "project": "project_456", "user": "company_123", - }, configuration={}) + }, configuration=models.FunctionCallConfiguration( + beta_evaluation=models.EvaluationConfig( + scorers=models.ScorersEnum1.BASE, + ), + )) with res as event_stream: for event in event_stream: @@ -405,7 +539,6 @@ with Opper( [mdn-sse]: https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events [generator]: https://book.pythontips.com/en/latest/generators.html [context-manager]: https://book.pythontips.com/en/latest/context_managers.html -
@@ -415,7 +548,7 @@ Some of the endpoints in this SDK support retries. If you use the SDK without an To change the default retry strategy for a single API call, simply provide a `RetryConfig` object to the call: ```python -from opperai import Opper +from opperai import Opper, models from opperai.utils import BackoffStrategy, RetryConfig import os @@ -470,7 +603,11 @@ with Opper( ], parent_span_id="123e4567-e89b-12d3-a456-426614174000", tags={ "project": "project_456", "user": "company_123", - }, configuration={}, + }, configuration=models.FunctionCallConfiguration( + beta_evaluation=models.EvaluationConfig( + scorers=models.ScorersEnum1.BASE, + ), + ), RetryConfig("backoff", BackoffStrategy(1, 50, 1.1, 100), False)) # Handle response @@ -480,7 +617,7 @@ with Opper( If you'd like to override the default retry strategy for all operations that support retries, you can use the `retry_config` optional parameter when initializing the SDK: ```python -from opperai import Opper +from opperai import Opper, models from opperai.utils import BackoffStrategy, RetryConfig import os @@ -536,7 +673,11 @@ with Opper( ], parent_span_id="123e4567-e89b-12d3-a456-426614174000", tags={ "project": "project_456", "user": "company_123", - }, configuration={}) + }, configuration=models.FunctionCallConfiguration( + beta_evaluation=models.EvaluationConfig( + scorers=models.ScorersEnum1.BASE, + ), + )) # Handle response print(res) @@ -547,33 +688,20 @@ with Opper( ## Error Handling -Check our detailed [error handling](https://docs.opper.ai/api-reference/errors) - -Handling errors in this SDK should largely match your expectations. All operations return a response object or raise an exception. - -By default, an API error will raise a errors.APIError exception, which has the following properties: - -| Property | Type | Description | -|-----------------|------------------|-----------------------| -| `.status_code` | *int* | The HTTP status code | -| `.message` | *str* | The error message | -| `.raw_response` | *httpx.Response* | The raw HTTP response | -| `.body` | *str* | The response content | - -When custom error responses are specified for an operation, the SDK may also raise their associated exceptions. You can refer to respective *Errors* tables in SDK docs for more details on possible exception types for each operation. For example, the `call_async` method may raise the following exceptions: +[`OpperError`](./src/opperai/errors/oppererror.py) is the base class for all HTTP error responses. It has the following properties: -| Error Type | Status Code | Content Type | -| ----------------------------- | ----------- | ---------------- | -| errors.BadRequestError | 400 | application/json | -| errors.UnauthorizedError | 401 | application/json | -| errors.NotFoundError | 404 | application/json | -| errors.RequestValidationError | 422 | application/json | -| errors.APIError | 4XX, 5XX | \*/\* | +| Property | Type | Description | +| ------------------ | ---------------- | --------------------------------------------------------------------------------------- | +| `err.message` | `str` | Error message | +| `err.status_code` | `int` | HTTP response status code eg `404` | +| `err.headers` | `httpx.Headers` | HTTP response headers | +| `err.body` | `str` | HTTP body. Can be empty string if no body is returned. | +| `err.raw_response` | `httpx.Response` | Raw HTTP response | +| `err.data` | | Optional. Some errors may contain structured data. [See Error Classes](#error-classes). | ### Example - ```python -from opperai import Opper, errors +from opperai import Opper, errors, models import os @@ -629,27 +757,57 @@ with Opper( ], parent_span_id="123e4567-e89b-12d3-a456-426614174000", tags={ "project": "project_456", "user": "company_123", - }, configuration={}) + }, configuration=models.FunctionCallConfiguration( + beta_evaluation=models.EvaluationConfig( + scorers=models.ScorersEnum1.BASE, + ), + )) # Handle response print(res) - except errors.BadRequestError as e: - # handle e.data: errors.BadRequestErrorData - raise(e) - except errors.UnauthorizedError as e: - # handle e.data: errors.UnauthorizedErrorData - raise(e) - except errors.NotFoundError as e: - # handle e.data: errors.NotFoundErrorData - raise(e) - except errors.RequestValidationError as e: - # handle e.data: errors.RequestValidationErrorData - raise(e) - except errors.APIError as e: - # handle exception - raise(e) + + except errors.OpperError as e: + # The base class for HTTP error responses + print(e.message) + print(e.status_code) + print(e.body) + print(e.headers) + print(e.raw_response) + + # Depending on the method different errors may be thrown + if isinstance(e, errors.BadRequestError): + print(e.data.type) # Optional[str] + print(e.data.message) # Optional[str] + print(e.data.detail) # Any ``` + +### Error Classes +**Primary errors:** +* [`OpperError`](./src/opperai/errors/oppererror.py): The base class for HTTP error responses. + * [`BadRequestError`](./src/opperai/errors/badrequesterror.py): Bad Request. Status code `400`. + * [`UnauthorizedError`](./src/opperai/errors/unauthorizederror.py): Unauthorized. Status code `401`. + * [`NotFoundError`](./src/opperai/errors/notfounderror.py): Not Found. Status code `404`. + * [`RequestValidationError`](./src/opperai/errors/requestvalidationerror.py): Request Validation Error. Status code `422`. * + +
Less common errors (7) + +
+ +**Network errors:** +* [`httpx.RequestError`](https://www.python-httpx.org/exceptions/#httpx.RequestError): Base class for request errors. + * [`httpx.ConnectError`](https://www.python-httpx.org/exceptions/#httpx.ConnectError): HTTP client was unable to make a request to a server. + * [`httpx.TimeoutException`](https://www.python-httpx.org/exceptions/#httpx.TimeoutException): HTTP request timed out. + + +**Inherit from [`OpperError`](./src/opperai/errors/oppererror.py)**: +* [`ConflictError`](./src/opperai/errors/conflicterror.py): Conflict. Status code `409`. Applicable to 4 of 61 methods.* +* [`Error`](./src/opperai/errors/error.py): Request validation error. Applicable to 1 of 61 methods.* +* [`ResponseValidationError`](./src/opperai/errors/responsevalidationerror.py): Type mismatch between the response data and the expected Pydantic model. Provides access to the Pydantic validation error via the `cause` attribute. + +
+ +\* Check [the method documentation](#available-resources-and-operations) to see if the error is applicable. ## Custom HTTP Client @@ -732,6 +890,161 @@ s = Opper(async_client=CustomClient(httpx.AsyncClient())) ``` + +## Server Selection + +### Override Server URL Per-Client + +The default server can be overridden globally by passing a URL to the `server_url: str` optional parameter when initializing the SDK client instance. For example: +```python +from opperai import Opper, models +import os + + +with Opper( + server_url="https://api.opper.ai/v2", + http_bearer=os.getenv("OPPER_HTTP_BEARER", ""), +) as opper: + + res = opper.call(name="add_numbers", instructions="Calculate the sum of two numbers", input_schema={ + "properties": { + "x": { + "title": "X", + "type": "integer", + }, + "y": { + "title": "Y", + "type": "integer", + }, + }, + "required": [ + "x", + "y", + ], + "title": "OpperInputExample", + "type": "object", + }, output_schema={ + "properties": { + "sum": { + "title": "Sum", + "type": "integer", + }, + }, + "required": [ + "sum", + ], + "title": "OpperOutputExample", + "type": "object", + }, input={ + "x": 4, + "y": 5, + }, examples=[ + { + "input": { + "x": 1, + "y": 3, + }, + "output": { + "sum": 4, + }, + "comment": "Adds two numbers", + }, + ], parent_span_id="123e4567-e89b-12d3-a456-426614174000", tags={ + "project": "project_456", + "user": "company_123", + }, configuration=models.FunctionCallConfiguration( + beta_evaluation=models.EvaluationConfig( + scorers=models.ScorersEnum1.BASE, + ), + )) + + # Handle response + print(res) + +``` + + + +## Custom HTTP Client + +The Python SDK makes API calls using the [httpx](https://www.python-httpx.org/) HTTP library. In order to provide a convenient way to configure timeouts, cookies, proxies, custom headers, and other low-level configuration, you can initialize the SDK client with your own HTTP client instance. +Depending on whether you are using the sync or async version of the SDK, you can pass an instance of `HttpClient` or `AsyncHttpClient` respectively, which are Protocol's ensuring that the client has the necessary methods to make API calls. +This allows you to wrap the client with your own custom logic, such as adding custom headers, logging, or error handling, or you can just pass an instance of `httpx.Client` or `httpx.AsyncClient` directly. + +For example, you could specify a header for every request that this sdk makes as follows: +```python +from opperai import Opper +import httpx + +http_client = httpx.Client(headers={"x-custom-header": "someValue"}) +s = Opper(client=http_client) +``` + +or you could wrap the client with your own custom logic: +```python +from opperai import Opper +from opperai.httpclient import AsyncHttpClient +import httpx + +class CustomClient(AsyncHttpClient): + client: AsyncHttpClient + + def __init__(self, client: AsyncHttpClient): + self.client = client + + async def send( + self, + request: httpx.Request, + *, + stream: bool = False, + auth: Union[ + httpx._types.AuthTypes, httpx._client.UseClientDefault, None + ] = httpx.USE_CLIENT_DEFAULT, + follow_redirects: Union[ + bool, httpx._client.UseClientDefault + ] = httpx.USE_CLIENT_DEFAULT, + ) -> httpx.Response: + request.headers["Client-Level-Header"] = "added by client" + + return await self.client.send( + request, stream=stream, auth=auth, follow_redirects=follow_redirects + ) + + def build_request( + self, + method: str, + url: httpx._types.URLTypes, + *, + content: Optional[httpx._types.RequestContent] = None, + data: Optional[httpx._types.RequestData] = None, + files: Optional[httpx._types.RequestFiles] = None, + json: Optional[Any] = None, + params: Optional[httpx._types.QueryParamTypes] = None, + headers: Optional[httpx._types.HeaderTypes] = None, + cookies: Optional[httpx._types.CookieTypes] = None, + timeout: Union[ + httpx._types.TimeoutTypes, httpx._client.UseClientDefault + ] = httpx.USE_CLIENT_DEFAULT, + extensions: Optional[httpx._types.RequestExtensions] = None, + ) -> httpx.Request: + return self.client.build_request( + method, + url, + content=content, + data=data, + files=files, + json=json, + params=params, + headers=headers, + cookies=cookies, + timeout=timeout, + extensions=extensions, + ) + +s = Opper(async_client=CustomClient(httpx.AsyncClient())) +``` + + ## Resource Management diff --git a/docs/models/listrerankmodelsresponse.md b/docs/models/listrerankmodelsresponse.md new file mode 100644 index 0000000..d19de00 --- /dev/null +++ b/docs/models/listrerankmodelsresponse.md @@ -0,0 +1,13 @@ +# ListRerankModelsResponse + +Response model for listing rerank models. + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | +| `hosting_provider` | *str* | :heavy_check_mark: | The hosting provider of the model | Cohere | +| `name` | *str* | :heavy_check_mark: | The name of the model | rerank-v3.5 | +| `location` | *str* | :heavy_check_mark: | The location of the model | US | +| `cost_per_request` | *OptionalNullable[float]* | :heavy_minus_sign: | The cost in USD per rerank request | 0.002 | \ No newline at end of file diff --git a/docs/models/paginatedresponselistrerankmodelsresponse.md b/docs/models/paginatedresponselistrerankmodelsresponse.md new file mode 100644 index 0000000..d41f9c0 --- /dev/null +++ b/docs/models/paginatedresponselistrerankmodelsresponse.md @@ -0,0 +1,9 @@ +# PaginatedResponseListRerankModelsResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | +| `meta` | [models.Meta](../models/meta.md) | :heavy_check_mark: | N/A | +| `data` | List[[models.ListRerankModelsResponse](../models/listrerankmodelsresponse.md)] | :heavy_check_mark: | List of items returned in the response | \ No newline at end of file diff --git a/docs/models/rerankcost.md b/docs/models/rerankcost.md new file mode 100644 index 0000000..a0b8280 --- /dev/null +++ b/docs/models/rerankcost.md @@ -0,0 +1,12 @@ +# RerankCost + +Cost information for reranking. + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| `generation` | *float* | :heavy_check_mark: | Cost of the reranking request in USD | +| `platform` | *float* | :heavy_check_mark: | Platform fee in USD (percentage of generation cost) | +| `total` | *float* | :heavy_check_mark: | Total cost in USD (generation + platform) | \ No newline at end of file diff --git a/docs/models/rerankdocument.md b/docs/models/rerankdocument.md new file mode 100644 index 0000000..17ebc0d --- /dev/null +++ b/docs/models/rerankdocument.md @@ -0,0 +1,11 @@ +# RerankDocument + +Document to be reranked. + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | +| `text` | *str* | :heavy_check_mark: | The text content of the document | +| `metadata` | Dict[str, *Any*] | :heavy_minus_sign: | Optional metadata associated with the document | \ No newline at end of file diff --git a/docs/models/rerankrequestmodel.md b/docs/models/rerankrequestmodel.md new file mode 100644 index 0000000..db623f4 --- /dev/null +++ b/docs/models/rerankrequestmodel.md @@ -0,0 +1,15 @@ +# RerankRequestModel + +Request model for reranking. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | +| `query` | *str* | :heavy_check_mark: | The search query to rank documents against | +| `documents` | List[[models.RerankDocument](../models/rerankdocument.md)] | :heavy_check_mark: | List of documents to rerank | +| `model` | *str* | :heavy_check_mark: | The reranking model to use | +| `top_k` | *OptionalNullable[int]* | :heavy_minus_sign: | Number of top documents to return. Defaults to all documents. | +| `return_documents` | *Optional[bool]* | :heavy_minus_sign: | Whether to return document content in the response | +| `max_chunks_per_doc` | *OptionalNullable[int]* | :heavy_minus_sign: | Maximum number of chunks per document | \ No newline at end of file diff --git a/docs/models/rerankresponsemodel.md b/docs/models/rerankresponsemodel.md new file mode 100644 index 0000000..9815e1b --- /dev/null +++ b/docs/models/rerankresponsemodel.md @@ -0,0 +1,14 @@ +# RerankResponseModel + +Response model for reranking. + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | Unique identifier for this rerank request | +| `results` | List[[models.RerankResult](../models/rerankresult.md)] | :heavy_check_mark: | Ranked results | +| `model` | *str* | :heavy_check_mark: | The model used for reranking | +| `usage` | Dict[str, *Any*] | :heavy_check_mark: | Usage information | +| `cost` | [OptionalNullable[models.RerankCost]](../models/rerankcost.md) | :heavy_minus_sign: | Cost information for this rerank request | \ No newline at end of file diff --git a/docs/models/rerankresult.md b/docs/models/rerankresult.md new file mode 100644 index 0000000..1002ed7 --- /dev/null +++ b/docs/models/rerankresult.md @@ -0,0 +1,12 @@ +# RerankResult + +A single reranking result. + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| `index` | *int* | :heavy_check_mark: | Original index of the document | +| `relevance_score` | *float* | :heavy_check_mark: | Relevance score between 0 and 1 | +| `document` | [OptionalNullable[models.RerankDocument]](../models/rerankdocument.md) | :heavy_minus_sign: | The document content (if return_documents=True) | \ No newline at end of file diff --git a/docs/models/updatespanrequest.md b/docs/models/updatespanrequest.md index 1751a75..d5ab0cc 100644 --- a/docs/models/updatespanrequest.md +++ b/docs/models/updatespanrequest.md @@ -6,9 +6,9 @@ | Field | Type | Required | Description | Example | | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | | `name` | *OptionalNullable[str]* | :heavy_minus_sign: | The name of the span, something descriptive about the span that will be used to identify it when querying | my span | -| `start_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The start time of the span in UTC | 2025-10-06T16:05:03.988919Z | +| `start_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The start time of the span in UTC | 2025-11-04T12:46:20.444851Z | | `type` | *OptionalNullable[str]* | :heavy_minus_sign: | The type of the span | email_tool | -| `end_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The end time of the span in UTC | 2025-10-06T16:05:03.989013Z | +| `end_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The end time of the span in UTC | 2025-11-04T12:46:20.444947Z | | `input` | *OptionalNullable[str]* | :heavy_minus_sign: | The input of the span | Hello, world! | | `output` | *OptionalNullable[str]* | :heavy_minus_sign: | The output of the span | Hello, world! | | `error` | *OptionalNullable[str]* | :heavy_minus_sign: | In case of an error, the error message | Exception: This is an error message | diff --git a/docs/sdks/knowledge/README.md b/docs/sdks/knowledge/README.md index 38608a4..4272d9a 100644 --- a/docs/sdks/knowledge/README.md +++ b/docs/sdks/knowledge/README.md @@ -14,7 +14,7 @@ * [register_file_upload](#register_file_upload) - Register File Upload * [delete_file](#delete_file) - Delete File From Knowledge Base * [query](#query) - Query Knowledge Base -* [delete_documents_knowledge_knowledge_base_id_query_delete](#delete_documents_knowledge_knowledge_base_id_query_delete) - Delete Documents +* [delete_documents](#delete_documents) - Delete Documents * [add](#add) - Add ## create @@ -441,7 +441,7 @@ with Opper( | errors.RequestValidationError | 422 | application/json | | errors.APIError | 4XX, 5XX | \*/\* | -## delete_documents_knowledge_knowledge_base_id_query_delete +## delete_documents Delete documents from a knowledge base based on filters @@ -457,7 +457,7 @@ with Opper( http_bearer=os.getenv("OPPER_HTTP_BEARER", ""), ) as opper: - res = opper.knowledge.delete_documents_knowledge_knowledge_base_id_query_delete(knowledge_base_id="7418a0c9-d40d-4761-8b00-e8948f7d8426", filters=[ + res = opper.knowledge.delete_documents(knowledge_base_id="7418a0c9-d40d-4761-8b00-e8948f7d8426", filters=[ { "field": "category", "operation": models.Op.EQUAL_, diff --git a/docs/sdks/languagemodels/README.md b/docs/sdks/languagemodels/README.md index 28ab540..c18dd4e 100644 --- a/docs/sdks/languagemodels/README.md +++ b/docs/sdks/languagemodels/README.md @@ -12,6 +12,12 @@ * [update_custom](#update_custom) - Update Custom Model * [delete_custom](#delete_custom) - Delete Custom Model * [get_custom_by_name](#get_custom_by_name) - Get Custom Model By Name +* [create_alias](#create_alias) - Create Model Alias +* [list_aliases](#list_aliases) - List Model Aliases +* [get_alias](#get_alias) - Get Model Alias +* [update_alias](#update_alias) - Update Model Alias +* [delete_alias](#delete_alias) - Delete Model Alias +* [get_alias_by_name](#get_alias_by_name) - Get Model Alias By Name ## list @@ -320,6 +326,278 @@ with Opper( ### Errors +| Error Type | Status Code | Content Type | +| ----------------------------- | ----------------------------- | ----------------------------- | +| errors.BadRequestError | 400 | application/json | +| errors.UnauthorizedError | 401 | application/json | +| errors.NotFoundError | 404 | application/json | +| errors.RequestValidationError | 422 | application/json | +| errors.APIError | 4XX, 5XX | \*/\* | + +## create_alias + +Create a model alias with fallback models for the organization that owns the API key. + +A model alias allows you to define a name that resolves to an ordered list of fallback models. +For example, you could create an alias called "sonnet-4" that falls back to +["anthropic/claude-3-5-sonnet-latest", "anthropic/claude-3-5-sonnet-20241022"]. + +### Example Usage + + +```python +from opperai import Opper +import os + + +with Opper( + http_bearer=os.getenv("OPPER_HTTP_BEARER", ""), +) as opper: + + res = opper.language_models.create_alias(name="", fallback_models=[ + "", + ]) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `name` | *str* | :heavy_check_mark: | The name of the model alias | +| `fallback_models` | List[*str*] | :heavy_check_mark: | Ordered list of model names to try as fallbacks | +| `description` | *OptionalNullable[str]* | :heavy_minus_sign: | Optional description of the model alias | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.CreateModelAliasResponse](../../models/createmodelaliasresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------------------- | ----------------------------- | ----------------------------- | +| errors.BadRequestError | 400 | application/json | +| errors.UnauthorizedError | 401 | application/json | +| errors.NotFoundError | 404 | application/json | +| errors.ConflictError | 409 | application/json | +| errors.RequestValidationError | 422 | application/json | +| errors.APIError | 4XX, 5XX | \*/\* | + +## list_aliases + +List all model aliases for the organization that owns the API key. + +### Example Usage + + +```python +from opperai import Opper +import os + + +with Opper( + http_bearer=os.getenv("OPPER_HTTP_BEARER", ""), +) as opper: + + res = opper.language_models.list_aliases(offset=0, limit=100) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the first alias to return | +| `limit` | *Optional[int]* | :heavy_minus_sign: | The maximum number of aliases to return | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.PaginatedResponseListModelAliasesResponseItem](../../models/paginatedresponselistmodelaliasesresponseitem.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------------------- | ----------------------------- | ----------------------------- | +| errors.BadRequestError | 400 | application/json | +| errors.UnauthorizedError | 401 | application/json | +| errors.NotFoundError | 404 | application/json | +| errors.RequestValidationError | 422 | application/json | +| errors.APIError | 4XX, 5XX | \*/\* | + +## get_alias + +Get a model alias by its ID. + +### Example Usage + + +```python +from opperai import Opper +import os + + +with Opper( + http_bearer=os.getenv("OPPER_HTTP_BEARER", ""), +) as opper: + + res = opper.language_models.get_alias(alias_id="1fb8ddb6-7ed4-4b09-ba67-90a8c5d1692e") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `alias_id` | *str* | :heavy_check_mark: | The ID of the model alias to get | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.GetModelAliasResponse](../../models/getmodelaliasresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------------------- | ----------------------------- | ----------------------------- | +| errors.BadRequestError | 400 | application/json | +| errors.UnauthorizedError | 401 | application/json | +| errors.NotFoundError | 404 | application/json | +| errors.RequestValidationError | 422 | application/json | +| errors.APIError | 4XX, 5XX | \*/\* | + +## update_alias + +Update a model alias. + +### Example Usage + + +```python +from opperai import Opper +import os + + +with Opper( + http_bearer=os.getenv("OPPER_HTTP_BEARER", ""), +) as opper: + + res = opper.language_models.update_alias(alias_id="15f4454f-0437-4e37-8149-48504d2ca755") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `alias_id` | *str* | :heavy_check_mark: | The ID of the model alias to update | +| `name` | *OptionalNullable[str]* | :heavy_minus_sign: | The name of the model alias | +| `fallback_models` | List[*str*] | :heavy_minus_sign: | Ordered list of model names to try as fallbacks | +| `description` | *OptionalNullable[str]* | :heavy_minus_sign: | Optional description of the model alias | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.UpdateModelAliasResponse](../../models/updatemodelaliasresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------------------- | ----------------------------- | ----------------------------- | +| errors.BadRequestError | 400 | application/json | +| errors.UnauthorizedError | 401 | application/json | +| errors.NotFoundError | 404 | application/json | +| errors.RequestValidationError | 422 | application/json | +| errors.APIError | 4XX, 5XX | \*/\* | + +## delete_alias + +Delete a model alias. + +### Example Usage + + +```python +from opperai import Opper +import os + + +with Opper( + http_bearer=os.getenv("OPPER_HTTP_BEARER", ""), +) as opper: + + opper.language_models.delete_alias(alias_id="69def0be-de07-4128-ac25-11c907d9c302") + + # Use the SDK ... + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `alias_id` | *str* | :heavy_check_mark: | The ID of the model alias to delete | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------------------- | ----------------------------- | ----------------------------- | +| errors.BadRequestError | 400 | application/json | +| errors.UnauthorizedError | 401 | application/json | +| errors.NotFoundError | 404 | application/json | +| errors.RequestValidationError | 422 | application/json | +| errors.APIError | 4XX, 5XX | \*/\* | + +## get_alias_by_name + +Get a model alias by its name. + +### Example Usage + + +```python +from opperai import Opper +import os + + +with Opper( + http_bearer=os.getenv("OPPER_HTTP_BEARER", ""), +) as opper: + + res = opper.language_models.get_alias_by_name(name="") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `name` | *str* | :heavy_check_mark: | The name of the model alias to get | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.GetModelAliasResponse](../../models/getmodelaliasresponse.md)** + +### Errors + | Error Type | Status Code | Content Type | | ----------------------------- | ----------------------------- | ----------------------------- | | errors.BadRequestError | 400 | application/json | diff --git a/docs/sdks/models/README.md b/docs/sdks/models/README.md deleted file mode 100644 index 60fb4eb..0000000 --- a/docs/sdks/models/README.md +++ /dev/null @@ -1,285 +0,0 @@ -# Models -(*models*) - -## Overview - -### Available Operations - -* [create_model_alias_models_aliases_post](#create_model_alias_models_aliases_post) - Create Model Alias -* [list_model_aliases_models_aliases_get](#list_model_aliases_models_aliases_get) - List Model Aliases -* [get_model_alias_models_aliases_alias_id_get](#get_model_alias_models_aliases_alias_id_get) - Get Model Alias -* [update_model_alias_models_aliases_alias_id_patch](#update_model_alias_models_aliases_alias_id_patch) - Update Model Alias -* [delete_model_alias_models_aliases_alias_id_delete](#delete_model_alias_models_aliases_alias_id_delete) - Delete Model Alias -* [get_model_alias_by_name_models_aliases_by_name_name_get](#get_model_alias_by_name_models_aliases_by_name_name_get) - Get Model Alias By Name - -## create_model_alias_models_aliases_post - -Create a model alias with fallback models for the organization that owns the API key. - -A model alias allows you to define a name that resolves to an ordered list of fallback models. -For example, you could create an alias called "sonnet-4" that falls back to -["anthropic/claude-3-5-sonnet-latest", "anthropic/claude-3-5-sonnet-20241022"]. - -### Example Usage - - -```python -from opperai import Opper -import os - - -with Opper( - http_bearer=os.getenv("OPPER_HTTP_BEARER", ""), -) as opper: - - res = opper.models.create_model_alias_models_aliases_post(name="", fallback_models=[ - "", - ]) - - # Handle response - print(res) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `name` | *str* | :heavy_check_mark: | The name of the model alias | -| `fallback_models` | List[*str*] | :heavy_check_mark: | Ordered list of model names to try as fallbacks | -| `description` | *OptionalNullable[str]* | :heavy_minus_sign: | Optional description of the model alias | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[models.CreateModelAliasResponse](../../models/createmodelaliasresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ----------------------------- | ----------------------------- | ----------------------------- | -| errors.BadRequestError | 400 | application/json | -| errors.UnauthorizedError | 401 | application/json | -| errors.NotFoundError | 404 | application/json | -| errors.ConflictError | 409 | application/json | -| errors.RequestValidationError | 422 | application/json | -| errors.APIError | 4XX, 5XX | \*/\* | - -## list_model_aliases_models_aliases_get - -List all model aliases for the organization that owns the API key. - -### Example Usage - - -```python -from opperai import Opper -import os - - -with Opper( - http_bearer=os.getenv("OPPER_HTTP_BEARER", ""), -) as opper: - - res = opper.models.list_model_aliases_models_aliases_get(offset=0, limit=100) - - # Handle response - print(res) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the first alias to return | -| `limit` | *Optional[int]* | :heavy_minus_sign: | The maximum number of aliases to return | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[models.PaginatedResponseListModelAliasesResponseItem](../../models/paginatedresponselistmodelaliasesresponseitem.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ----------------------------- | ----------------------------- | ----------------------------- | -| errors.BadRequestError | 400 | application/json | -| errors.UnauthorizedError | 401 | application/json | -| errors.NotFoundError | 404 | application/json | -| errors.RequestValidationError | 422 | application/json | -| errors.APIError | 4XX, 5XX | \*/\* | - -## get_model_alias_models_aliases_alias_id_get - -Get a model alias by its ID. - -### Example Usage - - -```python -from opperai import Opper -import os - - -with Opper( - http_bearer=os.getenv("OPPER_HTTP_BEARER", ""), -) as opper: - - res = opper.models.get_model_alias_models_aliases_alias_id_get(alias_id="1fb8ddb6-7ed4-4b09-ba67-90a8c5d1692e") - - # Handle response - print(res) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `alias_id` | *str* | :heavy_check_mark: | The ID of the model alias to get | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[models.GetModelAliasResponse](../../models/getmodelaliasresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ----------------------------- | ----------------------------- | ----------------------------- | -| errors.BadRequestError | 400 | application/json | -| errors.UnauthorizedError | 401 | application/json | -| errors.NotFoundError | 404 | application/json | -| errors.RequestValidationError | 422 | application/json | -| errors.APIError | 4XX, 5XX | \*/\* | - -## update_model_alias_models_aliases_alias_id_patch - -Update a model alias. - -### Example Usage - - -```python -from opperai import Opper -import os - - -with Opper( - http_bearer=os.getenv("OPPER_HTTP_BEARER", ""), -) as opper: - - res = opper.models.update_model_alias_models_aliases_alias_id_patch(alias_id="15f4454f-0437-4e37-8149-48504d2ca755") - - # Handle response - print(res) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `alias_id` | *str* | :heavy_check_mark: | The ID of the model alias to update | -| `name` | *OptionalNullable[str]* | :heavy_minus_sign: | The name of the model alias | -| `fallback_models` | List[*str*] | :heavy_minus_sign: | Ordered list of model names to try as fallbacks | -| `description` | *OptionalNullable[str]* | :heavy_minus_sign: | Optional description of the model alias | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[models.UpdateModelAliasResponse](../../models/updatemodelaliasresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ----------------------------- | ----------------------------- | ----------------------------- | -| errors.BadRequestError | 400 | application/json | -| errors.UnauthorizedError | 401 | application/json | -| errors.NotFoundError | 404 | application/json | -| errors.RequestValidationError | 422 | application/json | -| errors.APIError | 4XX, 5XX | \*/\* | - -## delete_model_alias_models_aliases_alias_id_delete - -Delete a model alias. - -### Example Usage - - -```python -from opperai import Opper -import os - - -with Opper( - http_bearer=os.getenv("OPPER_HTTP_BEARER", ""), -) as opper: - - opper.models.delete_model_alias_models_aliases_alias_id_delete(alias_id="69def0be-de07-4128-ac25-11c907d9c302") - - # Use the SDK ... - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `alias_id` | *str* | :heavy_check_mark: | The ID of the model alias to delete | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Errors - -| Error Type | Status Code | Content Type | -| ----------------------------- | ----------------------------- | ----------------------------- | -| errors.BadRequestError | 400 | application/json | -| errors.UnauthorizedError | 401 | application/json | -| errors.NotFoundError | 404 | application/json | -| errors.RequestValidationError | 422 | application/json | -| errors.APIError | 4XX, 5XX | \*/\* | - -## get_model_alias_by_name_models_aliases_by_name_name_get - -Get a model alias by its name. - -### Example Usage - - -```python -from opperai import Opper -import os - - -with Opper( - http_bearer=os.getenv("OPPER_HTTP_BEARER", ""), -) as opper: - - res = opper.models.get_model_alias_by_name_models_aliases_by_name_name_get(name="") - - # Handle response - print(res) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `name` | *str* | :heavy_check_mark: | The name of the model alias to get | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[models.GetModelAliasResponse](../../models/getmodelaliasresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ----------------------------- | ----------------------------- | ----------------------------- | -| errors.BadRequestError | 400 | application/json | -| errors.UnauthorizedError | 401 | application/json | -| errors.NotFoundError | 404 | application/json | -| errors.RequestValidationError | 422 | application/json | -| errors.APIError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/rerank/README.md b/docs/sdks/rerank/README.md new file mode 100644 index 0000000..244defd --- /dev/null +++ b/docs/sdks/rerank/README.md @@ -0,0 +1,115 @@ +# Rerank +(*rerank*) + +## Overview + +### Available Operations + +* [documents](#documents) - Rerank Documents +* [list_models](#list_models) - List Rerank Models + +## documents + +Rerank documents based on relevance to a query. + +This endpoint allows you to rerank a list of documents based on their relevance +to a given query using state-of-the-art reranking models. + +The documents will be returned in order of relevance, with the most relevant +documents first. Each result includes the original document index and a +relevance score. + +### Example Usage + + +```python +from opperai import Opper +import os + + +with Opper( + http_bearer=os.getenv("OPPER_HTTP_BEARER", ""), +) as opper: + + res = opper.rerank.documents(query="", documents=[ + { + "text": "", + }, + ], model="Mustang", return_documents=True) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `query` | *str* | :heavy_check_mark: | The search query to rank documents against | +| `documents` | List[[models.RerankDocument](../../models/rerankdocument.md)] | :heavy_check_mark: | List of documents to rerank | +| `model` | *str* | :heavy_check_mark: | The reranking model to use | +| `top_k` | *OptionalNullable[int]* | :heavy_minus_sign: | Number of top documents to return. Defaults to all documents. | +| `return_documents` | *Optional[bool]* | :heavy_minus_sign: | Whether to return document content in the response | +| `max_chunks_per_doc` | *OptionalNullable[int]* | :heavy_minus_sign: | Maximum number of chunks per document | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.RerankResponseModel](../../models/rerankresponsemodel.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------------------- | ----------------------------- | ----------------------------- | +| errors.BadRequestError | 400 | application/json | +| errors.UnauthorizedError | 401 | application/json | +| errors.NotFoundError | 404 | application/json | +| errors.RequestValidationError | 422 | application/json | +| errors.APIError | 4XX, 5XX | \*/\* | + +## list_models + +List all available reranking models. + +Returns a list of all reranking models available on the Opper platform, +including their hosting providers, locations, and pricing information. + +### Example Usage + + +```python +from opperai import Opper +import os + + +with Opper( + http_bearer=os.getenv("OPPER_HTTP_BEARER", ""), +) as opper: + + res = opper.rerank.list_models() + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.PaginatedResponseListRerankModelsResponse](../../models/paginatedresponselistrerankmodelsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------------------- | ----------------------------- | ----------------------------- | +| errors.BadRequestError | 400 | application/json | +| errors.UnauthorizedError | 401 | application/json | +| errors.NotFoundError | 404 | application/json | +| errors.RequestValidationError | 422 | application/json | +| errors.APIError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/spans/README.md b/docs/sdks/spans/README.md index 0947661..4d90ddd 100644 --- a/docs/sdks/spans/README.md +++ b/docs/sdks/spans/README.md @@ -130,7 +130,7 @@ with Opper( http_bearer=os.getenv("OPPER_HTTP_BEARER", ""), ) as opper: - res = opper.spans.update(span_id="77b258a2-45c1-4b87-a50c-9116bc8ed1d6", name="my span", start_time=parse_datetime("2025-10-06T16:05:03.988919Z"), type="email_tool", end_time=parse_datetime("2025-10-06T16:05:03.989013Z"), input="Hello, world!", output="Hello, world!", error="Exception: This is an error message", meta={ + res = opper.spans.update(span_id="77b258a2-45c1-4b87-a50c-9116bc8ed1d6", name="my span", start_time=parse_datetime("2025-11-04T12:46:20.444851Z"), type="email_tool", end_time=parse_datetime("2025-11-04T12:46:20.444947Z"), input="Hello, world!", output="Hello, world!", error="Exception: This is an error message", meta={ "key": "value", }, score=10) @@ -145,9 +145,9 @@ with Opper( | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | | `span_id` | *str* | :heavy_check_mark: | The ID of the span to update | | | `name` | *OptionalNullable[str]* | :heavy_minus_sign: | The name of the span, something descriptive about the span that will be used to identify it when querying | my span | -| `start_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The start time of the span in UTC | 2025-10-06T16:05:03.988919Z | +| `start_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The start time of the span in UTC | 2025-11-04T12:46:20.444851Z | | `type` | *OptionalNullable[str]* | :heavy_minus_sign: | The type of the span | email_tool | -| `end_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The end time of the span in UTC | 2025-10-06T16:05:03.989013Z | +| `end_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The end time of the span in UTC | 2025-11-04T12:46:20.444947Z | | `input` | *OptionalNullable[str]* | :heavy_minus_sign: | The input of the span | Hello, world! | | `output` | *OptionalNullable[str]* | :heavy_minus_sign: | The output of the span | Hello, world! | | `error` | *OptionalNullable[str]* | :heavy_minus_sign: | In case of an error, the error message | Exception: This is an error message | diff --git a/pyproject.toml b/pyproject.toml index 0c89e77..39685b8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "opperai" -version = "1.3.0" +version = "1.6.4" description = "Python Client SDK Generated by Speakeasy." authors = [{ name = "Speakeasy" },] readme = "README.md" diff --git a/src/opperai/_version.py b/src/opperai/_version.py index f1ed5c5..6682a6e 100644 --- a/src/opperai/_version.py +++ b/src/opperai/_version.py @@ -3,10 +3,10 @@ import importlib.metadata __title__: str = "opperai" -__version__: str = "1.3.0" +__version__: str = "1.6.4" __openapi_doc_version__: str = "2.0.0" -__gen_version__: str = "2.722.2" -__user_agent__: str = "speakeasy-sdk/python 1.3.0 2.722.2 2.0.0 opperai" +__gen_version__: str = "2.737.0" +__user_agent__: str = "speakeasy-sdk/python 1.6.4 2.737.0 2.0.0 opperai" try: if __package__ is not None: diff --git a/src/opperai/analytics.py b/src/opperai/analytics.py index c7ded78..270fdfa 100644 --- a/src/opperai/analytics.py +++ b/src/opperai/analytics.py @@ -83,7 +83,7 @@ def get_usage( config=self.sdk_configuration, base_url=base_url or "", operation_id="usage_analytics_usage_get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -195,7 +195,7 @@ async def get_usage_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="usage_analytics_usage_get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), diff --git a/src/opperai/datasets.py b/src/opperai/datasets.py index 5824709..36eaffb 100644 --- a/src/opperai/datasets.py +++ b/src/opperai/datasets.py @@ -105,7 +105,7 @@ def create_entry( config=self.sdk_configuration, base_url=base_url or "", operation_id="create_dataset_entry_datasets__dataset_id__post", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -226,7 +226,7 @@ async def create_entry_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="create_dataset_entry_datasets__dataset_id__post", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -332,7 +332,7 @@ def list_entries( config=self.sdk_configuration, base_url=base_url or "", operation_id="list_dataset_entries_datasets__dataset_id__entries_get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -440,7 +440,7 @@ async def list_entries_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="list_dataset_entries_datasets__dataset_id__entries_get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -545,7 +545,7 @@ def get_entry( config=self.sdk_configuration, base_url=base_url or "", operation_id="get_dataset_entry_datasets__dataset_id__entries__entry_id__get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -648,7 +648,7 @@ async def get_entry_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="get_dataset_entry_datasets__dataset_id__entries__entry_id__get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -751,7 +751,7 @@ def delete_entry( config=self.sdk_configuration, base_url=base_url or "", operation_id="delete_dataset_entry_datasets__dataset_id__entries__entry_id__delete", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -854,7 +854,7 @@ async def delete_entry_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="delete_dataset_entry_datasets__dataset_id__entries__entry_id__delete", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -960,7 +960,7 @@ def query_entries( config=self.sdk_configuration, base_url=base_url or "", operation_id="query_dataset_entries_datasets__dataset_id__entries_query_post", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -1068,7 +1068,7 @@ async def query_entries_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="query_dataset_entries_datasets__dataset_id__entries_query_post", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), diff --git a/src/opperai/embeddings.py b/src/opperai/embeddings.py index 756904c..1bb2d2e 100644 --- a/src/opperai/embeddings.py +++ b/src/opperai/embeddings.py @@ -3,10 +3,6 @@ from .basesdk import BaseSDK from opperai import errors, models, utils from opperai._hooks import HookContext -from opperai.models import ( - createembeddingrequest as models_createembeddingrequest, - tmodel as models_tmodel, -) from opperai.types import OptionalNullable, UNSET from opperai.utils import get_security_from_env from opperai.utils.unmarshal_json_response import unmarshal_json_response @@ -17,13 +13,8 @@ class Embeddings(BaseSDK): def create( self, *, - input_: Union[ - models_createembeddingrequest.Input, - models_createembeddingrequest.InputTypedDict, - ], - model: OptionalNullable[ - Union[models_tmodel.TModel, models_tmodel.TModelTypedDict] - ] = UNSET, + input: Union[models.Input, models.InputTypedDict], + model: OptionalNullable[Union[models.TModel, models.TModelTypedDict]] = UNSET, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -87,7 +78,7 @@ def create( config=self.sdk_configuration, base_url=base_url or "", operation_id="create_embedding_embeddings_post", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -131,13 +122,8 @@ def create( async def create_async( self, *, - input_: Union[ - models_createembeddingrequest.Input, - models_createembeddingrequest.InputTypedDict, - ], - model: OptionalNullable[ - Union[models_tmodel.TModel, models_tmodel.TModelTypedDict] - ] = UNSET, + input: Union[models.Input, models.InputTypedDict], + model: OptionalNullable[Union[models.TModel, models.TModelTypedDict]] = UNSET, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -201,7 +187,7 @@ async def create_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="create_embedding_embeddings_post", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), diff --git a/src/opperai/entries.py b/src/opperai/entries.py index 09ec01d..821b6d3 100644 --- a/src/opperai/entries.py +++ b/src/opperai/entries.py @@ -94,7 +94,7 @@ def update( config=self.sdk_configuration, base_url=base_url or "", operation_id="update_dataset_entry_datasets__dataset_id__entries__entry_id__patch", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -218,7 +218,7 @@ async def update_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="update_dataset_entry_datasets__dataset_id__entries__entry_id__patch", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), diff --git a/src/opperai/errors/apierror.py b/src/opperai/errors/apierror.py index b4e06ef..8dfae77 100644 --- a/src/opperai/errors/apierror.py +++ b/src/opperai/errors/apierror.py @@ -9,7 +9,7 @@ MAX_MESSAGE_LEN = 10_000 -@dataclass(frozen=True) +@dataclass(unsafe_hash=True) class APIError(OpperError): """The fallback error class if no more specific error class is matched.""" diff --git a/src/opperai/errors/badrequesterror.py b/src/opperai/errors/badrequesterror.py index d8a7964..e9bc804 100644 --- a/src/opperai/errors/badrequesterror.py +++ b/src/opperai/errors/badrequesterror.py @@ -17,7 +17,7 @@ class BadRequestErrorData(BaseModel): message: Optional[str] = "The request is invalid" -@dataclass(frozen=True) +@dataclass(unsafe_hash=True) class BadRequestError(OpperError): data: BadRequestErrorData = field(hash=False) diff --git a/src/opperai/errors/conflicterror.py b/src/opperai/errors/conflicterror.py index 753c54e..c7840b2 100644 --- a/src/opperai/errors/conflicterror.py +++ b/src/opperai/errors/conflicterror.py @@ -17,7 +17,7 @@ class ConflictErrorData(BaseModel): message: Optional[str] = "The resource already exists" -@dataclass(frozen=True) +@dataclass(unsafe_hash=True) class ConflictError(OpperError): data: ConflictErrorData = field(hash=False) diff --git a/src/opperai/errors/error.py b/src/opperai/errors/error.py index 04c76eb..3177205 100644 --- a/src/opperai/errors/error.py +++ b/src/opperai/errors/error.py @@ -16,7 +16,7 @@ class ErrorData(BaseModel): detail: Any -@dataclass(frozen=True) +@dataclass(unsafe_hash=True) class Error(OpperError): data: ErrorData = field(hash=False) diff --git a/src/opperai/errors/no_response_error.py b/src/opperai/errors/no_response_error.py index b710ea2..1deab64 100644 --- a/src/opperai/errors/no_response_error.py +++ b/src/opperai/errors/no_response_error.py @@ -3,7 +3,7 @@ from dataclasses import dataclass -@dataclass(frozen=True) +@dataclass(unsafe_hash=True) class NoResponseError(Exception): """Error raised when no HTTP response is received from the server.""" diff --git a/src/opperai/errors/notfounderror.py b/src/opperai/errors/notfounderror.py index ff2a2a6..e344038 100644 --- a/src/opperai/errors/notfounderror.py +++ b/src/opperai/errors/notfounderror.py @@ -17,7 +17,7 @@ class NotFoundErrorData(BaseModel): message: Optional[str] = "The resource was not found" -@dataclass(frozen=True) +@dataclass(unsafe_hash=True) class NotFoundError(OpperError): data: NotFoundErrorData = field(hash=False) diff --git a/src/opperai/errors/oppererror.py b/src/opperai/errors/oppererror.py index 947bf71..87c5016 100644 --- a/src/opperai/errors/oppererror.py +++ b/src/opperai/errors/oppererror.py @@ -5,7 +5,7 @@ from dataclasses import dataclass, field -@dataclass(frozen=True) +@dataclass(unsafe_hash=True) class OpperError(Exception): """The base class for all HTTP error responses.""" diff --git a/src/opperai/errors/requestvalidationerror.py b/src/opperai/errors/requestvalidationerror.py index cde43c7..a79bccc 100644 --- a/src/opperai/errors/requestvalidationerror.py +++ b/src/opperai/errors/requestvalidationerror.py @@ -17,7 +17,7 @@ class RequestValidationErrorData(BaseModel): message: Optional[str] = "The request is invalid" -@dataclass(frozen=True) +@dataclass(unsafe_hash=True) class RequestValidationError(OpperError): data: RequestValidationErrorData = field(hash=False) diff --git a/src/opperai/errors/responsevalidationerror.py b/src/opperai/errors/responsevalidationerror.py index 89d3b70..fbe8a90 100644 --- a/src/opperai/errors/responsevalidationerror.py +++ b/src/opperai/errors/responsevalidationerror.py @@ -7,7 +7,7 @@ from opperai.errors import OpperError -@dataclass(frozen=True) +@dataclass(unsafe_hash=True) class ResponseValidationError(OpperError): """Error raised when there is a type mismatch between the response data and the expected Pydantic model.""" diff --git a/src/opperai/errors/unauthorizederror.py b/src/opperai/errors/unauthorizederror.py index 02653ef..c88469b 100644 --- a/src/opperai/errors/unauthorizederror.py +++ b/src/opperai/errors/unauthorizederror.py @@ -17,7 +17,7 @@ class UnauthorizedErrorData(BaseModel): message: Optional[str] = "The request is unauthorized" -@dataclass(frozen=True) +@dataclass(unsafe_hash=True) class UnauthorizedError(OpperError): data: UnauthorizedErrorData = field(hash=False) diff --git a/src/opperai/functions.py b/src/opperai/functions.py index 549340f..7bc4e3b 100644 --- a/src/opperai/functions.py +++ b/src/opperai/functions.py @@ -121,7 +121,7 @@ def create( config=self.sdk_configuration, base_url=base_url or "", operation_id="create_function_functions_post", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -261,7 +261,7 @@ async def create_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="create_function_functions_post", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -375,7 +375,7 @@ def list( config=self.sdk_configuration, base_url=base_url or "", operation_id="list_functions_functions_get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -488,7 +488,7 @@ async def list_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="list_functions_functions_get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -592,7 +592,7 @@ def get( config=self.sdk_configuration, base_url=base_url or "", operation_id="get_function_functions__function_id__get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -694,7 +694,7 @@ async def get_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="get_function_functions__function_id__get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -833,7 +833,7 @@ def update( config=self.sdk_configuration, base_url=base_url or "", operation_id="update_function_functions__function_id__patch", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -972,7 +972,7 @@ async def update_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="update_function_functions__function_id__patch", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -1074,7 +1074,7 @@ def delete( config=self.sdk_configuration, base_url=base_url or "", operation_id="delete_function_functions__function_id__delete", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -1176,7 +1176,7 @@ async def delete_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="delete_function_functions__function_id__delete", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -1278,7 +1278,7 @@ def get_by_name( config=self.sdk_configuration, base_url=base_url or "", operation_id="get_function_by_name_functions_by_name__name__get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -1380,7 +1380,7 @@ async def get_by_name_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="get_function_by_name_functions_by_name__name__get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -1485,7 +1485,7 @@ def get_by_revision( config=self.sdk_configuration, base_url=base_url or "", operation_id="get_function_by_revision_functions__function_id__revisions__revision_id__get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -1590,7 +1590,7 @@ async def get_by_revision_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="get_function_by_revision_functions__function_id__revisions__revision_id__get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -1717,7 +1717,7 @@ def call( config=self.sdk_configuration, base_url=base_url or "", operation_id="call_function_functions__function_id__call_post", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -1846,7 +1846,7 @@ async def call_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="call_function_functions__function_id__call_post", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -1989,7 +1989,7 @@ def stream( config=self.sdk_configuration, base_url=base_url or "", operation_id="stream_function_functions__function_id__call_stream_post", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -2148,7 +2148,7 @@ async def stream_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="stream_function_functions__function_id__call_stream_post", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -2296,7 +2296,7 @@ def call_revision( config=self.sdk_configuration, base_url=base_url or "", operation_id="call_function_revision_functions__function_id__call__revision_id__post", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -2428,7 +2428,7 @@ async def call_revision_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="call_function_revision_functions__function_id__call__revision_id__post", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -2576,7 +2576,7 @@ def stream_revision( config=self.sdk_configuration, base_url=base_url or "", operation_id="stream_function_revision_functions__function_id__call_stream__revision_id__post", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -2740,7 +2740,7 @@ async def stream_revision_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="stream_function_revision_functions__function_id__call_stream__revision_id__post", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), diff --git a/src/opperai/knowledge.py b/src/opperai/knowledge.py index 08bfaa6..e5309e7 100644 --- a/src/opperai/knowledge.py +++ b/src/opperai/knowledge.py @@ -78,7 +78,7 @@ def create( config=self.sdk_configuration, base_url=base_url or "", operation_id="create_knowledge_base_knowledge_post", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -186,7 +186,7 @@ async def create_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="create_knowledge_base_knowledge_post", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -291,7 +291,7 @@ def list( config=self.sdk_configuration, base_url=base_url or "", operation_id="list_knowledge_bases_knowledge_get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -398,7 +398,7 @@ async def list_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="list_knowledge_bases_knowledge_get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -502,7 +502,7 @@ def get( config=self.sdk_configuration, base_url=base_url or "", operation_id="get_knowledge_base_knowledge__knowledge_base_id__get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -604,7 +604,7 @@ async def get_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="get_knowledge_base_knowledge__knowledge_base_id__get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -706,7 +706,7 @@ def delete( config=self.sdk_configuration, base_url=base_url or "", operation_id="delete_knowledge_base_knowledge__knowledge_base_id__delete", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -808,7 +808,7 @@ async def delete_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="delete_knowledge_base_knowledge__knowledge_base_id__delete", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -912,7 +912,7 @@ def get_by_name( config=self.sdk_configuration, base_url=base_url or "", operation_id="get_knowledge_base_by_name_knowledge_by_name__knowledge_base_name__get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -1016,7 +1016,7 @@ async def get_by_name_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="get_knowledge_base_by_name_knowledge_by_name__knowledge_base_name__get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -1126,7 +1126,7 @@ def get_upload_url( config=self.sdk_configuration, base_url=base_url or "", operation_id="get_upload_url_knowledge__knowledge_base_id__upload_url_get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -1236,7 +1236,7 @@ async def get_upload_url_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="get_upload_url_knowledge__knowledge_base_id__upload_url_get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -1374,7 +1374,7 @@ def register_file_upload( config=self.sdk_configuration, base_url=base_url or "", operation_id="register_file_upload_knowledge__knowledge_base_id__register_file_post", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -1512,7 +1512,7 @@ async def register_file_upload_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="register_file_upload_knowledge__knowledge_base_id__register_file_post", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -1617,7 +1617,7 @@ def delete_file( config=self.sdk_configuration, base_url=base_url or "", operation_id="delete_file_from_knowledge_base_knowledge__knowledge_base_id__files__file_id__delete", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -1722,7 +1722,7 @@ async def delete_file_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="delete_file_from_knowledge_base_knowledge__knowledge_base_id__files__file_id__delete", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -1855,7 +1855,7 @@ def query( config=self.sdk_configuration, base_url=base_url or "", operation_id="query_knowledge_base_knowledge__knowledge_base_id__query_post", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -1990,7 +1990,7 @@ async def query_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="query_knowledge_base_knowledge__knowledge_base_id__query_post", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -2032,7 +2032,7 @@ async def query_async( raise errors.APIError("Unexpected response received", http_res) - def delete_documents_knowledge_knowledge_base_id_query_delete( + def delete_documents( self, *, knowledge_base_id: str, @@ -2110,7 +2110,7 @@ def delete_documents_knowledge_knowledge_base_id_query_delete( config=self.sdk_configuration, base_url=base_url or "", operation_id="delete_documents_knowledge__knowledge_base_id__query_delete", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -2150,7 +2150,7 @@ def delete_documents_knowledge_knowledge_base_id_query_delete( raise errors.APIError("Unexpected response received", http_res) - async def delete_documents_knowledge_knowledge_base_id_query_delete_async( + async def delete_documents_async( self, *, knowledge_base_id: str, @@ -2228,7 +2228,7 @@ async def delete_documents_knowledge_knowledge_base_id_query_delete_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="delete_documents_knowledge__knowledge_base_id__query_delete", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -2354,7 +2354,7 @@ def add( config=self.sdk_configuration, base_url=base_url or "", operation_id="add_knowledge__knowledge_base_id__add_post", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -2480,7 +2480,7 @@ async def add_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="add_knowledge__knowledge_base_id__add_post", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), diff --git a/src/opperai/language_models.py b/src/opperai/language_models.py index c56197b..a2cd71f 100644 --- a/src/opperai/language_models.py +++ b/src/opperai/language_models.py @@ -6,7 +6,7 @@ from opperai.types import OptionalNullable, UNSET from opperai.utils import get_security_from_env from opperai.utils.unmarshal_json_response import unmarshal_json_response -from typing import Any, Dict, Mapping, Optional +from typing import Any, Dict, List, Mapping, Optional class LanguageModels(BaseSDK): @@ -77,7 +77,7 @@ def list( config=self.sdk_configuration, base_url=base_url or "", operation_id="list_models_models_get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -186,7 +186,7 @@ async def list_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="list_models_models_get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -302,7 +302,7 @@ def register_custom( config=self.sdk_configuration, base_url=base_url or "", operation_id="register_custom_model_models_custom_post", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -419,7 +419,7 @@ async def register_custom_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="register_custom_model_models_custom_post", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -527,7 +527,7 @@ def list_custom( config=self.sdk_configuration, base_url=base_url or "", operation_id="list_custom_models_models_custom_get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -634,7 +634,7 @@ async def list_custom_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="list_custom_models_models_custom_get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -738,7 +738,7 @@ def get_custom( config=self.sdk_configuration, base_url=base_url or "", operation_id="get_custom_model_models_custom__model_id__get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -840,7 +840,7 @@ async def get_custom_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="get_custom_model_models_custom__model_id__get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -963,7 +963,7 @@ def update_custom( config=self.sdk_configuration, base_url=base_url or "", operation_id="update_custom_model_models_custom__model_id__patch", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -1086,7 +1086,7 @@ async def update_custom_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="update_custom_model_models_custom__model_id__patch", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -1188,7 +1188,7 @@ def delete_custom( config=self.sdk_configuration, base_url=base_url or "", operation_id="delete_custom_model_models_custom__model_id__delete", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -1290,7 +1290,7 @@ async def delete_custom_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="delete_custom_model_models_custom__model_id__delete", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -1392,7 +1392,7 @@ def get_custom_by_name( config=self.sdk_configuration, base_url=base_url or "", operation_id="get_custom_model_by_name_models_custom_by_name__name__get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -1494,7 +1494,7 @@ async def get_custom_by_name_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="get_custom_model_by_name_models_custom_by_name__name__get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -1533,3 +1533,1305 @@ async def get_custom_by_name_async( raise errors.APIError("API error occurred", http_res, http_res_text) raise errors.APIError("Unexpected response received", http_res) + + def create_alias( + self, + *, + name: str, + fallback_models: List[str], + description: OptionalNullable[str] = UNSET, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.CreateModelAliasResponse: + r"""Create Model Alias + + Create a model alias with fallback models for the organization that owns the API key. + + A model alias allows you to define a name that resolves to an ordered list of fallback models. + For example, you could create an alias called \"sonnet-4\" that falls back to + [\"anthropic/claude-3-5-sonnet-latest\", \"anthropic/claude-3-5-sonnet-20241022\"]. + + :param name: The name of the model alias + :param fallback_models: Ordered list of model names to try as fallbacks + :param description: Optional description of the model alias + :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 = models.CreateModelAliasRequest( + name=name, + fallback_models=fallback_models, + description=description, + ) + + req = self._build_request( + method="POST", + path="/models/aliases", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request, False, False, "json", models.CreateModelAliasRequest + ), + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="create_model_alias_models_aliases_post", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=["400", "401", "404", "409", "422", "4XX", "5XX"], + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.CreateModelAliasResponse, http_res) + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response( + errors.BadRequestErrorData, http_res + ) + raise errors.BadRequestError(response_data, http_res) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + errors.UnauthorizedErrorData, http_res + ) + raise errors.UnauthorizedError(response_data, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) + raise errors.NotFoundError(response_data, http_res) + if utils.match_response(http_res, "409", "application/json"): + response_data = unmarshal_json_response(errors.ConflictErrorData, http_res) + raise errors.ConflictError(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + errors.RequestValidationErrorData, http_res + ) + raise errors.RequestValidationError(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.APIError("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.APIError("API error occurred", http_res, http_res_text) + + raise errors.APIError("Unexpected response received", http_res) + + async def create_alias_async( + self, + *, + name: str, + fallback_models: List[str], + description: OptionalNullable[str] = UNSET, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.CreateModelAliasResponse: + r"""Create Model Alias + + Create a model alias with fallback models for the organization that owns the API key. + + A model alias allows you to define a name that resolves to an ordered list of fallback models. + For example, you could create an alias called \"sonnet-4\" that falls back to + [\"anthropic/claude-3-5-sonnet-latest\", \"anthropic/claude-3-5-sonnet-20241022\"]. + + :param name: The name of the model alias + :param fallback_models: Ordered list of model names to try as fallbacks + :param description: Optional description of the model alias + :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 = models.CreateModelAliasRequest( + name=name, + fallback_models=fallback_models, + description=description, + ) + + req = self._build_request_async( + method="POST", + path="/models/aliases", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request, False, False, "json", models.CreateModelAliasRequest + ), + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="create_model_alias_models_aliases_post", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=["400", "401", "404", "409", "422", "4XX", "5XX"], + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.CreateModelAliasResponse, http_res) + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response( + errors.BadRequestErrorData, http_res + ) + raise errors.BadRequestError(response_data, http_res) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + errors.UnauthorizedErrorData, http_res + ) + raise errors.UnauthorizedError(response_data, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) + raise errors.NotFoundError(response_data, http_res) + if utils.match_response(http_res, "409", "application/json"): + response_data = unmarshal_json_response(errors.ConflictErrorData, http_res) + raise errors.ConflictError(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + errors.RequestValidationErrorData, http_res + ) + raise errors.RequestValidationError(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.APIError("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.APIError("API error occurred", http_res, http_res_text) + + raise errors.APIError("Unexpected response received", http_res) + + def list_aliases( + self, + *, + offset: Optional[int] = 0, + limit: Optional[int] = 100, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PaginatedResponseListModelAliasesResponseItem: + r"""List Model Aliases + + List all model aliases for the organization that owns the API key. + + :param offset: The offset of the first alias to return + :param limit: The maximum number of aliases to return + :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 = models.ListModelAliasesModelsAliasesGetRequest( + offset=offset, + limit=limit, + ) + + req = self._build_request( + method="GET", + path="/models/aliases", + 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, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="list_model_aliases_models_aliases_get", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=["400", "401", "404", "422", "4XX", "5XX"], + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.PaginatedResponseListModelAliasesResponseItem, http_res + ) + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response( + errors.BadRequestErrorData, http_res + ) + raise errors.BadRequestError(response_data, http_res) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + errors.UnauthorizedErrorData, http_res + ) + raise errors.UnauthorizedError(response_data, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) + raise errors.NotFoundError(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + errors.RequestValidationErrorData, http_res + ) + raise errors.RequestValidationError(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.APIError("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.APIError("API error occurred", http_res, http_res_text) + + raise errors.APIError("Unexpected response received", http_res) + + async def list_aliases_async( + self, + *, + offset: Optional[int] = 0, + limit: Optional[int] = 100, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PaginatedResponseListModelAliasesResponseItem: + r"""List Model Aliases + + List all model aliases for the organization that owns the API key. + + :param offset: The offset of the first alias to return + :param limit: The maximum number of aliases to return + :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 = models.ListModelAliasesModelsAliasesGetRequest( + offset=offset, + limit=limit, + ) + + req = self._build_request_async( + method="GET", + path="/models/aliases", + 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, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="list_model_aliases_models_aliases_get", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=["400", "401", "404", "422", "4XX", "5XX"], + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.PaginatedResponseListModelAliasesResponseItem, http_res + ) + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response( + errors.BadRequestErrorData, http_res + ) + raise errors.BadRequestError(response_data, http_res) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + errors.UnauthorizedErrorData, http_res + ) + raise errors.UnauthorizedError(response_data, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) + raise errors.NotFoundError(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + errors.RequestValidationErrorData, http_res + ) + raise errors.RequestValidationError(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.APIError("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.APIError("API error occurred", http_res, http_res_text) + + raise errors.APIError("Unexpected response received", http_res) + + def get_alias( + self, + *, + alias_id: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.GetModelAliasResponse: + r"""Get Model Alias + + Get a model alias by its ID. + + :param alias_id: The ID of the model alias to get + :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 = models.GetModelAliasModelsAliasesAliasIDGetRequest( + alias_id=alias_id, + ) + + req = self._build_request( + method="GET", + path="/models/aliases/{alias_id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="get_model_alias_models_aliases__alias_id__get", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=["400", "401", "404", "422", "4XX", "5XX"], + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.GetModelAliasResponse, http_res) + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response( + errors.BadRequestErrorData, http_res + ) + raise errors.BadRequestError(response_data, http_res) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + errors.UnauthorizedErrorData, http_res + ) + raise errors.UnauthorizedError(response_data, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) + raise errors.NotFoundError(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + errors.RequestValidationErrorData, http_res + ) + raise errors.RequestValidationError(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.APIError("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.APIError("API error occurred", http_res, http_res_text) + + raise errors.APIError("Unexpected response received", http_res) + + async def get_alias_async( + self, + *, + alias_id: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.GetModelAliasResponse: + r"""Get Model Alias + + Get a model alias by its ID. + + :param alias_id: The ID of the model alias to get + :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 = models.GetModelAliasModelsAliasesAliasIDGetRequest( + alias_id=alias_id, + ) + + req = self._build_request_async( + method="GET", + path="/models/aliases/{alias_id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="get_model_alias_models_aliases__alias_id__get", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=["400", "401", "404", "422", "4XX", "5XX"], + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.GetModelAliasResponse, http_res) + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response( + errors.BadRequestErrorData, http_res + ) + raise errors.BadRequestError(response_data, http_res) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + errors.UnauthorizedErrorData, http_res + ) + raise errors.UnauthorizedError(response_data, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) + raise errors.NotFoundError(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + errors.RequestValidationErrorData, http_res + ) + raise errors.RequestValidationError(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.APIError("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.APIError("API error occurred", http_res, http_res_text) + + raise errors.APIError("Unexpected response received", http_res) + + def update_alias( + self, + *, + alias_id: str, + name: OptionalNullable[str] = UNSET, + fallback_models: OptionalNullable[List[str]] = UNSET, + description: OptionalNullable[str] = UNSET, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.UpdateModelAliasResponse: + r"""Update Model Alias + + Update a model alias. + + :param alias_id: The ID of the model alias to update + :param name: The name of the model alias + :param fallback_models: Ordered list of model names to try as fallbacks + :param description: Optional description of the model alias + :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 = models.UpdateModelAliasModelsAliasesAliasIDPatchRequest( + alias_id=alias_id, + update_model_alias_request=models.UpdateModelAliasRequest( + name=name, + fallback_models=fallback_models, + description=description, + ), + ) + + req = self._build_request( + method="PATCH", + path="/models/aliases/{alias_id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.update_model_alias_request, + False, + False, + "json", + models.UpdateModelAliasRequest, + ), + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="update_model_alias_models_aliases__alias_id__patch", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=["400", "401", "404", "422", "4XX", "5XX"], + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.UpdateModelAliasResponse, http_res) + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response( + errors.BadRequestErrorData, http_res + ) + raise errors.BadRequestError(response_data, http_res) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + errors.UnauthorizedErrorData, http_res + ) + raise errors.UnauthorizedError(response_data, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) + raise errors.NotFoundError(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + errors.RequestValidationErrorData, http_res + ) + raise errors.RequestValidationError(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.APIError("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.APIError("API error occurred", http_res, http_res_text) + + raise errors.APIError("Unexpected response received", http_res) + + async def update_alias_async( + self, + *, + alias_id: str, + name: OptionalNullable[str] = UNSET, + fallback_models: OptionalNullable[List[str]] = UNSET, + description: OptionalNullable[str] = UNSET, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.UpdateModelAliasResponse: + r"""Update Model Alias + + Update a model alias. + + :param alias_id: The ID of the model alias to update + :param name: The name of the model alias + :param fallback_models: Ordered list of model names to try as fallbacks + :param description: Optional description of the model alias + :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 = models.UpdateModelAliasModelsAliasesAliasIDPatchRequest( + alias_id=alias_id, + update_model_alias_request=models.UpdateModelAliasRequest( + name=name, + fallback_models=fallback_models, + description=description, + ), + ) + + req = self._build_request_async( + method="PATCH", + path="/models/aliases/{alias_id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.update_model_alias_request, + False, + False, + "json", + models.UpdateModelAliasRequest, + ), + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="update_model_alias_models_aliases__alias_id__patch", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=["400", "401", "404", "422", "4XX", "5XX"], + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.UpdateModelAliasResponse, http_res) + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response( + errors.BadRequestErrorData, http_res + ) + raise errors.BadRequestError(response_data, http_res) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + errors.UnauthorizedErrorData, http_res + ) + raise errors.UnauthorizedError(response_data, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) + raise errors.NotFoundError(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + errors.RequestValidationErrorData, http_res + ) + raise errors.RequestValidationError(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.APIError("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.APIError("API error occurred", http_res, http_res_text) + + raise errors.APIError("Unexpected response received", http_res) + + def delete_alias( + self, + *, + alias_id: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ): + r"""Delete Model Alias + + Delete a model alias. + + :param alias_id: The ID of the model alias to delete + :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 = models.DeleteModelAliasModelsAliasesAliasIDDeleteRequest( + alias_id=alias_id, + ) + + req = self._build_request( + method="DELETE", + path="/models/aliases/{alias_id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="delete_model_alias_models_aliases__alias_id__delete", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=["400", "401", "404", "422", "4XX", "5XX"], + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "204", "*"): + return + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response( + errors.BadRequestErrorData, http_res + ) + raise errors.BadRequestError(response_data, http_res) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + errors.UnauthorizedErrorData, http_res + ) + raise errors.UnauthorizedError(response_data, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) + raise errors.NotFoundError(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + errors.RequestValidationErrorData, http_res + ) + raise errors.RequestValidationError(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.APIError("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.APIError("API error occurred", http_res, http_res_text) + + raise errors.APIError("Unexpected response received", http_res) + + async def delete_alias_async( + self, + *, + alias_id: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ): + r"""Delete Model Alias + + Delete a model alias. + + :param alias_id: The ID of the model alias to delete + :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 = models.DeleteModelAliasModelsAliasesAliasIDDeleteRequest( + alias_id=alias_id, + ) + + req = self._build_request_async( + method="DELETE", + path="/models/aliases/{alias_id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="delete_model_alias_models_aliases__alias_id__delete", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=["400", "401", "404", "422", "4XX", "5XX"], + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "204", "*"): + return + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response( + errors.BadRequestErrorData, http_res + ) + raise errors.BadRequestError(response_data, http_res) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + errors.UnauthorizedErrorData, http_res + ) + raise errors.UnauthorizedError(response_data, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) + raise errors.NotFoundError(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + errors.RequestValidationErrorData, http_res + ) + raise errors.RequestValidationError(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.APIError("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.APIError("API error occurred", http_res, http_res_text) + + raise errors.APIError("Unexpected response received", http_res) + + def get_alias_by_name( + self, + *, + name: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.GetModelAliasResponse: + r"""Get Model Alias By Name + + Get a model alias by its name. + + :param name: The name of the model alias to get + :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 = models.GetModelAliasByNameModelsAliasesByNameNameGetRequest( + name=name, + ) + + req = self._build_request( + method="GET", + path="/models/aliases/by-name/{name}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="get_model_alias_by_name_models_aliases_by_name__name__get", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=["400", "401", "404", "422", "4XX", "5XX"], + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.GetModelAliasResponse, http_res) + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response( + errors.BadRequestErrorData, http_res + ) + raise errors.BadRequestError(response_data, http_res) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + errors.UnauthorizedErrorData, http_res + ) + raise errors.UnauthorizedError(response_data, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) + raise errors.NotFoundError(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + errors.RequestValidationErrorData, http_res + ) + raise errors.RequestValidationError(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.APIError("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.APIError("API error occurred", http_res, http_res_text) + + raise errors.APIError("Unexpected response received", http_res) + + async def get_alias_by_name_async( + self, + *, + name: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.GetModelAliasResponse: + r"""Get Model Alias By Name + + Get a model alias by its name. + + :param name: The name of the model alias to get + :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 = models.GetModelAliasByNameModelsAliasesByNameNameGetRequest( + name=name, + ) + + req = self._build_request_async( + method="GET", + path="/models/aliases/by-name/{name}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="get_model_alias_by_name_models_aliases_by_name__name__get", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=["400", "401", "404", "422", "4XX", "5XX"], + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.GetModelAliasResponse, http_res) + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response( + errors.BadRequestErrorData, http_res + ) + raise errors.BadRequestError(response_data, http_res) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + errors.UnauthorizedErrorData, http_res + ) + raise errors.UnauthorizedError(response_data, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) + raise errors.NotFoundError(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + errors.RequestValidationErrorData, http_res + ) + raise errors.RequestValidationError(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.APIError("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.APIError("API error occurred", http_res, http_res_text) + + raise errors.APIError("Unexpected response received", http_res) diff --git a/src/opperai/models/__init__.py b/src/opperai/models/__init__.py index b6c85d6..6a32d9f 100644 --- a/src/opperai/models/__init__.py +++ b/src/opperai/models/__init__.py @@ -537,6 +537,10 @@ ListModelAliasesResponseItem, ListModelAliasesResponseItemTypedDict, ) + from .listrerankmodelsresponse import ( + ListRerankModelsResponse, + ListRerankModelsResponseTypedDict, + ) from .listspanmetricsresponse import ( ListSpanMetricsResponse, ListSpanMetricsResponseTypedDict, @@ -599,6 +603,10 @@ PaginatedResponseListModelAliasesResponseItem, PaginatedResponseListModelAliasesResponseItemTypedDict, ) + from .paginatedresponse_listrerankmodelsresponse_ import ( + PaginatedResponseListRerankModelsResponse, + PaginatedResponseListRerankModelsResponseTypedDict, + ) from .paginatedresponse_listspanmetricsresponse_ import ( PaginatedResponseListSpanMetricsResponse, PaginatedResponseListSpanMetricsResponseTypedDict, @@ -648,6 +656,11 @@ RegisterFileUploadResponse, RegisterFileUploadResponseTypedDict, ) + from .rerankcost import RerankCost, RerankCostTypedDict + from .rerankdocument import RerankDocument, RerankDocumentTypedDict + from .rerankrequestmodel import RerankRequestModel, RerankRequestModelTypedDict + from .rerankresponsemodel import RerankResponseModel, RerankResponseModelTypedDict + from .rerankresult import RerankResult, RerankResultTypedDict from .responseformatjsonobject import ( ResponseFormatJSONObject, ResponseFormatJSONObjectTypedDict, @@ -1112,6 +1125,8 @@ "ListModelAliasesResponseItemTypedDict", "ListModelsModelsGetRequest", "ListModelsModelsGetRequestTypedDict", + "ListRerankModelsResponse", + "ListRerankModelsResponseTypedDict", "ListSpanMetricsResponse", "ListSpanMetricsResponseTypedDict", "ListTracesResponse", @@ -1150,6 +1165,8 @@ "PaginatedResponseListLanguageModelsResponseTypedDict", "PaginatedResponseListModelAliasesResponseItem", "PaginatedResponseListModelAliasesResponseItemTypedDict", + "PaginatedResponseListRerankModelsResponse", + "PaginatedResponseListRerankModelsResponseTypedDict", "PaginatedResponseListSpanMetricsResponse", "PaginatedResponseListSpanMetricsResponseTypedDict", "PaginatedResponseListTracesResponse", @@ -1178,6 +1195,16 @@ "RegisterFileUploadRequestTypedDict", "RegisterFileUploadResponse", "RegisterFileUploadResponseTypedDict", + "RerankCost", + "RerankCostTypedDict", + "RerankDocument", + "RerankDocumentTypedDict", + "RerankRequestModel", + "RerankRequestModelTypedDict", + "RerankResponseModel", + "RerankResponseModelTypedDict", + "RerankResult", + "RerankResultTypedDict", "ResponseFormatJSONObject", "ResponseFormatJSONObjectTypedDict", "ResponseFormatJSONSchema", @@ -1635,6 +1662,8 @@ "ListLanguageModelsResponseTypedDict": ".listlanguagemodelsresponse", "ListModelAliasesResponseItem": ".listmodelaliasesresponseitem", "ListModelAliasesResponseItemTypedDict": ".listmodelaliasesresponseitem", + "ListRerankModelsResponse": ".listrerankmodelsresponse", + "ListRerankModelsResponseTypedDict": ".listrerankmodelsresponse", "ListSpanMetricsResponse": ".listspanmetricsresponse", "ListSpanMetricsResponseTypedDict": ".listspanmetricsresponse", "ListTracesResponse": ".listtracesresponse", @@ -1672,6 +1701,8 @@ "PaginatedResponseListLanguageModelsResponseTypedDict": ".paginatedresponse_listlanguagemodelsresponse_", "PaginatedResponseListModelAliasesResponseItem": ".paginatedresponse_listmodelaliasesresponseitem_", "PaginatedResponseListModelAliasesResponseItemTypedDict": ".paginatedresponse_listmodelaliasesresponseitem_", + "PaginatedResponseListRerankModelsResponse": ".paginatedresponse_listrerankmodelsresponse_", + "PaginatedResponseListRerankModelsResponseTypedDict": ".paginatedresponse_listrerankmodelsresponse_", "PaginatedResponseListSpanMetricsResponse": ".paginatedresponse_listspanmetricsresponse_", "PaginatedResponseListSpanMetricsResponseTypedDict": ".paginatedresponse_listspanmetricsresponse_", "PaginatedResponseListTracesResponse": ".paginatedresponse_listtracesresponse_", @@ -1698,6 +1729,16 @@ "RegisterFileUploadRequestTypedDict": ".registerfileuploadrequest", "RegisterFileUploadResponse": ".registerfileuploadresponse", "RegisterFileUploadResponseTypedDict": ".registerfileuploadresponse", + "RerankCost": ".rerankcost", + "RerankCostTypedDict": ".rerankcost", + "RerankDocument": ".rerankdocument", + "RerankDocumentTypedDict": ".rerankdocument", + "RerankRequestModel": ".rerankrequestmodel", + "RerankRequestModelTypedDict": ".rerankrequestmodel", + "RerankResponseModel": ".rerankresponsemodel", + "RerankResponseModelTypedDict": ".rerankresponsemodel", + "RerankResult": ".rerankresult", + "RerankResultTypedDict": ".rerankresult", "ResponseFormatJSONObject": ".responseformatjsonobject", "ResponseFormatJSONObjectTypedDict": ".responseformatjsonobject", "ResponseFormatJSONSchema": ".responseformatjsonschema", diff --git a/src/opperai/models/listrerankmodelsresponse.py b/src/opperai/models/listrerankmodelsresponse.py new file mode 100644 index 0000000..65f6b29 --- /dev/null +++ b/src/opperai/models/listrerankmodelsresponse.py @@ -0,0 +1,65 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from opperai.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL +from pydantic import model_serializer +from typing_extensions import NotRequired, TypedDict + + +class ListRerankModelsResponseTypedDict(TypedDict): + r"""Response model for listing rerank models.""" + + hosting_provider: str + r"""The hosting provider of the model""" + name: str + r"""The name of the model""" + location: str + r"""The location of the model""" + cost_per_request: NotRequired[Nullable[float]] + r"""The cost in USD per rerank request""" + + +class ListRerankModelsResponse(BaseModel): + r"""Response model for listing rerank models.""" + + hosting_provider: str + r"""The hosting provider of the model""" + + name: str + r"""The name of the model""" + + location: str + r"""The location of the model""" + + cost_per_request: OptionalNullable[float] = UNSET + r"""The cost in USD per rerank request""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = ["cost_per_request"] + nullable_fields = ["cost_per_request"] + 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 diff --git a/src/opperai/models/paginatedresponse_listrerankmodelsresponse_.py b/src/opperai/models/paginatedresponse_listrerankmodelsresponse_.py new file mode 100644 index 0000000..84b9130 --- /dev/null +++ b/src/opperai/models/paginatedresponse_listrerankmodelsresponse_.py @@ -0,0 +1,24 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .listrerankmodelsresponse import ( + ListRerankModelsResponse, + ListRerankModelsResponseTypedDict, +) +from .meta import Meta, MetaTypedDict +from opperai.types import BaseModel +from typing import List +from typing_extensions import TypedDict + + +class PaginatedResponseListRerankModelsResponseTypedDict(TypedDict): + meta: MetaTypedDict + data: List[ListRerankModelsResponseTypedDict] + r"""List of items returned in the response""" + + +class PaginatedResponseListRerankModelsResponse(BaseModel): + meta: Meta + + data: List[ListRerankModelsResponse] + r"""List of items returned in the response""" diff --git a/src/opperai/models/rerankcost.py b/src/opperai/models/rerankcost.py new file mode 100644 index 0000000..5d9d10f --- /dev/null +++ b/src/opperai/models/rerankcost.py @@ -0,0 +1,29 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from opperai.types import BaseModel +from typing_extensions import TypedDict + + +class RerankCostTypedDict(TypedDict): + r"""Cost information for reranking.""" + + generation: float + r"""Cost of the reranking request in USD""" + platform: float + r"""Platform fee in USD (percentage of generation cost)""" + total: float + r"""Total cost in USD (generation + platform)""" + + +class RerankCost(BaseModel): + r"""Cost information for reranking.""" + + generation: float + r"""Cost of the reranking request in USD""" + + platform: float + r"""Platform fee in USD (percentage of generation cost)""" + + total: float + r"""Total cost in USD (generation + platform)""" diff --git a/src/opperai/models/rerankdocument.py b/src/opperai/models/rerankdocument.py new file mode 100644 index 0000000..ec6501f --- /dev/null +++ b/src/opperai/models/rerankdocument.py @@ -0,0 +1,56 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from opperai.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Any, Dict +from typing_extensions import NotRequired, TypedDict + + +class RerankDocumentTypedDict(TypedDict): + r"""Document to be reranked.""" + + text: str + r"""The text content of the document""" + metadata: NotRequired[Nullable[Dict[str, Any]]] + r"""Optional metadata associated with the document""" + + +class RerankDocument(BaseModel): + r"""Document to be reranked.""" + + text: str + r"""The text content of the document""" + + metadata: OptionalNullable[Dict[str, Any]] = UNSET + r"""Optional metadata associated with the document""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = ["metadata"] + nullable_fields = ["metadata"] + 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 diff --git a/src/opperai/models/rerankrequestmodel.py b/src/opperai/models/rerankrequestmodel.py new file mode 100644 index 0000000..78716c5 --- /dev/null +++ b/src/opperai/models/rerankrequestmodel.py @@ -0,0 +1,77 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .rerankdocument import RerankDocument, RerankDocumentTypedDict +from opperai.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL +from pydantic import model_serializer +from typing import List, Optional +from typing_extensions import NotRequired, TypedDict + + +class RerankRequestModelTypedDict(TypedDict): + r"""Request model for reranking.""" + + query: str + r"""The search query to rank documents against""" + documents: List[RerankDocumentTypedDict] + r"""List of documents to rerank""" + model: str + r"""The reranking model to use""" + top_k: NotRequired[Nullable[int]] + r"""Number of top documents to return. Defaults to all documents.""" + return_documents: NotRequired[bool] + r"""Whether to return document content in the response""" + max_chunks_per_doc: NotRequired[Nullable[int]] + r"""Maximum number of chunks per document""" + + +class RerankRequestModel(BaseModel): + r"""Request model for reranking.""" + + query: str + r"""The search query to rank documents against""" + + documents: List[RerankDocument] + r"""List of documents to rerank""" + + model: str + r"""The reranking model to use""" + + top_k: OptionalNullable[int] = UNSET + r"""Number of top documents to return. Defaults to all documents.""" + + return_documents: Optional[bool] = True + r"""Whether to return document content in the response""" + + max_chunks_per_doc: OptionalNullable[int] = UNSET + r"""Maximum number of chunks per document""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = ["top_k", "return_documents", "max_chunks_per_doc"] + nullable_fields = ["top_k", "max_chunks_per_doc"] + 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 diff --git a/src/opperai/models/rerankresponsemodel.py b/src/opperai/models/rerankresponsemodel.py new file mode 100644 index 0000000..342ca32 --- /dev/null +++ b/src/opperai/models/rerankresponsemodel.py @@ -0,0 +1,73 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .rerankcost import RerankCost, RerankCostTypedDict +from .rerankresult import RerankResult, RerankResultTypedDict +from opperai.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Any, Dict, List +from typing_extensions import NotRequired, TypedDict + + +class RerankResponseModelTypedDict(TypedDict): + r"""Response model for reranking.""" + + id: str + r"""Unique identifier for this rerank request""" + results: List[RerankResultTypedDict] + r"""Ranked results""" + model: str + r"""The model used for reranking""" + usage: Dict[str, Any] + r"""Usage information""" + cost: NotRequired[Nullable[RerankCostTypedDict]] + r"""Cost information for this rerank request""" + + +class RerankResponseModel(BaseModel): + r"""Response model for reranking.""" + + id: str + r"""Unique identifier for this rerank request""" + + results: List[RerankResult] + r"""Ranked results""" + + model: str + r"""The model used for reranking""" + + usage: Dict[str, Any] + r"""Usage information""" + + cost: OptionalNullable[RerankCost] = UNSET + r"""Cost information for this rerank request""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = ["cost"] + nullable_fields = ["cost"] + 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 diff --git a/src/opperai/models/rerankresult.py b/src/opperai/models/rerankresult.py new file mode 100644 index 0000000..30b42f9 --- /dev/null +++ b/src/opperai/models/rerankresult.py @@ -0,0 +1,61 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .rerankdocument import RerankDocument, RerankDocumentTypedDict +from opperai.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL +from pydantic import model_serializer +from typing_extensions import NotRequired, TypedDict + + +class RerankResultTypedDict(TypedDict): + r"""A single reranking result.""" + + index: int + r"""Original index of the document""" + relevance_score: float + r"""Relevance score between 0 and 1""" + document: NotRequired[Nullable[RerankDocumentTypedDict]] + r"""The document content (if return_documents=True)""" + + +class RerankResult(BaseModel): + r"""A single reranking result.""" + + index: int + r"""Original index of the document""" + + relevance_score: float + r"""Relevance score between 0 and 1""" + + document: OptionalNullable[RerankDocument] = UNSET + r"""The document content (if return_documents=True)""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = ["document"] + nullable_fields = ["document"] + 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 diff --git a/src/opperai/models_.py b/src/opperai/models_.py deleted file mode 100644 index 102f4cd..0000000 --- a/src/opperai/models_.py +++ /dev/null @@ -1,1313 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from .basesdk import BaseSDK -from opperai import errors, models, utils -from opperai._hooks import HookContext -from opperai.types import OptionalNullable, UNSET -from opperai.utils import get_security_from_env -from opperai.utils.unmarshal_json_response import unmarshal_json_response -from typing import Any, List, Mapping, Optional - - -class Models(BaseSDK): - def create_model_alias_models_aliases_post( - self, - *, - name: str, - fallback_models: List[str], - description: OptionalNullable[str] = UNSET, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> models.CreateModelAliasResponse: - r"""Create Model Alias - - Create a model alias with fallback models for the organization that owns the API key. - - A model alias allows you to define a name that resolves to an ordered list of fallback models. - For example, you could create an alias called \"sonnet-4\" that falls back to - [\"anthropic/claude-3-5-sonnet-latest\", \"anthropic/claude-3-5-sonnet-20241022\"]. - - :param name: The name of the model alias - :param fallback_models: Ordered list of model names to try as fallbacks - :param description: Optional description of the model alias - :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 = models.CreateModelAliasRequest( - name=name, - fallback_models=fallback_models, - description=description, - ) - - req = self._build_request( - method="POST", - path="/models/aliases", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=True, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.CreateModelAliasRequest - ), - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="create_model_alias_models_aliases_post", - oauth2_scopes=[], - security_source=get_security_from_env( - self.sdk_configuration.security, models.Security - ), - ), - request=req, - error_status_codes=["400", "401", "404", "409", "422", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.CreateModelAliasResponse, http_res) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "404", "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response(http_res, "409", "application/json"): - response_data = unmarshal_json_response(errors.ConflictErrorData, http_res) - raise errors.ConflictError(response_data, http_res) - if utils.match_response(http_res, "422", "application/json"): - response_data = unmarshal_json_response( - errors.RequestValidationErrorData, http_res - ) - raise errors.RequestValidationError(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.APIError("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.APIError("API error occurred", http_res, http_res_text) - - raise errors.APIError("Unexpected response received", http_res) - - async def create_model_alias_models_aliases_post_async( - self, - *, - name: str, - fallback_models: List[str], - description: OptionalNullable[str] = UNSET, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> models.CreateModelAliasResponse: - r"""Create Model Alias - - Create a model alias with fallback models for the organization that owns the API key. - - A model alias allows you to define a name that resolves to an ordered list of fallback models. - For example, you could create an alias called \"sonnet-4\" that falls back to - [\"anthropic/claude-3-5-sonnet-latest\", \"anthropic/claude-3-5-sonnet-20241022\"]. - - :param name: The name of the model alias - :param fallback_models: Ordered list of model names to try as fallbacks - :param description: Optional description of the model alias - :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 = models.CreateModelAliasRequest( - name=name, - fallback_models=fallback_models, - description=description, - ) - - req = self._build_request_async( - method="POST", - path="/models/aliases", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=True, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.CreateModelAliasRequest - ), - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="create_model_alias_models_aliases_post", - oauth2_scopes=[], - security_source=get_security_from_env( - self.sdk_configuration.security, models.Security - ), - ), - request=req, - error_status_codes=["400", "401", "404", "409", "422", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.CreateModelAliasResponse, http_res) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "404", "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response(http_res, "409", "application/json"): - response_data = unmarshal_json_response(errors.ConflictErrorData, http_res) - raise errors.ConflictError(response_data, http_res) - if utils.match_response(http_res, "422", "application/json"): - response_data = unmarshal_json_response( - errors.RequestValidationErrorData, http_res - ) - raise errors.RequestValidationError(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.APIError("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.APIError("API error occurred", http_res, http_res_text) - - raise errors.APIError("Unexpected response received", http_res) - - def list_model_aliases_models_aliases_get( - self, - *, - offset: Optional[int] = 0, - limit: Optional[int] = 100, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> models.PaginatedResponseListModelAliasesResponseItem: - r"""List Model Aliases - - List all model aliases for the organization that owns the API key. - - :param offset: The offset of the first alias to return - :param limit: The maximum number of aliases to return - :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 = models.ListModelAliasesModelsAliasesGetRequest( - offset=offset, - limit=limit, - ) - - req = self._build_request( - method="GET", - path="/models/aliases", - 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, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="list_model_aliases_models_aliases_get", - oauth2_scopes=[], - security_source=get_security_from_env( - self.sdk_configuration.security, models.Security - ), - ), - request=req, - error_status_codes=["400", "401", "404", "422", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response( - models.PaginatedResponseListModelAliasesResponseItem, http_res - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "404", "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response(http_res, "422", "application/json"): - response_data = unmarshal_json_response( - errors.RequestValidationErrorData, http_res - ) - raise errors.RequestValidationError(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.APIError("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.APIError("API error occurred", http_res, http_res_text) - - raise errors.APIError("Unexpected response received", http_res) - - async def list_model_aliases_models_aliases_get_async( - self, - *, - offset: Optional[int] = 0, - limit: Optional[int] = 100, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> models.PaginatedResponseListModelAliasesResponseItem: - r"""List Model Aliases - - List all model aliases for the organization that owns the API key. - - :param offset: The offset of the first alias to return - :param limit: The maximum number of aliases to return - :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 = models.ListModelAliasesModelsAliasesGetRequest( - offset=offset, - limit=limit, - ) - - req = self._build_request_async( - method="GET", - path="/models/aliases", - 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, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="list_model_aliases_models_aliases_get", - oauth2_scopes=[], - security_source=get_security_from_env( - self.sdk_configuration.security, models.Security - ), - ), - request=req, - error_status_codes=["400", "401", "404", "422", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response( - models.PaginatedResponseListModelAliasesResponseItem, http_res - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "404", "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response(http_res, "422", "application/json"): - response_data = unmarshal_json_response( - errors.RequestValidationErrorData, http_res - ) - raise errors.RequestValidationError(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.APIError("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.APIError("API error occurred", http_res, http_res_text) - - raise errors.APIError("Unexpected response received", http_res) - - def get_model_alias_models_aliases_alias_id_get( - self, - *, - alias_id: str, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> models.GetModelAliasResponse: - r"""Get Model Alias - - Get a model alias by its ID. - - :param alias_id: The ID of the model alias to get - :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 = models.GetModelAliasModelsAliasesAliasIDGetRequest( - alias_id=alias_id, - ) - - req = self._build_request( - method="GET", - path="/models/aliases/{alias_id}", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="get_model_alias_models_aliases__alias_id__get", - oauth2_scopes=[], - security_source=get_security_from_env( - self.sdk_configuration.security, models.Security - ), - ), - request=req, - error_status_codes=["400", "401", "404", "422", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.GetModelAliasResponse, http_res) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "404", "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response(http_res, "422", "application/json"): - response_data = unmarshal_json_response( - errors.RequestValidationErrorData, http_res - ) - raise errors.RequestValidationError(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.APIError("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.APIError("API error occurred", http_res, http_res_text) - - raise errors.APIError("Unexpected response received", http_res) - - async def get_model_alias_models_aliases_alias_id_get_async( - self, - *, - alias_id: str, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> models.GetModelAliasResponse: - r"""Get Model Alias - - Get a model alias by its ID. - - :param alias_id: The ID of the model alias to get - :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 = models.GetModelAliasModelsAliasesAliasIDGetRequest( - alias_id=alias_id, - ) - - req = self._build_request_async( - method="GET", - path="/models/aliases/{alias_id}", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="get_model_alias_models_aliases__alias_id__get", - oauth2_scopes=[], - security_source=get_security_from_env( - self.sdk_configuration.security, models.Security - ), - ), - request=req, - error_status_codes=["400", "401", "404", "422", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.GetModelAliasResponse, http_res) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "404", "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response(http_res, "422", "application/json"): - response_data = unmarshal_json_response( - errors.RequestValidationErrorData, http_res - ) - raise errors.RequestValidationError(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.APIError("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.APIError("API error occurred", http_res, http_res_text) - - raise errors.APIError("Unexpected response received", http_res) - - def update_model_alias_models_aliases_alias_id_patch( - self, - *, - alias_id: str, - name: OptionalNullable[str] = UNSET, - fallback_models: OptionalNullable[List[str]] = UNSET, - description: OptionalNullable[str] = UNSET, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> models.UpdateModelAliasResponse: - r"""Update Model Alias - - Update a model alias. - - :param alias_id: The ID of the model alias to update - :param name: The name of the model alias - :param fallback_models: Ordered list of model names to try as fallbacks - :param description: Optional description of the model alias - :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 = models.UpdateModelAliasModelsAliasesAliasIDPatchRequest( - alias_id=alias_id, - update_model_alias_request=models.UpdateModelAliasRequest( - name=name, - fallback_models=fallback_models, - description=description, - ), - ) - - req = self._build_request( - method="PATCH", - path="/models/aliases/{alias_id}", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=True, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - get_serialized_body=lambda: utils.serialize_request_body( - request.update_model_alias_request, - False, - False, - "json", - models.UpdateModelAliasRequest, - ), - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="update_model_alias_models_aliases__alias_id__patch", - oauth2_scopes=[], - security_source=get_security_from_env( - self.sdk_configuration.security, models.Security - ), - ), - request=req, - error_status_codes=["400", "401", "404", "422", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.UpdateModelAliasResponse, http_res) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "404", "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response(http_res, "422", "application/json"): - response_data = unmarshal_json_response( - errors.RequestValidationErrorData, http_res - ) - raise errors.RequestValidationError(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.APIError("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.APIError("API error occurred", http_res, http_res_text) - - raise errors.APIError("Unexpected response received", http_res) - - async def update_model_alias_models_aliases_alias_id_patch_async( - self, - *, - alias_id: str, - name: OptionalNullable[str] = UNSET, - fallback_models: OptionalNullable[List[str]] = UNSET, - description: OptionalNullable[str] = UNSET, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> models.UpdateModelAliasResponse: - r"""Update Model Alias - - Update a model alias. - - :param alias_id: The ID of the model alias to update - :param name: The name of the model alias - :param fallback_models: Ordered list of model names to try as fallbacks - :param description: Optional description of the model alias - :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 = models.UpdateModelAliasModelsAliasesAliasIDPatchRequest( - alias_id=alias_id, - update_model_alias_request=models.UpdateModelAliasRequest( - name=name, - fallback_models=fallback_models, - description=description, - ), - ) - - req = self._build_request_async( - method="PATCH", - path="/models/aliases/{alias_id}", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=True, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - get_serialized_body=lambda: utils.serialize_request_body( - request.update_model_alias_request, - False, - False, - "json", - models.UpdateModelAliasRequest, - ), - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="update_model_alias_models_aliases__alias_id__patch", - oauth2_scopes=[], - security_source=get_security_from_env( - self.sdk_configuration.security, models.Security - ), - ), - request=req, - error_status_codes=["400", "401", "404", "422", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.UpdateModelAliasResponse, http_res) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "404", "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response(http_res, "422", "application/json"): - response_data = unmarshal_json_response( - errors.RequestValidationErrorData, http_res - ) - raise errors.RequestValidationError(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.APIError("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.APIError("API error occurred", http_res, http_res_text) - - raise errors.APIError("Unexpected response received", http_res) - - def delete_model_alias_models_aliases_alias_id_delete( - self, - *, - alias_id: str, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ): - r"""Delete Model Alias - - Delete a model alias. - - :param alias_id: The ID of the model alias to delete - :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 = models.DeleteModelAliasModelsAliasesAliasIDDeleteRequest( - alias_id=alias_id, - ) - - req = self._build_request( - method="DELETE", - path="/models/aliases/{alias_id}", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="delete_model_alias_models_aliases__alias_id__delete", - oauth2_scopes=[], - security_source=get_security_from_env( - self.sdk_configuration.security, models.Security - ), - ), - request=req, - error_status_codes=["400", "401", "404", "422", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "204", "*"): - return - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "404", "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response(http_res, "422", "application/json"): - response_data = unmarshal_json_response( - errors.RequestValidationErrorData, http_res - ) - raise errors.RequestValidationError(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.APIError("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.APIError("API error occurred", http_res, http_res_text) - - raise errors.APIError("Unexpected response received", http_res) - - async def delete_model_alias_models_aliases_alias_id_delete_async( - self, - *, - alias_id: str, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ): - r"""Delete Model Alias - - Delete a model alias. - - :param alias_id: The ID of the model alias to delete - :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 = models.DeleteModelAliasModelsAliasesAliasIDDeleteRequest( - alias_id=alias_id, - ) - - req = self._build_request_async( - method="DELETE", - path="/models/aliases/{alias_id}", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="delete_model_alias_models_aliases__alias_id__delete", - oauth2_scopes=[], - security_source=get_security_from_env( - self.sdk_configuration.security, models.Security - ), - ), - request=req, - error_status_codes=["400", "401", "404", "422", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "204", "*"): - return - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "404", "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response(http_res, "422", "application/json"): - response_data = unmarshal_json_response( - errors.RequestValidationErrorData, http_res - ) - raise errors.RequestValidationError(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.APIError("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.APIError("API error occurred", http_res, http_res_text) - - raise errors.APIError("Unexpected response received", http_res) - - def get_model_alias_by_name_models_aliases_by_name_name_get( - self, - *, - name: str, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> models.GetModelAliasResponse: - r"""Get Model Alias By Name - - Get a model alias by its name. - - :param name: The name of the model alias to get - :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 = models.GetModelAliasByNameModelsAliasesByNameNameGetRequest( - name=name, - ) - - req = self._build_request( - method="GET", - path="/models/aliases/by-name/{name}", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="get_model_alias_by_name_models_aliases_by_name__name__get", - oauth2_scopes=[], - security_source=get_security_from_env( - self.sdk_configuration.security, models.Security - ), - ), - request=req, - error_status_codes=["400", "401", "404", "422", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.GetModelAliasResponse, http_res) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "404", "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response(http_res, "422", "application/json"): - response_data = unmarshal_json_response( - errors.RequestValidationErrorData, http_res - ) - raise errors.RequestValidationError(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.APIError("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.APIError("API error occurred", http_res, http_res_text) - - raise errors.APIError("Unexpected response received", http_res) - - async def get_model_alias_by_name_models_aliases_by_name_name_get_async( - self, - *, - name: str, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> models.GetModelAliasResponse: - r"""Get Model Alias By Name - - Get a model alias by its name. - - :param name: The name of the model alias to get - :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 = models.GetModelAliasByNameModelsAliasesByNameNameGetRequest( - name=name, - ) - - req = self._build_request_async( - method="GET", - path="/models/aliases/by-name/{name}", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="get_model_alias_by_name_models_aliases_by_name__name__get", - oauth2_scopes=[], - security_source=get_security_from_env( - self.sdk_configuration.security, models.Security - ), - ), - request=req, - error_status_codes=["400", "401", "404", "422", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.GetModelAliasResponse, http_res) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "404", "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response(http_res, "422", "application/json"): - response_data = unmarshal_json_response( - errors.RequestValidationErrorData, http_res - ) - raise errors.RequestValidationError(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.APIError("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.APIError("API error occurred", http_res, http_res_text) - - raise errors.APIError("Unexpected response received", http_res) diff --git a/src/opperai/openai.py b/src/opperai/openai.py index 92ca755..a8b6e03 100644 --- a/src/opperai/openai.py +++ b/src/opperai/openai.py @@ -73,7 +73,7 @@ def create_chat_completion( config=self.sdk_configuration, base_url=base_url or "", operation_id="chat_completions_openai_chat_completions_post", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -176,7 +176,7 @@ async def create_chat_completion_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="chat_completions_openai_chat_completions_post", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), diff --git a/src/opperai/rerank.py b/src/opperai/rerank.py new file mode 100644 index 0000000..432f4d0 --- /dev/null +++ b/src/opperai/rerank.py @@ -0,0 +1,469 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from .basesdk import BaseSDK +from opperai import errors, models, utils +from opperai._hooks import HookContext +from opperai.types import OptionalNullable, UNSET +from opperai.utils import get_security_from_env +from opperai.utils.unmarshal_json_response import unmarshal_json_response +from typing import Any, List, Mapping, Optional, Union + + +class Rerank(BaseSDK): + def documents( + self, + *, + query: str, + documents: Union[ + List[models.RerankDocument], List[models.RerankDocumentTypedDict] + ], + model: str, + top_k: OptionalNullable[int] = UNSET, + return_documents: Optional[bool] = True, + max_chunks_per_doc: OptionalNullable[int] = UNSET, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.RerankResponseModel: + r"""Rerank Documents + + Rerank documents based on relevance to a query. + + This endpoint allows you to rerank a list of documents based on their relevance + to a given query using state-of-the-art reranking models. + + The documents will be returned in order of relevance, with the most relevant + documents first. Each result includes the original document index and a + relevance score. + + :param query: The search query to rank documents against + :param documents: List of documents to rerank + :param model: The reranking model to use + :param top_k: Number of top documents to return. Defaults to all documents. + :param return_documents: Whether to return document content in the response + :param max_chunks_per_doc: Maximum number of chunks per document + :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 = models.RerankRequestModel( + query=query, + documents=utils.get_pydantic_model(documents, List[models.RerankDocument]), + model=model, + top_k=top_k, + return_documents=return_documents, + max_chunks_per_doc=max_chunks_per_doc, + ) + + req = self._build_request( + method="POST", + path="/rerank", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request, False, False, "json", models.RerankRequestModel + ), + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="rerank_documents_rerank_post", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=["400", "401", "404", "422", "4XX", "5XX"], + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.RerankResponseModel, http_res) + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response( + errors.BadRequestErrorData, http_res + ) + raise errors.BadRequestError(response_data, http_res) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + errors.UnauthorizedErrorData, http_res + ) + raise errors.UnauthorizedError(response_data, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) + raise errors.NotFoundError(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + errors.RequestValidationErrorData, http_res + ) + raise errors.RequestValidationError(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.APIError("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.APIError("API error occurred", http_res, http_res_text) + + raise errors.APIError("Unexpected response received", http_res) + + async def documents_async( + self, + *, + query: str, + documents: Union[ + List[models.RerankDocument], List[models.RerankDocumentTypedDict] + ], + model: str, + top_k: OptionalNullable[int] = UNSET, + return_documents: Optional[bool] = True, + max_chunks_per_doc: OptionalNullable[int] = UNSET, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.RerankResponseModel: + r"""Rerank Documents + + Rerank documents based on relevance to a query. + + This endpoint allows you to rerank a list of documents based on their relevance + to a given query using state-of-the-art reranking models. + + The documents will be returned in order of relevance, with the most relevant + documents first. Each result includes the original document index and a + relevance score. + + :param query: The search query to rank documents against + :param documents: List of documents to rerank + :param model: The reranking model to use + :param top_k: Number of top documents to return. Defaults to all documents. + :param return_documents: Whether to return document content in the response + :param max_chunks_per_doc: Maximum number of chunks per document + :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 = models.RerankRequestModel( + query=query, + documents=utils.get_pydantic_model(documents, List[models.RerankDocument]), + model=model, + top_k=top_k, + return_documents=return_documents, + max_chunks_per_doc=max_chunks_per_doc, + ) + + req = self._build_request_async( + method="POST", + path="/rerank", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request, False, False, "json", models.RerankRequestModel + ), + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="rerank_documents_rerank_post", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=["400", "401", "404", "422", "4XX", "5XX"], + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.RerankResponseModel, http_res) + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response( + errors.BadRequestErrorData, http_res + ) + raise errors.BadRequestError(response_data, http_res) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + errors.UnauthorizedErrorData, http_res + ) + raise errors.UnauthorizedError(response_data, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) + raise errors.NotFoundError(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + errors.RequestValidationErrorData, http_res + ) + raise errors.RequestValidationError(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.APIError("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.APIError("API error occurred", http_res, http_res_text) + + raise errors.APIError("Unexpected response received", http_res) + + def list_models( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PaginatedResponseListRerankModelsResponse: + r"""List Rerank Models + + List all available reranking models. + + Returns a list of all reranking models available on the Opper platform, + including their hosting providers, locations, and pricing information. + + :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) + req = self._build_request( + method="GET", + path="/rerank/models", + base_url=base_url, + url_variables=url_variables, + request=None, + 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, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="list_rerank_models_rerank_models_get", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=["400", "401", "404", "422", "4XX", "5XX"], + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.PaginatedResponseListRerankModelsResponse, http_res + ) + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response( + errors.BadRequestErrorData, http_res + ) + raise errors.BadRequestError(response_data, http_res) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + errors.UnauthorizedErrorData, http_res + ) + raise errors.UnauthorizedError(response_data, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) + raise errors.NotFoundError(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + errors.RequestValidationErrorData, http_res + ) + raise errors.RequestValidationError(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.APIError("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.APIError("API error occurred", http_res, http_res_text) + + raise errors.APIError("Unexpected response received", http_res) + + async def list_models_async( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PaginatedResponseListRerankModelsResponse: + r"""List Rerank Models + + List all available reranking models. + + Returns a list of all reranking models available on the Opper platform, + including their hosting providers, locations, and pricing information. + + :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) + req = self._build_request_async( + method="GET", + path="/rerank/models", + base_url=base_url, + url_variables=url_variables, + request=None, + 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, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="list_rerank_models_rerank_models_get", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=["400", "401", "404", "422", "4XX", "5XX"], + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.PaginatedResponseListRerankModelsResponse, http_res + ) + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response( + errors.BadRequestErrorData, http_res + ) + raise errors.BadRequestError(response_data, http_res) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + errors.UnauthorizedErrorData, http_res + ) + raise errors.UnauthorizedError(response_data, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) + raise errors.NotFoundError(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + errors.RequestValidationErrorData, http_res + ) + raise errors.RequestValidationError(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.APIError("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.APIError("API error occurred", http_res, http_res_text) + + raise errors.APIError("Unexpected response received", http_res) diff --git a/src/opperai/revisions.py b/src/opperai/revisions.py index 3b9b325..6ea8b74 100644 --- a/src/opperai/revisions.py +++ b/src/opperai/revisions.py @@ -81,7 +81,7 @@ def list( config=self.sdk_configuration, base_url=base_url or "", operation_id="list_function_revisions_functions__function_id__revisions_get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -194,7 +194,7 @@ async def list_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="list_function_revisions_functions__function_id__revisions_get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), diff --git a/src/opperai/sdk.py b/src/opperai/sdk.py index 1d85c49..583c732 100644 --- a/src/opperai/sdk.py +++ b/src/opperai/sdk.py @@ -9,11 +9,6 @@ import importlib from opperai import errors, models, utils from opperai._hooks import HookContext, SDKHooks -from opperai.models import ( - example as models_example, - functioncallconfiguration as models_functioncallconfiguration, - tmodel as models_tmodel, -) from opperai.types import OptionalNullable, UNSET from opperai.utils import eventstreaming, get_security_from_env from opperai.utils.unmarshal_json_response import unmarshal_json_response @@ -38,8 +33,8 @@ from opperai.functions import Functions from opperai.knowledge import Knowledge from opperai.language_models import LanguageModels - from opperai.models_ import Models from opperai.openai import Openai + from opperai.rerank import Rerank from opperai.spanmetrics import SpanMetrics from opperai.spans import Spans from opperai.traces import Traces @@ -54,8 +49,8 @@ class Opper(BaseSDK): functions: "Functions" embeddings: "Embeddings" language_models: "LanguageModels" - models: "Models" openai: "Openai" + rerank: "Rerank" analytics: "Analytics" _sub_sdk_map = { "knowledge": ("opperai.knowledge", "Knowledge"), @@ -66,8 +61,8 @@ class Opper(BaseSDK): "functions": ("opperai.functions", "Functions"), "embeddings": ("opperai.embeddings", "Embeddings"), "language_models": ("opperai.language_models", "LanguageModels"), - "models": ("opperai.models_", "Models"), "openai": ("opperai.openai", "Openai"), + "rerank": ("opperai.rerank", "Rerank"), "analytics": ("opperai.analytics", "Analytics"), } @@ -228,18 +223,16 @@ def call( input_schema: OptionalNullable[Dict[str, Any]] = UNSET, output_schema: OptionalNullable[Dict[str, Any]] = UNSET, input: OptionalNullable[Any] = UNSET, - model: Optional[ - Union[models_tmodel.TModel, models_tmodel.TModelTypedDict] - ] = None, + model: Optional[Union[models.TModel, models.TModelTypedDict]] = None, examples: OptionalNullable[ - Union[List[models_example.Example], List[models_example.ExampleTypedDict]] + Union[List[models.Example], List[models.ExampleTypedDict]] ] = UNSET, parent_span_id: OptionalNullable[str] = UNSET, tags: OptionalNullable[Dict[str, str]] = UNSET, configuration: OptionalNullable[ Union[ - models_functioncallconfiguration.FunctionCallConfiguration, - models_functioncallconfiguration.FunctionCallConfigurationTypedDict, + models.FunctionCallConfiguration, + models.FunctionCallConfigurationTypedDict, ] ] = UNSET, retries: OptionalNullable[utils.RetryConfig] = UNSET, @@ -337,7 +330,7 @@ def call( config=self.sdk_configuration, base_url=base_url or "", operation_id="function_call_call_post", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -387,18 +380,16 @@ async def call_async( input_schema: OptionalNullable[Dict[str, Any]] = UNSET, output_schema: OptionalNullable[Dict[str, Any]] = UNSET, input: OptionalNullable[Any] = UNSET, - model: Optional[ - Union[models_tmodel.TModel, models_tmodel.TModelTypedDict] - ] = None, + model: Optional[Union[models.TModel, models.TModelTypedDict]] = None, examples: OptionalNullable[ - Union[List[models_example.Example], List[models_example.ExampleTypedDict]] + Union[List[models.Example], List[models.ExampleTypedDict]] ] = UNSET, parent_span_id: OptionalNullable[str] = UNSET, tags: OptionalNullable[Dict[str, str]] = UNSET, configuration: OptionalNullable[ Union[ - models_functioncallconfiguration.FunctionCallConfiguration, - models_functioncallconfiguration.FunctionCallConfigurationTypedDict, + models.FunctionCallConfiguration, + models.FunctionCallConfigurationTypedDict, ] ] = UNSET, retries: OptionalNullable[utils.RetryConfig] = UNSET, @@ -496,7 +487,7 @@ async def call_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="function_call_call_post", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -546,18 +537,16 @@ def stream( input_schema: OptionalNullable[Dict[str, Any]] = UNSET, output_schema: OptionalNullable[Dict[str, Any]] = UNSET, input: OptionalNullable[Any] = UNSET, - model: Optional[ - Union[models_tmodel.TModel, models_tmodel.TModelTypedDict] - ] = None, + model: Optional[Union[models.TModel, models.TModelTypedDict]] = None, examples: OptionalNullable[ - Union[List[models_example.Example], List[models_example.ExampleTypedDict]] + Union[List[models.Example], List[models.ExampleTypedDict]] ] = UNSET, parent_span_id: OptionalNullable[str] = UNSET, tags: OptionalNullable[Dict[str, str]] = UNSET, configuration: OptionalNullable[ Union[ - models_functioncallconfiguration.FunctionCallConfiguration, - models_functioncallconfiguration.FunctionCallConfigurationTypedDict, + models.FunctionCallConfiguration, + models.FunctionCallConfigurationTypedDict, ] ] = UNSET, retries: OptionalNullable[utils.RetryConfig] = UNSET, @@ -721,7 +710,7 @@ def stream( config=self.sdk_configuration, base_url=base_url or "", operation_id="function_stream_call_stream_post", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -786,18 +775,16 @@ async def stream_async( input_schema: OptionalNullable[Dict[str, Any]] = UNSET, output_schema: OptionalNullable[Dict[str, Any]] = UNSET, input: OptionalNullable[Any] = UNSET, - model: Optional[ - Union[models_tmodel.TModel, models_tmodel.TModelTypedDict] - ] = None, + model: Optional[Union[models.TModel, models.TModelTypedDict]] = None, examples: OptionalNullable[ - Union[List[models_example.Example], List[models_example.ExampleTypedDict]] + Union[List[models.Example], List[models.ExampleTypedDict]] ] = UNSET, parent_span_id: OptionalNullable[str] = UNSET, tags: OptionalNullable[Dict[str, str]] = UNSET, configuration: OptionalNullable[ Union[ - models_functioncallconfiguration.FunctionCallConfiguration, - models_functioncallconfiguration.FunctionCallConfigurationTypedDict, + models.FunctionCallConfiguration, + models.FunctionCallConfigurationTypedDict, ] ] = UNSET, retries: OptionalNullable[utils.RetryConfig] = UNSET, @@ -961,7 +948,7 @@ async def stream_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="function_stream_call_stream_post", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), diff --git a/src/opperai/spanmetrics.py b/src/opperai/spanmetrics.py index e1777a9..ce3f131 100644 --- a/src/opperai/spanmetrics.py +++ b/src/opperai/spanmetrics.py @@ -90,7 +90,7 @@ def create_metric( config=self.sdk_configuration, base_url=base_url or "", operation_id="create_metric_spans__span_id__metrics_post", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -213,7 +213,7 @@ async def create_metric_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="create_metric_spans__span_id__metrics_post", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -324,7 +324,7 @@ def list( config=self.sdk_configuration, base_url=base_url or "", operation_id="list_metrics_spans__span_id__metrics_get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -434,7 +434,7 @@ async def list_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="list_metrics_spans__span_id__metrics_get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -541,7 +541,7 @@ def get( config=self.sdk_configuration, base_url=base_url or "", operation_id="get_metric_spans__span_id__metrics__metric_id__get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -646,7 +646,7 @@ async def get_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="get_metric_spans__span_id__metrics__metric_id__get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -769,7 +769,7 @@ def update_metric( config=self.sdk_configuration, base_url=base_url or "", operation_id="update_metric_spans__span_id__metrics__metric_id__patch", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -892,7 +892,7 @@ async def update_metric_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="update_metric_spans__span_id__metrics__metric_id__patch", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -997,7 +997,7 @@ def delete( config=self.sdk_configuration, base_url=base_url or "", operation_id="delete_metric_spans__span_id__metrics__metric_id__delete", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -1102,7 +1102,7 @@ async def delete_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="delete_metric_spans__span_id__metrics__metric_id__delete", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), diff --git a/src/opperai/spans.py b/src/opperai/spans.py index 4fbee11..255addd 100644 --- a/src/opperai/spans.py +++ b/src/opperai/spans.py @@ -109,7 +109,7 @@ def create( config=self.sdk_configuration, base_url=base_url or "", operation_id="create_span_spans_post", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -247,7 +247,7 @@ async def create_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="create_span_spans_post", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -349,7 +349,7 @@ def get( config=self.sdk_configuration, base_url=base_url or "", operation_id="get_span_spans__span_id__get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -451,7 +451,7 @@ async def get_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="get_span_spans__span_id__get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -589,7 +589,7 @@ def update( config=self.sdk_configuration, base_url=base_url or "", operation_id="update_span_spans__span_id__patch", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -727,7 +727,7 @@ async def update_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="update_span_spans__span_id__patch", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -829,7 +829,7 @@ def delete( config=self.sdk_configuration, base_url=base_url or "", operation_id="delete_span_spans__span_id__delete", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -931,7 +931,7 @@ async def delete_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="delete_span_spans__span_id__delete", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -1033,7 +1033,7 @@ def save_examples( config=self.sdk_configuration, base_url=base_url or "", operation_id="save_to_dataset_spans__span_id__save_examples_post", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -1135,7 +1135,7 @@ async def save_examples_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="save_to_dataset_spans__span_id__save_examples_post", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), diff --git a/src/opperai/traces.py b/src/opperai/traces.py index e660edc..7749df1 100644 --- a/src/opperai/traces.py +++ b/src/opperai/traces.py @@ -78,7 +78,7 @@ def list( config=self.sdk_configuration, base_url=base_url or "", operation_id="list_traces_traces_get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -188,7 +188,7 @@ async def list_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="list_traces_traces_get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -292,7 +292,7 @@ def get( config=self.sdk_configuration, base_url=base_url or "", operation_id="get_trace_traces__trace_id__get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), @@ -394,7 +394,7 @@ async def get_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="get_trace_traces__trace_id__get", - oauth2_scopes=[], + oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ),