From a019d0e02a03feb6922130771f89330c9c30a992 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Han?= Date: Wed, 29 Oct 2025 14:38:56 +0100 Subject: [PATCH] chore: use Pydantic to generate OpenAPI schema MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Removes the need for the strong_typing and pyopenapi packages and purely use Pydantic for schema generation. Signed-off-by: Sébastien Han --- .pre-commit-config.yaml | 5 +- client-sdks/stainless/openapi.yml | 19086 +++++++++------ docs/openapi_generator/README.md | 1 - docs/openapi_generator/generate.py | 134 - docs/openapi_generator/pyopenapi/README.md | 1 - docs/openapi_generator/pyopenapi/__init__.py | 5 - docs/openapi_generator/pyopenapi/generator.py | 1175 - .../openapi_generator/pyopenapi/operations.py | 463 - docs/openapi_generator/pyopenapi/options.py | 78 - .../pyopenapi/specification.py | 269 - .../openapi_generator/pyopenapi/template.html | 41 - docs/openapi_generator/pyopenapi/utility.py | 288 - .../run_openapi_generator.sh | 34 - docs/static/deprecated-llama-stack-spec.yaml | 28 +- .../static/experimental-llama-stack-spec.yaml | 5831 ++--- docs/static/llama-stack-spec.html | 13724 ----------- docs/static/llama-stack-spec.yaml | 9223 +++++--- docs/static/stainless-llama-stack-spec.yaml | 19132 ++++++++++------ pyproject.toml | 12 +- scripts/fastapi_generator.py | 1002 + src/llama_stack/apis/vector_io/vector_io.py | 3 +- src/llama_stack/core/library_client.py | 13 +- src/llama_stack/core/utils/type_inspection.py | 45 + src/llama_stack/schema_utils.py | 43 +- src/llama_stack/strong_typing/__init__.py | 19 - src/llama_stack/strong_typing/auxiliary.py | 229 - src/llama_stack/strong_typing/classdef.py | 440 - src/llama_stack/strong_typing/core.py | 46 - src/llama_stack/strong_typing/deserializer.py | 872 - src/llama_stack/strong_typing/docstring.py | 410 - src/llama_stack/strong_typing/exception.py | 23 - src/llama_stack/strong_typing/inspection.py | 1104 - src/llama_stack/strong_typing/mapping.py | 39 - src/llama_stack/strong_typing/name.py | 188 - src/llama_stack/strong_typing/py.typed | 0 src/llama_stack/strong_typing/schema.py | 791 - .../strong_typing/serialization.py | 97 - src/llama_stack/strong_typing/serializer.py | 494 - src/llama_stack/strong_typing/slots.py | 27 - src/llama_stack/strong_typing/topological.py | 90 - uv.lock | 54 +- 41 files changed, 34241 insertions(+), 41318 deletions(-) delete mode 100644 docs/openapi_generator/README.md delete mode 100644 docs/openapi_generator/generate.py delete mode 100644 docs/openapi_generator/pyopenapi/README.md delete mode 100644 docs/openapi_generator/pyopenapi/__init__.py delete mode 100644 docs/openapi_generator/pyopenapi/generator.py delete mode 100644 docs/openapi_generator/pyopenapi/operations.py delete mode 100644 docs/openapi_generator/pyopenapi/options.py delete mode 100644 docs/openapi_generator/pyopenapi/specification.py delete mode 100644 docs/openapi_generator/pyopenapi/template.html delete mode 100644 docs/openapi_generator/pyopenapi/utility.py delete mode 100755 docs/openapi_generator/run_openapi_generator.sh delete mode 100644 docs/static/llama-stack-spec.html create mode 100755 scripts/fastapi_generator.py create mode 100644 src/llama_stack/core/utils/type_inspection.py delete mode 100644 src/llama_stack/strong_typing/__init__.py delete mode 100644 src/llama_stack/strong_typing/auxiliary.py delete mode 100644 src/llama_stack/strong_typing/classdef.py delete mode 100644 src/llama_stack/strong_typing/core.py delete mode 100644 src/llama_stack/strong_typing/deserializer.py delete mode 100644 src/llama_stack/strong_typing/docstring.py delete mode 100644 src/llama_stack/strong_typing/exception.py delete mode 100644 src/llama_stack/strong_typing/inspection.py delete mode 100644 src/llama_stack/strong_typing/mapping.py delete mode 100644 src/llama_stack/strong_typing/name.py delete mode 100644 src/llama_stack/strong_typing/py.typed delete mode 100644 src/llama_stack/strong_typing/schema.py delete mode 100644 src/llama_stack/strong_typing/serialization.py delete mode 100644 src/llama_stack/strong_typing/serializer.py delete mode 100644 src/llama_stack/strong_typing/slots.py delete mode 100644 src/llama_stack/strong_typing/topological.py diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index ce0d79b21..279c5791e 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -42,7 +42,6 @@ repos: hooks: - id: ruff args: [ --fix ] - exclude: ^src/llama_stack/strong_typing/.*$ - id: ruff-format - repo: https://github.com/adamchainz/blacken-docs @@ -111,11 +110,11 @@ repos: name: API Spec Codegen additional_dependencies: - uv==0.7.8 - entry: sh -c './scripts/uv-run-with-index.sh run ./docs/openapi_generator/run_openapi_generator.sh > /dev/null' + entry: sh -c './scripts/uv-run-with-index.sh run scripts/fastapi_generator.py docs/static' language: python pass_filenames: false require_serial: true - files: ^src/llama_stack/apis/|^docs/openapi_generator/ + files: ^src/llama_stack/apis/ - id: check-workflows-use-hashes name: Check GitHub Actions use SHA-pinned actions entry: ./scripts/check-workflows-use-hashes.sh diff --git a/client-sdks/stainless/openapi.yml b/client-sdks/stainless/openapi.yml index f6699aef2..120c20b6a 100644 --- a/client-sdks/stainless/openapi.yml +++ b/client-sdks/stainless/openapi.yml @@ -172,36 +172,44 @@ paths: tags: - Inference summary: List chat completions. - description: List chat completions. + description: >- + List chat completions. + + :param after: The ID of the last chat completion to return. + :param limit: The maximum number of chat completions to return. + :param model: The model to filter by. + :param order: The order to sort the chat completions by: "asc" or + "desc". Defaults to "desc". + :returns: A ListOpenAIChatCompletionResponse. parameters: - name: after - in: query description: >- The ID of the last chat completion to return. required: false schema: type: string - - name: limit in: query + - name: limit description: >- The maximum number of chat completions to return. required: false schema: type: integer - - name: model in: query + - name: model description: The model to filter by. required: false schema: type: string - - name: order in: query + - name: order description: >- The order to sort the chat completions by: "asc" or "desc". Defaults to "desc". required: false schema: $ref: '#/components/schemas/Order' + in: query deprecated: false post: responses: @@ -210,9 +218,8 @@ paths: content: application/json: schema: - oneOf: - - $ref: '#/components/schemas/OpenAIChatCompletion' - - $ref: '#/components/schemas/OpenAIChatCompletionChunk' + $ref: '#/components/schemas/llama_stack.apis.inference.inference.OpenAIChatCompletion + | collections.abc.AsyncIterator[llama_stack.apis.inference.inference.OpenAIChatCompletionChunk]' '400': $ref: '#/components/responses/BadRequest400' '429': @@ -231,12 +238,13 @@ paths: Generate an OpenAI-compatible chat completion for the given messages using the specified model. + :returns: An OpenAIChatCompletion. parameters: [] requestBody: content: application/json: schema: - $ref: '#/components/schemas/OpenAIChatCompletionRequestWithExtraBody' + id: Annotated required: true deprecated: false /v1/chat/completions/{completion_id}: @@ -265,13 +273,16 @@ paths: Get chat completion. Describe a chat completion by its ID. + + :param completion_id: ID of the chat completion. + :returns: A OpenAICompletionWithInputMessages. parameters: - name: completion_id - in: path description: ID of the chat completion. required: true schema: type: string + in: path deprecated: false /v1/completions: post: @@ -300,12 +311,13 @@ paths: Generate an OpenAI-compatible completion for the given prompt using the specified model. + :returns: An OpenAICompletion. parameters: [] requestBody: content: application/json: schema: - $ref: '#/components/schemas/OpenAICompletionRequestWithExtraBody' + id: Annotated required: true deprecated: false /v1/conversations: @@ -334,6 +346,11 @@ paths: Create a conversation. Create a conversation. + + :param items: Initial items to include in the conversation context. + :param metadata: Set of key-value pairs that can be attached to an + object. + :returns: The created conversation object. parameters: [] requestBody: content: @@ -368,13 +385,16 @@ paths: Retrieve a conversation. Get a conversation with the given ID. + + :param conversation_id: The conversation identifier. + :returns: The conversation object. parameters: - name: conversation_id - in: path description: The conversation identifier. required: true schema: type: string + in: path deprecated: false post: responses: @@ -401,13 +421,18 @@ paths: Update a conversation. Update a conversation's metadata with the given ID. + + :param conversation_id: The conversation identifier. + :param metadata: Set of key-value pairs that can be attached to an + object. + :returns: The updated conversation object. parameters: - name: conversation_id - in: path description: The conversation identifier. required: true schema: type: string + in: path requestBody: content: application/json: @@ -440,13 +465,16 @@ paths: Delete a conversation. Delete a conversation with the given ID. + + :param conversation_id: The conversation identifier. + :returns: The deleted conversation resource. parameters: - name: conversation_id - in: path description: The conversation identifier. required: true schema: type: string + in: path deprecated: false /v1/conversations/{conversation_id}/items: get: @@ -474,57 +502,49 @@ paths: List items. List items in the conversation. + + :param conversation_id: The conversation identifier. + :param after: An item ID to list items after, used in pagination. + :param include: Specify additional output data to include in the response. + :param limit: A limit on the number of objects to be returned (1-100, + default 20). + :param order: The order to return items in (asc or desc, default desc). + :returns: List of conversation items. parameters: - name: conversation_id - in: path description: The conversation identifier. required: true schema: type: string + in: path - name: after - in: query description: >- An item ID to list items after, used in pagination. required: false schema: type: string - - name: include in: query + - name: include description: >- Specify additional output data to include in the response. required: false schema: - type: array - items: - type: string - enum: - - web_search_call.action.sources - - code_interpreter_call.outputs - - computer_call_output.output.image_url - - file_search_call.results - - message.input_image.image_url - - message.output_text.logprobs - - reasoning.encrypted_content - title: ConversationItemInclude - description: >- - Specify additional output data to include in the model response. - - name: limit + $ref: '#/components/schemas/list' in: query + - name: limit description: >- A limit on the number of objects to be returned (1-100, default 20). required: false schema: type: integer - - name: order in: query + - name: order description: >- The order to return items in (asc or desc, default desc). required: false schema: - type: string - enum: - - asc - - desc + $ref: '#/components/schemas/Literal' + in: query deprecated: false post: responses: @@ -551,13 +571,17 @@ paths: Create items. Create items in the conversation. + + :param conversation_id: The conversation identifier. + :param items: Items to include in the conversation context. + :returns: List of created items. parameters: - name: conversation_id - in: path description: The conversation identifier. required: true schema: type: string + in: path requestBody: content: application/json: @@ -573,7 +597,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ConversationItem' + id: Annotated '400': $ref: '#/components/responses/BadRequest400' '429': @@ -591,19 +615,23 @@ paths: Retrieve an item. Retrieve a conversation item. + + :param conversation_id: The conversation identifier. + :param item_id: The item identifier. + :returns: The conversation item. parameters: - name: conversation_id - in: path description: The conversation identifier. required: true schema: type: string - - name: item_id in: path + - name: item_id description: The item identifier. required: true schema: type: string + in: path deprecated: false delete: responses: @@ -630,19 +658,23 @@ paths: Delete an item. Delete a conversation item. + + :param conversation_id: The conversation identifier. + :param item_id: The item identifier. + :returns: The deleted item resource. parameters: - name: conversation_id - in: path description: The conversation identifier. required: true schema: type: string - - name: item_id in: path + - name: item_id description: The item identifier. required: true schema: type: string + in: path deprecated: false /v1/embeddings: post: @@ -672,12 +704,13 @@ paths: Generate OpenAI-compatible embeddings for the given input using the specified model. + :returns: An OpenAIEmbeddingsResponse containing the embeddings. parameters: [] requestBody: content: application/json: schema: - $ref: '#/components/schemas/OpenAIEmbeddingsRequestWithExtraBody' + id: Annotated required: true deprecated: false /v1/files: @@ -707,9 +740,19 @@ paths: List files. Returns a list of files that belong to the user's organization. + + :param after: A cursor for use in pagination. `after` is an object + ID that defines your place in the list. For instance, if you make a list request + and receive 100 objects, ending with obj_foo, your subsequent call can include + after=obj_foo in order to fetch the next page of the list. + :param limit: A limit on the number of objects to be returned. Limit + can range between 1 and 10,000, and the default is 10,000. + :param order: Sort order by the `created_at` timestamp of the objects. + `asc` for ascending order and `desc` for descending order. + :param purpose: Only return files with the given purpose. + :returns: An ListOpenAIFileResponse containing the list of files. parameters: - name: after - in: query description: >- A cursor for use in pagination. `after` is an object ID that defines your place in the list. For instance, if you make a list request and receive @@ -718,29 +761,30 @@ paths: required: false schema: type: string - - name: limit in: query + - name: limit description: >- A limit on the number of objects to be returned. Limit can range between 1 and 10,000, and the default is 10,000. required: false schema: type: integer - - name: order in: query + - name: order description: >- Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and `desc` for descending order. required: false schema: $ref: '#/components/schemas/Order' - - name: purpose in: query + - name: purpose description: >- Only return files with the given purpose. required: false schema: $ref: '#/components/schemas/OpenAIFilePurpose' + in: query deprecated: false post: responses: @@ -769,14 +813,19 @@ paths: Upload a file that can be used across various endpoints. + The file upload should be a multipart form request with: + - file: The File object (not file name) to be uploaded. + - purpose: The intended purpose of the uploaded file. + - expires_after: Optional form values describing expiration for the + file. - The file upload should be a multipart form request with: - - - file: The File object (not file name) to be uploaded. - - - purpose: The intended purpose of the uploaded file. - - - expires_after: Optional form values describing expiration for the file. + :param file: The uploaded file object containing content and metadata + (filename, content_type, etc.). + :param purpose: The intended purpose of the uploaded file (e.g., "assistants", + "fine-tune"). + :param expires_after: Optional form values describing expiration for + the file. + :returns: An OpenAIFileObject representing the uploaded file. parameters: [] requestBody: content: @@ -823,14 +872,17 @@ paths: Retrieve file. Returns information about a specific file. + + :param file_id: The ID of the file to use for this request. + :returns: An OpenAIFileObject containing file information. parameters: - name: file_id - in: path description: >- The ID of the file to use for this request. required: true schema: type: string + in: path deprecated: false delete: responses: @@ -854,15 +906,19 @@ paths: tags: - Files summary: Delete file. - description: Delete file. + description: >- + Delete file. + + :param file_id: The ID of the file to use for this request. + :returns: An OpenAIFileDeleteResponse indicating successful deletion. parameters: - name: file_id - in: path description: >- The ID of the file to use for this request. required: true schema: type: string + in: path deprecated: false /v1/files/{file_id}/content: get: @@ -891,14 +947,17 @@ paths: Retrieve file content. Returns the contents of the specified file. + + :param file_id: The ID of the file to use for this request. + :returns: The raw file content as a binary response. parameters: - name: file_id - in: path description: >- The ID of the file to use for this request. required: true schema: type: string + in: path deprecated: false /v1/health: get: @@ -927,6 +986,8 @@ paths: Get health status. Get the current health status of the service. + + :returns: Health information indicating if the service is operational. parameters: [] deprecated: false /v1/inspect/routes: @@ -1023,6 +1084,13 @@ paths: Register model. Register a model. + + :param model_id: The identifier of the model to register. + :param provider_model_id: The identifier of the model in the provider. + :param provider_id: The identifier of the provider. + :param metadata: Any additional metadata for this model. + :param model_type: The type of model to register. + :returns: A Model. parameters: [] requestBody: content: @@ -1057,13 +1125,16 @@ paths: Get model. Get a model by its identifier. + + :param model_id: The identifier of the model to get. + :returns: A Model. parameters: - name: model_id - in: path description: The identifier of the model to get. required: true schema: type: string + in: path deprecated: false delete: responses: @@ -1086,14 +1157,16 @@ paths: Unregister model. Unregister a model. + + :param model_id: The identifier of the model to unregister. parameters: - name: model_id - in: path description: >- The identifier of the model to unregister. required: true schema: type: string + in: path deprecated: false /v1/moderations: post: @@ -1121,6 +1194,12 @@ paths: Create moderation. Classifies if text and/or image inputs are potentially harmful. + :param input: Input (or inputs) to classify. + Can be a single string, an array of strings, or an array of multi-modal + input objects similar to other models. + :param model: (Optional) The content moderation model you would like + to use. + :returns: A moderation object. parameters: [] requestBody: content: @@ -1152,7 +1231,10 @@ paths: tags: - Prompts summary: List all prompts. - description: List all prompts. + description: >- + List all prompts. + + :returns: A ListPromptsResponse containing all prompts. parameters: [] deprecated: false post: @@ -1180,6 +1262,11 @@ paths: Create prompt. Create a new prompt. + + :param prompt: The prompt text content with variable placeholders. + :param variables: List of variable names that can be used in the prompt + template. + :returns: The created Prompt resource. parameters: [] requestBody: content: @@ -1214,20 +1301,24 @@ paths: Get prompt. Get a prompt by its identifier and optional version. + + :param prompt_id: The identifier of the prompt to get. + :param version: The version of the prompt to get (defaults to latest). + :returns: A Prompt resource. parameters: - name: prompt_id - in: path description: The identifier of the prompt to get. required: true schema: type: string + in: path - name: version - in: query description: >- The version of the prompt to get (defaults to latest). required: false schema: type: integer + in: query deprecated: false post: responses: @@ -1255,13 +1346,21 @@ paths: Update prompt. Update an existing prompt (increments version). + + :param prompt_id: The identifier of the prompt to update. + :param prompt: The updated prompt text content. + :param version: The current version of the prompt being updated. + :param variables: Updated list of variable names that can be used + in the prompt template. + :param set_as_default: Set the new version as the default (default=True). + :returns: The updated Prompt resource with incremented version. parameters: - name: prompt_id - in: path description: The identifier of the prompt to update. required: true schema: type: string + in: path requestBody: content: application/json: @@ -1290,13 +1389,15 @@ paths: Delete prompt. Delete a prompt. + + :param prompt_id: The identifier of the prompt to delete. parameters: - name: prompt_id - in: path description: The identifier of the prompt to delete. required: true schema: type: string + in: path deprecated: false /v1/prompts/{prompt_id}/set-default-version: post: @@ -1325,13 +1426,17 @@ paths: Set prompt version. Set which version of a prompt should be the default in get_prompt (latest). + + :param prompt_id: The identifier of the prompt. + :param version: The version to set as default. + :returns: The prompt with the specified version now set as default. parameters: - name: prompt_id - in: path description: The identifier of the prompt. required: true schema: type: string + in: path requestBody: content: application/json: @@ -1366,14 +1471,17 @@ paths: List prompt versions. List all versions of a specific prompt. + + :param prompt_id: The identifier of the prompt to list versions for. + :returns: A ListPromptsResponse containing all versions of the prompt. parameters: - name: prompt_id - in: path description: >- The identifier of the prompt to list versions for. required: true schema: type: string + in: path deprecated: false /v1/providers: get: @@ -1402,6 +1510,9 @@ paths: List providers. List all available providers. + + :returns: A ListProvidersResponse containing information about all + providers. parameters: [] deprecated: false /v1/providers/{provider_id}: @@ -1431,13 +1542,16 @@ paths: Get provider. Get detailed information about a specific provider. + + :param provider_id: The ID of the provider to inspect. + :returns: A ProviderInfo object containing the provider's details. parameters: - name: provider_id - in: path description: The ID of the provider to inspect. required: true schema: type: string + in: path deprecated: false /v1/responses: get: @@ -1461,33 +1575,41 @@ paths: tags: - Agents summary: List all responses. - description: List all responses. + description: >- + List all responses. + + :param after: The ID of the last response to return. + :param limit: The number of responses to return. + :param model: The model to filter responses by. + :param order: The order to sort responses by when sorted by created_at + ('asc' or 'desc'). + :returns: A ListOpenAIResponseObject. parameters: - name: after - in: query description: The ID of the last response to return. required: false schema: type: string - - name: limit in: query + - name: limit description: The number of responses to return. required: false schema: type: integer - - name: model in: query + - name: model description: The model to filter responses by. required: false schema: type: string - - name: order in: query + - name: order description: >- The order to sort responses by when sorted by created_at ('asc' or 'desc'). required: false schema: $ref: '#/components/schemas/Order' + in: query deprecated: false post: responses: @@ -1499,7 +1621,7 @@ paths: $ref: '#/components/schemas/OpenAIResponseObject' text/event-stream: schema: - $ref: '#/components/schemas/OpenAIResponseObjectStream' + $ref: '#/components/schemas/AsyncIterator' '400': $ref: '#/components/responses/BadRequest400' '429': @@ -1513,7 +1635,21 @@ paths: tags: - Agents summary: Create a model response. - description: Create a model response. + description: >- + Create a model response. + + :param input: Input message(s) to create the response. + :param model: The underlying LLM used for completions. + :param previous_response_id: (Optional) if specified, the new response + will be a continuation of the previous response. This can be used to easily + fork-off new responses from existing responses. + :param conversation: (Optional) The ID of a conversation to add the + response to. Must begin with 'conv_'. Input and output messages will be automatically + added to the conversation. + :param include: (Optional) Additional fields to include in the response. + :param guardrails: (Optional) List of guardrails to apply during response + generation. Can be guardrail IDs (strings) or guardrail specifications. + :returns: An OpenAIResponseObject. parameters: [] requestBody: content: @@ -1525,15 +1661,11 @@ paths: x-llama-stack-extra-body-params: - name: guardrails schema: - type: array - items: - oneOf: - - type: string - - $ref: '#/components/schemas/ResponseGuardrailSpec' + id: Annotated description: >- List of guardrails to apply during response generation. Guardrails provide safety and content moderation. - required: false + required: true /v1/responses/{response_id}: get: responses: @@ -1556,15 +1688,19 @@ paths: tags: - Agents summary: Get a model response. - description: Get a model response. + description: >- + Get a model response. + + :param response_id: The ID of the OpenAI response to retrieve. + :returns: An OpenAIResponseObject. parameters: - name: response_id - in: path description: >- The ID of the OpenAI response to retrieve. required: true schema: type: string + in: path deprecated: false delete: responses: @@ -1587,14 +1723,18 @@ paths: tags: - Agents summary: Delete a response. - description: Delete a response. + description: >- + Delete a response. + + :param response_id: The ID of the OpenAI response to delete. + :returns: An OpenAIDeleteResponseObject parameters: - name: response_id - in: path description: The ID of the OpenAI response to delete. required: true schema: type: string + in: path deprecated: false /v1/responses/{response_id}/input_items: get: @@ -1618,53 +1758,61 @@ paths: tags: - Agents summary: List input items. - description: List input items. + description: >- + List input items. + + :param response_id: The ID of the response to retrieve input items for. + :param after: An item ID to list items after, used for pagination. + :param before: An item ID to list items before, used for pagination. + :param include: Additional fields to include in the response. + :param limit: A limit on the number of objects to be returned. Limit + can range between 1 and 100, and the default is 20. + :param order: The order to return the input items in. Default is desc. + :returns: An ListOpenAIResponseInputItem. parameters: - name: response_id - in: path description: >- The ID of the response to retrieve input items for. required: true schema: type: string + in: path - name: after - in: query description: >- An item ID to list items after, used for pagination. required: false schema: type: string - - name: before in: query + - name: before description: >- An item ID to list items before, used for pagination. required: false schema: type: string - - name: include in: query + - name: include description: >- Additional fields to include in the response. required: false schema: - type: array - items: - type: string - - name: limit + $ref: '#/components/schemas/list' in: query + - name: limit description: >- A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 20. required: false schema: type: integer - - name: order in: query + - name: order description: >- The order to return the input items in. Default is desc. required: false schema: $ref: '#/components/schemas/Order' + in: query deprecated: false /v1/safety/run-shield: post: @@ -1692,6 +1840,11 @@ paths: Run shield. Run a shield. + + :param shield_id: The identifier of the shield to run. + :param messages: The messages to run the shield on. + :param params: The parameters of the shield. + :returns: A RunShieldResponse. parameters: [] requestBody: content: @@ -1722,7 +1875,10 @@ paths: tags: - ScoringFunctions summary: List all scoring functions. - description: List all scoring functions. + description: >- + List all scoring functions. + + :returns: A ListScoringFunctionsResponse. parameters: [] deprecated: false post: @@ -1742,7 +1898,18 @@ paths: tags: - ScoringFunctions summary: Register a scoring function. - description: Register a scoring function. + description: >- + Register a scoring function. + + :param scoring_fn_id: The ID of the scoring function to register. + :param description: The description of the scoring function. + :param return_type: The return type of the scoring function. + :param provider_scoring_fn_id: The ID of the provider scoring function + to use for the scoring function. + :param provider_id: The ID of the provider to use for the scoring + function. + :param params: The parameters for the scoring function for benchmark + eval, these can be overridden for app eval. parameters: [] requestBody: content: @@ -1773,14 +1940,18 @@ paths: tags: - ScoringFunctions summary: Get a scoring function by its ID. - description: Get a scoring function by its ID. + description: >- + Get a scoring function by its ID. + + :param scoring_fn_id: The ID of the scoring function to get. + :returns: A ScoringFn. parameters: - name: scoring_fn_id - in: path description: The ID of the scoring function to get. required: true schema: type: string + in: path deprecated: false delete: responses: @@ -1799,15 +1970,18 @@ paths: tags: - ScoringFunctions summary: Unregister a scoring function. - description: Unregister a scoring function. + description: >- + Unregister a scoring function. + + :param scoring_fn_id: The ID of the scoring function to unregister. parameters: - name: scoring_fn_id - in: path description: >- The ID of the scoring function to unregister. required: true schema: type: string + in: path deprecated: false /v1/scoring/score: post: @@ -1832,7 +2006,12 @@ paths: tags: - Scoring summary: Score a list of rows. - description: Score a list of rows. + description: >- + Score a list of rows. + + :param input_rows: The rows to score. + :param scoring_functions: The scoring functions to use for the scoring. + :returns: A ScoreResponse object containing rows and aggregated results. parameters: [] requestBody: content: @@ -1863,7 +2042,13 @@ paths: tags: - Scoring summary: Score a batch of rows. - description: Score a batch of rows. + description: >- + Score a batch of rows. + + :param dataset_id: The ID of the dataset to score. + :param scoring_functions: The scoring functions to use for the scoring. + :param save_results_dataset: Whether to save the results to a dataset. + :returns: A ScoreBatchResponse. parameters: [] requestBody: content: @@ -1894,7 +2079,10 @@ paths: tags: - Shields summary: List all shields. - description: List all shields. + description: >- + List all shields. + + :returns: A ListShieldsResponse. parameters: [] deprecated: false post: @@ -1918,7 +2106,14 @@ paths: tags: - Shields summary: Register a shield. - description: Register a shield. + description: >- + Register a shield. + + :param shield_id: The identifier of the shield to register. + :param provider_shield_id: The identifier of the shield in the provider. + :param provider_id: The identifier of the provider. + :param params: The parameters of the shield. + :returns: A Shield. parameters: [] requestBody: content: @@ -1949,14 +2144,18 @@ paths: tags: - Shields summary: Get a shield by its identifier. - description: Get a shield by its identifier. + description: >- + Get a shield by its identifier. + + :param identifier: The identifier of the shield to get. + :returns: A Shield. parameters: - name: identifier - in: path description: The identifier of the shield to get. required: true schema: type: string + in: path deprecated: false delete: responses: @@ -1975,15 +2174,18 @@ paths: tags: - Shields summary: Unregister a shield. - description: Unregister a shield. + description: >- + Unregister a shield. + + :param identifier: The identifier of the shield to unregister. parameters: - name: identifier - in: path description: >- The identifier of the shield to unregister. required: true schema: type: string + in: path deprecated: false /v1/tool-runtime/invoke: post: @@ -2007,7 +2209,12 @@ paths: tags: - ToolRuntime summary: Run a tool with the given arguments. - description: Run a tool with the given arguments. + description: >- + Run a tool with the given arguments. + + :param tool_name: The name of the tool to invoke. + :param kwargs: A dictionary of arguments to pass to the tool. + :returns: A ToolInvocationResult. parameters: [] requestBody: content: @@ -2038,22 +2245,27 @@ paths: tags: - ToolRuntime summary: List all tools in the runtime. - description: List all tools in the runtime. + description: >- + List all tools in the runtime. + + :param tool_group_id: The ID of the tool group to list tools for. + :param mcp_endpoint: The MCP endpoint to use for the tool group. + :returns: A ListToolDefsResponse. parameters: - name: tool_group_id - in: query description: >- The ID of the tool group to list tools for. required: false schema: type: string - - name: mcp_endpoint in: query + - name: mcp_endpoint description: >- The MCP endpoint to use for the tool group. required: false schema: $ref: '#/components/schemas/URL' + in: query deprecated: false /v1/tool-runtime/rag-tool/insert: post: @@ -2076,6 +2288,12 @@ paths: Index documents so they can be used by the RAG system. description: >- Index documents so they can be used by the RAG system. + + :param documents: List of documents to index in the RAG system + :param vector_store_id: ID of the vector database to store the document + embeddings + :param chunk_size_in_tokens: (Optional) Size in tokens for document + chunking during indexing parameters: [] requestBody: content: @@ -2110,6 +2328,12 @@ paths: Query the RAG system for context; typically invoked by the agent. description: >- Query the RAG system for context; typically invoked by the agent. + + :param content: The query content to search for in the indexed documents + :param vector_store_ids: List of vector database IDs to search within + :param query_config: (Optional) Configuration parameters for the query + operation + :returns: RAGQueryResult containing the retrieved content and metadata parameters: [] requestBody: content: @@ -2140,7 +2364,10 @@ paths: tags: - ToolGroups summary: List tool groups with optional provider. - description: List tool groups with optional provider. + description: >- + List tool groups with optional provider. + + :returns: A ListToolGroupsResponse. parameters: [] deprecated: false post: @@ -2160,7 +2387,13 @@ paths: tags: - ToolGroups summary: Register a tool group. - description: Register a tool group. + description: >- + Register a tool group. + + :param toolgroup_id: The ID of the tool group to register. + :param provider_id: The ID of the provider to use for the tool group. + :param mcp_endpoint: The MCP endpoint to use for the tool group. + :param args: A dictionary of arguments to pass to the tool group. parameters: [] requestBody: content: @@ -2191,14 +2424,18 @@ paths: tags: - ToolGroups summary: Get a tool group by its ID. - description: Get a tool group by its ID. + description: >- + Get a tool group by its ID. + + :param toolgroup_id: The ID of the tool group to get. + :returns: A ToolGroup. parameters: - name: toolgroup_id - in: path description: The ID of the tool group to get. required: true schema: type: string + in: path deprecated: false delete: responses: @@ -2217,14 +2454,17 @@ paths: tags: - ToolGroups summary: Unregister a tool group. - description: Unregister a tool group. + description: >- + Unregister a tool group. + + :param toolgroup_id: The ID of the tool group to unregister. parameters: - name: toolgroup_id - in: path description: The ID of the tool group to unregister. required: true schema: type: string + in: path deprecated: false /v1/tools: get: @@ -2248,15 +2488,19 @@ paths: tags: - ToolGroups summary: List tools with optional tool group. - description: List tools with optional tool group. + description: >- + List tools with optional tool group. + + :param toolgroup_id: The ID of the tool group to list tools for. + :returns: A ListToolDefsResponse. parameters: - name: toolgroup_id - in: query description: >- The ID of the tool group to list tools for. required: false schema: type: string + in: query deprecated: false /v1/tools/{tool_name}: get: @@ -2280,14 +2524,18 @@ paths: tags: - ToolGroups summary: Get a tool by its name. - description: Get a tool by its name. + description: >- + Get a tool by its name. + + :param tool_name: The name of the tool to get. + :returns: A ToolDef. parameters: - name: tool_name - in: path description: The name of the tool to get. required: true schema: type: string + in: path deprecated: false /v1/vector-io/insert: post: @@ -2307,7 +2555,19 @@ paths: tags: - VectorIO summary: Insert chunks into a vector database. - description: Insert chunks into a vector database. + description: >- + Insert chunks into a vector database. + + :param vector_store_id: The identifier of the vector database to insert the + chunks into. + :param chunks: The chunks to insert. Each `Chunk` should contain content + which can be interleaved text, images, or other types. + `metadata`: `dict[str, Any]` and `embedding`: `List[float]` are + optional. + If `metadata` is provided, you configure how Llama Stack formats + the chunk during generation. + If `embedding` is not provided, it will be computed later. + :param ttl_seconds: The time to live of the chunks. parameters: [] requestBody: content: @@ -2338,7 +2598,13 @@ paths: tags: - VectorIO summary: Query chunks from a vector database. - description: Query chunks from a vector database. + description: >- + Query chunks from a vector database. + + :param vector_store_id: The identifier of the vector database to query. + :param query: The query to search for. + :param params: The parameters of the query. + :returns: A QueryChunksResponse. parameters: [] requestBody: content: @@ -2370,40 +2636,52 @@ paths: tags: - VectorIO summary: Returns a list of vector stores. - description: Returns a list of vector stores. + description: >- + Returns a list of vector stores. + + :param limit: A limit on the number of objects to be returned. Limit can range + between 1 and 100, and the default is 20. + :param order: Sort order by the `created_at` timestamp of the objects. + `asc` for ascending order and `desc` for descending order. + :param after: A cursor for use in pagination. `after` is an object + ID that defines your place in the list. + :param before: A cursor for use in pagination. `before` is an object + ID that defines your place in the list. + :returns: A VectorStoreListResponse containing the list of vector + stores. parameters: - name: limit - in: query description: >- A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 20. required: false schema: type: integer - - name: order in: query + - name: order description: >- Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and `desc` for descending order. required: false schema: type: string - - name: after in: query + - name: after description: >- A cursor for use in pagination. `after` is an object ID that defines your place in the list. required: false schema: type: string - - name: before in: query + - name: before description: >- A cursor for use in pagination. `before` is an object ID that defines your place in the list. required: false schema: type: string + in: query deprecated: false post: responses: @@ -2431,12 +2709,13 @@ paths: Creates a vector store. Generate an OpenAI-compatible vector store with the given parameters. + :returns: A VectorStoreObject representing the created vector store. parameters: [] requestBody: content: application/json: schema: - $ref: '#/components/schemas/OpenAICreateVectorStoreRequestWithExtraBody' + id: Annotated required: true deprecated: false /v1/vector_stores/{vector_store_id}: @@ -2462,14 +2741,18 @@ paths: tags: - VectorIO summary: Retrieves a vector store. - description: Retrieves a vector store. + description: >- + Retrieves a vector store. + + :param vector_store_id: The ID of the vector store to retrieve. + :returns: A VectorStoreObject representing the vector store. parameters: - name: vector_store_id - in: path description: The ID of the vector store to retrieve. required: true schema: type: string + in: path deprecated: false post: responses: @@ -2493,14 +2776,22 @@ paths: tags: - VectorIO summary: Updates a vector store. - description: Updates a vector store. + description: >- + Updates a vector store. + + :param vector_store_id: The ID of the vector store to update. + :param name: The name of the vector store. + :param expires_after: The expiration policy for a vector store. + :param metadata: Set of 16 key-value pairs that can be attached to + an object. + :returns: A VectorStoreObject representing the updated vector store. parameters: - name: vector_store_id - in: path description: The ID of the vector store to update. required: true schema: type: string + in: path requestBody: content: application/json: @@ -2530,14 +2821,18 @@ paths: tags: - VectorIO summary: Delete a vector store. - description: Delete a vector store. + description: >- + Delete a vector store. + + :param vector_store_id: The ID of the vector store to delete. + :returns: A VectorStoreDeleteResponse indicating the deletion status. parameters: - name: vector_store_id - in: path description: The ID of the vector store to delete. required: true schema: type: string + in: path deprecated: false /v1/vector_stores/{vector_store_id}/file_batches: post: @@ -2567,19 +2862,23 @@ paths: Generate an OpenAI-compatible vector store file batch for the given vector store. + :param vector_store_id: The ID of the vector store to create the file + batch for. + :returns: A VectorStoreFileBatchObject representing the created file + batch. parameters: - name: vector_store_id - in: path description: >- The ID of the vector store to create the file batch for. required: true schema: type: string + in: path requestBody: content: application/json: schema: - $ref: '#/components/schemas/OpenAICreateVectorStoreFileBatchRequestWithExtraBody' + id: Annotated required: true deprecated: false /v1/vector_stores/{vector_store_id}/file_batches/{batch_id}: @@ -2605,21 +2904,27 @@ paths: tags: - VectorIO summary: Retrieve a vector store file batch. - description: Retrieve a vector store file batch. + description: >- + Retrieve a vector store file batch. + + :param batch_id: The ID of the file batch to retrieve. + :param vector_store_id: The ID of the vector store containing the + file batch. + :returns: A VectorStoreFileBatchObject representing the file batch. parameters: - name: batch_id - in: path description: The ID of the file batch to retrieve. required: true schema: type: string - - name: vector_store_id in: path + - name: vector_store_id description: >- The ID of the vector store containing the file batch. required: true schema: type: string + in: path deprecated: false /v1/vector_stores/{vector_store_id}/file_batches/{batch_id}/cancel: post: @@ -2644,21 +2949,28 @@ paths: tags: - VectorIO summary: Cancels a vector store file batch. - description: Cancels a vector store file batch. + description: >- + Cancels a vector store file batch. + + :param batch_id: The ID of the file batch to cancel. + :param vector_store_id: The ID of the vector store containing the + file batch. + :returns: A VectorStoreFileBatchObject representing the cancelled + file batch. parameters: - name: batch_id - in: path description: The ID of the file batch to cancel. required: true schema: type: string - - name: vector_store_id in: path + - name: vector_store_id description: >- The ID of the vector store containing the file batch. required: true schema: type: string + in: path deprecated: false /v1/vector_stores/{vector_store_id}/file_batches/{batch_id}/files: get: @@ -2687,60 +2999,76 @@ paths: Returns a list of vector store files in a batch. description: >- Returns a list of vector store files in a batch. + + :param batch_id: The ID of the file batch to list files from. + :param vector_store_id: The ID of the vector store containing the + file batch. + :param after: A cursor for use in pagination. `after` is an object + ID that defines your place in the list. + :param before: A cursor for use in pagination. `before` is an object + ID that defines your place in the list. + :param filter: Filter by file status. One of in_progress, completed, + failed, cancelled. + :param limit: A limit on the number of objects to be returned. Limit + can range between 1 and 100, and the default is 20. + :param order: Sort order by the `created_at` timestamp of the objects. + `asc` for ascending order and `desc` for descending order. + :returns: A VectorStoreFilesListInBatchResponse containing the list + of files in the batch. parameters: - name: batch_id - in: path description: >- The ID of the file batch to list files from. required: true schema: type: string - - name: vector_store_id in: path + - name: vector_store_id description: >- The ID of the vector store containing the file batch. required: true schema: type: string + in: path - name: after - in: query description: >- A cursor for use in pagination. `after` is an object ID that defines your place in the list. required: false schema: type: string - - name: before in: query + - name: before description: >- A cursor for use in pagination. `before` is an object ID that defines your place in the list. required: false schema: type: string - - name: filter in: query + - name: filter description: >- Filter by file status. One of in_progress, completed, failed, cancelled. required: false schema: type: string - - name: limit in: query + - name: limit description: >- A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 20. required: false schema: type: integer - - name: order in: query + - name: order description: >- Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and `desc` for descending order. required: false schema: type: string + in: query deprecated: false /v1/vector_stores/{vector_store_id}/files: get: @@ -2765,55 +3093,69 @@ paths: tags: - VectorIO summary: List files in a vector store. - description: List files in a vector store. + description: >- + List files in a vector store. + + :param vector_store_id: The ID of the vector store to list files from. + :param limit: (Optional) A limit on the number of objects to be returned. + Limit can range between 1 and 100, and the default is 20. + :param order: (Optional) Sort order by the `created_at` timestamp + of the objects. `asc` for ascending order and `desc` for descending order. + :param after: (Optional) A cursor for use in pagination. `after` is + an object ID that defines your place in the list. + :param before: (Optional) A cursor for use in pagination. `before` + is an object ID that defines your place in the list. + :param filter: (Optional) Filter by file status to only return files + with the specified status. + :returns: A VectorStoreListFilesResponse containing the list of files. parameters: - name: vector_store_id - in: path description: >- The ID of the vector store to list files from. required: true schema: type: string + in: path - name: limit - in: query description: >- (Optional) A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 20. required: false schema: type: integer - - name: order in: query + - name: order description: >- (Optional) Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and `desc` for descending order. required: false schema: type: string - - name: after in: query + - name: after description: >- (Optional) A cursor for use in pagination. `after` is an object ID that defines your place in the list. required: false schema: type: string - - name: before in: query + - name: before description: >- (Optional) A cursor for use in pagination. `before` is an object ID that defines your place in the list. required: false schema: type: string - - name: filter in: query + - name: filter description: >- (Optional) Filter by file status to only return files with the specified status. required: false schema: - $ref: '#/components/schemas/VectorStoreFileStatus' + id: Union + in: query deprecated: false post: responses: @@ -2837,15 +3179,23 @@ paths: tags: - VectorIO summary: Attach a file to a vector store. - description: Attach a file to a vector store. + description: >- + Attach a file to a vector store. + + :param vector_store_id: The ID of the vector store to attach the file to. + :param file_id: The ID of the file to attach to the vector store. + :param attributes: The key-value attributes stored with the file, + which can be used for filtering. + :param chunking_strategy: The chunking strategy to use for the file. + :returns: A VectorStoreFileObject representing the attached file. parameters: - name: vector_store_id - in: path description: >- The ID of the vector store to attach the file to. required: true schema: type: string + in: path requestBody: content: application/json: @@ -2876,21 +3226,27 @@ paths: tags: - VectorIO summary: Retrieves a vector store file. - description: Retrieves a vector store file. + description: >- + Retrieves a vector store file. + + :param vector_store_id: The ID of the vector store containing the file to + retrieve. + :param file_id: The ID of the file to retrieve. + :returns: A VectorStoreFileObject representing the file. parameters: - name: vector_store_id - in: path description: >- The ID of the vector store containing the file to retrieve. required: true schema: type: string - - name: file_id in: path + - name: file_id description: The ID of the file to retrieve. required: true schema: type: string + in: path deprecated: false post: responses: @@ -2914,21 +3270,29 @@ paths: tags: - VectorIO summary: Updates a vector store file. - description: Updates a vector store file. + description: >- + Updates a vector store file. + + :param vector_store_id: The ID of the vector store containing the file to + update. + :param file_id: The ID of the file to update. + :param attributes: The updated key-value attributes to store with + the file. + :returns: A VectorStoreFileObject representing the updated file. parameters: - name: vector_store_id - in: path description: >- The ID of the vector store containing the file to update. required: true schema: type: string - - name: file_id in: path + - name: file_id description: The ID of the file to update. required: true schema: type: string + in: path requestBody: content: application/json: @@ -2958,21 +3322,28 @@ paths: tags: - VectorIO summary: Delete a vector store file. - description: Delete a vector store file. + description: >- + Delete a vector store file. + + :param vector_store_id: The ID of the vector store containing the file to + delete. + :param file_id: The ID of the file to delete. + :returns: A VectorStoreFileDeleteResponse indicating the deletion + status. parameters: - name: vector_store_id - in: path description: >- The ID of the vector store containing the file to delete. required: true schema: type: string - - name: file_id in: path + - name: file_id description: The ID of the file to delete. required: true schema: type: string + in: path deprecated: false /v1/vector_stores/{vector_store_id}/files/{file_id}/content: get: @@ -3000,20 +3371,25 @@ paths: Retrieves the contents of a vector store file. description: >- Retrieves the contents of a vector store file. + + :param vector_store_id: The ID of the vector store containing the file to + retrieve. + :param file_id: The ID of the file to retrieve. + :returns: A list of InterleavedContent representing the file contents. parameters: - name: vector_store_id - in: path description: >- The ID of the vector store containing the file to retrieve. required: true schema: type: string - - name: file_id in: path + - name: file_id description: The ID of the file to retrieve. required: true schema: type: string + in: path deprecated: false /v1/vector_stores/{vector_store_id}/search: post: @@ -3043,13 +3419,27 @@ paths: Searches a vector store for relevant chunks based on a query and optional file attribute filters. + + :param vector_store_id: The ID of the vector store to search. + :param query: The query string or array for performing the search. + :param filters: Filters based on file attributes to narrow the search + results. + :param max_num_results: Maximum number of results to return (1 to + 50 inclusive, default 10). + :param ranking_options: Ranking options for fine-tuning the search + results. + :param rewrite_query: Whether to rewrite the natural language query + for vector search (default false) + :param search_mode: The search mode to use - "keyword", "vector", + or "hybrid" (default "vector") + :returns: A VectorStoreSearchResponse containing the search results. parameters: - name: vector_store_id - in: path description: The ID of the vector store to search. required: true schema: type: string + in: path requestBody: content: application/json: @@ -3084,6 +3474,8 @@ paths: Get version. Get the version of the service. + + :returns: Version information containing the service version number. parameters: [] deprecated: false /v1beta/datasetio/append-rows/{dataset_id}: @@ -3104,15 +3496,19 @@ paths: tags: - DatasetIO summary: Append rows to a dataset. - description: Append rows to a dataset. + description: >- + Append rows to a dataset. + + :param dataset_id: The ID of the dataset to append the rows to. + :param rows: The rows to append to the dataset. parameters: - name: dataset_id - in: path description: >- The ID of the dataset to append the rows to. required: true schema: type: string + in: path requestBody: content: application/json: @@ -3147,38 +3543,40 @@ paths: Get a paginated list of rows from a dataset. Uses offset-based pagination where: + - start_index: The starting index (0-based). If None, starts from + beginning. + - limit: Number of items to return. If None or -1, returns all items. - - start_index: The starting index (0-based). If None, starts from beginning. + The response includes: + - data: List of items for the current page. + - has_more: Whether there are more items available after this set. - - limit: Number of items to return. If None or -1, returns all items. - - - The response includes: - - - data: List of items for the current page. - - - has_more: Whether there are more items available after this set. + :param dataset_id: The ID of the dataset to get the rows from. + :param start_index: Index into dataset for the first row to get. Get + all rows if None. + :param limit: The number of rows to get. + :returns: A PaginatedResponse. parameters: - name: dataset_id - in: path description: >- The ID of the dataset to get the rows from. required: true schema: type: string + in: path - name: start_index - in: query description: >- Index into dataset for the first row to get. Get all rows if None. required: false schema: type: integer - - name: limit in: query + - name: limit description: The number of rows to get. required: false schema: type: integer + in: query deprecated: false /v1beta/datasets: get: @@ -3202,7 +3600,10 @@ paths: tags: - Datasets summary: List all datasets. - description: List all datasets. + description: >- + List all datasets. + + :returns: A ListDatasetsResponse. parameters: [] deprecated: false post: @@ -3226,7 +3627,71 @@ paths: tags: - Datasets summary: Register a new dataset. - description: Register a new dataset. + description: >- + Register a new dataset. + + :param purpose: The purpose of the dataset. + One of: + - "post-training/messages": The dataset contains a messages column + with list of messages for post-training. + { + "messages": [ + {"role": "user", "content": "Hello, world!"}, + {"role": "assistant", "content": "Hello, world!"}, + ] + } + - "eval/question-answer": The dataset contains a question column + and an answer column for evaluation. + { + "question": "What is the capital of France?", + "answer": "Paris" + } + - "eval/messages-answer": The dataset contains a messages column + with list of messages and an answer column for evaluation. + { + "messages": [ + {"role": "user", "content": "Hello, my name is John + Doe."}, + {"role": "assistant", "content": "Hello, John Doe. + How can I help you today?"}, + {"role": "user", "content": "What's my name?"}, + ], + "answer": "John Doe" + } + :param source: The data source of the dataset. Ensure that the data + source schema is compatible with the purpose of the dataset. Examples: + - { + "type": "uri", + "uri": "https://mywebsite.com/mydata.jsonl" + } + - { + "type": "uri", + "uri": "lsfs://mydata.jsonl" + } + - { + "type": "uri", + "uri": "data:csv;base64,{base64_content}" + } + - { + "type": "uri", + "uri": "huggingface://llamastack/simpleqa?split=train" + } + - { + "type": "rows", + "rows": [ + { + "messages": [ + {"role": "user", "content": "Hello, world!"}, + {"role": "assistant", "content": "Hello, world!"}, + ] + } + ] + } + :param metadata: The metadata for the dataset. + - E.g. {"description": "My dataset"}. + :param dataset_id: The ID of the dataset. If not provided, an ID will + be generated. + :returns: A Dataset. parameters: [] requestBody: content: @@ -3257,14 +3722,18 @@ paths: tags: - Datasets summary: Get a dataset by its ID. - description: Get a dataset by its ID. + description: >- + Get a dataset by its ID. + + :param dataset_id: The ID of the dataset to get. + :returns: A Dataset. parameters: - name: dataset_id - in: path description: The ID of the dataset to get. required: true schema: type: string + in: path deprecated: false delete: responses: @@ -3283,14 +3752,17 @@ paths: tags: - Datasets summary: Unregister a dataset by its ID. - description: Unregister a dataset by its ID. + description: >- + Unregister a dataset by its ID. + + :param dataset_id: The ID of the dataset to unregister. parameters: - name: dataset_id - in: path description: The ID of the dataset to unregister. required: true schema: type: string + in: path deprecated: false /v1alpha/agents: get: @@ -3314,20 +3786,25 @@ paths: tags: - Agents summary: List all agents. - description: List all agents. + description: >- + List all agents. + + :param start_index: The index to start the pagination from. + :param limit: The number of agents to return. + :returns: A PaginatedResponse. parameters: - name: start_index - in: query description: The index to start the pagination from. required: false schema: type: integer - - name: limit in: query + - name: limit description: The number of agents to return. required: false schema: type: integer + in: query deprecated: false post: responses: @@ -3354,6 +3831,9 @@ paths: Create an agent with the given configuration. description: >- Create an agent with the given configuration. + + :param agent_config: The configuration for the agent. + :returns: An AgentCreateResponse with the agent ID. parameters: [] requestBody: content: @@ -3384,14 +3864,18 @@ paths: tags: - Agents summary: Describe an agent by its ID. - description: Describe an agent by its ID. + description: >- + Describe an agent by its ID. + + :param agent_id: ID of the agent. + :returns: An Agent of the agent. parameters: - name: agent_id - in: path description: ID of the agent. required: true schema: type: string + in: path deprecated: false delete: responses: @@ -3413,13 +3897,15 @@ paths: Delete an agent by its ID and its associated sessions and turns. description: >- Delete an agent by its ID and its associated sessions and turns. + + :param agent_id: The ID of the agent to delete. parameters: - name: agent_id - in: path description: The ID of the agent to delete. required: true schema: type: string + in: path deprecated: false /v1alpha/agents/{agent_id}/session: post: @@ -3443,15 +3929,20 @@ paths: tags: - Agents summary: Create a new session for an agent. - description: Create a new session for an agent. + description: >- + Create a new session for an agent. + + :param agent_id: The ID of the agent to create the session for. + :param session_name: The name of the session to create. + :returns: An AgentSessionCreateResponse. parameters: - name: agent_id - in: path description: >- The ID of the agent to create the session for. required: true schema: type: string + in: path requestBody: content: application/json: @@ -3481,30 +3972,35 @@ paths: tags: - Agents summary: Retrieve an agent session by its ID. - description: Retrieve an agent session by its ID. + description: >- + Retrieve an agent session by its ID. + + :param session_id: The ID of the session to get. + :param agent_id: The ID of the agent to get the session for. + :param turn_ids: (Optional) List of turn IDs to filter the session + by. + :returns: A Session. parameters: - name: session_id - in: path description: The ID of the session to get. required: true schema: type: string - - name: agent_id in: path + - name: agent_id description: >- The ID of the agent to get the session for. required: true schema: type: string + in: path - name: turn_ids - in: query description: >- (Optional) List of turn IDs to filter the session by. required: false schema: - type: array - items: - type: string + $ref: '#/components/schemas/list' + in: query deprecated: false delete: responses: @@ -3526,35 +4022,36 @@ paths: Delete an agent session by its ID and its associated turns. description: >- Delete an agent session by its ID and its associated turns. + + :param session_id: The ID of the session to delete. + :param agent_id: The ID of the agent to delete the session for. parameters: - name: session_id - in: path description: The ID of the session to delete. required: true schema: type: string - - name: agent_id in: path + - name: agent_id description: >- The ID of the agent to delete the session for. required: true schema: type: string + in: path deprecated: false /v1alpha/agents/{agent_id}/session/{session_id}/turn: post: responses: '200': - description: >- - If stream=False, returns a Turn object. If stream=True, returns an SSE - event stream of AgentTurnResponseStreamChunk. + description: If stream=False, returns a Turn object. content: application/json: schema: $ref: '#/components/schemas/Turn' text/event-stream: schema: - $ref: '#/components/schemas/AgentTurnResponseStreamChunk' + $ref: '#/components/schemas/AsyncIterator' '400': $ref: '#/components/responses/BadRequest400' '429': @@ -3568,22 +4065,37 @@ paths: tags: - Agents summary: Create a new turn for an agent. - description: Create a new turn for an agent. + description: >- + Create a new turn for an agent. + + :param agent_id: The ID of the agent to create the turn for. + :param session_id: The ID of the session to create the turn for. + :param messages: List of messages to start the turn with. + :param stream: (Optional) If True, generate an SSE event stream of + the response. Defaults to False. + :param documents: (Optional) List of documents to create the turn + with. + :param toolgroups: (Optional) List of toolgroups to create the turn + with, will be used in addition to the agent's config toolgroups for the request. + :param tool_config: (Optional) The tool configuration to create the + turn with, will be used to override the agent's tool_config. + :returns: If stream=False, returns a Turn object. + If stream=True, returns an SSE event stream of AgentTurnResponseStreamChunk. parameters: - name: agent_id - in: path description: >- The ID of the agent to create the turn for. required: true schema: type: string - - name: session_id in: path + - name: session_id description: >- The ID of the session to create the turn for. required: true schema: type: string + in: path requestBody: content: application/json: @@ -3613,27 +4125,33 @@ paths: tags: - Agents summary: Retrieve an agent turn by its ID. - description: Retrieve an agent turn by its ID. + description: >- + Retrieve an agent turn by its ID. + + :param agent_id: The ID of the agent to get the turn for. + :param session_id: The ID of the session to get the turn for. + :param turn_id: The ID of the turn to get. + :returns: A Turn. parameters: - name: agent_id - in: path description: The ID of the agent to get the turn for. required: true schema: type: string - - name: session_id in: path + - name: session_id description: >- The ID of the session to get the turn for. required: true schema: type: string - - name: turn_id in: path + - name: turn_id description: The ID of the turn to get. required: true schema: type: string + in: path deprecated: false /v1alpha/agents/{agent_id}/session/{session_id}/turn/{turn_id}/resume: post: @@ -3648,7 +4166,7 @@ paths: $ref: '#/components/schemas/Turn' text/event-stream: schema: - $ref: '#/components/schemas/AgentTurnResponseStreamChunk' + $ref: '#/components/schemas/AsyncIterator' '400': $ref: '#/components/responses/BadRequest400' '429': @@ -3669,25 +4187,34 @@ paths: When a Turn has the status `awaiting_input` due to pending input from client side tool calls, this endpoint can be used to submit the outputs from the tool calls once they are ready. + + :param agent_id: The ID of the agent to resume. + :param session_id: The ID of the session to resume. + :param turn_id: The ID of the turn to resume. + :param tool_responses: The tool call responses to resume the turn + with. + :param stream: Whether to stream the response. + :returns: A Turn object if stream is False, otherwise an AsyncIterator + of AgentTurnResponseStreamChunk objects. parameters: - name: agent_id - in: path description: The ID of the agent to resume. required: true schema: type: string - - name: session_id in: path + - name: session_id description: The ID of the session to resume. required: true schema: type: string - - name: turn_id in: path + - name: turn_id description: The ID of the turn to resume. required: true schema: type: string + in: path requestBody: content: application/json: @@ -3717,33 +4244,40 @@ paths: tags: - Agents summary: Retrieve an agent step by its ID. - description: Retrieve an agent step by its ID. + description: >- + Retrieve an agent step by its ID. + + :param agent_id: The ID of the agent to get the step for. + :param session_id: The ID of the session to get the step for. + :param turn_id: The ID of the turn to get the step for. + :param step_id: The ID of the step to get. + :returns: An AgentStepResponse. parameters: - name: agent_id - in: path description: The ID of the agent to get the step for. required: true schema: type: string - - name: session_id in: path + - name: session_id description: >- The ID of the session to get the step for. required: true schema: type: string - - name: turn_id in: path + - name: turn_id description: The ID of the turn to get the step for. required: true schema: type: string - - name: step_id in: path + - name: step_id description: The ID of the step to get. required: true schema: type: string + in: path deprecated: false /v1alpha/agents/{agent_id}/sessions: get: @@ -3767,27 +4301,33 @@ paths: tags: - Agents summary: List all session(s) of a given agent. - description: List all session(s) of a given agent. + description: >- + List all session(s) of a given agent. + + :param agent_id: The ID of the agent to list sessions for. + :param start_index: The index to start the pagination from. + :param limit: The number of sessions to return. + :returns: A PaginatedResponse. parameters: - name: agent_id - in: path description: >- The ID of the agent to list sessions for. required: true schema: type: string + in: path - name: start_index - in: query description: The index to start the pagination from. required: false schema: type: integer - - name: limit in: query + - name: limit description: The number of sessions to return. required: false schema: type: integer + in: query deprecated: false /v1alpha/eval/benchmarks: get: @@ -3811,7 +4351,10 @@ paths: tags: - Benchmarks summary: List all benchmarks. - description: List all benchmarks. + description: >- + List all benchmarks. + + :returns: A ListBenchmarksResponse. parameters: [] deprecated: false post: @@ -3831,7 +4374,16 @@ paths: tags: - Benchmarks summary: Register a benchmark. - description: Register a benchmark. + description: >- + Register a benchmark. + + :param benchmark_id: The ID of the benchmark to register. + :param dataset_id: The ID of the dataset to use for the benchmark. + :param scoring_functions: The scoring functions to use for the benchmark. + :param provider_benchmark_id: The ID of the provider benchmark to + use for the benchmark. + :param provider_id: The ID of the provider to use for the benchmark. + :param metadata: The metadata to use for the benchmark. parameters: [] requestBody: content: @@ -3862,14 +4414,18 @@ paths: tags: - Benchmarks summary: Get a benchmark by its ID. - description: Get a benchmark by its ID. + description: >- + Get a benchmark by its ID. + + :param benchmark_id: The ID of the benchmark to get. + :returns: A Benchmark. parameters: - name: benchmark_id - in: path description: The ID of the benchmark to get. required: true schema: type: string + in: path deprecated: false delete: responses: @@ -3888,14 +4444,17 @@ paths: tags: - Benchmarks summary: Unregister a benchmark. - description: Unregister a benchmark. + description: >- + Unregister a benchmark. + + :param benchmark_id: The ID of the benchmark to unregister. parameters: - name: benchmark_id - in: path description: The ID of the benchmark to unregister. required: true schema: type: string + in: path deprecated: false /v1alpha/eval/benchmarks/{benchmark_id}/evaluations: post: @@ -3920,15 +4479,22 @@ paths: tags: - Eval summary: Evaluate a list of rows on a benchmark. - description: Evaluate a list of rows on a benchmark. + description: >- + Evaluate a list of rows on a benchmark. + + :param benchmark_id: The ID of the benchmark to run the evaluation on. + :param input_rows: The rows to evaluate. + :param scoring_functions: The scoring functions to use for the evaluation. + :param benchmark_config: The configuration for the benchmark. + :returns: EvaluateResponse object containing generations and scores. parameters: - name: benchmark_id - in: path description: >- The ID of the benchmark to run the evaluation on. required: true schema: type: string + in: path requestBody: content: application/json: @@ -3959,15 +4525,20 @@ paths: tags: - Eval summary: Run an evaluation on a benchmark. - description: Run an evaluation on a benchmark. + description: >- + Run an evaluation on a benchmark. + + :param benchmark_id: The ID of the benchmark to run the evaluation on. + :param benchmark_config: The configuration for the benchmark. + :returns: The job that was created to run the evaluation. parameters: - name: benchmark_id - in: path description: >- The ID of the benchmark to run the evaluation on. required: true schema: type: string + in: path requestBody: content: application/json: @@ -3997,21 +4568,26 @@ paths: tags: - Eval summary: Get the status of a job. - description: Get the status of a job. + description: >- + Get the status of a job. + + :param benchmark_id: The ID of the benchmark to run the evaluation on. + :param job_id: The ID of the job to get the status of. + :returns: The status of the evaluation job. parameters: - name: benchmark_id - in: path description: >- The ID of the benchmark to run the evaluation on. required: true schema: type: string - - name: job_id in: path + - name: job_id description: The ID of the job to get the status of. required: true schema: type: string + in: path deprecated: false delete: responses: @@ -4030,21 +4606,25 @@ paths: tags: - Eval summary: Cancel a job. - description: Cancel a job. + description: >- + Cancel a job. + + :param benchmark_id: The ID of the benchmark to run the evaluation on. + :param job_id: The ID of the job to cancel. parameters: - name: benchmark_id - in: path description: >- The ID of the benchmark to run the evaluation on. required: true schema: type: string - - name: job_id in: path + - name: job_id description: The ID of the job to cancel. required: true schema: type: string + in: path deprecated: false /v1alpha/eval/benchmarks/{benchmark_id}/jobs/{job_id}/result: get: @@ -4068,21 +4648,26 @@ paths: tags: - Eval summary: Get the result of a job. - description: Get the result of a job. + description: >- + Get the result of a job. + + :param benchmark_id: The ID of the benchmark to run the evaluation on. + :param job_id: The ID of the job to get the result of. + :returns: The result of the job. parameters: - name: benchmark_id - in: path description: >- The ID of the benchmark to run the evaluation on. required: true schema: type: string - - name: job_id in: path + - name: job_id description: The ID of the job to get the result of. required: true schema: type: string + in: path deprecated: false /v1alpha/inference/rerank: post: @@ -4110,6 +4695,17 @@ paths: Rerank a list of documents based on their relevance to a query. description: >- Rerank a list of documents based on their relevance to a query. + + :param model: The identifier of the reranking model to use. + :param query: The search query to rank items against. Can be a string, + text content part, or image content part. The input must not exceed the model's + max input token length. + :param items: List of items to rerank. Each item can be a string, + text content part, or image content part. Each input must not exceed the model's + max input token length. + :param max_num_results: (Optional) Maximum number of results to return. + Default: returns all. + :returns: RerankResponse with indices sorted by relevance score (descending). parameters: [] requestBody: content: @@ -4140,15 +4736,19 @@ paths: tags: - PostTraining (Coming Soon) summary: Get the artifacts of a training job. - description: Get the artifacts of a training job. + description: >- + Get the artifacts of a training job. + + :param job_uuid: The UUID of the job to get the artifacts of. + :returns: A PostTrainingJobArtifactsResponse. parameters: - name: job_uuid - in: query description: >- The UUID of the job to get the artifacts of. required: true schema: type: string + in: query deprecated: false /v1alpha/post-training/job/cancel: post: @@ -4168,7 +4768,10 @@ paths: tags: - PostTraining (Coming Soon) summary: Cancel a training job. - description: Cancel a training job. + description: >- + Cancel a training job. + + :param job_uuid: The UUID of the job to cancel. parameters: [] requestBody: content: @@ -4199,15 +4802,19 @@ paths: tags: - PostTraining (Coming Soon) summary: Get the status of a training job. - description: Get the status of a training job. + description: >- + Get the status of a training job. + + :param job_uuid: The UUID of the job to get the status of. + :returns: A PostTrainingJobStatusResponse. parameters: - name: job_uuid - in: query description: >- The UUID of the job to get the status of. required: true schema: type: string + in: query deprecated: false /v1alpha/post-training/jobs: get: @@ -4231,7 +4838,10 @@ paths: tags: - PostTraining (Coming Soon) summary: Get all training jobs. - description: Get all training jobs. + description: >- + Get all training jobs. + + :returns: A ListPostTrainingJobsResponse. parameters: [] deprecated: false /v1alpha/post-training/preference-optimize: @@ -4256,7 +4866,16 @@ paths: tags: - PostTraining (Coming Soon) summary: Run preference optimization of a model. - description: Run preference optimization of a model. + description: >- + Run preference optimization of a model. + + :param job_uuid: The UUID of the job to create. + :param finetuned_model: The model to fine-tune. + :param algorithm_config: The algorithm configuration. + :param training_config: The training configuration. + :param hyperparam_search_config: The hyperparam search configuration. + :param logger_config: The logger configuration. + :returns: A PostTrainingJob. parameters: [] requestBody: content: @@ -4287,7 +4906,17 @@ paths: tags: - PostTraining (Coming Soon) summary: Run supervised fine-tuning of a model. - description: Run supervised fine-tuning of a model. + description: >- + Run supervised fine-tuning of a model. + + :param job_uuid: The UUID of the job to create. + :param training_config: The training configuration. + :param hyperparam_search_config: The hyperparam search configuration. + :param logger_config: The logger configuration. + :param model: The model to fine-tune. + :param checkpoint_dir: The directory to save checkpoint(s) to. + :param algorithm_config: The algorithm configuration. + :returns: A PostTrainingJob. parameters: [] requestBody: content: @@ -4301,26 +4930,34 @@ jsonSchemaDialect: >- components: schemas: Error: - type: object + description: >- + Error response from the API. Roughly follows RFC 7807. + + + :param status: HTTP status code + + :param title: Error title, a short summary of the error which is invariant + for an error type + + :param detail: Error detail, a longer human-readable description of the error + + :param instance: (Optional) A URL which can be used to retrieve more information + about the specific occurrence of the error properties: status: + title: Status type: integer - description: HTTP status code title: + title: Title type: string - description: >- - Error title, a short summary of the error which is invariant for an error - type detail: + title: Detail type: string - description: >- - Error detail, a longer human-readable description of the error instance: - type: string - description: >- - (Optional) A URL which can be used to retrieve more information about - the specific occurrence of the error - additionalProperties: false + anyOf: + - type: string + - type: 'null' + title: Instance required: - status - title @@ -4662,1052 +5299,1443 @@ components: description: Sort order for paginated responses. ListOpenAIChatCompletionResponse: type: object + Order: + type: object + ListOpenAIChatCompletionResponse: + $defs: + OpenAIAssistantMessageParam: + description: >- + A message containing the model's (assistant) response in an OpenAI-compatible + chat completion request. + + + :param role: Must be "assistant" to identify this as the model's response + + :param content: The content of the model's response + + :param name: (Optional) The name of the assistant message participant. + + :param tool_calls: List of tool calls. Each tool call is an OpenAIChatCompletionToolCall + object. + properties: + role: + const: assistant + default: assistant + title: Role + type: string + content: + anyOf: + - type: string + - items: + $ref: >- + #/$defs/OpenAIChatCompletionContentPartTextParam + type: array + - type: 'null' + title: Content + name: + anyOf: + - type: string + - type: 'null' + title: Name + tool_calls: + anyOf: + - items: + $ref: '#/$defs/OpenAIChatCompletionToolCall' + type: array + - type: 'null' + title: Tool Calls + title: OpenAIAssistantMessageParam + type: object + "OpenAIChatCompletionContentPartImageParam": + description: >- + Image content part for OpenAI-compatible chat completion messages. + + + :param type: Must be "image_url" to identify this as image content + + :param image_url: Image URL specification and processing details + properties: + type: + const: image_url + default: image_url + title: Type + type: string + image_url: + $ref: '#/$defs/OpenAIImageURL' + required: + - image_url + title: >- + OpenAIChatCompletionContentPartImageParam + type: object + OpenAIChatCompletionContentPartTextParam: + description: >- + Text content part for OpenAI-compatible chat completion messages. + + + :param type: Must be "text" to identify this as text content + + :param text: The text content of the message + properties: + type: + const: text + default: text + title: Type + type: string + text: + title: Text + type: string + required: + - text + title: OpenAIChatCompletionContentPartTextParam + type: object + OpenAIChatCompletionToolCall: + description: >- + Tool call specification for OpenAI-compatible chat completion responses. + + + :param index: (Optional) Index of the tool call in the list + + :param id: (Optional) Unique identifier for the tool call + + :param type: Must be "function" to identify this as a function call + + :param function: (Optional) Function call details + properties: + index: + anyOf: + - type: integer + - type: 'null' + title: Index + id: + anyOf: + - type: string + - type: 'null' + title: Id + type: + const: function + default: function + title: Type + type: string + function: + anyOf: + - $ref: >- + #/$defs/OpenAIChatCompletionToolCallFunction + - type: 'null' + title: OpenAIChatCompletionToolCall + type: object + OpenAIChatCompletionToolCallFunction: + description: >- + Function call details for OpenAI-compatible tool calls. + + + :param name: (Optional) Name of the function to call + + :param arguments: (Optional) Arguments to pass to the function as a JSON + string + properties: + name: + anyOf: + - type: string + - type: 'null' + title: Name + arguments: + anyOf: + - type: string + - type: 'null' + title: Arguments + title: OpenAIChatCompletionToolCallFunction + type: object + OpenAIChatCompletionUsage: + description: >- + Usage information for OpenAI chat completion. + + + :param prompt_tokens: Number of tokens in the prompt + + :param completion_tokens: Number of tokens in the completion + + :param total_tokens: Total tokens used (prompt + completion) + + :param input_tokens_details: Detailed breakdown of input token usage + + :param output_tokens_details: Detailed breakdown of output token usage + properties: + prompt_tokens: + title: Prompt Tokens + type: integer + completion_tokens: + title: Completion Tokens + type: integer + total_tokens: + title: Total Tokens + type: integer + prompt_tokens_details: + anyOf: + - $ref: >- + #/$defs/OpenAIChatCompletionUsagePromptTokensDetails + - type: 'null' + completion_tokens_details: + anyOf: + - $ref: >- + #/$defs/OpenAIChatCompletionUsageCompletionTokensDetails + - type: 'null' + required: + - prompt_tokens + - completion_tokens + - total_tokens + title: OpenAIChatCompletionUsage + type: object + "OpenAIChatCompletionUsageCompletionTokensDetails": + description: >- + Token details for output tokens in OpenAI chat completion usage. + + + :param reasoning_tokens: Number of tokens used for reasoning (o1/o3 models) + properties: + reasoning_tokens: + anyOf: + - type: integer + - type: 'null' + title: Reasoning Tokens + title: >- + OpenAIChatCompletionUsageCompletionTokensDetails + type: object + "OpenAIChatCompletionUsagePromptTokensDetails": + description: >- + Token details for prompt tokens in OpenAI chat completion usage. + + + :param cached_tokens: Number of tokens retrieved from cache + properties: + cached_tokens: + anyOf: + - type: integer + - type: 'null' + title: Cached Tokens + title: >- + OpenAIChatCompletionUsagePromptTokensDetails + type: object + OpenAIChoice: + description: >- + A choice from an OpenAI-compatible chat completion response. + + + :param message: The message from the model + + :param finish_reason: The reason the model stopped generating + + :param index: The index of the choice + + :param logprobs: (Optional) The log probabilities for the tokens in the + message + properties: + message: + discriminator: + mapping: + assistant: '#/$defs/OpenAIAssistantMessageParam' + developer: '#/$defs/OpenAIDeveloperMessageParam' + system: '#/$defs/OpenAISystemMessageParam' + tool: '#/$defs/OpenAIToolMessageParam' + user: '#/$defs/OpenAIUserMessageParam' + propertyName: role + oneOf: + - $ref: '#/$defs/OpenAIUserMessageParam' + - $ref: '#/$defs/OpenAISystemMessageParam' + - $ref: '#/$defs/OpenAIAssistantMessageParam' + - $ref: '#/$defs/OpenAIToolMessageParam' + - $ref: '#/$defs/OpenAIDeveloperMessageParam' + title: Message + finish_reason: + title: Finish Reason + type: string + index: + title: Index + type: integer + logprobs: + anyOf: + - $ref: '#/$defs/OpenAIChoiceLogprobs' + - type: 'null' + required: + - message + - finish_reason + - index + title: OpenAIChoice + type: object + OpenAIChoiceLogprobs: + description: >- + The log probabilities for the tokens in the message from an OpenAI-compatible + chat completion response. + + + :param content: (Optional) The log probabilities for the tokens in the + message + + :param refusal: (Optional) The log probabilities for the tokens in the + message + properties: + content: + anyOf: + - items: + $ref: '#/$defs/OpenAITokenLogProb' + type: array + - type: 'null' + title: Content + refusal: + anyOf: + - items: + $ref: '#/$defs/OpenAITokenLogProb' + type: array + - type: 'null' + title: Refusal + title: OpenAIChoiceLogprobs + type: object + OpenAICompletionWithInputMessages: + properties: + id: + title: Id + type: string + choices: + items: + $ref: '#/$defs/OpenAIChoice' + title: Choices + type: array + object: + const: chat.completion + default: chat.completion + title: Object + type: string + created: + title: Created + type: integer + model: + title: Model + type: string + usage: + anyOf: + - $ref: '#/$defs/OpenAIChatCompletionUsage' + - type: 'null' + input_messages: + items: + discriminator: + mapping: + assistant: '#/$defs/OpenAIAssistantMessageParam' + developer: '#/$defs/OpenAIDeveloperMessageParam' + system: '#/$defs/OpenAISystemMessageParam' + tool: '#/$defs/OpenAIToolMessageParam' + user: '#/$defs/OpenAIUserMessageParam' + propertyName: role + oneOf: + - $ref: '#/$defs/OpenAIUserMessageParam' + - $ref: '#/$defs/OpenAISystemMessageParam' + - $ref: '#/$defs/OpenAIAssistantMessageParam' + - $ref: '#/$defs/OpenAIToolMessageParam' + - $ref: '#/$defs/OpenAIDeveloperMessageParam' + title: Input Messages + type: array + required: + - id + - choices + - created + - model + - input_messages + title: OpenAICompletionWithInputMessages + type: object + OpenAIDeveloperMessageParam: + description: >- + A message from the developer in an OpenAI-compatible chat completion request. + + + :param role: Must be "developer" to identify this as a developer message + + :param content: The content of the developer message + + :param name: (Optional) The name of the developer message participant. + properties: + role: + const: developer + default: developer + title: Role + type: string + content: + anyOf: + - type: string + - items: + $ref: >- + #/$defs/OpenAIChatCompletionContentPartTextParam + type: array + title: Content + name: + anyOf: + - type: string + - type: 'null' + title: Name + required: + - content + title: OpenAIDeveloperMessageParam + type: object + OpenAIFile: + properties: + type: + const: file + default: file + title: Type + type: string + file: + $ref: '#/$defs/OpenAIFileFile' + required: + - file + title: OpenAIFile + type: object + OpenAIFileFile: + properties: + file_data: + anyOf: + - type: string + - type: 'null' + title: File Data + file_id: + anyOf: + - type: string + - type: 'null' + title: File Id + filename: + anyOf: + - type: string + - type: 'null' + title: Filename + title: OpenAIFileFile + type: object + OpenAIImageURL: + description: >- + Image URL specification for OpenAI-compatible chat completion messages. + + + :param url: URL of the image to include in the message + + :param detail: (Optional) Level of detail for image processing. Can be + "low", "high", or "auto" + properties: + url: + title: Url + type: string + detail: + anyOf: + - type: string + - type: 'null' + title: Detail + required: + - url + title: OpenAIImageURL + type: object + OpenAISystemMessageParam: + description: >- + A system message providing instructions or context to the model. + + + :param role: Must be "system" to identify this as a system message + + :param content: The content of the "system prompt". If multiple system + messages are provided, they are concatenated. The underlying Llama Stack + code may also add other system messages (for example, for formatting tool + definitions). + + :param name: (Optional) The name of the system message participant. + properties: + role: + const: system + default: system + title: Role + type: string + content: + anyOf: + - type: string + - items: + $ref: >- + #/$defs/OpenAIChatCompletionContentPartTextParam + type: array + title: Content + name: + anyOf: + - type: string + - type: 'null' + title: Name + required: + - content + title: OpenAISystemMessageParam + type: object + OpenAITokenLogProb: + description: >- + The log probability for a token from an OpenAI-compatible chat completion + response. + + + :token: The token + + :bytes: (Optional) The bytes for the token + + :logprob: The log probability of the token + + :top_logprobs: The top log probabilities for the token + properties: + token: + title: Token + type: string + bytes: + anyOf: + - items: + type: integer + type: array + - type: 'null' + title: Bytes + logprob: + title: Logprob + type: number + top_logprobs: + items: + $ref: '#/$defs/OpenAITopLogProb' + title: Top Logprobs + type: array + required: + - token + - logprob + - top_logprobs + title: OpenAITokenLogProb + type: object + OpenAIToolMessageParam: + description: >- + A message representing the result of a tool invocation in an OpenAI-compatible + chat completion request. + + + :param role: Must be "tool" to identify this as a tool response + + :param tool_call_id: Unique identifier for the tool call this response + is for + + :param content: The response content from the tool + properties: + role: + const: tool + default: tool + title: Role + type: string + tool_call_id: + title: Tool Call Id + type: string + content: + anyOf: + - type: string + - items: + $ref: >- + #/$defs/OpenAIChatCompletionContentPartTextParam + type: array + title: Content + required: + - tool_call_id + - content + title: OpenAIToolMessageParam + type: object + OpenAITopLogProb: + description: >- + The top log probability for a token from an OpenAI-compatible chat completion + response. + + + :token: The token + + :bytes: (Optional) The bytes for the token + + :logprob: The log probability of the token + properties: + token: + title: Token + type: string + bytes: + anyOf: + - items: + type: integer + type: array + - type: 'null' + title: Bytes + logprob: + title: Logprob + type: number + required: + - token + - logprob + title: OpenAITopLogProb + type: object + OpenAIUserMessageParam: + description: >- + A message from the user in an OpenAI-compatible chat completion request. + + + :param role: Must be "user" to identify this as a user message + + :param content: The content of the message, which can include text and + other media + + :param name: (Optional) The name of the user message participant. + properties: + role: + const: user + default: user + title: Role + type: string + content: + anyOf: + - type: string + - items: + discriminator: + mapping: + file: '#/$defs/OpenAIFile' + image_url: >- + #/$defs/OpenAIChatCompletionContentPartImageParam + text: >- + #/$defs/OpenAIChatCompletionContentPartTextParam + propertyName: type + oneOf: + - $ref: >- + #/$defs/OpenAIChatCompletionContentPartTextParam + - $ref: >- + #/$defs/OpenAIChatCompletionContentPartImageParam + - $ref: '#/$defs/OpenAIFile' + type: array + title: Content + name: + anyOf: + - type: string + - type: 'null' + title: Name + required: + - content + title: OpenAIUserMessageParam + type: object + description: >- + Response from listing OpenAI-compatible chat completions. + + + :param data: List of chat completion objects with their input messages + + :param has_more: Whether there are more completions available beyond this + list + + :param first_id: ID of the first completion in this list + + :param last_id: ID of the last completion in this list + + :param object: Must be "list" to identify this as a list response properties: data: - type: array items: - type: object - properties: - id: - type: string - description: The ID of the chat completion - choices: - type: array - items: - $ref: '#/components/schemas/OpenAIChoice' - description: List of choices - object: - type: string - const: chat.completion - default: chat.completion - description: >- - The object type, which will be "chat.completion" - created: - type: integer - description: >- - The Unix timestamp in seconds when the chat completion was created - model: - type: string - description: >- - The model that was used to generate the chat completion - usage: - $ref: '#/components/schemas/OpenAIChatCompletionUsage' - description: >- - Token usage information for the completion - input_messages: - type: array - items: - $ref: '#/components/schemas/OpenAIMessageParam' - additionalProperties: false - required: - - id - - choices - - object - - created - - model - - input_messages - title: OpenAICompletionWithInputMessages - description: >- - List of chat completion objects with their input messages + $ref: >- + #/$defs/OpenAICompletionWithInputMessages + title: Data + type: array has_more: + title: Has More type: boolean - description: >- - Whether there are more completions available beyond this list first_id: + title: First Id type: string - description: ID of the first completion in this list last_id: + title: Last Id type: string - description: ID of the last completion in this list object: - type: string const: list default: list - description: >- - Must be "list" to identify this as a list response - additionalProperties: false + title: Object + type: string required: - data - has_more - first_id - last_id - - object title: ListOpenAIChatCompletionResponse - description: >- - Response from listing OpenAI-compatible chat completions. - OpenAIAssistantMessageParam: type: object - properties: - role: - type: string - const: assistant - default: assistant + Annotated: + type: object + ? >- + llama_stack.apis.inference.inference.OpenAIChatCompletion | collections.abc.AsyncIterator[llama_stack.apis.inference.inference.OpenAIChatCompletionChunk] + : type: object + OpenAICompletionWithInputMessages: + $defs: + OpenAIAssistantMessageParam: description: >- - Must be "assistant" to identify this as the model's response - content: - oneOf: - - type: string - - type: array - items: - $ref: '#/components/schemas/OpenAIChatCompletionContentPartTextParam' - description: The content of the model's response - name: - type: string - description: >- - (Optional) The name of the assistant message participant. - tool_calls: - type: array - items: - $ref: '#/components/schemas/OpenAIChatCompletionToolCall' - description: >- - List of tool calls. Each tool call is an OpenAIChatCompletionToolCall + A message containing the model's (assistant) response in an OpenAI-compatible + chat completion request. + + + :param role: Must be "assistant" to identify this as the model's response + + :param content: The content of the model's response + + :param name: (Optional) The name of the assistant message participant. + + :param tool_calls: List of tool calls. Each tool call is an OpenAIChatCompletionToolCall object. - additionalProperties: false - required: - - role - title: OpenAIAssistantMessageParam - description: >- - A message containing the model's (assistant) response in an OpenAI-compatible - chat completion request. - "OpenAIChatCompletionContentPartImageParam": - type: object - properties: - type: - type: string - const: image_url - default: image_url - description: >- - Must be "image_url" to identify this as image content - image_url: - $ref: '#/components/schemas/OpenAIImageURL' - description: >- - Image URL specification and processing details - additionalProperties: false - required: - - type - - image_url - title: >- - OpenAIChatCompletionContentPartImageParam - description: >- - Image content part for OpenAI-compatible chat completion messages. - OpenAIChatCompletionContentPartParam: - oneOf: - - $ref: '#/components/schemas/OpenAIChatCompletionContentPartTextParam' - - $ref: '#/components/schemas/OpenAIChatCompletionContentPartImageParam' - - $ref: '#/components/schemas/OpenAIFile' - discriminator: - propertyName: type - mapping: - text: '#/components/schemas/OpenAIChatCompletionContentPartTextParam' - image_url: '#/components/schemas/OpenAIChatCompletionContentPartImageParam' - file: '#/components/schemas/OpenAIFile' - OpenAIChatCompletionContentPartTextParam: - type: object - properties: - type: - type: string - const: text - default: text - description: >- - Must be "text" to identify this as text content - text: - type: string - description: The text content of the message - additionalProperties: false - required: - - type - - text - title: OpenAIChatCompletionContentPartTextParam - description: >- - Text content part for OpenAI-compatible chat completion messages. - OpenAIChatCompletionToolCall: - type: object - properties: - index: - type: integer - description: >- - (Optional) Index of the tool call in the list - id: - type: string - description: >- - (Optional) Unique identifier for the tool call - type: - type: string - const: function - default: function - description: >- - Must be "function" to identify this as a function call - function: - $ref: '#/components/schemas/OpenAIChatCompletionToolCallFunction' - description: (Optional) Function call details - additionalProperties: false - required: - - type - title: OpenAIChatCompletionToolCall - description: >- - Tool call specification for OpenAI-compatible chat completion responses. - OpenAIChatCompletionToolCallFunction: - type: object - properties: - name: - type: string - description: (Optional) Name of the function to call - arguments: - type: string - description: >- - (Optional) Arguments to pass to the function as a JSON string - additionalProperties: false - title: OpenAIChatCompletionToolCallFunction - description: >- - Function call details for OpenAI-compatible tool calls. - OpenAIChatCompletionUsage: - type: object - properties: - prompt_tokens: - type: integer - description: Number of tokens in the prompt - completion_tokens: - type: integer - description: Number of tokens in the completion - total_tokens: - type: integer - description: Total tokens used (prompt + completion) - prompt_tokens_details: - type: object properties: - cached_tokens: - type: integer - description: Number of tokens retrieved from cache - additionalProperties: false - title: >- - OpenAIChatCompletionUsagePromptTokensDetails - description: >- - Token details for prompt tokens in OpenAI chat completion usage. - completion_tokens_details: + role: + const: assistant + default: assistant + title: Role + type: string + content: + anyOf: + - type: string + - items: + $ref: >- + #/$defs/OpenAIChatCompletionContentPartTextParam + type: array + - type: 'null' + title: Content + name: + anyOf: + - type: string + - type: 'null' + title: Name + tool_calls: + anyOf: + - items: + $ref: '#/$defs/OpenAIChatCompletionToolCall' + type: array + - type: 'null' + title: Tool Calls + title: OpenAIAssistantMessageParam type: object + "OpenAIChatCompletionContentPartImageParam": + description: >- + Image content part for OpenAI-compatible chat completion messages. + + + :param type: Must be "image_url" to identify this as image content + + :param image_url: Image URL specification and processing details properties: - reasoning_tokens: - type: integer - description: >- - Number of tokens used for reasoning (o1/o3 models) - additionalProperties: false + type: + const: image_url + default: image_url + title: Type + type: string + image_url: + $ref: '#/$defs/OpenAIImageURL' + required: + - image_url title: >- - OpenAIChatCompletionUsageCompletionTokensDetails + OpenAIChatCompletionContentPartImageParam + type: object + OpenAIChatCompletionContentPartTextParam: + description: >- + Text content part for OpenAI-compatible chat completion messages. + + + :param type: Must be "text" to identify this as text content + + :param text: The text content of the message + properties: + type: + const: text + default: text + title: Type + type: string + text: + title: Text + type: string + required: + - text + title: OpenAIChatCompletionContentPartTextParam + type: object + OpenAIChatCompletionToolCall: + description: >- + Tool call specification for OpenAI-compatible chat completion responses. + + + :param index: (Optional) Index of the tool call in the list + + :param id: (Optional) Unique identifier for the tool call + + :param type: Must be "function" to identify this as a function call + + :param function: (Optional) Function call details + properties: + index: + anyOf: + - type: integer + - type: 'null' + title: Index + id: + anyOf: + - type: string + - type: 'null' + title: Id + type: + const: function + default: function + title: Type + type: string + function: + anyOf: + - $ref: >- + #/$defs/OpenAIChatCompletionToolCallFunction + - type: 'null' + title: OpenAIChatCompletionToolCall + type: object + OpenAIChatCompletionToolCallFunction: + description: >- + Function call details for OpenAI-compatible tool calls. + + + :param name: (Optional) Name of the function to call + + :param arguments: (Optional) Arguments to pass to the function as a JSON + string + properties: + name: + anyOf: + - type: string + - type: 'null' + title: Name + arguments: + anyOf: + - type: string + - type: 'null' + title: Arguments + title: OpenAIChatCompletionToolCallFunction + type: object + OpenAIChatCompletionUsage: + description: >- + Usage information for OpenAI chat completion. + + + :param prompt_tokens: Number of tokens in the prompt + + :param completion_tokens: Number of tokens in the completion + + :param total_tokens: Total tokens used (prompt + completion) + + :param input_tokens_details: Detailed breakdown of input token usage + + :param output_tokens_details: Detailed breakdown of output token usage + properties: + prompt_tokens: + title: Prompt Tokens + type: integer + completion_tokens: + title: Completion Tokens + type: integer + total_tokens: + title: Total Tokens + type: integer + prompt_tokens_details: + anyOf: + - $ref: >- + #/$defs/OpenAIChatCompletionUsagePromptTokensDetails + - type: 'null' + completion_tokens_details: + anyOf: + - $ref: >- + #/$defs/OpenAIChatCompletionUsageCompletionTokensDetails + - type: 'null' + required: + - prompt_tokens + - completion_tokens + - total_tokens + title: OpenAIChatCompletionUsage + type: object + "OpenAIChatCompletionUsageCompletionTokensDetails": description: >- Token details for output tokens in OpenAI chat completion usage. - additionalProperties: false - required: - - prompt_tokens - - completion_tokens - - total_tokens - title: OpenAIChatCompletionUsage - description: >- - Usage information for OpenAI chat completion. - OpenAIChoice: - type: object - properties: - message: - oneOf: - - $ref: '#/components/schemas/OpenAIUserMessageParam' - - $ref: '#/components/schemas/OpenAISystemMessageParam' - - $ref: '#/components/schemas/OpenAIAssistantMessageParam' - - $ref: '#/components/schemas/OpenAIToolMessageParam' - - $ref: '#/components/schemas/OpenAIDeveloperMessageParam' - discriminator: - propertyName: role - mapping: - user: '#/components/schemas/OpenAIUserMessageParam' - system: '#/components/schemas/OpenAISystemMessageParam' - assistant: '#/components/schemas/OpenAIAssistantMessageParam' - tool: '#/components/schemas/OpenAIToolMessageParam' - developer: '#/components/schemas/OpenAIDeveloperMessageParam' - description: The message from the model - finish_reason: - type: string - description: The reason the model stopped generating - index: - type: integer - description: The index of the choice - logprobs: - $ref: '#/components/schemas/OpenAIChoiceLogprobs' - description: >- - (Optional) The log probabilities for the tokens in the message - additionalProperties: false - required: - - message - - finish_reason - - index - title: OpenAIChoice - description: >- - A choice from an OpenAI-compatible chat completion response. - OpenAIChoiceLogprobs: - type: object - properties: - content: - type: array - items: - $ref: '#/components/schemas/OpenAITokenLogProb' - description: >- - (Optional) The log probabilities for the tokens in the message - refusal: - type: array - items: - $ref: '#/components/schemas/OpenAITokenLogProb' - description: >- - (Optional) The log probabilities for the tokens in the message - additionalProperties: false - title: OpenAIChoiceLogprobs - description: >- - The log probabilities for the tokens in the message from an OpenAI-compatible - chat completion response. - OpenAIDeveloperMessageParam: - type: object - properties: - role: - type: string - const: developer - default: developer - description: >- - Must be "developer" to identify this as a developer message - content: - oneOf: - - type: string - - type: array - items: - $ref: '#/components/schemas/OpenAIChatCompletionContentPartTextParam' - description: The content of the developer message - name: - type: string - description: >- - (Optional) The name of the developer message participant. - additionalProperties: false - required: - - role - - content - title: OpenAIDeveloperMessageParam - description: >- - A message from the developer in an OpenAI-compatible chat completion request. - OpenAIFile: - type: object - properties: - type: - type: string - const: file - default: file - file: - $ref: '#/components/schemas/OpenAIFileFile' - additionalProperties: false - required: - - type - - file - title: OpenAIFile - OpenAIFileFile: - type: object - properties: - file_data: - type: string - file_id: - type: string - filename: - type: string - additionalProperties: false - title: OpenAIFileFile - OpenAIImageURL: - type: object - properties: - url: - type: string - description: >- - URL of the image to include in the message - detail: - type: string - description: >- - (Optional) Level of detail for image processing. Can be "low", "high", - or "auto" - additionalProperties: false - required: - - url - title: OpenAIImageURL - description: >- - Image URL specification for OpenAI-compatible chat completion messages. - OpenAIMessageParam: - oneOf: - - $ref: '#/components/schemas/OpenAIUserMessageParam' - - $ref: '#/components/schemas/OpenAISystemMessageParam' - - $ref: '#/components/schemas/OpenAIAssistantMessageParam' - - $ref: '#/components/schemas/OpenAIToolMessageParam' - - $ref: '#/components/schemas/OpenAIDeveloperMessageParam' - discriminator: - propertyName: role - mapping: - user: '#/components/schemas/OpenAIUserMessageParam' - system: '#/components/schemas/OpenAISystemMessageParam' - assistant: '#/components/schemas/OpenAIAssistantMessageParam' - tool: '#/components/schemas/OpenAIToolMessageParam' - developer: '#/components/schemas/OpenAIDeveloperMessageParam' - OpenAISystemMessageParam: - type: object - properties: - role: - type: string - const: system - default: system - description: >- - Must be "system" to identify this as a system message - content: - oneOf: - - type: string - - type: array - items: - $ref: '#/components/schemas/OpenAIChatCompletionContentPartTextParam' - description: >- - The content of the "system prompt". If multiple system messages are provided, - they are concatenated. The underlying Llama Stack code may also add other - system messages (for example, for formatting tool definitions). - name: - type: string - description: >- - (Optional) The name of the system message participant. - additionalProperties: false - required: - - role - - content - title: OpenAISystemMessageParam - description: >- - A system message providing instructions or context to the model. - OpenAITokenLogProb: - type: object - properties: - token: - type: string - bytes: - type: array - items: - type: integer - logprob: - type: number - top_logprobs: - type: array - items: - $ref: '#/components/schemas/OpenAITopLogProb' - additionalProperties: false - required: - - token - - logprob - - top_logprobs - title: OpenAITokenLogProb - description: >- - The log probability for a token from an OpenAI-compatible chat completion - response. - OpenAIToolMessageParam: - type: object - properties: - role: - type: string - const: tool - default: tool - description: >- - Must be "tool" to identify this as a tool response - tool_call_id: - type: string - description: >- - Unique identifier for the tool call this response is for - content: - oneOf: - - type: string - - type: array - items: - $ref: '#/components/schemas/OpenAIChatCompletionContentPartTextParam' - description: The response content from the tool - additionalProperties: false - required: - - role - - tool_call_id - - content - title: OpenAIToolMessageParam - description: >- - A message representing the result of a tool invocation in an OpenAI-compatible - chat completion request. - OpenAITopLogProb: - type: object - properties: - token: - type: string - bytes: - type: array - items: - type: integer - logprob: - type: number - additionalProperties: false - required: - - token - - logprob - title: OpenAITopLogProb - description: >- - The top log probability for a token from an OpenAI-compatible chat completion - response. - OpenAIUserMessageParam: - type: object - properties: - role: - type: string - const: user - default: user - description: >- - Must be "user" to identify this as a user message - content: - oneOf: - - type: string - - type: array - items: - $ref: '#/components/schemas/OpenAIChatCompletionContentPartParam' - description: >- - The content of the message, which can include text and other media - name: - type: string - description: >- - (Optional) The name of the user message participant. - additionalProperties: false - required: - - role - - content - title: OpenAIUserMessageParam - description: >- - A message from the user in an OpenAI-compatible chat completion request. - OpenAIJSONSchema: - type: object - properties: - name: - type: string - description: Name of the schema - description: - type: string - description: (Optional) Description of the schema - strict: - type: boolean - description: >- - (Optional) Whether to enforce strict adherence to the schema - schema: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: (Optional) The JSON schema definition - additionalProperties: false - required: - - name - title: OpenAIJSONSchema - description: >- - JSON schema specification for OpenAI-compatible structured response format. - OpenAIResponseFormatJSONObject: - type: object - properties: - type: - type: string - const: json_object - default: json_object - description: >- - Must be "json_object" to indicate generic JSON object response format - additionalProperties: false - required: - - type - title: OpenAIResponseFormatJSONObject - description: >- - JSON object response format for OpenAI-compatible chat completion requests. - OpenAIResponseFormatJSONSchema: - type: object - properties: - type: - type: string - const: json_schema - default: json_schema - description: >- - Must be "json_schema" to indicate structured JSON response format - json_schema: - $ref: '#/components/schemas/OpenAIJSONSchema' - description: >- - The JSON schema specification for the response - additionalProperties: false - required: - - type - - json_schema - title: OpenAIResponseFormatJSONSchema - description: >- - JSON schema response format for OpenAI-compatible chat completion requests. - OpenAIResponseFormatParam: - oneOf: - - $ref: '#/components/schemas/OpenAIResponseFormatText' - - $ref: '#/components/schemas/OpenAIResponseFormatJSONSchema' - - $ref: '#/components/schemas/OpenAIResponseFormatJSONObject' - discriminator: - propertyName: type - mapping: - text: '#/components/schemas/OpenAIResponseFormatText' - json_schema: '#/components/schemas/OpenAIResponseFormatJSONSchema' - json_object: '#/components/schemas/OpenAIResponseFormatJSONObject' - OpenAIResponseFormatText: - type: object - properties: - type: - type: string - const: text - default: text - description: >- - Must be "text" to indicate plain text response format - additionalProperties: false - required: - - type - title: OpenAIResponseFormatText - description: >- - Text response format for OpenAI-compatible chat completion requests. - OpenAIChatCompletionRequestWithExtraBody: - type: object - properties: - model: - type: string - description: >- - The identifier of the model to use. The model must be registered with - Llama Stack and available via the /models endpoint. - messages: - type: array - items: - $ref: '#/components/schemas/OpenAIMessageParam' - description: List of messages in the conversation. - frequency_penalty: - type: number - description: >- - (Optional) The penalty for repeated tokens. - function_call: - oneOf: - - type: string - - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: (Optional) The function call to use. - functions: - type: array - items: - type: object - additionalProperties: - oneOf: + + + :param reasoning_tokens: Number of tokens used for reasoning (o1/o3 models) + properties: + reasoning_tokens: + anyOf: + - type: integer - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: (Optional) List of functions to use. - logit_bias: + title: Reasoning Tokens + title: >- + OpenAIChatCompletionUsageCompletionTokensDetails type: object - additionalProperties: - type: number - description: (Optional) The logit bias to use. - logprobs: - type: boolean - description: (Optional) The log probabilities to use. - max_completion_tokens: - type: integer + "OpenAIChatCompletionUsagePromptTokensDetails": description: >- - (Optional) The maximum number of tokens to generate. - max_tokens: - type: integer - description: >- - (Optional) The maximum number of tokens to generate. - n: - type: integer - description: >- - (Optional) The number of completions to generate. - parallel_tool_calls: - type: boolean - description: >- - (Optional) Whether to parallelize tool calls. - presence_penalty: - type: number - description: >- - (Optional) The penalty for repeated tokens. - response_format: - $ref: '#/components/schemas/OpenAIResponseFormatParam' - description: (Optional) The response format to use. - seed: - type: integer - description: (Optional) The seed to use. - stop: - oneOf: - - type: string - - type: array - items: - type: string - description: (Optional) The stop tokens to use. - stream: - type: boolean - description: >- - (Optional) Whether to stream the response. - stream_options: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: (Optional) The stream options to use. - temperature: - type: number - description: (Optional) The temperature to use. - tool_choice: - oneOf: - - type: string - - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: (Optional) The tool choice to use. - tools: - type: array - items: - type: object - additionalProperties: - oneOf: + Token details for prompt tokens in OpenAI chat completion usage. + + + :param cached_tokens: Number of tokens retrieved from cache + properties: + cached_tokens: + anyOf: + - type: integer - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: (Optional) The tools to use. - top_logprobs: - type: integer + title: Cached Tokens + title: >- + OpenAIChatCompletionUsagePromptTokensDetails + type: object + OpenAIChoice: description: >- - (Optional) The top log probabilities to use. - top_p: - type: number - description: (Optional) The top p to use. - user: - type: string - description: (Optional) The user to use. - additionalProperties: false - required: - - model - - messages - title: OpenAIChatCompletionRequestWithExtraBody - description: >- - Request parameters for OpenAI-compatible chat completion endpoint. - OpenAIChatCompletion: - type: object + A choice from an OpenAI-compatible chat completion response. + + + :param message: The message from the model + + :param finish_reason: The reason the model stopped generating + + :param index: The index of the choice + + :param logprobs: (Optional) The log probabilities for the tokens in the + message + properties: + message: + discriminator: + mapping: + assistant: '#/$defs/OpenAIAssistantMessageParam' + developer: '#/$defs/OpenAIDeveloperMessageParam' + system: '#/$defs/OpenAISystemMessageParam' + tool: '#/$defs/OpenAIToolMessageParam' + user: '#/$defs/OpenAIUserMessageParam' + propertyName: role + oneOf: + - $ref: '#/$defs/OpenAIUserMessageParam' + - $ref: '#/$defs/OpenAISystemMessageParam' + - $ref: '#/$defs/OpenAIAssistantMessageParam' + - $ref: '#/$defs/OpenAIToolMessageParam' + - $ref: '#/$defs/OpenAIDeveloperMessageParam' + title: Message + finish_reason: + title: Finish Reason + type: string + index: + title: Index + type: integer + logprobs: + anyOf: + - $ref: '#/$defs/OpenAIChoiceLogprobs' + - type: 'null' + required: + - message + - finish_reason + - index + title: OpenAIChoice + type: object + OpenAIChoiceLogprobs: + description: >- + The log probabilities for the tokens in the message from an OpenAI-compatible + chat completion response. + + + :param content: (Optional) The log probabilities for the tokens in the + message + + :param refusal: (Optional) The log probabilities for the tokens in the + message + properties: + content: + anyOf: + - items: + $ref: '#/$defs/OpenAITokenLogProb' + type: array + - type: 'null' + title: Content + refusal: + anyOf: + - items: + $ref: '#/$defs/OpenAITokenLogProb' + type: array + - type: 'null' + title: Refusal + title: OpenAIChoiceLogprobs + type: object + OpenAIDeveloperMessageParam: + description: >- + A message from the developer in an OpenAI-compatible chat completion request. + + + :param role: Must be "developer" to identify this as a developer message + + :param content: The content of the developer message + + :param name: (Optional) The name of the developer message participant. + properties: + role: + const: developer + default: developer + title: Role + type: string + content: + anyOf: + - type: string + - items: + $ref: >- + #/$defs/OpenAIChatCompletionContentPartTextParam + type: array + title: Content + name: + anyOf: + - type: string + - type: 'null' + title: Name + required: + - content + title: OpenAIDeveloperMessageParam + type: object + OpenAIFile: + properties: + type: + const: file + default: file + title: Type + type: string + file: + $ref: '#/$defs/OpenAIFileFile' + required: + - file + title: OpenAIFile + type: object + OpenAIFileFile: + properties: + file_data: + anyOf: + - type: string + - type: 'null' + title: File Data + file_id: + anyOf: + - type: string + - type: 'null' + title: File Id + filename: + anyOf: + - type: string + - type: 'null' + title: Filename + title: OpenAIFileFile + type: object + OpenAIImageURL: + description: >- + Image URL specification for OpenAI-compatible chat completion messages. + + + :param url: URL of the image to include in the message + + :param detail: (Optional) Level of detail for image processing. Can be + "low", "high", or "auto" + properties: + url: + title: Url + type: string + detail: + anyOf: + - type: string + - type: 'null' + title: Detail + required: + - url + title: OpenAIImageURL + type: object + OpenAISystemMessageParam: + description: >- + A system message providing instructions or context to the model. + + + :param role: Must be "system" to identify this as a system message + + :param content: The content of the "system prompt". If multiple system + messages are provided, they are concatenated. The underlying Llama Stack + code may also add other system messages (for example, for formatting tool + definitions). + + :param name: (Optional) The name of the system message participant. + properties: + role: + const: system + default: system + title: Role + type: string + content: + anyOf: + - type: string + - items: + $ref: >- + #/$defs/OpenAIChatCompletionContentPartTextParam + type: array + title: Content + name: + anyOf: + - type: string + - type: 'null' + title: Name + required: + - content + title: OpenAISystemMessageParam + type: object + OpenAITokenLogProb: + description: >- + The log probability for a token from an OpenAI-compatible chat completion + response. + + + :token: The token + + :bytes: (Optional) The bytes for the token + + :logprob: The log probability of the token + + :top_logprobs: The top log probabilities for the token + properties: + token: + title: Token + type: string + bytes: + anyOf: + - items: + type: integer + type: array + - type: 'null' + title: Bytes + logprob: + title: Logprob + type: number + top_logprobs: + items: + $ref: '#/$defs/OpenAITopLogProb' + title: Top Logprobs + type: array + required: + - token + - logprob + - top_logprobs + title: OpenAITokenLogProb + type: object + OpenAIToolMessageParam: + description: >- + A message representing the result of a tool invocation in an OpenAI-compatible + chat completion request. + + + :param role: Must be "tool" to identify this as a tool response + + :param tool_call_id: Unique identifier for the tool call this response + is for + + :param content: The response content from the tool + properties: + role: + const: tool + default: tool + title: Role + type: string + tool_call_id: + title: Tool Call Id + type: string + content: + anyOf: + - type: string + - items: + $ref: >- + #/$defs/OpenAIChatCompletionContentPartTextParam + type: array + title: Content + required: + - tool_call_id + - content + title: OpenAIToolMessageParam + type: object + OpenAITopLogProb: + description: >- + The top log probability for a token from an OpenAI-compatible chat completion + response. + + + :token: The token + + :bytes: (Optional) The bytes for the token + + :logprob: The log probability of the token + properties: + token: + title: Token + type: string + bytes: + anyOf: + - items: + type: integer + type: array + - type: 'null' + title: Bytes + logprob: + title: Logprob + type: number + required: + - token + - logprob + title: OpenAITopLogProb + type: object + OpenAIUserMessageParam: + description: >- + A message from the user in an OpenAI-compatible chat completion request. + + + :param role: Must be "user" to identify this as a user message + + :param content: The content of the message, which can include text and + other media + + :param name: (Optional) The name of the user message participant. + properties: + role: + const: user + default: user + title: Role + type: string + content: + anyOf: + - type: string + - items: + discriminator: + mapping: + file: '#/$defs/OpenAIFile' + image_url: >- + #/$defs/OpenAIChatCompletionContentPartImageParam + text: >- + #/$defs/OpenAIChatCompletionContentPartTextParam + propertyName: type + oneOf: + - $ref: >- + #/$defs/OpenAIChatCompletionContentPartTextParam + - $ref: >- + #/$defs/OpenAIChatCompletionContentPartImageParam + - $ref: '#/$defs/OpenAIFile' + type: array + title: Content + name: + anyOf: + - type: string + - type: 'null' + title: Name + required: + - content + title: OpenAIUserMessageParam + type: object properties: id: + title: Id type: string - description: The ID of the chat completion choices: - type: array items: - $ref: '#/components/schemas/OpenAIChoice' - description: List of choices + $ref: '#/$defs/OpenAIChoice' + title: Choices + type: array object: - type: string const: chat.completion default: chat.completion - description: >- - The object type, which will be "chat.completion" + title: Object + type: string created: + title: Created type: integer - description: >- - The Unix timestamp in seconds when the chat completion was created model: + title: Model type: string - description: >- - The model that was used to generate the chat completion usage: - $ref: '#/components/schemas/OpenAIChatCompletionUsage' - description: >- - Token usage information for the completion - additionalProperties: false - required: - - id - - choices - - object - - created - - model - title: OpenAIChatCompletion - description: >- - Response from an OpenAI-compatible chat completion request. - OpenAIChatCompletionChunk: - type: object - properties: - id: - type: string - description: The ID of the chat completion - choices: - type: array - items: - $ref: '#/components/schemas/OpenAIChunkChoice' - description: List of choices - object: - type: string - const: chat.completion.chunk - default: chat.completion.chunk - description: >- - The object type, which will be "chat.completion.chunk" - created: - type: integer - description: >- - The Unix timestamp in seconds when the chat completion was created - model: - type: string - description: >- - The model that was used to generate the chat completion - usage: - $ref: '#/components/schemas/OpenAIChatCompletionUsage' - description: >- - Token usage information (typically included in final chunk with stream_options) - additionalProperties: false - required: - - id - - choices - - object - - created - - model - title: OpenAIChatCompletionChunk - description: >- - Chunk from a streaming response to an OpenAI-compatible chat completion request. - OpenAIChoiceDelta: - type: object - properties: - content: - type: string - description: (Optional) The content of the delta - refusal: - type: string - description: (Optional) The refusal of the delta - role: - type: string - description: (Optional) The role of the delta - tool_calls: - type: array - items: - $ref: '#/components/schemas/OpenAIChatCompletionToolCall' - description: (Optional) The tool calls of the delta - reasoning_content: - type: string - description: >- - (Optional) The reasoning content from the model (non-standard, for o1/o3 - models) - additionalProperties: false - title: OpenAIChoiceDelta - description: >- - A delta from an OpenAI-compatible chat completion streaming response. - OpenAIChunkChoice: - type: object - properties: - delta: - $ref: '#/components/schemas/OpenAIChoiceDelta' - description: The delta from the chunk - finish_reason: - type: string - description: The reason the model stopped generating - index: - type: integer - description: The index of the choice - logprobs: - $ref: '#/components/schemas/OpenAIChoiceLogprobs' - description: >- - (Optional) The log probabilities for the tokens in the message - additionalProperties: false - required: - - delta - - finish_reason - - index - title: OpenAIChunkChoice - description: >- - A chunk choice from an OpenAI-compatible chat completion streaming response. - OpenAICompletionWithInputMessages: - type: object - properties: - id: - type: string - description: The ID of the chat completion - choices: - type: array - items: - $ref: '#/components/schemas/OpenAIChoice' - description: List of choices - object: - type: string - const: chat.completion - default: chat.completion - description: >- - The object type, which will be "chat.completion" - created: - type: integer - description: >- - The Unix timestamp in seconds when the chat completion was created - model: - type: string - description: >- - The model that was used to generate the chat completion - usage: - $ref: '#/components/schemas/OpenAIChatCompletionUsage' - description: >- - Token usage information for the completion + anyOf: + - $ref: '#/$defs/OpenAIChatCompletionUsage' + - type: 'null' input_messages: - type: array items: - $ref: '#/components/schemas/OpenAIMessageParam' - additionalProperties: false + discriminator: + mapping: + assistant: '#/$defs/OpenAIAssistantMessageParam' + developer: '#/$defs/OpenAIDeveloperMessageParam' + system: '#/$defs/OpenAISystemMessageParam' + tool: '#/$defs/OpenAIToolMessageParam' + user: '#/$defs/OpenAIUserMessageParam' + propertyName: role + oneOf: + - $ref: '#/$defs/OpenAIUserMessageParam' + - $ref: '#/$defs/OpenAISystemMessageParam' + - $ref: '#/$defs/OpenAIAssistantMessageParam' + - $ref: '#/$defs/OpenAIToolMessageParam' + - $ref: '#/$defs/OpenAIDeveloperMessageParam' + title: Input Messages + type: array required: - id - choices - - object - created - model - input_messages title: OpenAICompletionWithInputMessages - OpenAICompletionRequestWithExtraBody: type: object - properties: - model: - type: string - description: >- - The identifier of the model to use. The model must be registered with - Llama Stack and available via the /models endpoint. - prompt: - oneOf: - - type: string - - type: array - items: - type: string - - type: array - items: - type: integer - - type: array - items: - type: array - items: - type: integer - description: The prompt to generate a completion for. - best_of: - type: integer - description: >- - (Optional) The number of completions to generate. - echo: - type: boolean - description: (Optional) Whether to echo the prompt. - frequency_penalty: - type: number - description: >- - (Optional) The penalty for repeated tokens. - logit_bias: - type: object - additionalProperties: - type: number - description: (Optional) The logit bias to use. - logprobs: - type: boolean - description: (Optional) The log probabilities to use. - max_tokens: - type: integer - description: >- - (Optional) The maximum number of tokens to generate. - n: - type: integer - description: >- - (Optional) The number of completions to generate. - presence_penalty: - type: number - description: >- - (Optional) The penalty for repeated tokens. - seed: - type: integer - description: (Optional) The seed to use. - stop: - oneOf: - - type: string - - type: array - items: - type: string - description: (Optional) The stop tokens to use. - stream: - type: boolean - description: >- - (Optional) Whether to stream the response. - stream_options: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: (Optional) The stream options to use. - temperature: - type: number - description: (Optional) The temperature to use. - top_p: - type: number - description: (Optional) The top p to use. - user: - type: string - description: (Optional) The user to use. - suffix: - type: string - description: >- - (Optional) The suffix that should be appended to the completion. - additionalProperties: false - required: - - model - - prompt - title: OpenAICompletionRequestWithExtraBody - description: >- - Request parameters for OpenAI-compatible completion endpoint. OpenAICompletion: - type: object + $defs: + OpenAIChoiceLogprobs: + description: >- + The log probabilities for the tokens in the message from an OpenAI-compatible + chat completion response. + + + :param content: (Optional) The log probabilities for the tokens in the + message + + :param refusal: (Optional) The log probabilities for the tokens in the + message + properties: + content: + anyOf: + - items: + $ref: '#/$defs/OpenAITokenLogProb' + type: array + - type: 'null' + title: Content + refusal: + anyOf: + - items: + $ref: '#/$defs/OpenAITokenLogProb' + type: array + - type: 'null' + title: Refusal + title: OpenAIChoiceLogprobs + type: object + OpenAICompletionChoice: + description: >- + A choice from an OpenAI-compatible completion response. + + + :finish_reason: The reason the model stopped generating + + :text: The text of the choice + + :index: The index of the choice + + :logprobs: (Optional) The log probabilities for the tokens in the choice + properties: + finish_reason: + title: Finish Reason + type: string + text: + title: Text + type: string + index: + title: Index + type: integer + logprobs: + anyOf: + - $ref: '#/$defs/OpenAIChoiceLogprobs' + - type: 'null' + required: + - finish_reason + - text + - index + title: OpenAICompletionChoice + type: object + OpenAITokenLogProb: + description: >- + The log probability for a token from an OpenAI-compatible chat completion + response. + + + :token: The token + + :bytes: (Optional) The bytes for the token + + :logprob: The log probability of the token + + :top_logprobs: The top log probabilities for the token + properties: + token: + title: Token + type: string + bytes: + anyOf: + - items: + type: integer + type: array + - type: 'null' + title: Bytes + logprob: + title: Logprob + type: number + top_logprobs: + items: + $ref: '#/$defs/OpenAITopLogProb' + title: Top Logprobs + type: array + required: + - token + - logprob + - top_logprobs + title: OpenAITokenLogProb + type: object + OpenAITopLogProb: + description: >- + The top log probability for a token from an OpenAI-compatible chat completion + response. + + + :token: The token + + :bytes: (Optional) The bytes for the token + + :logprob: The log probability of the token + properties: + token: + title: Token + type: string + bytes: + anyOf: + - items: + type: integer + type: array + - type: 'null' + title: Bytes + logprob: + title: Logprob + type: number + required: + - token + - logprob + title: OpenAITopLogProb + type: object + description: >- + Response from an OpenAI-compatible completion request. + + + :id: The ID of the completion + + :choices: List of choices + + :created: The Unix timestamp in seconds when the completion was created + + :model: The model that was used to generate the completion + + :object: The object type, which will be "text_completion" properties: id: + title: Id type: string choices: - type: array items: - $ref: '#/components/schemas/OpenAICompletionChoice' + $ref: '#/$defs/OpenAICompletionChoice' + title: Choices + type: array created: + title: Created type: integer model: + title: Model type: string object: - type: string const: text_completion default: text_completion - additionalProperties: false + title: Object + type: string required: - id - choices - created - model - - object title: OpenAICompletion - description: >- - Response from an OpenAI-compatible completion request. - OpenAICompletionChoice: type: object properties: finish_reason: @@ -6361,334 +7389,1111 @@ components: Web search tool call output message for OpenAI responses. CreateConversationRequest: type: object - properties: - items: - type: array - items: - $ref: '#/components/schemas/ConversationItem' - description: >- - Initial items to include in the conversation context. - metadata: - type: object - additionalProperties: - type: string - description: >- - Set of key-value pairs that can be attached to an object. - additionalProperties: false - title: CreateConversationRequest Conversation: - type: object + description: OpenAI-compatible conversation object. properties: id: + description: The unique ID of the conversation. + title: Id type: string object: - type: string const: conversation default: conversation + description: >- + The object type, which is always conversation. + title: Object + type: string created_at: + description: >- + The time at which the conversation was created, measured in seconds since + the Unix epoch. + title: Created At type: integer metadata: - type: object - additionalProperties: - type: string + anyOf: + - additionalProperties: + type: string + type: object + - type: 'null' + description: >- + Set of 16 key-value pairs that can be attached to an object. This can + be useful for storing additional information about the object in a structured + format, and querying for objects via API or the dashboard. + title: Metadata items: - type: array - items: - type: object - title: dict - description: >- - dict() -> new empty dictionary dict(mapping) -> new dictionary initialized - from a mapping object's (key, value) pairs dict(iterable) -> new - dictionary initialized as if via: d = {} for k, v in iterable: d[k] - = v dict(**kwargs) -> new dictionary initialized with the name=value - pairs in the keyword argument list. For example: dict(one=1, two=2) - additionalProperties: false + anyOf: + - items: + additionalProperties: true + type: object + type: array + - type: 'null' + description: >- + Initial items to include in the conversation context. You may add up to + 20 items at a time. + title: Items required: - id - - object - created_at title: Conversation - description: OpenAI-compatible conversation object. + type: object UpdateConversationRequest: type: object - properties: - metadata: - type: object - additionalProperties: - type: string - description: >- - Set of key-value pairs that can be attached to an object. - additionalProperties: false - required: - - metadata - title: UpdateConversationRequest ConversationDeletedResource: - type: object - properties: - id: - type: string - object: - type: string - default: conversation.deleted - deleted: - type: boolean - default: true - additionalProperties: false - required: - - id - - object - - deleted - title: ConversationDeletedResource description: Response for deleted conversation. - ConversationItemList: - type: object - properties: - object: - type: string - default: list - data: - type: array - items: - $ref: '#/components/schemas/ConversationItem' - first_id: - type: string - last_id: - type: string - has_more: - type: boolean - default: false - additionalProperties: false - required: - - object - - data - - has_more - title: ConversationItemList - description: >- - List of conversation items with pagination. - AddItemsRequest: - type: object - properties: - items: - type: array - items: - $ref: '#/components/schemas/ConversationItem' - description: >- - Items to include in the conversation context. - additionalProperties: false - required: - - items - title: AddItemsRequest - ConversationItemDeletedResource: - type: object properties: id: + description: The deleted conversation identifier + title: Id type: string object: + default: conversation.deleted + description: Object type + title: Object type: string - default: conversation.item.deleted deleted: - type: boolean default: true - additionalProperties: false + description: Whether the object was deleted + title: Deleted + type: boolean required: - id - - object - - deleted - title: ConversationItemDeletedResource - description: Response for deleted conversation item. - OpenAIEmbeddingsRequestWithExtraBody: + title: ConversationDeletedResource type: object - properties: - model: - type: string + list: + type: object + Literal: + type: object + ConversationItemList: + $defs: + MCPListToolsTool: description: >- - The identifier of the model to use. The model must be an embedding model - registered with Llama Stack and available via the /models endpoint. - input: - oneOf: - - type: string - - type: array + Tool definition returned by MCP list tools operation. + + + :param input_schema: JSON schema defining the tool's input parameters + + :param name: Name of the tool + + :param description: (Optional) Description of what the tool does + properties: + input_schema: + additionalProperties: true + title: Input Schema + type: object + name: + title: Name + type: string + description: + anyOf: + - type: string + - type: 'null' + title: Description + required: + - input_schema + - name + title: MCPListToolsTool + type: object + OpenAIResponseAnnotationCitation: + description: >- + URL citation annotation for referencing external web resources. + + + :param type: Annotation type identifier, always "url_citation" + + :param end_index: End position of the citation span in the content + + :param start_index: Start position of the citation span in the content + + :param title: Title of the referenced web resource + + :param url: URL of the referenced web resource + properties: + type: + const: url_citation + default: url_citation + title: Type + type: string + end_index: + title: End Index + type: integer + start_index: + title: Start Index + type: integer + title: + title: Title + type: string + url: + title: Url + type: string + required: + - end_index + - start_index + - title + - url + title: OpenAIResponseAnnotationCitation + type: object + "OpenAIResponseAnnotationContainerFileCitation": + properties: + type: + const: container_file_citation + default: container_file_citation + title: Type + type: string + container_id: + title: Container Id + type: string + end_index: + title: End Index + type: integer + file_id: + title: File Id + type: string + filename: + title: Filename + type: string + start_index: + title: Start Index + type: integer + required: + - container_id + - end_index + - file_id + - filename + - start_index + title: >- + OpenAIResponseAnnotationContainerFileCitation + type: object + OpenAIResponseAnnotationFileCitation: + description: >- + File citation annotation for referencing specific files in response content. + + + :param type: Annotation type identifier, always "file_citation" + + :param file_id: Unique identifier of the referenced file + + :param filename: Name of the referenced file + + :param index: Position index of the citation within the content + properties: + type: + const: file_citation + default: file_citation + title: Type + type: string + file_id: + title: File Id + type: string + filename: + title: Filename + type: string + index: + title: Index + type: integer + required: + - file_id + - filename + - index + title: OpenAIResponseAnnotationFileCitation + type: object + OpenAIResponseAnnotationFilePath: + properties: + type: + const: file_path + default: file_path + title: Type + type: string + file_id: + title: File Id + type: string + index: + title: Index + type: integer + required: + - file_id + - index + title: OpenAIResponseAnnotationFilePath + type: object + OpenAIResponseContentPartRefusal: + description: >- + Refusal content within a streamed response part. + + + :param type: Content part type identifier, always "refusal" + + :param refusal: Refusal text supplied by the model + properties: + type: + const: refusal + default: refusal + title: Type + type: string + refusal: + title: Refusal + type: string + required: + - refusal + title: OpenAIResponseContentPartRefusal + type: object + "OpenAIResponseInputFunctionToolCallOutput": + description: >- + This represents the output of a function call that gets passed back to + the model. + properties: + call_id: + title: Call Id + type: string + output: + title: Output + type: string + type: + const: function_call_output + default: function_call_output + title: Type + type: string + id: + anyOf: + - type: string + - type: 'null' + title: Id + status: + anyOf: + - type: string + - type: 'null' + title: Status + required: + - call_id + - output + title: >- + OpenAIResponseInputFunctionToolCallOutput + type: object + OpenAIResponseInputMessageContentImage: + description: >- + Image content for input messages in OpenAI response format. + + + :param detail: Level of detail for image processing, can be "low", "high", + or "auto" + + :param type: Content type identifier, always "input_image" + + :param image_url: (Optional) URL of the image content + properties: + detail: + anyOf: + - const: low + type: string + - const: high + type: string + - const: auto + type: string + default: auto + title: Detail + type: + const: input_image + default: input_image + title: Type + type: string + image_url: + anyOf: + - type: string + - type: 'null' + title: Image Url + title: OpenAIResponseInputMessageContentImage + type: object + OpenAIResponseInputMessageContentText: + description: >- + Text content for input messages in OpenAI response format. + + + :param text: The text content of the input message + + :param type: Content type identifier, always "input_text" + properties: + text: + title: Text + type: string + type: + const: input_text + default: input_text + title: Type + type: string + required: + - text + title: OpenAIResponseInputMessageContentText + type: object + OpenAIResponseMCPApprovalRequest: + description: >- + A request for human approval of a tool invocation. + properties: + arguments: + title: Arguments + type: string + id: + title: Id + type: string + name: + title: Name + type: string + server_label: + title: Server Label + type: string + type: + const: mcp_approval_request + default: mcp_approval_request + title: Type + type: string + required: + - arguments + - id + - name + - server_label + title: OpenAIResponseMCPApprovalRequest + type: object + OpenAIResponseMCPApprovalResponse: + description: A response to an MCP approval request. + properties: + approval_request_id: + title: Approval Request Id + type: string + approve: + title: Approve + type: boolean + type: + const: mcp_approval_response + default: mcp_approval_response + title: Type + type: string + id: + anyOf: + - type: string + - type: 'null' + title: Id + reason: + anyOf: + - type: string + - type: 'null' + title: Reason + required: + - approval_request_id + - approve + title: OpenAIResponseMCPApprovalResponse + type: object + OpenAIResponseMessage: + description: >- + Corresponds to the various Message types in the Responses API. + + They are all under one type because the Responses API gives them all + + the same "type" value, and there is no way to tell them apart in certain + + scenarios. + properties: + content: + anyOf: + - type: string + - items: + discriminator: + mapping: + input_image: >- + #/$defs/OpenAIResponseInputMessageContentImage + input_text: >- + #/$defs/OpenAIResponseInputMessageContentText + propertyName: type + oneOf: + - $ref: >- + #/$defs/OpenAIResponseInputMessageContentText + - $ref: >- + #/$defs/OpenAIResponseInputMessageContentImage + type: array + - items: + discriminator: + mapping: + output_text: >- + #/$defs/OpenAIResponseOutputMessageContentOutputText + refusal: '#/$defs/OpenAIResponseContentPartRefusal' + propertyName: type + oneOf: + - $ref: >- + #/$defs/OpenAIResponseOutputMessageContentOutputText + - $ref: '#/$defs/OpenAIResponseContentPartRefusal' + type: array + title: Content + role: + anyOf: + - const: system + type: string + - const: developer + type: string + - const: user + type: string + - const: assistant + type: string + title: Role + type: + const: message + default: message + title: Type + type: string + id: + anyOf: + - type: string + - type: 'null' + title: Id + status: + anyOf: + - type: string + - type: 'null' + title: Status + required: + - content + - role + title: OpenAIResponseMessage + type: object + "OpenAIResponseOutputMessageContentOutputText": + properties: + text: + title: Text + type: string + type: + const: output_text + default: output_text + title: Type + type: string + annotations: + items: + discriminator: + mapping: + container_file_citation: >- + #/$defs/OpenAIResponseAnnotationContainerFileCitation + file_citation: >- + #/$defs/OpenAIResponseAnnotationFileCitation + file_path: '#/$defs/OpenAIResponseAnnotationFilePath' + url_citation: '#/$defs/OpenAIResponseAnnotationCitation' + propertyName: type + oneOf: + - $ref: >- + #/$defs/OpenAIResponseAnnotationFileCitation + - $ref: '#/$defs/OpenAIResponseAnnotationCitation' + - $ref: >- + #/$defs/OpenAIResponseAnnotationContainerFileCitation + - $ref: '#/$defs/OpenAIResponseAnnotationFilePath' + title: Annotations + type: array + required: + - text + title: >- + OpenAIResponseOutputMessageContentOutputText + type: object + "OpenAIResponseOutputMessageFileSearchToolCall": + description: >- + File search tool call output message for OpenAI responses. + + + :param id: Unique identifier for this tool call + + :param queries: List of search queries executed + + :param status: Current status of the file search operation + + :param type: Tool call type identifier, always "file_search_call" + + :param results: (Optional) Search results returned by the file search + operation + properties: + id: + title: Id + type: string + queries: items: type: string + title: Queries + type: array + status: + title: Status + type: string + type: + const: file_search_call + default: file_search_call + title: Type + type: string + results: + anyOf: + - items: + $ref: >- + #/$defs/OpenAIResponseOutputMessageFileSearchToolCallResults + type: array + - type: 'null' + title: Results + required: + - id + - queries + - status + title: >- + OpenAIResponseOutputMessageFileSearchToolCall + type: object + "OpenAIResponseOutputMessageFileSearchToolCallResults": description: >- - Input text to embed, encoded as a string or array of strings. To embed - multiple inputs in a single request, pass an array of strings. - encoding_format: - type: string - default: float + Search results returned by the file search operation. + + + :param attributes: (Optional) Key-value attributes associated with the + file + + :param file_id: Unique identifier of the file containing the result + + :param filename: Name of the file containing the result + + :param score: Relevance score for this search result (between 0 and 1) + + :param text: Text content of the search result + properties: + attributes: + additionalProperties: true + title: Attributes + type: object + file_id: + title: File Id + type: string + filename: + title: Filename + type: string + score: + title: Score + type: number + text: + title: Text + type: string + required: + - attributes + - file_id + - filename + - score + - text + title: >- + OpenAIResponseOutputMessageFileSearchToolCallResults + type: object + "OpenAIResponseOutputMessageFunctionToolCall": description: >- - (Optional) The format to return the embeddings in. Can be either "float" - or "base64". Defaults to "float". - dimensions: - type: integer + Function tool call output message for OpenAI responses. + + + :param call_id: Unique identifier for the function call + + :param name: Name of the function being called + + :param arguments: JSON string containing the function arguments + + :param type: Tool call type identifier, always "function_call" + + :param id: (Optional) Additional identifier for the tool call + + :param status: (Optional) Current status of the function call execution + properties: + call_id: + title: Call Id + type: string + name: + title: Name + type: string + arguments: + title: Arguments + type: string + type: + const: function_call + default: function_call + title: Type + type: string + id: + anyOf: + - type: string + - type: 'null' + title: Id + status: + anyOf: + - type: string + - type: 'null' + title: Status + required: + - call_id + - name + - arguments + title: >- + OpenAIResponseOutputMessageFunctionToolCall + type: object + OpenAIResponseOutputMessageMCPCall: description: >- - (Optional) The number of dimensions the resulting output embeddings should - have. Only supported in text-embedding-3 and later models. - user: - type: string + Model Context Protocol (MCP) call output message for OpenAI responses. + + + :param id: Unique identifier for this MCP call + + :param type: Tool call type identifier, always "mcp_call" + + :param arguments: JSON string containing the MCP call arguments + + :param name: Name of the MCP method being called + + :param server_label: Label identifying the MCP server handling the call + + :param error: (Optional) Error message if the MCP call failed + + :param output: (Optional) Output result from the successful MCP call + properties: + id: + title: Id + type: string + type: + const: mcp_call + default: mcp_call + title: Type + type: string + arguments: + title: Arguments + type: string + name: + title: Name + type: string + server_label: + title: Server Label + type: string + error: + anyOf: + - type: string + - type: 'null' + title: Error + output: + anyOf: + - type: string + - type: 'null' + title: Output + required: + - id + - arguments + - name + - server_label + title: OpenAIResponseOutputMessageMCPCall + type: object + OpenAIResponseOutputMessageMCPListTools: description: >- - (Optional) A unique identifier representing your end-user, which can help - OpenAI to monitor and detect abuse. - additionalProperties: false - required: - - model - - input - title: OpenAIEmbeddingsRequestWithExtraBody - description: >- - Request parameters for OpenAI-compatible embeddings endpoint. - OpenAIEmbeddingData: - type: object - properties: - object: - type: string - const: embedding - default: embedding - description: >- - The object type, which will be "embedding" - embedding: - oneOf: - - type: array + MCP list tools output message containing available tools from an MCP server. + + + :param id: Unique identifier for this MCP list tools operation + + :param type: Tool call type identifier, always "mcp_list_tools" + + :param server_label: Label identifying the MCP server providing the tools + + :param tools: List of available tools provided by the MCP server + properties: + id: + title: Id + type: string + type: + const: mcp_list_tools + default: mcp_list_tools + title: Type + type: string + server_label: + title: Server Label + type: string + tools: items: - type: number - - type: string + $ref: '#/$defs/MCPListToolsTool' + title: Tools + type: array + required: + - id + - server_label + - tools + title: OpenAIResponseOutputMessageMCPListTools + type: object + "OpenAIResponseOutputMessageWebSearchToolCall": description: >- - The embedding vector as a list of floats (when encoding_format="float") - or as a base64-encoded string (when encoding_format="base64") - index: - type: integer - description: >- - The index of the embedding in the input list - additionalProperties: false - required: - - object - - embedding - - index - title: OpenAIEmbeddingData + Web search tool call output message for OpenAI responses. + + + :param id: Unique identifier for this tool call + + :param status: Current status of the web search operation + + :param type: Tool call type identifier, always "web_search_call" + properties: + id: + title: Id + type: string + status: + title: Status + type: string + type: + const: web_search_call + default: web_search_call + title: Type + type: string + required: + - id + - status + title: >- + OpenAIResponseOutputMessageWebSearchToolCall + type: object description: >- - A single embedding data object from an OpenAI-compatible embeddings response. - OpenAIEmbeddingUsage: - type: object - properties: - prompt_tokens: - type: integer - description: The number of tokens in the input - total_tokens: - type: integer - description: The total number of tokens used - additionalProperties: false - required: - - prompt_tokens - - total_tokens - title: OpenAIEmbeddingUsage - description: >- - Usage information for an OpenAI-compatible embeddings response. - OpenAIEmbeddingsResponse: - type: object + List of conversation items with pagination. properties: object: + default: list + description: Object type + title: Object type: string + data: + description: List of conversation items + items: + discriminator: + mapping: + file_search_call: >- + #/$defs/OpenAIResponseOutputMessageFileSearchToolCall + function_call: >- + #/$defs/OpenAIResponseOutputMessageFunctionToolCall + function_call_output: >- + #/$defs/OpenAIResponseInputFunctionToolCallOutput + mcp_approval_request: '#/$defs/OpenAIResponseMCPApprovalRequest' + mcp_approval_response: >- + #/$defs/OpenAIResponseMCPApprovalResponse + mcp_call: >- + #/$defs/OpenAIResponseOutputMessageMCPCall + mcp_list_tools: >- + #/$defs/OpenAIResponseOutputMessageMCPListTools + message: '#/$defs/OpenAIResponseMessage' + web_search_call: >- + #/$defs/OpenAIResponseOutputMessageWebSearchToolCall + propertyName: type + oneOf: + - $ref: '#/$defs/OpenAIResponseMessage' + - $ref: >- + #/$defs/OpenAIResponseOutputMessageWebSearchToolCall + - $ref: >- + #/$defs/OpenAIResponseOutputMessageFileSearchToolCall + - $ref: >- + #/$defs/OpenAIResponseOutputMessageFunctionToolCall + - $ref: >- + #/$defs/OpenAIResponseInputFunctionToolCallOutput + - $ref: '#/$defs/OpenAIResponseMCPApprovalRequest' + - $ref: >- + #/$defs/OpenAIResponseMCPApprovalResponse + - $ref: >- + #/$defs/OpenAIResponseOutputMessageMCPCall + - $ref: >- + #/$defs/OpenAIResponseOutputMessageMCPListTools + title: Data + type: array + first_id: + anyOf: + - type: string + - type: 'null' + description: The ID of the first item in the list + title: First Id + last_id: + anyOf: + - type: string + - type: 'null' + description: The ID of the last item in the list + title: Last Id + has_more: + default: false + description: Whether there are more items available + title: Has More + type: boolean + required: + - data + title: ConversationItemList + type: object + AddItemsRequest: + type: object + ConversationItemDeletedResource: + description: Response for deleted conversation item. + properties: + id: + description: The deleted item identifier + title: Id + type: string + object: + default: conversation.item.deleted + description: Object type + title: Object + type: string + deleted: + default: true + description: Whether the object was deleted + title: Deleted + type: boolean + required: + - id + title: ConversationItemDeletedResource + type: object + OpenAIEmbeddingsResponse: + $defs: + OpenAIEmbeddingData: + description: >- + A single embedding data object from an OpenAI-compatible embeddings response. + + + :param object: The object type, which will be "embedding" + + :param embedding: The embedding vector as a list of floats (when encoding_format="float") + or as a base64-encoded string (when encoding_format="base64") + + :param index: The index of the embedding in the input list + properties: + object: + const: embedding + default: embedding + title: Object + type: string + embedding: + anyOf: + - items: + type: number + type: array + - type: string + title: Embedding + index: + title: Index + type: integer + required: + - embedding + - index + title: OpenAIEmbeddingData + type: object + OpenAIEmbeddingUsage: + description: >- + Usage information for an OpenAI-compatible embeddings response. + + + :param prompt_tokens: The number of tokens in the input + + :param total_tokens: The total number of tokens used + properties: + prompt_tokens: + title: Prompt Tokens + type: integer + total_tokens: + title: Total Tokens + type: integer + required: + - prompt_tokens + - total_tokens + title: OpenAIEmbeddingUsage + type: object + description: >- + Response from an OpenAI-compatible embeddings request. + + + :param object: The object type, which will be "list" + + :param data: List of embedding data objects + + :param model: The model that was used to generate the embeddings + + :param usage: Usage information + properties: + object: const: list default: list - description: The object type, which will be "list" - data: - type: array - items: - $ref: '#/components/schemas/OpenAIEmbeddingData' - description: List of embedding data objects - model: + title: Object + type: string + data: + items: + $ref: '#/$defs/OpenAIEmbeddingData' + title: Data + type: array + model: + title: Model type: string - description: >- - The model that was used to generate the embeddings usage: - $ref: '#/components/schemas/OpenAIEmbeddingUsage' - description: Usage information - additionalProperties: false + $ref: '#/$defs/OpenAIEmbeddingUsage' required: - - object - data - model - usage title: OpenAIEmbeddingsResponse - description: >- - Response from an OpenAI-compatible embeddings request. - OpenAIFilePurpose: - type: string - enum: - - assistants - - batch - title: OpenAIFilePurpose - description: >- - Valid purpose values for OpenAI Files API. - ListOpenAIFileResponse: type: object + OpenAIFilePurpose: + type: object + ListOpenAIFileResponse: + $defs: + OpenAIFileObject: + description: >- + OpenAI File object as defined in the OpenAI Files API. + + + :param object: The object type, which is always "file" + + :param id: The file identifier, which can be referenced in the API endpoints + + :param bytes: The size of the file, in bytes + + :param created_at: The Unix timestamp (in seconds) for when the file was + created + + :param expires_at: The Unix timestamp (in seconds) for when the file expires + + :param filename: The name of the file + + :param purpose: The intended purpose of the file + properties: + object: + const: file + default: file + title: Object + type: string + id: + title: Id + type: string + bytes: + title: Bytes + type: integer + created_at: + title: Created At + type: integer + expires_at: + title: Expires At + type: integer + filename: + title: Filename + type: string + purpose: + $ref: '#/$defs/OpenAIFilePurpose' + required: + - id + - bytes + - created_at + - expires_at + - filename + - purpose + title: OpenAIFileObject + type: object + OpenAIFilePurpose: + description: >- + Valid purpose values for OpenAI Files API. + enum: + - assistants + - batch + title: OpenAIFilePurpose + type: string + description: >- + Response for listing files in OpenAI Files API. + + + :param data: List of file objects + + :param has_more: Whether there are more files available beyond this page + + :param first_id: ID of the first file in the list for pagination + + :param last_id: ID of the last file in the list for pagination + + :param object: The object type, which is always "list" properties: data: - type: array items: - $ref: '#/components/schemas/OpenAIFileObject' - description: List of file objects + $ref: '#/$defs/OpenAIFileObject' + title: Data + type: array has_more: + title: Has More type: boolean - description: >- - Whether there are more files available beyond this page first_id: + title: First Id type: string - description: >- - ID of the first file in the list for pagination last_id: + title: Last Id type: string - description: >- - ID of the last file in the list for pagination object: - type: string const: list default: list - description: The object type, which is always "list" - additionalProperties: false + title: Object + type: string required: - data - has_more - first_id - last_id - - object title: ListOpenAIFileResponse - description: >- - Response for listing files in OpenAI Files API. - OpenAIFileObject: type: object + ExpiresAfter: + description: >- + Control expiration of uploaded files. + + + Params: + - anchor, must be "created_at" + - seconds, must be int between 3600 and 2592000 (1 hour to 30 days) properties: - object: + anchor: + const: created_at + title: Anchor type: string - const: file - default: file - description: The object type, which is always "file" - id: - type: string - description: >- - The file identifier, which can be referenced in the API endpoints - bytes: - type: integer - description: The size of the file, in bytes - created_at: + seconds: + maximum: 2592000 + minimum: 3600 + title: Seconds type: integer + required: + - anchor + - seconds + title: ExpiresAfter + type: object + OpenAIFileObject: + $defs: + OpenAIFilePurpose: description: >- - The Unix timestamp (in seconds) for when the file was created - expires_at: - type: integer - description: >- - The Unix timestamp (in seconds) for when the file expires - filename: - type: string - description: The name of the file - purpose: - type: string + Valid purpose values for OpenAI Files API. enum: - assistants - batch - description: The intended purpose of the file - additionalProperties: false + title: OpenAIFilePurpose + type: string + description: >- + OpenAI File object as defined in the OpenAI Files API. + + + :param object: The object type, which is always "file" + + :param id: The file identifier, which can be referenced in the API endpoints + + :param bytes: The size of the file, in bytes + + :param created_at: The Unix timestamp (in seconds) for when the file was created + + :param expires_at: The Unix timestamp (in seconds) for when the file expires + + :param filename: The name of the file + + :param purpose: The intended purpose of the file + properties: + object: + const: file + default: file + title: Object + type: string + id: + title: Id + type: string + bytes: + title: Bytes + type: integer + created_at: + title: Created At + type: integer + expires_at: + title: Expires At + type: integer + filename: + title: Filename + type: string + purpose: + $ref: '#/$defs/OpenAIFilePurpose' required: - - object - id - bytes - created_at @@ -6696,103 +8501,99 @@ components: - filename - purpose title: OpenAIFileObject - description: >- - OpenAI File object as defined in the OpenAI Files API. - ExpiresAfter: type: object - properties: - anchor: - type: string - const: created_at - seconds: - type: integer - additionalProperties: false - required: - - anchor - - seconds - title: ExpiresAfter - description: >- - Control expiration of uploaded files. - - Params: - - anchor, must be "created_at" - - seconds, must be int between 3600 and 2592000 (1 hour to 30 days) OpenAIFileDeleteResponse: - type: object - properties: - id: - type: string - description: The file identifier that was deleted - object: - type: string - const: file - default: file - description: The object type, which is always "file" - deleted: - type: boolean - description: >- - Whether the file was successfully deleted - additionalProperties: false - required: - - id - - object - - deleted - title: OpenAIFileDeleteResponse description: >- Response for deleting a file in OpenAI Files API. + + + :param id: The file identifier that was deleted + + :param object: The object type, which is always "file" + + :param deleted: Whether the file was successfully deleted + properties: + id: + title: Id + type: string + object: + const: file + default: file + title: Object + type: string + deleted: + title: Deleted + type: boolean + required: + - id + - deleted + title: OpenAIFileDeleteResponse + type: object Response: type: object - title: Response HealthInfo: - type: object - properties: - status: - type: string + $defs: + HealthStatus: enum: - OK - Error - Not Implemented - description: Current health status of the service - additionalProperties: false + title: HealthStatus + type: string + description: >- + Health status information for the service. + + + :param status: Current health status of the service + properties: + status: + $ref: '#/$defs/HealthStatus' required: - status title: HealthInfo - description: >- - Health status information for the service. - RouteInfo: type: object - properties: - route: - type: string - description: The API endpoint path - method: - type: string - description: HTTP method for the route - provider_types: - type: array - items: - type: string - description: >- - List of provider types that implement this route - additionalProperties: false - required: - - route - - method - - provider_types - title: RouteInfo - description: >- - Information about an API route including its path, method, and implementing - providers. ListRoutesResponse: - type: object + $defs: + RouteInfo: + description: >- + Information about an API route including its path, method, and implementing + providers. + + + :param route: The API endpoint path + + :param method: HTTP method for the route + + :param provider_types: List of provider types that implement this route + properties: + route: + title: Route + type: string + method: + title: Method + type: string + provider_types: + items: + type: string + title: Provider Types + type: array + required: + - route + - method + - provider_types + title: RouteInfo + type: object + description: >- + Response containing a list of all available API routes. + + + :param data: List of available route information objects properties: data: - type: array items: - $ref: '#/components/schemas/RouteInfo' - description: >- - List of available route information objects - additionalProperties: false + $ref: '#/$defs/RouteInfo' + title: Data + type: array required: - data title: ListRoutesResponse @@ -6939,232 +8740,308 @@ components: A model resource representing an AI model registered in Llama Stack. RunModerationRequest: type: object - properties: - input: - oneOf: - - type: string - - type: array - items: - type: string - description: >- - Input (or inputs) to classify. Can be a single string, an array of strings, - or an array of multi-modal input objects similar to other models. - model: - type: string - description: >- - (Optional) The content moderation model you would like to use. - additionalProperties: false - required: - - input - title: RunModerationRequest ModerationObject: - type: object + $defs: + ModerationObjectResults: + description: >- + A moderation object. + + :param flagged: Whether any of the below categories are flagged. + + :param categories: A list of the categories, and whether they are flagged + or not. + + :param category_applied_input_types: A list of the categories along with + the input type(s) that the score applies to. + + :param category_scores: A list of the categories along with their scores + as predicted by model. + properties: + flagged: + title: Flagged + type: boolean + categories: + anyOf: + - additionalProperties: + type: boolean + type: object + - type: 'null' + title: Categories + category_applied_input_types: + anyOf: + - additionalProperties: + items: + type: string + type: array + type: object + - type: 'null' + title: Category Applied Input Types + category_scores: + anyOf: + - additionalProperties: + type: number + type: object + - type: 'null' + title: Category Scores + user_message: + anyOf: + - type: string + - type: 'null' + title: User Message + metadata: + additionalProperties: true + title: Metadata + type: object + required: + - flagged + title: ModerationObjectResults + type: object + description: >- + A moderation object. + + :param id: The unique identifier for the moderation request. + + :param model: The model used to generate the moderation results. + + :param results: A list of moderation objects properties: id: + title: Id type: string - description: >- - The unique identifier for the moderation request. model: + title: Model type: string - description: >- - The model used to generate the moderation results. results: - type: array items: - $ref: '#/components/schemas/ModerationObjectResults' - description: A list of moderation objects - additionalProperties: false + $ref: '#/$defs/ModerationObjectResults' + title: Results + type: array required: - id - model - results title: ModerationObject - description: A moderation object. - ModerationObjectResults: type: object - properties: - flagged: - type: boolean - description: >- - Whether any of the below categories are flagged. - categories: - type: object - additionalProperties: - type: boolean - description: >- - A list of the categories, and whether they are flagged or not. - category_applied_input_types: - type: object - additionalProperties: - type: array - items: - type: string - description: >- - A list of the categories along with the input type(s) that the score applies - to. - category_scores: - type: object - additionalProperties: - type: number - description: >- - A list of the categories along with their scores as predicted by model. - user_message: - type: string - metadata: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - additionalProperties: false - required: - - flagged - - metadata - title: ModerationObjectResults - description: A moderation object. - Prompt: - type: object - properties: - prompt: - type: string - description: >- - The system prompt text with variable placeholders. Variables are only - supported when using the Responses API. - version: - type: integer - description: >- - Version (integer starting at 1, incremented on save) - prompt_id: - type: string - description: >- - Unique identifier formatted as 'pmpt_<48-digit-hash>' - variables: - type: array - items: - type: string - description: >- - List of prompt variable names that can be used in the prompt template - is_default: - type: boolean - default: false - description: >- - Boolean indicating whether this version is the default version for this - prompt - additionalProperties: false - required: - - version - - prompt_id - - variables - - is_default - title: Prompt - description: >- - A prompt resource representing a stored OpenAI Compatible prompt template - in Llama Stack. ListPromptsResponse: - type: object + $defs: + Prompt: + description: >- + A prompt resource representing a stored OpenAI Compatible prompt template + in Llama Stack. + + + :param prompt: The system prompt text with variable placeholders. Variables + are only supported when using the Responses API. + + :param version: Version (integer starting at 1, incremented on save) + + :param prompt_id: Unique identifier formatted as 'pmpt_<48-digit-hash>' + + :param variables: List of prompt variable names that can be used in the + prompt template + + :param is_default: Boolean indicating whether this version is the default + version for this prompt + properties: + prompt: + anyOf: + - type: string + - type: 'null' + description: >- + The system prompt with variable placeholders + title: Prompt + version: + description: >- + Version (integer starting at 1, incremented on save) + minimum: 1 + title: Version + type: integer + prompt_id: + description: >- + Unique identifier in format 'pmpt_<48-digit-hash>' + title: Prompt Id + type: string + variables: + description: >- + List of variable names that can be used in the prompt template + items: + type: string + title: Variables + type: array + is_default: + default: false + description: >- + Boolean indicating whether this version is the default version + title: Is Default + type: boolean + required: + - version + - prompt_id + title: Prompt + type: object + description: Response model to list prompts. properties: data: - type: array items: - $ref: '#/components/schemas/Prompt' - additionalProperties: false + $ref: '#/$defs/Prompt' + title: Data + type: array required: - data title: ListPromptsResponse - description: Response model to list prompts. + type: object CreatePromptRequest: type: object + Prompt: + description: >- + A prompt resource representing a stored OpenAI Compatible prompt template + in Llama Stack. + + + :param prompt: The system prompt text with variable placeholders. Variables + are only supported when using the Responses API. + + :param version: Version (integer starting at 1, incremented on save) + + :param prompt_id: Unique identifier formatted as 'pmpt_<48-digit-hash>' + + :param variables: List of prompt variable names that can be used in the prompt + template + + :param is_default: Boolean indicating whether this version is the default + version for this prompt properties: prompt: - type: string + anyOf: + - type: string + - type: 'null' description: >- - The prompt text content with variable placeholders. + The system prompt with variable placeholders + title: Prompt + version: + description: >- + Version (integer starting at 1, incremented on save) + minimum: 1 + title: Version + type: integer + prompt_id: + description: >- + Unique identifier in format 'pmpt_<48-digit-hash>' + title: Prompt Id + type: string variables: - type: array + description: >- + List of variable names that can be used in the prompt template items: type: string + title: Variables + type: array + is_default: + default: false description: >- - List of variable names that can be used in the prompt template. - additionalProperties: false + Boolean indicating whether this version is the default version + title: Is Default + type: boolean required: - - prompt - title: CreatePromptRequest + - version + - prompt_id + title: Prompt + type: object UpdatePromptRequest: type: object - properties: - prompt: - type: string - description: The updated prompt text content. - version: - type: integer - description: >- - The current version of the prompt being updated. - variables: - type: array - items: - type: string - description: >- - Updated list of variable names that can be used in the prompt template. - set_as_default: - type: boolean - description: >- - Set the new version as the default (default=True). - additionalProperties: false - required: - - prompt - - version - - set_as_default - title: UpdatePromptRequest SetDefaultVersionRequest: type: object + ListProvidersResponse: + $defs: + ProviderInfo: + description: >- + Information about a registered provider including its configuration and + health status. + + + :param api: The API name this provider implements + + :param provider_id: Unique identifier for the provider + + :param provider_type: The type of provider implementation + + :param config: Configuration parameters for the provider + + :param health: Current health status of the provider + properties: + api: + title: Api + type: string + provider_id: + title: Provider Id + type: string + provider_type: + title: Provider Type + type: string + config: + additionalProperties: true + title: Config + type: object + health: + additionalProperties: true + title: Health + type: object + required: + - api + - provider_id + - provider_type + - config + - health + title: ProviderInfo + type: object + description: >- + Response containing a list of all available providers. + + + :param data: List of provider information objects properties: - version: - type: integer - description: The version to set as default. - additionalProperties: false + data: + items: + $ref: '#/$defs/ProviderInfo' + title: Data + type: array required: - - version - title: SetDefaultVersionRequest - ProviderInfo: + - data + title: ListProvidersResponse type: object + ProviderInfo: + description: >- + Information about a registered provider including its configuration and health + status. + + + :param api: The API name this provider implements + + :param provider_id: Unique identifier for the provider + + :param provider_type: The type of provider implementation + + :param config: Configuration parameters for the provider + + :param health: Current health status of the provider properties: api: + title: Api type: string - description: The API name this provider implements provider_id: + title: Provider Id type: string - description: Unique identifier for the provider provider_type: + title: Provider Type type: string - description: The type of provider implementation config: + additionalProperties: true + title: Config type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - Configuration parameters for the provider health: + additionalProperties: true + title: Health type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: Current health status of the provider - additionalProperties: false required: - api - provider_id @@ -7172,59 +9049,1233 @@ components: - config - health title: ProviderInfo - description: >- - Information about a registered provider including its configuration and health - status. - ListProvidersResponse: type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/ProviderInfo' - description: List of provider information objects - additionalProperties: false - required: - - data - title: ListProvidersResponse - description: >- - Response containing a list of all available providers. ListOpenAIResponseObject: - type: object + $defs: + AllowedToolsFilter: + description: >- + Filter configuration for restricting which MCP tools can be used. + + + :param tool_names: (Optional) List of specific tool names that are allowed + properties: + tool_names: + anyOf: + - items: + type: string + type: array + - type: 'null' + title: Tool Names + title: AllowedToolsFilter + type: object + MCPListToolsTool: + description: >- + Tool definition returned by MCP list tools operation. + + + :param input_schema: JSON schema defining the tool's input parameters + + :param name: Name of the tool + + :param description: (Optional) Description of what the tool does + properties: + input_schema: + additionalProperties: true + title: Input Schema + type: object + name: + title: Name + type: string + description: + anyOf: + - type: string + - type: 'null' + title: Description + required: + - input_schema + - name + title: MCPListToolsTool + type: object + OpenAIResponseAnnotationCitation: + description: >- + URL citation annotation for referencing external web resources. + + + :param type: Annotation type identifier, always "url_citation" + + :param end_index: End position of the citation span in the content + + :param start_index: Start position of the citation span in the content + + :param title: Title of the referenced web resource + + :param url: URL of the referenced web resource + properties: + type: + const: url_citation + default: url_citation + title: Type + type: string + end_index: + title: End Index + type: integer + start_index: + title: Start Index + type: integer + title: + title: Title + type: string + url: + title: Url + type: string + required: + - end_index + - start_index + - title + - url + title: OpenAIResponseAnnotationCitation + type: object + "OpenAIResponseAnnotationContainerFileCitation": + properties: + type: + const: container_file_citation + default: container_file_citation + title: Type + type: string + container_id: + title: Container Id + type: string + end_index: + title: End Index + type: integer + file_id: + title: File Id + type: string + filename: + title: Filename + type: string + start_index: + title: Start Index + type: integer + required: + - container_id + - end_index + - file_id + - filename + - start_index + title: >- + OpenAIResponseAnnotationContainerFileCitation + type: object + OpenAIResponseAnnotationFileCitation: + description: >- + File citation annotation for referencing specific files in response content. + + + :param type: Annotation type identifier, always "file_citation" + + :param file_id: Unique identifier of the referenced file + + :param filename: Name of the referenced file + + :param index: Position index of the citation within the content + properties: + type: + const: file_citation + default: file_citation + title: Type + type: string + file_id: + title: File Id + type: string + filename: + title: Filename + type: string + index: + title: Index + type: integer + required: + - file_id + - filename + - index + title: OpenAIResponseAnnotationFileCitation + type: object + OpenAIResponseAnnotationFilePath: + properties: + type: + const: file_path + default: file_path + title: Type + type: string + file_id: + title: File Id + type: string + index: + title: Index + type: integer + required: + - file_id + - index + title: OpenAIResponseAnnotationFilePath + type: object + OpenAIResponseContentPartRefusal: + description: >- + Refusal content within a streamed response part. + + + :param type: Content part type identifier, always "refusal" + + :param refusal: Refusal text supplied by the model + properties: + type: + const: refusal + default: refusal + title: Type + type: string + refusal: + title: Refusal + type: string + required: + - refusal + title: OpenAIResponseContentPartRefusal + type: object + OpenAIResponseError: + description: >- + Error details for failed OpenAI response requests. + + + :param code: Error code identifying the type of failure + + :param message: Human-readable error message describing the failure + properties: + code: + title: Code + type: string + message: + title: Message + type: string + required: + - code + - message + title: OpenAIResponseError + type: object + "OpenAIResponseInputFunctionToolCallOutput": + description: >- + This represents the output of a function call that gets passed back to + the model. + properties: + call_id: + title: Call Id + type: string + output: + title: Output + type: string + type: + const: function_call_output + default: function_call_output + title: Type + type: string + id: + anyOf: + - type: string + - type: 'null' + title: Id + status: + anyOf: + - type: string + - type: 'null' + title: Status + required: + - call_id + - output + title: >- + OpenAIResponseInputFunctionToolCallOutput + type: object + OpenAIResponseInputMessageContentImage: + description: >- + Image content for input messages in OpenAI response format. + + + :param detail: Level of detail for image processing, can be "low", "high", + or "auto" + + :param type: Content type identifier, always "input_image" + + :param image_url: (Optional) URL of the image content + properties: + detail: + anyOf: + - const: low + type: string + - const: high + type: string + - const: auto + type: string + default: auto + title: Detail + type: + const: input_image + default: input_image + title: Type + type: string + image_url: + anyOf: + - type: string + - type: 'null' + title: Image Url + title: OpenAIResponseInputMessageContentImage + type: object + OpenAIResponseInputMessageContentText: + description: >- + Text content for input messages in OpenAI response format. + + + :param text: The text content of the input message + + :param type: Content type identifier, always "input_text" + properties: + text: + title: Text + type: string + type: + const: input_text + default: input_text + title: Type + type: string + required: + - text + title: OpenAIResponseInputMessageContentText + type: object + OpenAIResponseInputToolFileSearch: + description: >- + File search tool configuration for OpenAI response inputs. + + + :param type: Tool type identifier, always "file_search" + + :param vector_store_ids: List of vector store identifiers to search within + + :param filters: (Optional) Additional filters to apply to the search + + :param max_num_results: (Optional) Maximum number of search results to + return (1-50) + + :param ranking_options: (Optional) Options for ranking and scoring search + results + properties: + type: + const: file_search + default: file_search + title: Type + type: string + vector_store_ids: + items: + type: string + title: Vector Store Ids + type: array + filters: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Filters + max_num_results: + anyOf: + - maximum: 50 + minimum: 1 + type: integer + - type: 'null' + default: 10 + title: Max Num Results + ranking_options: + anyOf: + - $ref: '#/$defs/SearchRankingOptions' + - type: 'null' + required: + - vector_store_ids + title: OpenAIResponseInputToolFileSearch + type: object + OpenAIResponseInputToolFunction: + description: >- + Function tool configuration for OpenAI response inputs. + + + :param type: Tool type identifier, always "function" + + :param name: Name of the function that can be called + + :param description: (Optional) Description of what the function does + + :param parameters: (Optional) JSON schema defining the function's parameters + + :param strict: (Optional) Whether to enforce strict parameter validation + properties: + type: + const: function + default: function + title: Type + type: string + name: + title: Name + type: string + description: + anyOf: + - type: string + - type: 'null' + title: Description + parameters: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Parameters + strict: + anyOf: + - type: boolean + - type: 'null' + title: Strict + required: + - name + - parameters + title: OpenAIResponseInputToolFunction + type: object + OpenAIResponseInputToolWebSearch: + description: >- + Web search tool configuration for OpenAI response inputs. + + + :param type: Web search tool type variant to use + + :param search_context_size: (Optional) Size of search context, must be + "low", "medium", or "high" + properties: + type: + anyOf: + - const: web_search + type: string + - const: web_search_preview + type: string + - const: web_search_preview_2025_03_11 + type: string + default: web_search + title: Type + search_context_size: + anyOf: + - pattern: ^low|medium|high$ + type: string + - type: 'null' + default: medium + title: Search Context Size + title: OpenAIResponseInputToolWebSearch + type: object + OpenAIResponseMCPApprovalRequest: + description: >- + A request for human approval of a tool invocation. + properties: + arguments: + title: Arguments + type: string + id: + title: Id + type: string + name: + title: Name + type: string + server_label: + title: Server Label + type: string + type: + const: mcp_approval_request + default: mcp_approval_request + title: Type + type: string + required: + - arguments + - id + - name + - server_label + title: OpenAIResponseMCPApprovalRequest + type: object + OpenAIResponseMCPApprovalResponse: + description: A response to an MCP approval request. + properties: + approval_request_id: + title: Approval Request Id + type: string + approve: + title: Approve + type: boolean + type: + const: mcp_approval_response + default: mcp_approval_response + title: Type + type: string + id: + anyOf: + - type: string + - type: 'null' + title: Id + reason: + anyOf: + - type: string + - type: 'null' + title: Reason + required: + - approval_request_id + - approve + title: OpenAIResponseMCPApprovalResponse + type: object + OpenAIResponseMessage: + description: >- + Corresponds to the various Message types in the Responses API. + + They are all under one type because the Responses API gives them all + + the same "type" value, and there is no way to tell them apart in certain + + scenarios. + properties: + content: + anyOf: + - type: string + - items: + discriminator: + mapping: + input_image: >- + #/$defs/OpenAIResponseInputMessageContentImage + input_text: >- + #/$defs/OpenAIResponseInputMessageContentText + propertyName: type + oneOf: + - $ref: >- + #/$defs/OpenAIResponseInputMessageContentText + - $ref: >- + #/$defs/OpenAIResponseInputMessageContentImage + type: array + - items: + discriminator: + mapping: + output_text: >- + #/$defs/OpenAIResponseOutputMessageContentOutputText + refusal: '#/$defs/OpenAIResponseContentPartRefusal' + propertyName: type + oneOf: + - $ref: >- + #/$defs/OpenAIResponseOutputMessageContentOutputText + - $ref: '#/$defs/OpenAIResponseContentPartRefusal' + type: array + title: Content + role: + anyOf: + - const: system + type: string + - const: developer + type: string + - const: user + type: string + - const: assistant + type: string + title: Role + type: + const: message + default: message + title: Type + type: string + id: + anyOf: + - type: string + - type: 'null' + title: Id + status: + anyOf: + - type: string + - type: 'null' + title: Status + required: + - content + - role + title: OpenAIResponseMessage + type: object + OpenAIResponseObjectWithInput: + description: >- + OpenAI response object extended with input context information. + + + :param input: List of input items that led to this response + properties: + created_at: + title: Created At + type: integer + error: + anyOf: + - $ref: '#/$defs/OpenAIResponseError' + - type: 'null' + id: + title: Id + type: string + model: + title: Model + type: string + object: + const: response + default: response + title: Object + type: string + output: + items: + discriminator: + mapping: + file_search_call: >- + #/$defs/OpenAIResponseOutputMessageFileSearchToolCall + function_call: >- + #/$defs/OpenAIResponseOutputMessageFunctionToolCall + mcp_approval_request: '#/$defs/OpenAIResponseMCPApprovalRequest' + mcp_call: >- + #/$defs/OpenAIResponseOutputMessageMCPCall + mcp_list_tools: >- + #/$defs/OpenAIResponseOutputMessageMCPListTools + message: '#/$defs/OpenAIResponseMessage' + web_search_call: >- + #/$defs/OpenAIResponseOutputMessageWebSearchToolCall + propertyName: type + oneOf: + - $ref: '#/$defs/OpenAIResponseMessage' + - $ref: >- + #/$defs/OpenAIResponseOutputMessageWebSearchToolCall + - $ref: >- + #/$defs/OpenAIResponseOutputMessageFileSearchToolCall + - $ref: >- + #/$defs/OpenAIResponseOutputMessageFunctionToolCall + - $ref: >- + #/$defs/OpenAIResponseOutputMessageMCPCall + - $ref: >- + #/$defs/OpenAIResponseOutputMessageMCPListTools + - $ref: '#/$defs/OpenAIResponseMCPApprovalRequest' + title: Output + type: array + parallel_tool_calls: + default: false + title: Parallel Tool Calls + type: boolean + previous_response_id: + anyOf: + - type: string + - type: 'null' + title: Previous Response Id + status: + title: Status + type: string + temperature: + anyOf: + - type: number + - type: 'null' + title: Temperature + text: + $ref: '#/$defs/OpenAIResponseText' + default: + format: + type: text + top_p: + anyOf: + - type: number + - type: 'null' + title: Top P + tools: + anyOf: + - items: + discriminator: + mapping: + file_search: >- + #/$defs/OpenAIResponseInputToolFileSearch + function: '#/$defs/OpenAIResponseInputToolFunction' + mcp: '#/$defs/OpenAIResponseToolMCP' + web_search: '#/$defs/OpenAIResponseInputToolWebSearch' + web_search_preview: '#/$defs/OpenAIResponseInputToolWebSearch' + web_search_preview_2025_03_11: '#/$defs/OpenAIResponseInputToolWebSearch' + propertyName: type + oneOf: + - $ref: '#/$defs/OpenAIResponseInputToolWebSearch' + - $ref: >- + #/$defs/OpenAIResponseInputToolFileSearch + - $ref: '#/$defs/OpenAIResponseInputToolFunction' + - $ref: '#/$defs/OpenAIResponseToolMCP' + type: array + - type: 'null' + title: Tools + truncation: + anyOf: + - type: string + - type: 'null' + title: Truncation + usage: + anyOf: + - $ref: '#/$defs/OpenAIResponseUsage' + - type: 'null' + instructions: + anyOf: + - type: string + - type: 'null' + title: Instructions + input: + items: + anyOf: + - discriminator: + mapping: + file_search_call: >- + #/$defs/OpenAIResponseOutputMessageFileSearchToolCall + function_call: >- + #/$defs/OpenAIResponseOutputMessageFunctionToolCall + mcp_approval_request: '#/$defs/OpenAIResponseMCPApprovalRequest' + mcp_call: >- + #/$defs/OpenAIResponseOutputMessageMCPCall + mcp_list_tools: >- + #/$defs/OpenAIResponseOutputMessageMCPListTools + message: '#/$defs/OpenAIResponseMessage' + web_search_call: >- + #/$defs/OpenAIResponseOutputMessageWebSearchToolCall + propertyName: type + oneOf: + - $ref: '#/$defs/OpenAIResponseMessage' + - $ref: >- + #/$defs/OpenAIResponseOutputMessageWebSearchToolCall + - $ref: >- + #/$defs/OpenAIResponseOutputMessageFileSearchToolCall + - $ref: >- + #/$defs/OpenAIResponseOutputMessageFunctionToolCall + - $ref: >- + #/$defs/OpenAIResponseOutputMessageMCPCall + - $ref: >- + #/$defs/OpenAIResponseOutputMessageMCPListTools + - $ref: '#/$defs/OpenAIResponseMCPApprovalRequest' + - $ref: >- + #/$defs/OpenAIResponseInputFunctionToolCallOutput + - $ref: >- + #/$defs/OpenAIResponseMCPApprovalResponse + - $ref: '#/$defs/OpenAIResponseMessage' + title: Input + type: array + required: + - created_at + - id + - model + - output + - status + - input + title: OpenAIResponseObjectWithInput + type: object + "OpenAIResponseOutputMessageContentOutputText": + properties: + text: + title: Text + type: string + type: + const: output_text + default: output_text + title: Type + type: string + annotations: + items: + discriminator: + mapping: + container_file_citation: >- + #/$defs/OpenAIResponseAnnotationContainerFileCitation + file_citation: >- + #/$defs/OpenAIResponseAnnotationFileCitation + file_path: '#/$defs/OpenAIResponseAnnotationFilePath' + url_citation: '#/$defs/OpenAIResponseAnnotationCitation' + propertyName: type + oneOf: + - $ref: >- + #/$defs/OpenAIResponseAnnotationFileCitation + - $ref: '#/$defs/OpenAIResponseAnnotationCitation' + - $ref: >- + #/$defs/OpenAIResponseAnnotationContainerFileCitation + - $ref: '#/$defs/OpenAIResponseAnnotationFilePath' + title: Annotations + type: array + required: + - text + title: >- + OpenAIResponseOutputMessageContentOutputText + type: object + "OpenAIResponseOutputMessageFileSearchToolCall": + description: >- + File search tool call output message for OpenAI responses. + + + :param id: Unique identifier for this tool call + + :param queries: List of search queries executed + + :param status: Current status of the file search operation + + :param type: Tool call type identifier, always "file_search_call" + + :param results: (Optional) Search results returned by the file search + operation + properties: + id: + title: Id + type: string + queries: + items: + type: string + title: Queries + type: array + status: + title: Status + type: string + type: + const: file_search_call + default: file_search_call + title: Type + type: string + results: + anyOf: + - items: + $ref: >- + #/$defs/OpenAIResponseOutputMessageFileSearchToolCallResults + type: array + - type: 'null' + title: Results + required: + - id + - queries + - status + title: >- + OpenAIResponseOutputMessageFileSearchToolCall + type: object + "OpenAIResponseOutputMessageFileSearchToolCallResults": + description: >- + Search results returned by the file search operation. + + + :param attributes: (Optional) Key-value attributes associated with the + file + + :param file_id: Unique identifier of the file containing the result + + :param filename: Name of the file containing the result + + :param score: Relevance score for this search result (between 0 and 1) + + :param text: Text content of the search result + properties: + attributes: + additionalProperties: true + title: Attributes + type: object + file_id: + title: File Id + type: string + filename: + title: Filename + type: string + score: + title: Score + type: number + text: + title: Text + type: string + required: + - attributes + - file_id + - filename + - score + - text + title: >- + OpenAIResponseOutputMessageFileSearchToolCallResults + type: object + "OpenAIResponseOutputMessageFunctionToolCall": + description: >- + Function tool call output message for OpenAI responses. + + + :param call_id: Unique identifier for the function call + + :param name: Name of the function being called + + :param arguments: JSON string containing the function arguments + + :param type: Tool call type identifier, always "function_call" + + :param id: (Optional) Additional identifier for the tool call + + :param status: (Optional) Current status of the function call execution + properties: + call_id: + title: Call Id + type: string + name: + title: Name + type: string + arguments: + title: Arguments + type: string + type: + const: function_call + default: function_call + title: Type + type: string + id: + anyOf: + - type: string + - type: 'null' + title: Id + status: + anyOf: + - type: string + - type: 'null' + title: Status + required: + - call_id + - name + - arguments + title: >- + OpenAIResponseOutputMessageFunctionToolCall + type: object + OpenAIResponseOutputMessageMCPCall: + description: >- + Model Context Protocol (MCP) call output message for OpenAI responses. + + + :param id: Unique identifier for this MCP call + + :param type: Tool call type identifier, always "mcp_call" + + :param arguments: JSON string containing the MCP call arguments + + :param name: Name of the MCP method being called + + :param server_label: Label identifying the MCP server handling the call + + :param error: (Optional) Error message if the MCP call failed + + :param output: (Optional) Output result from the successful MCP call + properties: + id: + title: Id + type: string + type: + const: mcp_call + default: mcp_call + title: Type + type: string + arguments: + title: Arguments + type: string + name: + title: Name + type: string + server_label: + title: Server Label + type: string + error: + anyOf: + - type: string + - type: 'null' + title: Error + output: + anyOf: + - type: string + - type: 'null' + title: Output + required: + - id + - arguments + - name + - server_label + title: OpenAIResponseOutputMessageMCPCall + type: object + OpenAIResponseOutputMessageMCPListTools: + description: >- + MCP list tools output message containing available tools from an MCP server. + + + :param id: Unique identifier for this MCP list tools operation + + :param type: Tool call type identifier, always "mcp_list_tools" + + :param server_label: Label identifying the MCP server providing the tools + + :param tools: List of available tools provided by the MCP server + properties: + id: + title: Id + type: string + type: + const: mcp_list_tools + default: mcp_list_tools + title: Type + type: string + server_label: + title: Server Label + type: string + tools: + items: + $ref: '#/$defs/MCPListToolsTool' + title: Tools + type: array + required: + - id + - server_label + - tools + title: OpenAIResponseOutputMessageMCPListTools + type: object + "OpenAIResponseOutputMessageWebSearchToolCall": + description: >- + Web search tool call output message for OpenAI responses. + + + :param id: Unique identifier for this tool call + + :param status: Current status of the web search operation + + :param type: Tool call type identifier, always "web_search_call" + properties: + id: + title: Id + type: string + status: + title: Status + type: string + type: + const: web_search_call + default: web_search_call + title: Type + type: string + required: + - id + - status + title: >- + OpenAIResponseOutputMessageWebSearchToolCall + type: object + OpenAIResponseText: + description: >- + Text response configuration for OpenAI responses. + + + :param format: (Optional) Text format configuration specifying output + format requirements + properties: + format: + anyOf: + - $ref: '#/$defs/OpenAIResponseTextFormat' + - type: 'null' + title: OpenAIResponseText + type: object + OpenAIResponseTextFormat: + description: >- + Configuration for Responses API text format. + + + :param type: Must be "text", "json_schema", or "json_object" to identify + the format type + + :param name: The name of the response format. Only used for json_schema. + + :param schema: The JSON schema the response should conform to. In a Python + SDK, this is often a `pydantic` model. Only used for json_schema. + + :param description: (Optional) A description of the response format. Only + used for json_schema. + + :param strict: (Optional) Whether to strictly enforce the JSON schema. + If true, the response must match the schema exactly. Only used for json_schema. + properties: + type: + anyOf: + - const: text + type: string + - const: json_schema + type: string + - const: json_object + type: string + title: Type + name: + anyOf: + - type: string + - type: 'null' + title: Name + schema: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Schema + description: + anyOf: + - type: string + - type: 'null' + title: Description + strict: + anyOf: + - type: boolean + - type: 'null' + title: Strict + title: OpenAIResponseTextFormat + type: object + OpenAIResponseToolMCP: + description: >- + Model Context Protocol (MCP) tool configuration for OpenAI response object. + + + :param type: Tool type identifier, always "mcp" + + :param server_label: Label to identify this MCP server + + :param allowed_tools: (Optional) Restriction on which tools can be used + from this server + properties: + type: + const: mcp + default: mcp + title: Type + type: string + server_label: + title: Server Label + type: string + allowed_tools: + anyOf: + - items: + type: string + type: array + - $ref: '#/$defs/AllowedToolsFilter' + - type: 'null' + title: Allowed Tools + required: + - server_label + title: OpenAIResponseToolMCP + type: object + OpenAIResponseUsage: + description: >- + Usage information for OpenAI response. + + + :param input_tokens: Number of tokens in the input + + :param output_tokens: Number of tokens in the output + + :param total_tokens: Total tokens used (input + output) + + :param input_tokens_details: Detailed breakdown of input token usage + + :param output_tokens_details: Detailed breakdown of output token usage + properties: + input_tokens: + title: Input Tokens + type: integer + output_tokens: + title: Output Tokens + type: integer + total_tokens: + title: Total Tokens + type: integer + input_tokens_details: + anyOf: + - $ref: >- + #/$defs/OpenAIResponseUsageInputTokensDetails + - type: 'null' + output_tokens_details: + anyOf: + - $ref: >- + #/$defs/OpenAIResponseUsageOutputTokensDetails + - type: 'null' + required: + - input_tokens + - output_tokens + - total_tokens + title: OpenAIResponseUsage + type: object + OpenAIResponseUsageInputTokensDetails: + description: >- + Token details for input tokens in OpenAI response usage. + + + :param cached_tokens: Number of tokens retrieved from cache + properties: + cached_tokens: + anyOf: + - type: integer + - type: 'null' + title: Cached Tokens + title: OpenAIResponseUsageInputTokensDetails + type: object + OpenAIResponseUsageOutputTokensDetails: + description: >- + Token details for output tokens in OpenAI response usage. + + + :param reasoning_tokens: Number of tokens used for reasoning (o1/o3 models) + properties: + reasoning_tokens: + anyOf: + - type: integer + - type: 'null' + title: Reasoning Tokens + title: OpenAIResponseUsageOutputTokensDetails + type: object + SearchRankingOptions: + description: >- + Options for ranking and filtering search results. + + + :param ranker: (Optional) Name of the ranking algorithm to use + + :param score_threshold: (Optional) Minimum relevance score threshold for + results + properties: + ranker: + anyOf: + - type: string + - type: 'null' + title: Ranker + score_threshold: + anyOf: + - type: number + - type: 'null' + default: 0.0 + title: Score Threshold + title: SearchRankingOptions + type: object + description: >- + Paginated list of OpenAI response objects with navigation metadata. + + + :param data: List of response objects with their input context + + :param has_more: Whether there are more results available beyond this page + + :param first_id: Identifier of the first item in this page + + :param last_id: Identifier of the last item in this page + + :param object: Object type identifier, always "list" properties: data: - type: array items: - $ref: '#/components/schemas/OpenAIResponseObjectWithInput' - description: >- - List of response objects with their input context + $ref: '#/$defs/OpenAIResponseObjectWithInput' + title: Data + type: array has_more: + title: Has More type: boolean - description: >- - Whether there are more results available beyond this page first_id: + title: First Id type: string - description: >- - Identifier of the first item in this page last_id: + title: Last Id type: string - description: Identifier of the last item in this page object: - type: string const: list default: list - description: Object type identifier, always "list" - additionalProperties: false + title: Object + type: string required: - data - has_more - first_id - last_id - - object title: ListOpenAIResponseObject - description: >- - Paginated list of OpenAI response objects with navigation metadata. - OpenAIResponseError: type: object properties: code: @@ -7804,39 +10855,1055 @@ components: - model title: CreateOpenaiResponseRequest OpenAIResponseObject: - type: object + $defs: + AllowedToolsFilter: + description: >- + Filter configuration for restricting which MCP tools can be used. + + + :param tool_names: (Optional) List of specific tool names that are allowed + properties: + tool_names: + anyOf: + - items: + type: string + type: array + - type: 'null' + title: Tool Names + title: AllowedToolsFilter + type: object + MCPListToolsTool: + description: >- + Tool definition returned by MCP list tools operation. + + + :param input_schema: JSON schema defining the tool's input parameters + + :param name: Name of the tool + + :param description: (Optional) Description of what the tool does + properties: + input_schema: + additionalProperties: true + title: Input Schema + type: object + name: + title: Name + type: string + description: + anyOf: + - type: string + - type: 'null' + title: Description + required: + - input_schema + - name + title: MCPListToolsTool + type: object + OpenAIResponseAnnotationCitation: + description: >- + URL citation annotation for referencing external web resources. + + + :param type: Annotation type identifier, always "url_citation" + + :param end_index: End position of the citation span in the content + + :param start_index: Start position of the citation span in the content + + :param title: Title of the referenced web resource + + :param url: URL of the referenced web resource + properties: + type: + const: url_citation + default: url_citation + title: Type + type: string + end_index: + title: End Index + type: integer + start_index: + title: Start Index + type: integer + title: + title: Title + type: string + url: + title: Url + type: string + required: + - end_index + - start_index + - title + - url + title: OpenAIResponseAnnotationCitation + type: object + "OpenAIResponseAnnotationContainerFileCitation": + properties: + type: + const: container_file_citation + default: container_file_citation + title: Type + type: string + container_id: + title: Container Id + type: string + end_index: + title: End Index + type: integer + file_id: + title: File Id + type: string + filename: + title: Filename + type: string + start_index: + title: Start Index + type: integer + required: + - container_id + - end_index + - file_id + - filename + - start_index + title: >- + OpenAIResponseAnnotationContainerFileCitation + type: object + OpenAIResponseAnnotationFileCitation: + description: >- + File citation annotation for referencing specific files in response content. + + + :param type: Annotation type identifier, always "file_citation" + + :param file_id: Unique identifier of the referenced file + + :param filename: Name of the referenced file + + :param index: Position index of the citation within the content + properties: + type: + const: file_citation + default: file_citation + title: Type + type: string + file_id: + title: File Id + type: string + filename: + title: Filename + type: string + index: + title: Index + type: integer + required: + - file_id + - filename + - index + title: OpenAIResponseAnnotationFileCitation + type: object + OpenAIResponseAnnotationFilePath: + properties: + type: + const: file_path + default: file_path + title: Type + type: string + file_id: + title: File Id + type: string + index: + title: Index + type: integer + required: + - file_id + - index + title: OpenAIResponseAnnotationFilePath + type: object + OpenAIResponseContentPartRefusal: + description: >- + Refusal content within a streamed response part. + + + :param type: Content part type identifier, always "refusal" + + :param refusal: Refusal text supplied by the model + properties: + type: + const: refusal + default: refusal + title: Type + type: string + refusal: + title: Refusal + type: string + required: + - refusal + title: OpenAIResponseContentPartRefusal + type: object + OpenAIResponseError: + description: >- + Error details for failed OpenAI response requests. + + + :param code: Error code identifying the type of failure + + :param message: Human-readable error message describing the failure + properties: + code: + title: Code + type: string + message: + title: Message + type: string + required: + - code + - message + title: OpenAIResponseError + type: object + OpenAIResponseInputMessageContentImage: + description: >- + Image content for input messages in OpenAI response format. + + + :param detail: Level of detail for image processing, can be "low", "high", + or "auto" + + :param type: Content type identifier, always "input_image" + + :param image_url: (Optional) URL of the image content + properties: + detail: + anyOf: + - const: low + type: string + - const: high + type: string + - const: auto + type: string + default: auto + title: Detail + type: + const: input_image + default: input_image + title: Type + type: string + image_url: + anyOf: + - type: string + - type: 'null' + title: Image Url + title: OpenAIResponseInputMessageContentImage + type: object + OpenAIResponseInputMessageContentText: + description: >- + Text content for input messages in OpenAI response format. + + + :param text: The text content of the input message + + :param type: Content type identifier, always "input_text" + properties: + text: + title: Text + type: string + type: + const: input_text + default: input_text + title: Type + type: string + required: + - text + title: OpenAIResponseInputMessageContentText + type: object + OpenAIResponseInputToolFileSearch: + description: >- + File search tool configuration for OpenAI response inputs. + + + :param type: Tool type identifier, always "file_search" + + :param vector_store_ids: List of vector store identifiers to search within + + :param filters: (Optional) Additional filters to apply to the search + + :param max_num_results: (Optional) Maximum number of search results to + return (1-50) + + :param ranking_options: (Optional) Options for ranking and scoring search + results + properties: + type: + const: file_search + default: file_search + title: Type + type: string + vector_store_ids: + items: + type: string + title: Vector Store Ids + type: array + filters: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Filters + max_num_results: + anyOf: + - maximum: 50 + minimum: 1 + type: integer + - type: 'null' + default: 10 + title: Max Num Results + ranking_options: + anyOf: + - $ref: '#/$defs/SearchRankingOptions' + - type: 'null' + required: + - vector_store_ids + title: OpenAIResponseInputToolFileSearch + type: object + OpenAIResponseInputToolFunction: + description: >- + Function tool configuration for OpenAI response inputs. + + + :param type: Tool type identifier, always "function" + + :param name: Name of the function that can be called + + :param description: (Optional) Description of what the function does + + :param parameters: (Optional) JSON schema defining the function's parameters + + :param strict: (Optional) Whether to enforce strict parameter validation + properties: + type: + const: function + default: function + title: Type + type: string + name: + title: Name + type: string + description: + anyOf: + - type: string + - type: 'null' + title: Description + parameters: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Parameters + strict: + anyOf: + - type: boolean + - type: 'null' + title: Strict + required: + - name + - parameters + title: OpenAIResponseInputToolFunction + type: object + OpenAIResponseInputToolWebSearch: + description: >- + Web search tool configuration for OpenAI response inputs. + + + :param type: Web search tool type variant to use + + :param search_context_size: (Optional) Size of search context, must be + "low", "medium", or "high" + properties: + type: + anyOf: + - const: web_search + type: string + - const: web_search_preview + type: string + - const: web_search_preview_2025_03_11 + type: string + default: web_search + title: Type + search_context_size: + anyOf: + - pattern: ^low|medium|high$ + type: string + - type: 'null' + default: medium + title: Search Context Size + title: OpenAIResponseInputToolWebSearch + type: object + OpenAIResponseMCPApprovalRequest: + description: >- + A request for human approval of a tool invocation. + properties: + arguments: + title: Arguments + type: string + id: + title: Id + type: string + name: + title: Name + type: string + server_label: + title: Server Label + type: string + type: + const: mcp_approval_request + default: mcp_approval_request + title: Type + type: string + required: + - arguments + - id + - name + - server_label + title: OpenAIResponseMCPApprovalRequest + type: object + OpenAIResponseMessage: + description: >- + Corresponds to the various Message types in the Responses API. + + They are all under one type because the Responses API gives them all + + the same "type" value, and there is no way to tell them apart in certain + + scenarios. + properties: + content: + anyOf: + - type: string + - items: + discriminator: + mapping: + input_image: >- + #/$defs/OpenAIResponseInputMessageContentImage + input_text: >- + #/$defs/OpenAIResponseInputMessageContentText + propertyName: type + oneOf: + - $ref: >- + #/$defs/OpenAIResponseInputMessageContentText + - $ref: >- + #/$defs/OpenAIResponseInputMessageContentImage + type: array + - items: + discriminator: + mapping: + output_text: >- + #/$defs/OpenAIResponseOutputMessageContentOutputText + refusal: '#/$defs/OpenAIResponseContentPartRefusal' + propertyName: type + oneOf: + - $ref: >- + #/$defs/OpenAIResponseOutputMessageContentOutputText + - $ref: '#/$defs/OpenAIResponseContentPartRefusal' + type: array + title: Content + role: + anyOf: + - const: system + type: string + - const: developer + type: string + - const: user + type: string + - const: assistant + type: string + title: Role + type: + const: message + default: message + title: Type + type: string + id: + anyOf: + - type: string + - type: 'null' + title: Id + status: + anyOf: + - type: string + - type: 'null' + title: Status + required: + - content + - role + title: OpenAIResponseMessage + type: object + "OpenAIResponseOutputMessageContentOutputText": + properties: + text: + title: Text + type: string + type: + const: output_text + default: output_text + title: Type + type: string + annotations: + items: + discriminator: + mapping: + container_file_citation: >- + #/$defs/OpenAIResponseAnnotationContainerFileCitation + file_citation: >- + #/$defs/OpenAIResponseAnnotationFileCitation + file_path: '#/$defs/OpenAIResponseAnnotationFilePath' + url_citation: '#/$defs/OpenAIResponseAnnotationCitation' + propertyName: type + oneOf: + - $ref: >- + #/$defs/OpenAIResponseAnnotationFileCitation + - $ref: '#/$defs/OpenAIResponseAnnotationCitation' + - $ref: >- + #/$defs/OpenAIResponseAnnotationContainerFileCitation + - $ref: '#/$defs/OpenAIResponseAnnotationFilePath' + title: Annotations + type: array + required: + - text + title: >- + OpenAIResponseOutputMessageContentOutputText + type: object + "OpenAIResponseOutputMessageFileSearchToolCall": + description: >- + File search tool call output message for OpenAI responses. + + + :param id: Unique identifier for this tool call + + :param queries: List of search queries executed + + :param status: Current status of the file search operation + + :param type: Tool call type identifier, always "file_search_call" + + :param results: (Optional) Search results returned by the file search + operation + properties: + id: + title: Id + type: string + queries: + items: + type: string + title: Queries + type: array + status: + title: Status + type: string + type: + const: file_search_call + default: file_search_call + title: Type + type: string + results: + anyOf: + - items: + $ref: >- + #/$defs/OpenAIResponseOutputMessageFileSearchToolCallResults + type: array + - type: 'null' + title: Results + required: + - id + - queries + - status + title: >- + OpenAIResponseOutputMessageFileSearchToolCall + type: object + "OpenAIResponseOutputMessageFileSearchToolCallResults": + description: >- + Search results returned by the file search operation. + + + :param attributes: (Optional) Key-value attributes associated with the + file + + :param file_id: Unique identifier of the file containing the result + + :param filename: Name of the file containing the result + + :param score: Relevance score for this search result (between 0 and 1) + + :param text: Text content of the search result + properties: + attributes: + additionalProperties: true + title: Attributes + type: object + file_id: + title: File Id + type: string + filename: + title: Filename + type: string + score: + title: Score + type: number + text: + title: Text + type: string + required: + - attributes + - file_id + - filename + - score + - text + title: >- + OpenAIResponseOutputMessageFileSearchToolCallResults + type: object + "OpenAIResponseOutputMessageFunctionToolCall": + description: >- + Function tool call output message for OpenAI responses. + + + :param call_id: Unique identifier for the function call + + :param name: Name of the function being called + + :param arguments: JSON string containing the function arguments + + :param type: Tool call type identifier, always "function_call" + + :param id: (Optional) Additional identifier for the tool call + + :param status: (Optional) Current status of the function call execution + properties: + call_id: + title: Call Id + type: string + name: + title: Name + type: string + arguments: + title: Arguments + type: string + type: + const: function_call + default: function_call + title: Type + type: string + id: + anyOf: + - type: string + - type: 'null' + title: Id + status: + anyOf: + - type: string + - type: 'null' + title: Status + required: + - call_id + - name + - arguments + title: >- + OpenAIResponseOutputMessageFunctionToolCall + type: object + OpenAIResponseOutputMessageMCPCall: + description: >- + Model Context Protocol (MCP) call output message for OpenAI responses. + + + :param id: Unique identifier for this MCP call + + :param type: Tool call type identifier, always "mcp_call" + + :param arguments: JSON string containing the MCP call arguments + + :param name: Name of the MCP method being called + + :param server_label: Label identifying the MCP server handling the call + + :param error: (Optional) Error message if the MCP call failed + + :param output: (Optional) Output result from the successful MCP call + properties: + id: + title: Id + type: string + type: + const: mcp_call + default: mcp_call + title: Type + type: string + arguments: + title: Arguments + type: string + name: + title: Name + type: string + server_label: + title: Server Label + type: string + error: + anyOf: + - type: string + - type: 'null' + title: Error + output: + anyOf: + - type: string + - type: 'null' + title: Output + required: + - id + - arguments + - name + - server_label + title: OpenAIResponseOutputMessageMCPCall + type: object + OpenAIResponseOutputMessageMCPListTools: + description: >- + MCP list tools output message containing available tools from an MCP server. + + + :param id: Unique identifier for this MCP list tools operation + + :param type: Tool call type identifier, always "mcp_list_tools" + + :param server_label: Label identifying the MCP server providing the tools + + :param tools: List of available tools provided by the MCP server + properties: + id: + title: Id + type: string + type: + const: mcp_list_tools + default: mcp_list_tools + title: Type + type: string + server_label: + title: Server Label + type: string + tools: + items: + $ref: '#/$defs/MCPListToolsTool' + title: Tools + type: array + required: + - id + - server_label + - tools + title: OpenAIResponseOutputMessageMCPListTools + type: object + "OpenAIResponseOutputMessageWebSearchToolCall": + description: >- + Web search tool call output message for OpenAI responses. + + + :param id: Unique identifier for this tool call + + :param status: Current status of the web search operation + + :param type: Tool call type identifier, always "web_search_call" + properties: + id: + title: Id + type: string + status: + title: Status + type: string + type: + const: web_search_call + default: web_search_call + title: Type + type: string + required: + - id + - status + title: >- + OpenAIResponseOutputMessageWebSearchToolCall + type: object + OpenAIResponseText: + description: >- + Text response configuration for OpenAI responses. + + + :param format: (Optional) Text format configuration specifying output + format requirements + properties: + format: + anyOf: + - $ref: '#/$defs/OpenAIResponseTextFormat' + - type: 'null' + title: OpenAIResponseText + type: object + OpenAIResponseTextFormat: + description: >- + Configuration for Responses API text format. + + + :param type: Must be "text", "json_schema", or "json_object" to identify + the format type + + :param name: The name of the response format. Only used for json_schema. + + :param schema: The JSON schema the response should conform to. In a Python + SDK, this is often a `pydantic` model. Only used for json_schema. + + :param description: (Optional) A description of the response format. Only + used for json_schema. + + :param strict: (Optional) Whether to strictly enforce the JSON schema. + If true, the response must match the schema exactly. Only used for json_schema. + properties: + type: + anyOf: + - const: text + type: string + - const: json_schema + type: string + - const: json_object + type: string + title: Type + name: + anyOf: + - type: string + - type: 'null' + title: Name + schema: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Schema + description: + anyOf: + - type: string + - type: 'null' + title: Description + strict: + anyOf: + - type: boolean + - type: 'null' + title: Strict + title: OpenAIResponseTextFormat + type: object + OpenAIResponseToolMCP: + description: >- + Model Context Protocol (MCP) tool configuration for OpenAI response object. + + + :param type: Tool type identifier, always "mcp" + + :param server_label: Label to identify this MCP server + + :param allowed_tools: (Optional) Restriction on which tools can be used + from this server + properties: + type: + const: mcp + default: mcp + title: Type + type: string + server_label: + title: Server Label + type: string + allowed_tools: + anyOf: + - items: + type: string + type: array + - $ref: '#/$defs/AllowedToolsFilter' + - type: 'null' + title: Allowed Tools + required: + - server_label + title: OpenAIResponseToolMCP + type: object + OpenAIResponseUsage: + description: >- + Usage information for OpenAI response. + + + :param input_tokens: Number of tokens in the input + + :param output_tokens: Number of tokens in the output + + :param total_tokens: Total tokens used (input + output) + + :param input_tokens_details: Detailed breakdown of input token usage + + :param output_tokens_details: Detailed breakdown of output token usage + properties: + input_tokens: + title: Input Tokens + type: integer + output_tokens: + title: Output Tokens + type: integer + total_tokens: + title: Total Tokens + type: integer + input_tokens_details: + anyOf: + - $ref: >- + #/$defs/OpenAIResponseUsageInputTokensDetails + - type: 'null' + output_tokens_details: + anyOf: + - $ref: >- + #/$defs/OpenAIResponseUsageOutputTokensDetails + - type: 'null' + required: + - input_tokens + - output_tokens + - total_tokens + title: OpenAIResponseUsage + type: object + OpenAIResponseUsageInputTokensDetails: + description: >- + Token details for input tokens in OpenAI response usage. + + + :param cached_tokens: Number of tokens retrieved from cache + properties: + cached_tokens: + anyOf: + - type: integer + - type: 'null' + title: Cached Tokens + title: OpenAIResponseUsageInputTokensDetails + type: object + OpenAIResponseUsageOutputTokensDetails: + description: >- + Token details for output tokens in OpenAI response usage. + + + :param reasoning_tokens: Number of tokens used for reasoning (o1/o3 models) + properties: + reasoning_tokens: + anyOf: + - type: integer + - type: 'null' + title: Reasoning Tokens + title: OpenAIResponseUsageOutputTokensDetails + type: object + SearchRankingOptions: + description: >- + Options for ranking and filtering search results. + + + :param ranker: (Optional) Name of the ranking algorithm to use + + :param score_threshold: (Optional) Minimum relevance score threshold for + results + properties: + ranker: + anyOf: + - type: string + - type: 'null' + title: Ranker + score_threshold: + anyOf: + - type: number + - type: 'null' + default: 0.0 + title: Score Threshold + title: SearchRankingOptions + type: object + description: >- + Complete OpenAI response object containing generation results and metadata. + + + :param created_at: Unix timestamp when the response was created + + :param error: (Optional) Error details if the response generation failed + + :param id: Unique identifier for this response + + :param model: Model identifier used for generation + + :param object: Object type identifier, always "response" + + :param output: List of generated output items (messages, tool calls, etc.) + + :param parallel_tool_calls: Whether tool calls can be executed in parallel + + :param previous_response_id: (Optional) ID of the previous response in a conversation + + :param status: Current status of the response generation + + :param temperature: (Optional) Sampling temperature used for generation + + :param text: Text formatting configuration for the response + + :param top_p: (Optional) Nucleus sampling parameter used for generation + + :param tools: (Optional) An array of tools the model may call while generating + a response. + + :param truncation: (Optional) Truncation strategy applied to the response + + :param usage: (Optional) Token usage information for the response + + :param instructions: (Optional) System message inserted into the model's context properties: created_at: + title: Created At type: integer - description: >- - Unix timestamp when the response was created error: - $ref: '#/components/schemas/OpenAIResponseError' - description: >- - (Optional) Error details if the response generation failed + anyOf: + - $ref: '#/$defs/OpenAIResponseError' + - type: 'null' id: + title: Id type: string - description: Unique identifier for this response model: + title: Model type: string - description: Model identifier used for generation object: - type: string const: response default: response - description: >- - Object type identifier, always "response" + title: Object + type: string output: - type: array items: - $ref: '#/components/schemas/OpenAIResponseOutput' - description: >- - List of generated output items (messages, tool calls, etc.) + discriminator: + mapping: + file_search_call: >- + #/$defs/OpenAIResponseOutputMessageFileSearchToolCall + function_call: >- + #/$defs/OpenAIResponseOutputMessageFunctionToolCall + mcp_approval_request: '#/$defs/OpenAIResponseMCPApprovalRequest' + mcp_call: >- + #/$defs/OpenAIResponseOutputMessageMCPCall + mcp_list_tools: >- + #/$defs/OpenAIResponseOutputMessageMCPListTools + message: '#/$defs/OpenAIResponseMessage' + web_search_call: >- + #/$defs/OpenAIResponseOutputMessageWebSearchToolCall + propertyName: type + oneOf: + - $ref: '#/$defs/OpenAIResponseMessage' + - $ref: >- + #/$defs/OpenAIResponseOutputMessageWebSearchToolCall + - $ref: >- + #/$defs/OpenAIResponseOutputMessageFileSearchToolCall + - $ref: >- + #/$defs/OpenAIResponseOutputMessageFunctionToolCall + - $ref: >- + #/$defs/OpenAIResponseOutputMessageMCPCall + - $ref: >- + #/$defs/OpenAIResponseOutputMessageMCPListTools + - $ref: '#/$defs/OpenAIResponseMCPApprovalRequest' + title: Output + type: array parallel_tool_calls: - type: boolean default: false - description: >- - Whether tool calls can be executed in parallel + title: Parallel Tool Calls + type: boolean previous_response_id: type: string description: >- @@ -7846,2081 +11913,1759 @@ components: description: >- (Optional) Reference to a prompt template and its variables. status: + title: Status type: string - description: >- - Current status of the response generation temperature: - type: number - description: >- - (Optional) Sampling temperature used for generation + anyOf: + - type: number + - type: 'null' + title: Temperature text: - $ref: '#/components/schemas/OpenAIResponseText' - description: >- - Text formatting configuration for the response + $ref: '#/$defs/OpenAIResponseText' + default: + format: + type: text top_p: - type: number - description: >- - (Optional) Nucleus sampling parameter used for generation + anyOf: + - type: number + - type: 'null' + title: Top P tools: - type: array - items: - $ref: '#/components/schemas/OpenAIResponseTool' - description: >- - (Optional) An array of tools the model may call while generating a response. + anyOf: + - items: + discriminator: + mapping: + file_search: >- + #/$defs/OpenAIResponseInputToolFileSearch + function: '#/$defs/OpenAIResponseInputToolFunction' + mcp: '#/$defs/OpenAIResponseToolMCP' + web_search: '#/$defs/OpenAIResponseInputToolWebSearch' + web_search_preview: '#/$defs/OpenAIResponseInputToolWebSearch' + web_search_preview_2025_03_11: '#/$defs/OpenAIResponseInputToolWebSearch' + propertyName: type + oneOf: + - $ref: '#/$defs/OpenAIResponseInputToolWebSearch' + - $ref: >- + #/$defs/OpenAIResponseInputToolFileSearch + - $ref: '#/$defs/OpenAIResponseInputToolFunction' + - $ref: '#/$defs/OpenAIResponseToolMCP' + type: array + - type: 'null' + title: Tools truncation: - type: string - description: >- - (Optional) Truncation strategy applied to the response + anyOf: + - type: string + - type: 'null' + title: Truncation usage: - $ref: '#/components/schemas/OpenAIResponseUsage' - description: >- - (Optional) Token usage information for the response + anyOf: + - $ref: '#/$defs/OpenAIResponseUsage' + - type: 'null' instructions: - type: string - description: >- - (Optional) System message inserted into the model's context - additionalProperties: false + anyOf: + - type: string + - type: 'null' + title: Instructions required: - created_at - id - model - - object - output - - parallel_tool_calls - status - - text title: OpenAIResponseObject - description: >- - Complete OpenAI response object containing generation results and metadata. - OpenAIResponseContentPartOutputText: type: object - properties: - type: - type: string - const: output_text - default: output_text - description: >- - Content part type identifier, always "output_text" - text: - type: string - description: Text emitted for this content part - annotations: - type: array - items: - $ref: '#/components/schemas/OpenAIResponseAnnotations' - description: >- - Structured annotations associated with the text - logprobs: - type: array - items: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: (Optional) Token log probability details - additionalProperties: false - required: - - type - - text - - annotations - title: OpenAIResponseContentPartOutputText - description: >- - Text content within a streamed response part. - "OpenAIResponseContentPartReasoningSummary": + AsyncIterator: type: object - properties: - type: - type: string - const: summary_text - default: summary_text - description: >- - Content part type identifier, always "summary_text" - text: - type: string - description: Summary text - additionalProperties: false - required: - - type - - text - title: >- - OpenAIResponseContentPartReasoningSummary - description: >- - Reasoning summary part in a streamed response. - OpenAIResponseContentPartReasoningText: - type: object - properties: - type: - type: string - const: reasoning_text - default: reasoning_text - description: >- - Content part type identifier, always "reasoning_text" - text: - type: string - description: Reasoning text supplied by the model - additionalProperties: false - required: - - type - - text - title: OpenAIResponseContentPartReasoningText - description: >- - Reasoning text emitted as part of a streamed response. - OpenAIResponseObjectStream: - oneOf: - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseCreated' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseInProgress' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseOutputItemAdded' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseOutputItemDone' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseOutputTextDelta' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseOutputTextDone' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseFunctionCallArgumentsDelta' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseFunctionCallArgumentsDone' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseWebSearchCallInProgress' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseWebSearchCallSearching' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseWebSearchCallCompleted' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseMcpListToolsInProgress' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseMcpListToolsFailed' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseMcpListToolsCompleted' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseMcpCallArgumentsDelta' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseMcpCallArgumentsDone' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseMcpCallInProgress' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseMcpCallFailed' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseMcpCallCompleted' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseContentPartAdded' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseContentPartDone' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseReasoningTextDelta' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseReasoningTextDone' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseReasoningSummaryPartAdded' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseReasoningSummaryPartDone' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseReasoningSummaryTextDelta' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseReasoningSummaryTextDone' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseRefusalDelta' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseRefusalDone' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseOutputTextAnnotationAdded' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseFileSearchCallInProgress' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseFileSearchCallSearching' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseFileSearchCallCompleted' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseIncomplete' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseFailed' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseCompleted' - discriminator: - propertyName: type - mapping: - response.created: '#/components/schemas/OpenAIResponseObjectStreamResponseCreated' - response.in_progress: '#/components/schemas/OpenAIResponseObjectStreamResponseInProgress' - response.output_item.added: '#/components/schemas/OpenAIResponseObjectStreamResponseOutputItemAdded' - response.output_item.done: '#/components/schemas/OpenAIResponseObjectStreamResponseOutputItemDone' - response.output_text.delta: '#/components/schemas/OpenAIResponseObjectStreamResponseOutputTextDelta' - response.output_text.done: '#/components/schemas/OpenAIResponseObjectStreamResponseOutputTextDone' - response.function_call_arguments.delta: '#/components/schemas/OpenAIResponseObjectStreamResponseFunctionCallArgumentsDelta' - response.function_call_arguments.done: '#/components/schemas/OpenAIResponseObjectStreamResponseFunctionCallArgumentsDone' - response.web_search_call.in_progress: '#/components/schemas/OpenAIResponseObjectStreamResponseWebSearchCallInProgress' - response.web_search_call.searching: '#/components/schemas/OpenAIResponseObjectStreamResponseWebSearchCallSearching' - response.web_search_call.completed: '#/components/schemas/OpenAIResponseObjectStreamResponseWebSearchCallCompleted' - response.mcp_list_tools.in_progress: '#/components/schemas/OpenAIResponseObjectStreamResponseMcpListToolsInProgress' - response.mcp_list_tools.failed: '#/components/schemas/OpenAIResponseObjectStreamResponseMcpListToolsFailed' - response.mcp_list_tools.completed: '#/components/schemas/OpenAIResponseObjectStreamResponseMcpListToolsCompleted' - response.mcp_call.arguments.delta: '#/components/schemas/OpenAIResponseObjectStreamResponseMcpCallArgumentsDelta' - response.mcp_call.arguments.done: '#/components/schemas/OpenAIResponseObjectStreamResponseMcpCallArgumentsDone' - response.mcp_call.in_progress: '#/components/schemas/OpenAIResponseObjectStreamResponseMcpCallInProgress' - response.mcp_call.failed: '#/components/schemas/OpenAIResponseObjectStreamResponseMcpCallFailed' - response.mcp_call.completed: '#/components/schemas/OpenAIResponseObjectStreamResponseMcpCallCompleted' - response.content_part.added: '#/components/schemas/OpenAIResponseObjectStreamResponseContentPartAdded' - response.content_part.done: '#/components/schemas/OpenAIResponseObjectStreamResponseContentPartDone' - response.reasoning_text.delta: '#/components/schemas/OpenAIResponseObjectStreamResponseReasoningTextDelta' - response.reasoning_text.done: '#/components/schemas/OpenAIResponseObjectStreamResponseReasoningTextDone' - response.reasoning_summary_part.added: '#/components/schemas/OpenAIResponseObjectStreamResponseReasoningSummaryPartAdded' - response.reasoning_summary_part.done: '#/components/schemas/OpenAIResponseObjectStreamResponseReasoningSummaryPartDone' - response.reasoning_summary_text.delta: '#/components/schemas/OpenAIResponseObjectStreamResponseReasoningSummaryTextDelta' - response.reasoning_summary_text.done: '#/components/schemas/OpenAIResponseObjectStreamResponseReasoningSummaryTextDone' - response.refusal.delta: '#/components/schemas/OpenAIResponseObjectStreamResponseRefusalDelta' - response.refusal.done: '#/components/schemas/OpenAIResponseObjectStreamResponseRefusalDone' - response.output_text.annotation.added: '#/components/schemas/OpenAIResponseObjectStreamResponseOutputTextAnnotationAdded' - response.file_search_call.in_progress: '#/components/schemas/OpenAIResponseObjectStreamResponseFileSearchCallInProgress' - response.file_search_call.searching: '#/components/schemas/OpenAIResponseObjectStreamResponseFileSearchCallSearching' - response.file_search_call.completed: '#/components/schemas/OpenAIResponseObjectStreamResponseFileSearchCallCompleted' - response.incomplete: '#/components/schemas/OpenAIResponseObjectStreamResponseIncomplete' - response.failed: '#/components/schemas/OpenAIResponseObjectStreamResponseFailed' - response.completed: '#/components/schemas/OpenAIResponseObjectStreamResponseCompleted' - "OpenAIResponseObjectStreamResponseCompleted": - type: object - properties: - response: - $ref: '#/components/schemas/OpenAIResponseObject' - description: Completed response object - type: - type: string - const: response.completed - default: response.completed - description: >- - Event type identifier, always "response.completed" - additionalProperties: false - required: - - response - - type - title: >- - OpenAIResponseObjectStreamResponseCompleted - description: >- - Streaming event indicating a response has been completed. - "OpenAIResponseObjectStreamResponseContentPartAdded": - type: object - properties: - content_index: - type: integer - description: >- - Index position of the part within the content array - response_id: - type: string - description: >- - Unique identifier of the response containing this content - item_id: - type: string - description: >- - Unique identifier of the output item containing this content part - output_index: - type: integer - description: >- - Index position of the output item in the response - part: - oneOf: - - $ref: '#/components/schemas/OpenAIResponseContentPartOutputText' - - $ref: '#/components/schemas/OpenAIResponseContentPartRefusal' - - $ref: '#/components/schemas/OpenAIResponseContentPartReasoningText' - discriminator: - propertyName: type - mapping: - output_text: '#/components/schemas/OpenAIResponseContentPartOutputText' - refusal: '#/components/schemas/OpenAIResponseContentPartRefusal' - reasoning_text: '#/components/schemas/OpenAIResponseContentPartReasoningText' - description: The content part that was added - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.content_part.added - default: response.content_part.added - description: >- - Event type identifier, always "response.content_part.added" - additionalProperties: false - required: - - content_index - - response_id - - item_id - - output_index - - part - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseContentPartAdded - description: >- - Streaming event for when a new content part is added to a response item. - "OpenAIResponseObjectStreamResponseContentPartDone": - type: object - properties: - content_index: - type: integer - description: >- - Index position of the part within the content array - response_id: - type: string - description: >- - Unique identifier of the response containing this content - item_id: - type: string - description: >- - Unique identifier of the output item containing this content part - output_index: - type: integer - description: >- - Index position of the output item in the response - part: - oneOf: - - $ref: '#/components/schemas/OpenAIResponseContentPartOutputText' - - $ref: '#/components/schemas/OpenAIResponseContentPartRefusal' - - $ref: '#/components/schemas/OpenAIResponseContentPartReasoningText' - discriminator: - propertyName: type - mapping: - output_text: '#/components/schemas/OpenAIResponseContentPartOutputText' - refusal: '#/components/schemas/OpenAIResponseContentPartRefusal' - reasoning_text: '#/components/schemas/OpenAIResponseContentPartReasoningText' - description: The completed content part - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.content_part.done - default: response.content_part.done - description: >- - Event type identifier, always "response.content_part.done" - additionalProperties: false - required: - - content_index - - response_id - - item_id - - output_index - - part - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseContentPartDone - description: >- - Streaming event for when a content part is completed. - "OpenAIResponseObjectStreamResponseCreated": - type: object - properties: - response: - $ref: '#/components/schemas/OpenAIResponseObject' - description: The response object that was created - type: - type: string - const: response.created - default: response.created - description: >- - Event type identifier, always "response.created" - additionalProperties: false - required: - - response - - type - title: >- - OpenAIResponseObjectStreamResponseCreated - description: >- - Streaming event indicating a new response has been created. - OpenAIResponseObjectStreamResponseFailed: - type: object - properties: - response: - $ref: '#/components/schemas/OpenAIResponseObject' - description: Response object describing the failure - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.failed - default: response.failed - description: >- - Event type identifier, always "response.failed" - additionalProperties: false - required: - - response - - sequence_number - - type - title: OpenAIResponseObjectStreamResponseFailed - description: >- - Streaming event emitted when a response fails. - "OpenAIResponseObjectStreamResponseFileSearchCallCompleted": - type: object - properties: - item_id: - type: string - description: >- - Unique identifier of the completed file search call - output_index: - type: integer - description: >- - Index position of the item in the output list - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.file_search_call.completed - default: response.file_search_call.completed - description: >- - Event type identifier, always "response.file_search_call.completed" - additionalProperties: false - required: - - item_id - - output_index - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseFileSearchCallCompleted - description: >- - Streaming event for completed file search calls. - "OpenAIResponseObjectStreamResponseFileSearchCallInProgress": - type: object - properties: - item_id: - type: string - description: >- - Unique identifier of the file search call - output_index: - type: integer - description: >- - Index position of the item in the output list - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.file_search_call.in_progress - default: response.file_search_call.in_progress - description: >- - Event type identifier, always "response.file_search_call.in_progress" - additionalProperties: false - required: - - item_id - - output_index - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseFileSearchCallInProgress - description: >- - Streaming event for file search calls in progress. - "OpenAIResponseObjectStreamResponseFileSearchCallSearching": - type: object - properties: - item_id: - type: string - description: >- - Unique identifier of the file search call - output_index: - type: integer - description: >- - Index position of the item in the output list - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.file_search_call.searching - default: response.file_search_call.searching - description: >- - Event type identifier, always "response.file_search_call.searching" - additionalProperties: false - required: - - item_id - - output_index - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseFileSearchCallSearching - description: >- - Streaming event for file search currently searching. - "OpenAIResponseObjectStreamResponseFunctionCallArgumentsDelta": - type: object - properties: - delta: - type: string - description: >- - Incremental function call arguments being added - item_id: - type: string - description: >- - Unique identifier of the function call being updated - output_index: - type: integer - description: >- - Index position of the item in the output list - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.function_call_arguments.delta - default: response.function_call_arguments.delta - description: >- - Event type identifier, always "response.function_call_arguments.delta" - additionalProperties: false - required: - - delta - - item_id - - output_index - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseFunctionCallArgumentsDelta - description: >- - Streaming event for incremental function call argument updates. - "OpenAIResponseObjectStreamResponseFunctionCallArgumentsDone": - type: object - properties: - arguments: - type: string - description: >- - Final complete arguments JSON string for the function call - item_id: - type: string - description: >- - Unique identifier of the completed function call - output_index: - type: integer - description: >- - Index position of the item in the output list - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.function_call_arguments.done - default: response.function_call_arguments.done - description: >- - Event type identifier, always "response.function_call_arguments.done" - additionalProperties: false - required: - - arguments - - item_id - - output_index - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseFunctionCallArgumentsDone - description: >- - Streaming event for when function call arguments are completed. - "OpenAIResponseObjectStreamResponseInProgress": - type: object - properties: - response: - $ref: '#/components/schemas/OpenAIResponseObject' - description: Current response state while in progress - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.in_progress - default: response.in_progress - description: >- - Event type identifier, always "response.in_progress" - additionalProperties: false - required: - - response - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseInProgress - description: >- - Streaming event indicating the response remains in progress. - "OpenAIResponseObjectStreamResponseIncomplete": - type: object - properties: - response: - $ref: '#/components/schemas/OpenAIResponseObject' - description: >- - Response object describing the incomplete state - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.incomplete - default: response.incomplete - description: >- - Event type identifier, always "response.incomplete" - additionalProperties: false - required: - - response - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseIncomplete - description: >- - Streaming event emitted when a response ends in an incomplete state. - "OpenAIResponseObjectStreamResponseMcpCallArgumentsDelta": - type: object - properties: - delta: - type: string - item_id: - type: string - output_index: - type: integer - sequence_number: - type: integer - type: - type: string - const: response.mcp_call.arguments.delta - default: response.mcp_call.arguments.delta - additionalProperties: false - required: - - delta - - item_id - - output_index - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseMcpCallArgumentsDelta - "OpenAIResponseObjectStreamResponseMcpCallArgumentsDone": - type: object - properties: - arguments: - type: string - item_id: - type: string - output_index: - type: integer - sequence_number: - type: integer - type: - type: string - const: response.mcp_call.arguments.done - default: response.mcp_call.arguments.done - additionalProperties: false - required: - - arguments - - item_id - - output_index - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseMcpCallArgumentsDone - "OpenAIResponseObjectStreamResponseMcpCallCompleted": - type: object - properties: - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.mcp_call.completed - default: response.mcp_call.completed - description: >- - Event type identifier, always "response.mcp_call.completed" - additionalProperties: false - required: - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseMcpCallCompleted - description: Streaming event for completed MCP calls. - "OpenAIResponseObjectStreamResponseMcpCallFailed": - type: object - properties: - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.mcp_call.failed - default: response.mcp_call.failed - description: >- - Event type identifier, always "response.mcp_call.failed" - additionalProperties: false - required: - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseMcpCallFailed - description: Streaming event for failed MCP calls. - "OpenAIResponseObjectStreamResponseMcpCallInProgress": - type: object - properties: - item_id: - type: string - description: Unique identifier of the MCP call - output_index: - type: integer - description: >- - Index position of the item in the output list - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.mcp_call.in_progress - default: response.mcp_call.in_progress - description: >- - Event type identifier, always "response.mcp_call.in_progress" - additionalProperties: false - required: - - item_id - - output_index - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseMcpCallInProgress - description: >- - Streaming event for MCP calls in progress. - "OpenAIResponseObjectStreamResponseMcpListToolsCompleted": - type: object - properties: - sequence_number: - type: integer - type: - type: string - const: response.mcp_list_tools.completed - default: response.mcp_list_tools.completed - additionalProperties: false - required: - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseMcpListToolsCompleted - "OpenAIResponseObjectStreamResponseMcpListToolsFailed": - type: object - properties: - sequence_number: - type: integer - type: - type: string - const: response.mcp_list_tools.failed - default: response.mcp_list_tools.failed - additionalProperties: false - required: - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseMcpListToolsFailed - "OpenAIResponseObjectStreamResponseMcpListToolsInProgress": - type: object - properties: - sequence_number: - type: integer - type: - type: string - const: response.mcp_list_tools.in_progress - default: response.mcp_list_tools.in_progress - additionalProperties: false - required: - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseMcpListToolsInProgress - "OpenAIResponseObjectStreamResponseOutputItemAdded": - type: object - properties: - response_id: - type: string - description: >- - Unique identifier of the response containing this output - item: - oneOf: - - $ref: '#/components/schemas/OpenAIResponseMessage' - - $ref: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' - - $ref: '#/components/schemas/OpenAIResponseOutputMessageFileSearchToolCall' - - $ref: '#/components/schemas/OpenAIResponseOutputMessageFunctionToolCall' - - $ref: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' - - $ref: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' - - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' - discriminator: - propertyName: type - mapping: - message: '#/components/schemas/OpenAIResponseMessage' - web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' - file_search_call: '#/components/schemas/OpenAIResponseOutputMessageFileSearchToolCall' - function_call: '#/components/schemas/OpenAIResponseOutputMessageFunctionToolCall' - mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' - mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' - mcp_approval_request: '#/components/schemas/OpenAIResponseMCPApprovalRequest' - description: >- - The output item that was added (message, tool call, etc.) - output_index: - type: integer - description: >- - Index position of this item in the output list - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.output_item.added - default: response.output_item.added - description: >- - Event type identifier, always "response.output_item.added" - additionalProperties: false - required: - - response_id - - item - - output_index - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseOutputItemAdded - description: >- - Streaming event for when a new output item is added to the response. - "OpenAIResponseObjectStreamResponseOutputItemDone": - type: object - properties: - response_id: - type: string - description: >- - Unique identifier of the response containing this output - item: - oneOf: - - $ref: '#/components/schemas/OpenAIResponseMessage' - - $ref: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' - - $ref: '#/components/schemas/OpenAIResponseOutputMessageFileSearchToolCall' - - $ref: '#/components/schemas/OpenAIResponseOutputMessageFunctionToolCall' - - $ref: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' - - $ref: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' - - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' - discriminator: - propertyName: type - mapping: - message: '#/components/schemas/OpenAIResponseMessage' - web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' - file_search_call: '#/components/schemas/OpenAIResponseOutputMessageFileSearchToolCall' - function_call: '#/components/schemas/OpenAIResponseOutputMessageFunctionToolCall' - mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' - mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' - mcp_approval_request: '#/components/schemas/OpenAIResponseMCPApprovalRequest' - description: >- - The completed output item (message, tool call, etc.) - output_index: - type: integer - description: >- - Index position of this item in the output list - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.output_item.done - default: response.output_item.done - description: >- - Event type identifier, always "response.output_item.done" - additionalProperties: false - required: - - response_id - - item - - output_index - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseOutputItemDone - description: >- - Streaming event for when an output item is completed. - "OpenAIResponseObjectStreamResponseOutputTextAnnotationAdded": - type: object - properties: - item_id: - type: string - description: >- - Unique identifier of the item to which the annotation is being added - output_index: - type: integer - description: >- - Index position of the output item in the response's output array - content_index: - type: integer - description: >- - Index position of the content part within the output item - annotation_index: - type: integer - description: >- - Index of the annotation within the content part - annotation: - oneOf: - - $ref: '#/components/schemas/OpenAIResponseAnnotationFileCitation' - - $ref: '#/components/schemas/OpenAIResponseAnnotationCitation' - - $ref: '#/components/schemas/OpenAIResponseAnnotationContainerFileCitation' - - $ref: '#/components/schemas/OpenAIResponseAnnotationFilePath' - discriminator: - propertyName: type - mapping: - file_citation: '#/components/schemas/OpenAIResponseAnnotationFileCitation' - url_citation: '#/components/schemas/OpenAIResponseAnnotationCitation' - container_file_citation: '#/components/schemas/OpenAIResponseAnnotationContainerFileCitation' - file_path: '#/components/schemas/OpenAIResponseAnnotationFilePath' - description: The annotation object being added - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.output_text.annotation.added - default: response.output_text.annotation.added - description: >- - Event type identifier, always "response.output_text.annotation.added" - additionalProperties: false - required: - - item_id - - output_index - - content_index - - annotation_index - - annotation - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseOutputTextAnnotationAdded - description: >- - Streaming event for when an annotation is added to output text. - "OpenAIResponseObjectStreamResponseOutputTextDelta": - type: object - properties: - content_index: - type: integer - description: Index position within the text content - delta: - type: string - description: Incremental text content being added - item_id: - type: string - description: >- - Unique identifier of the output item being updated - output_index: - type: integer - description: >- - Index position of the item in the output list - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.output_text.delta - default: response.output_text.delta - description: >- - Event type identifier, always "response.output_text.delta" - additionalProperties: false - required: - - content_index - - delta - - item_id - - output_index - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseOutputTextDelta - description: >- - Streaming event for incremental text content updates. - "OpenAIResponseObjectStreamResponseOutputTextDone": - type: object - properties: - content_index: - type: integer - description: Index position within the text content - text: - type: string - description: >- - Final complete text content of the output item - item_id: - type: string - description: >- - Unique identifier of the completed output item - output_index: - type: integer - description: >- - Index position of the item in the output list - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.output_text.done - default: response.output_text.done - description: >- - Event type identifier, always "response.output_text.done" - additionalProperties: false - required: - - content_index - - text - - item_id - - output_index - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseOutputTextDone - description: >- - Streaming event for when text output is completed. - "OpenAIResponseObjectStreamResponseReasoningSummaryPartAdded": - type: object - properties: - item_id: - type: string - description: Unique identifier of the output item - output_index: - type: integer - description: Index position of the output item - part: - $ref: '#/components/schemas/OpenAIResponseContentPartReasoningSummary' - description: The summary part that was added - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - summary_index: - type: integer - description: >- - Index of the summary part within the reasoning summary - type: - type: string - const: response.reasoning_summary_part.added - default: response.reasoning_summary_part.added - description: >- - Event type identifier, always "response.reasoning_summary_part.added" - additionalProperties: false - required: - - item_id - - output_index - - part - - sequence_number - - summary_index - - type - title: >- - OpenAIResponseObjectStreamResponseReasoningSummaryPartAdded - description: >- - Streaming event for when a new reasoning summary part is added. - "OpenAIResponseObjectStreamResponseReasoningSummaryPartDone": - type: object - properties: - item_id: - type: string - description: Unique identifier of the output item - output_index: - type: integer - description: Index position of the output item - part: - $ref: '#/components/schemas/OpenAIResponseContentPartReasoningSummary' - description: The completed summary part - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - summary_index: - type: integer - description: >- - Index of the summary part within the reasoning summary - type: - type: string - const: response.reasoning_summary_part.done - default: response.reasoning_summary_part.done - description: >- - Event type identifier, always "response.reasoning_summary_part.done" - additionalProperties: false - required: - - item_id - - output_index - - part - - sequence_number - - summary_index - - type - title: >- - OpenAIResponseObjectStreamResponseReasoningSummaryPartDone - description: >- - Streaming event for when a reasoning summary part is completed. - "OpenAIResponseObjectStreamResponseReasoningSummaryTextDelta": - type: object - properties: - delta: - type: string - description: Incremental summary text being added - item_id: - type: string - description: Unique identifier of the output item - output_index: - type: integer - description: Index position of the output item - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - summary_index: - type: integer - description: >- - Index of the summary part within the reasoning summary - type: - type: string - const: response.reasoning_summary_text.delta - default: response.reasoning_summary_text.delta - description: >- - Event type identifier, always "response.reasoning_summary_text.delta" - additionalProperties: false - required: - - delta - - item_id - - output_index - - sequence_number - - summary_index - - type - title: >- - OpenAIResponseObjectStreamResponseReasoningSummaryTextDelta - description: >- - Streaming event for incremental reasoning summary text updates. - "OpenAIResponseObjectStreamResponseReasoningSummaryTextDone": - type: object - properties: - text: - type: string - description: Final complete summary text - item_id: - type: string - description: Unique identifier of the output item - output_index: - type: integer - description: Index position of the output item - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - summary_index: - type: integer - description: >- - Index of the summary part within the reasoning summary - type: - type: string - const: response.reasoning_summary_text.done - default: response.reasoning_summary_text.done - description: >- - Event type identifier, always "response.reasoning_summary_text.done" - additionalProperties: false - required: - - text - - item_id - - output_index - - sequence_number - - summary_index - - type - title: >- - OpenAIResponseObjectStreamResponseReasoningSummaryTextDone - description: >- - Streaming event for when reasoning summary text is completed. - "OpenAIResponseObjectStreamResponseReasoningTextDelta": - type: object - properties: - content_index: - type: integer - description: >- - Index position of the reasoning content part - delta: - type: string - description: Incremental reasoning text being added - item_id: - type: string - description: >- - Unique identifier of the output item being updated - output_index: - type: integer - description: >- - Index position of the item in the output list - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.reasoning_text.delta - default: response.reasoning_text.delta - description: >- - Event type identifier, always "response.reasoning_text.delta" - additionalProperties: false - required: - - content_index - - delta - - item_id - - output_index - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseReasoningTextDelta - description: >- - Streaming event for incremental reasoning text updates. - "OpenAIResponseObjectStreamResponseReasoningTextDone": - type: object - properties: - content_index: - type: integer - description: >- - Index position of the reasoning content part - text: - type: string - description: Final complete reasoning text - item_id: - type: string - description: >- - Unique identifier of the completed output item - output_index: - type: integer - description: >- - Index position of the item in the output list - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.reasoning_text.done - default: response.reasoning_text.done - description: >- - Event type identifier, always "response.reasoning_text.done" - additionalProperties: false - required: - - content_index - - text - - item_id - - output_index - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseReasoningTextDone - description: >- - Streaming event for when reasoning text is completed. - "OpenAIResponseObjectStreamResponseRefusalDelta": - type: object - properties: - content_index: - type: integer - description: Index position of the content part - delta: - type: string - description: Incremental refusal text being added - item_id: - type: string - description: Unique identifier of the output item - output_index: - type: integer - description: >- - Index position of the item in the output list - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.refusal.delta - default: response.refusal.delta - description: >- - Event type identifier, always "response.refusal.delta" - additionalProperties: false - required: - - content_index - - delta - - item_id - - output_index - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseRefusalDelta - description: >- - Streaming event for incremental refusal text updates. - "OpenAIResponseObjectStreamResponseRefusalDone": - type: object - properties: - content_index: - type: integer - description: Index position of the content part - refusal: - type: string - description: Final complete refusal text - item_id: - type: string - description: Unique identifier of the output item - output_index: - type: integer - description: >- - Index position of the item in the output list - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.refusal.done - default: response.refusal.done - description: >- - Event type identifier, always "response.refusal.done" - additionalProperties: false - required: - - content_index - - refusal - - item_id - - output_index - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseRefusalDone - description: >- - Streaming event for when refusal text is completed. - "OpenAIResponseObjectStreamResponseWebSearchCallCompleted": - type: object - properties: - item_id: - type: string - description: >- - Unique identifier of the completed web search call - output_index: - type: integer - description: >- - Index position of the item in the output list - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.web_search_call.completed - default: response.web_search_call.completed - description: >- - Event type identifier, always "response.web_search_call.completed" - additionalProperties: false - required: - - item_id - - output_index - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseWebSearchCallCompleted - description: >- - Streaming event for completed web search calls. - "OpenAIResponseObjectStreamResponseWebSearchCallInProgress": - type: object - properties: - item_id: - type: string - description: Unique identifier of the web search call - output_index: - type: integer - description: >- - Index position of the item in the output list - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.web_search_call.in_progress - default: response.web_search_call.in_progress - description: >- - Event type identifier, always "response.web_search_call.in_progress" - additionalProperties: false - required: - - item_id - - output_index - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseWebSearchCallInProgress - description: >- - Streaming event for web search calls in progress. - "OpenAIResponseObjectStreamResponseWebSearchCallSearching": - type: object - properties: - item_id: - type: string - output_index: - type: integer - sequence_number: - type: integer - type: - type: string - const: response.web_search_call.searching - default: response.web_search_call.searching - additionalProperties: false - required: - - item_id - - output_index - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseWebSearchCallSearching OpenAIDeleteResponseObject: - type: object - properties: - id: - type: string - description: >- - Unique identifier of the deleted response - object: - type: string - const: response - default: response - description: >- - Object type identifier, always "response" - deleted: - type: boolean - default: true - description: Deletion confirmation flag, always True - additionalProperties: false - required: - - id - - object - - deleted - title: OpenAIDeleteResponseObject description: >- Response object confirming deletion of an OpenAI response. - ListOpenAIResponseInputItem: - type: object + + + :param id: Unique identifier of the deleted response + + :param object: Object type identifier, always "response" + + :param deleted: Deletion confirmation flag, always True properties: - data: - type: array - items: - $ref: '#/components/schemas/OpenAIResponseInput' - description: List of input items - object: + id: + title: Id type: string - const: list - default: list - description: Object type identifier, always "list" - additionalProperties: false + object: + const: response + default: response + title: Object + type: string + deleted: + default: true + title: Deleted + type: boolean required: - - data - - object - title: ListOpenAIResponseInputItem + - id + title: OpenAIDeleteResponseObject + type: object + ListOpenAIResponseInputItem: + $defs: + MCPListToolsTool: + description: >- + Tool definition returned by MCP list tools operation. + + + :param input_schema: JSON schema defining the tool's input parameters + + :param name: Name of the tool + + :param description: (Optional) Description of what the tool does + properties: + input_schema: + additionalProperties: true + title: Input Schema + type: object + name: + title: Name + type: string + description: + anyOf: + - type: string + - type: 'null' + title: Description + required: + - input_schema + - name + title: MCPListToolsTool + type: object + OpenAIResponseAnnotationCitation: + description: >- + URL citation annotation for referencing external web resources. + + + :param type: Annotation type identifier, always "url_citation" + + :param end_index: End position of the citation span in the content + + :param start_index: Start position of the citation span in the content + + :param title: Title of the referenced web resource + + :param url: URL of the referenced web resource + properties: + type: + const: url_citation + default: url_citation + title: Type + type: string + end_index: + title: End Index + type: integer + start_index: + title: Start Index + type: integer + title: + title: Title + type: string + url: + title: Url + type: string + required: + - end_index + - start_index + - title + - url + title: OpenAIResponseAnnotationCitation + type: object + "OpenAIResponseAnnotationContainerFileCitation": + properties: + type: + const: container_file_citation + default: container_file_citation + title: Type + type: string + container_id: + title: Container Id + type: string + end_index: + title: End Index + type: integer + file_id: + title: File Id + type: string + filename: + title: Filename + type: string + start_index: + title: Start Index + type: integer + required: + - container_id + - end_index + - file_id + - filename + - start_index + title: >- + OpenAIResponseAnnotationContainerFileCitation + type: object + OpenAIResponseAnnotationFileCitation: + description: >- + File citation annotation for referencing specific files in response content. + + + :param type: Annotation type identifier, always "file_citation" + + :param file_id: Unique identifier of the referenced file + + :param filename: Name of the referenced file + + :param index: Position index of the citation within the content + properties: + type: + const: file_citation + default: file_citation + title: Type + type: string + file_id: + title: File Id + type: string + filename: + title: Filename + type: string + index: + title: Index + type: integer + required: + - file_id + - filename + - index + title: OpenAIResponseAnnotationFileCitation + type: object + OpenAIResponseAnnotationFilePath: + properties: + type: + const: file_path + default: file_path + title: Type + type: string + file_id: + title: File Id + type: string + index: + title: Index + type: integer + required: + - file_id + - index + title: OpenAIResponseAnnotationFilePath + type: object + OpenAIResponseContentPartRefusal: + description: >- + Refusal content within a streamed response part. + + + :param type: Content part type identifier, always "refusal" + + :param refusal: Refusal text supplied by the model + properties: + type: + const: refusal + default: refusal + title: Type + type: string + refusal: + title: Refusal + type: string + required: + - refusal + title: OpenAIResponseContentPartRefusal + type: object + "OpenAIResponseInputFunctionToolCallOutput": + description: >- + This represents the output of a function call that gets passed back to + the model. + properties: + call_id: + title: Call Id + type: string + output: + title: Output + type: string + type: + const: function_call_output + default: function_call_output + title: Type + type: string + id: + anyOf: + - type: string + - type: 'null' + title: Id + status: + anyOf: + - type: string + - type: 'null' + title: Status + required: + - call_id + - output + title: >- + OpenAIResponseInputFunctionToolCallOutput + type: object + OpenAIResponseInputMessageContentImage: + description: >- + Image content for input messages in OpenAI response format. + + + :param detail: Level of detail for image processing, can be "low", "high", + or "auto" + + :param type: Content type identifier, always "input_image" + + :param image_url: (Optional) URL of the image content + properties: + detail: + anyOf: + - const: low + type: string + - const: high + type: string + - const: auto + type: string + default: auto + title: Detail + type: + const: input_image + default: input_image + title: Type + type: string + image_url: + anyOf: + - type: string + - type: 'null' + title: Image Url + title: OpenAIResponseInputMessageContentImage + type: object + OpenAIResponseInputMessageContentText: + description: >- + Text content for input messages in OpenAI response format. + + + :param text: The text content of the input message + + :param type: Content type identifier, always "input_text" + properties: + text: + title: Text + type: string + type: + const: input_text + default: input_text + title: Type + type: string + required: + - text + title: OpenAIResponseInputMessageContentText + type: object + OpenAIResponseMCPApprovalRequest: + description: >- + A request for human approval of a tool invocation. + properties: + arguments: + title: Arguments + type: string + id: + title: Id + type: string + name: + title: Name + type: string + server_label: + title: Server Label + type: string + type: + const: mcp_approval_request + default: mcp_approval_request + title: Type + type: string + required: + - arguments + - id + - name + - server_label + title: OpenAIResponseMCPApprovalRequest + type: object + OpenAIResponseMCPApprovalResponse: + description: A response to an MCP approval request. + properties: + approval_request_id: + title: Approval Request Id + type: string + approve: + title: Approve + type: boolean + type: + const: mcp_approval_response + default: mcp_approval_response + title: Type + type: string + id: + anyOf: + - type: string + - type: 'null' + title: Id + reason: + anyOf: + - type: string + - type: 'null' + title: Reason + required: + - approval_request_id + - approve + title: OpenAIResponseMCPApprovalResponse + type: object + OpenAIResponseMessage: + description: >- + Corresponds to the various Message types in the Responses API. + + They are all under one type because the Responses API gives them all + + the same "type" value, and there is no way to tell them apart in certain + + scenarios. + properties: + content: + anyOf: + - type: string + - items: + discriminator: + mapping: + input_image: >- + #/$defs/OpenAIResponseInputMessageContentImage + input_text: >- + #/$defs/OpenAIResponseInputMessageContentText + propertyName: type + oneOf: + - $ref: >- + #/$defs/OpenAIResponseInputMessageContentText + - $ref: >- + #/$defs/OpenAIResponseInputMessageContentImage + type: array + - items: + discriminator: + mapping: + output_text: >- + #/$defs/OpenAIResponseOutputMessageContentOutputText + refusal: '#/$defs/OpenAIResponseContentPartRefusal' + propertyName: type + oneOf: + - $ref: >- + #/$defs/OpenAIResponseOutputMessageContentOutputText + - $ref: '#/$defs/OpenAIResponseContentPartRefusal' + type: array + title: Content + role: + anyOf: + - const: system + type: string + - const: developer + type: string + - const: user + type: string + - const: assistant + type: string + title: Role + type: + const: message + default: message + title: Type + type: string + id: + anyOf: + - type: string + - type: 'null' + title: Id + status: + anyOf: + - type: string + - type: 'null' + title: Status + required: + - content + - role + title: OpenAIResponseMessage + type: object + "OpenAIResponseOutputMessageContentOutputText": + properties: + text: + title: Text + type: string + type: + const: output_text + default: output_text + title: Type + type: string + annotations: + items: + discriminator: + mapping: + container_file_citation: >- + #/$defs/OpenAIResponseAnnotationContainerFileCitation + file_citation: >- + #/$defs/OpenAIResponseAnnotationFileCitation + file_path: '#/$defs/OpenAIResponseAnnotationFilePath' + url_citation: '#/$defs/OpenAIResponseAnnotationCitation' + propertyName: type + oneOf: + - $ref: >- + #/$defs/OpenAIResponseAnnotationFileCitation + - $ref: '#/$defs/OpenAIResponseAnnotationCitation' + - $ref: >- + #/$defs/OpenAIResponseAnnotationContainerFileCitation + - $ref: '#/$defs/OpenAIResponseAnnotationFilePath' + title: Annotations + type: array + required: + - text + title: >- + OpenAIResponseOutputMessageContentOutputText + type: object + "OpenAIResponseOutputMessageFileSearchToolCall": + description: >- + File search tool call output message for OpenAI responses. + + + :param id: Unique identifier for this tool call + + :param queries: List of search queries executed + + :param status: Current status of the file search operation + + :param type: Tool call type identifier, always "file_search_call" + + :param results: (Optional) Search results returned by the file search + operation + properties: + id: + title: Id + type: string + queries: + items: + type: string + title: Queries + type: array + status: + title: Status + type: string + type: + const: file_search_call + default: file_search_call + title: Type + type: string + results: + anyOf: + - items: + $ref: >- + #/$defs/OpenAIResponseOutputMessageFileSearchToolCallResults + type: array + - type: 'null' + title: Results + required: + - id + - queries + - status + title: >- + OpenAIResponseOutputMessageFileSearchToolCall + type: object + "OpenAIResponseOutputMessageFileSearchToolCallResults": + description: >- + Search results returned by the file search operation. + + + :param attributes: (Optional) Key-value attributes associated with the + file + + :param file_id: Unique identifier of the file containing the result + + :param filename: Name of the file containing the result + + :param score: Relevance score for this search result (between 0 and 1) + + :param text: Text content of the search result + properties: + attributes: + additionalProperties: true + title: Attributes + type: object + file_id: + title: File Id + type: string + filename: + title: Filename + type: string + score: + title: Score + type: number + text: + title: Text + type: string + required: + - attributes + - file_id + - filename + - score + - text + title: >- + OpenAIResponseOutputMessageFileSearchToolCallResults + type: object + "OpenAIResponseOutputMessageFunctionToolCall": + description: >- + Function tool call output message for OpenAI responses. + + + :param call_id: Unique identifier for the function call + + :param name: Name of the function being called + + :param arguments: JSON string containing the function arguments + + :param type: Tool call type identifier, always "function_call" + + :param id: (Optional) Additional identifier for the tool call + + :param status: (Optional) Current status of the function call execution + properties: + call_id: + title: Call Id + type: string + name: + title: Name + type: string + arguments: + title: Arguments + type: string + type: + const: function_call + default: function_call + title: Type + type: string + id: + anyOf: + - type: string + - type: 'null' + title: Id + status: + anyOf: + - type: string + - type: 'null' + title: Status + required: + - call_id + - name + - arguments + title: >- + OpenAIResponseOutputMessageFunctionToolCall + type: object + OpenAIResponseOutputMessageMCPCall: + description: >- + Model Context Protocol (MCP) call output message for OpenAI responses. + + + :param id: Unique identifier for this MCP call + + :param type: Tool call type identifier, always "mcp_call" + + :param arguments: JSON string containing the MCP call arguments + + :param name: Name of the MCP method being called + + :param server_label: Label identifying the MCP server handling the call + + :param error: (Optional) Error message if the MCP call failed + + :param output: (Optional) Output result from the successful MCP call + properties: + id: + title: Id + type: string + type: + const: mcp_call + default: mcp_call + title: Type + type: string + arguments: + title: Arguments + type: string + name: + title: Name + type: string + server_label: + title: Server Label + type: string + error: + anyOf: + - type: string + - type: 'null' + title: Error + output: + anyOf: + - type: string + - type: 'null' + title: Output + required: + - id + - arguments + - name + - server_label + title: OpenAIResponseOutputMessageMCPCall + type: object + OpenAIResponseOutputMessageMCPListTools: + description: >- + MCP list tools output message containing available tools from an MCP server. + + + :param id: Unique identifier for this MCP list tools operation + + :param type: Tool call type identifier, always "mcp_list_tools" + + :param server_label: Label identifying the MCP server providing the tools + + :param tools: List of available tools provided by the MCP server + properties: + id: + title: Id + type: string + type: + const: mcp_list_tools + default: mcp_list_tools + title: Type + type: string + server_label: + title: Server Label + type: string + tools: + items: + $ref: '#/$defs/MCPListToolsTool' + title: Tools + type: array + required: + - id + - server_label + - tools + title: OpenAIResponseOutputMessageMCPListTools + type: object + "OpenAIResponseOutputMessageWebSearchToolCall": + description: >- + Web search tool call output message for OpenAI responses. + + + :param id: Unique identifier for this tool call + + :param status: Current status of the web search operation + + :param type: Tool call type identifier, always "web_search_call" + properties: + id: + title: Id + type: string + status: + title: Status + type: string + type: + const: web_search_call + default: web_search_call + title: Type + type: string + required: + - id + - status + title: >- + OpenAIResponseOutputMessageWebSearchToolCall + type: object description: >- List container for OpenAI response input items. - RunShieldRequest: - type: object - properties: - shield_id: - type: string - description: The identifier of the shield to run. - messages: - type: array - items: - $ref: '#/components/schemas/OpenAIMessageParam' - description: The messages to run the shield on. - params: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: The parameters of the shield. - additionalProperties: false - required: - - shield_id - - messages - - params - title: RunShieldRequest - RunShieldResponse: - type: object - properties: - violation: - $ref: '#/components/schemas/SafetyViolation' - description: >- - (Optional) Safety violation detected by the shield, if any - additionalProperties: false - title: RunShieldResponse - description: Response from running a safety shield. - SafetyViolation: - type: object - properties: - violation_level: - $ref: '#/components/schemas/ViolationLevel' - description: Severity level of the violation - user_message: - type: string - description: >- - (Optional) Message to convey to the user about the violation - metadata: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - Additional metadata including specific violation codes for debugging and - telemetry - additionalProperties: false - required: - - violation_level - - metadata - title: SafetyViolation - description: >- - Details of a safety violation detected by content moderation. - ViolationLevel: - type: string - enum: - - info - - warn - - error - title: ViolationLevel - description: Severity level of a safety violation. - AgentTurnInputType: - type: object - properties: - type: - type: string - const: agent_turn_input - default: agent_turn_input - description: >- - Discriminator type. Always "agent_turn_input" - additionalProperties: false - required: - - type - title: AgentTurnInputType - description: Parameter type for agent turn input. - AggregationFunctionType: - type: string - enum: - - average - - weighted_average - - median - - categorical_count - - accuracy - title: AggregationFunctionType - description: >- - Types of aggregation functions for scoring results. - ArrayType: - type: object - properties: - type: - type: string - const: array - default: array - description: Discriminator type. Always "array" - additionalProperties: false - required: - - type - title: ArrayType - description: Parameter type for array values. - BasicScoringFnParams: - type: object - properties: - type: - $ref: '#/components/schemas/ScoringFnParamsType' - const: basic - default: basic - description: >- - The type of scoring function parameters, always basic - aggregation_functions: - type: array - items: - $ref: '#/components/schemas/AggregationFunctionType' - description: >- - Aggregation functions to apply to the scores of each row - additionalProperties: false - required: - - type - - aggregation_functions - title: BasicScoringFnParams - description: >- - Parameters for basic scoring function configuration. - BooleanType: - type: object - properties: - type: - type: string - const: boolean - default: boolean - description: Discriminator type. Always "boolean" - additionalProperties: false - required: - - type - title: BooleanType - description: Parameter type for boolean values. - ChatCompletionInputType: - type: object - properties: - type: - type: string - const: chat_completion_input - default: chat_completion_input - description: >- - Discriminator type. Always "chat_completion_input" - additionalProperties: false - required: - - type - title: ChatCompletionInputType - description: >- - Parameter type for chat completion input. - CompletionInputType: - type: object - properties: - type: - type: string - const: completion_input - default: completion_input - description: >- - Discriminator type. Always "completion_input" - additionalProperties: false - required: - - type - title: CompletionInputType - description: Parameter type for completion input. - JsonType: - type: object - properties: - type: - type: string - const: json - default: json - description: Discriminator type. Always "json" - additionalProperties: false - required: - - type - title: JsonType - description: Parameter type for JSON values. - LLMAsJudgeScoringFnParams: - type: object - properties: - type: - $ref: '#/components/schemas/ScoringFnParamsType' - const: llm_as_judge - default: llm_as_judge - description: >- - The type of scoring function parameters, always llm_as_judge - judge_model: - type: string - description: >- - Identifier of the LLM model to use as a judge for scoring - prompt_template: - type: string - description: >- - (Optional) Custom prompt template for the judge model - judge_score_regexes: - type: array - items: - type: string - description: >- - Regexes to extract the answer from generated response - aggregation_functions: - type: array - items: - $ref: '#/components/schemas/AggregationFunctionType' - description: >- - Aggregation functions to apply to the scores of each row - additionalProperties: false - required: - - type - - judge_model - - judge_score_regexes - - aggregation_functions - title: LLMAsJudgeScoringFnParams - description: >- - Parameters for LLM-as-judge scoring function configuration. - NumberType: - type: object - properties: - type: - type: string - const: number - default: number - description: Discriminator type. Always "number" - additionalProperties: false - required: - - type - title: NumberType - description: Parameter type for numeric values. - ObjectType: - type: object - properties: - type: - type: string - const: object - default: object - description: Discriminator type. Always "object" - additionalProperties: false - required: - - type - title: ObjectType - description: Parameter type for object values. - RegexParserScoringFnParams: - type: object - properties: - type: - $ref: '#/components/schemas/ScoringFnParamsType' - const: regex_parser - default: regex_parser - description: >- - The type of scoring function parameters, always regex_parser - parsing_regexes: - type: array - items: - type: string - description: >- - Regex to extract the answer from generated response - aggregation_functions: - type: array - items: - $ref: '#/components/schemas/AggregationFunctionType' - description: >- - Aggregation functions to apply to the scores of each row - additionalProperties: false - required: - - type - - parsing_regexes - - aggregation_functions - title: RegexParserScoringFnParams - description: >- - Parameters for regex parser scoring function configuration. - ScoringFn: - type: object - properties: - identifier: - type: string - provider_resource_id: - type: string - provider_id: - type: string - type: - type: string - enum: - - model - - shield - - vector_store - - dataset - - scoring_function - - benchmark - - tool - - tool_group - - prompt - const: scoring_function - default: scoring_function - description: >- - The resource type, always scoring_function - description: - type: string - metadata: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - return_type: - oneOf: - - $ref: '#/components/schemas/StringType' - - $ref: '#/components/schemas/NumberType' - - $ref: '#/components/schemas/BooleanType' - - $ref: '#/components/schemas/ArrayType' - - $ref: '#/components/schemas/ObjectType' - - $ref: '#/components/schemas/JsonType' - - $ref: '#/components/schemas/UnionType' - - $ref: '#/components/schemas/ChatCompletionInputType' - - $ref: '#/components/schemas/CompletionInputType' - - $ref: '#/components/schemas/AgentTurnInputType' - discriminator: - propertyName: type - mapping: - string: '#/components/schemas/StringType' - number: '#/components/schemas/NumberType' - boolean: '#/components/schemas/BooleanType' - array: '#/components/schemas/ArrayType' - object: '#/components/schemas/ObjectType' - json: '#/components/schemas/JsonType' - union: '#/components/schemas/UnionType' - chat_completion_input: '#/components/schemas/ChatCompletionInputType' - completion_input: '#/components/schemas/CompletionInputType' - agent_turn_input: '#/components/schemas/AgentTurnInputType' - params: - $ref: '#/components/schemas/ScoringFnParams' - additionalProperties: false - required: - - identifier - - provider_id - - type - - metadata - - return_type - title: ScoringFn - description: >- - A scoring function resource for evaluating model outputs. - ScoringFnParams: - oneOf: - - $ref: '#/components/schemas/LLMAsJudgeScoringFnParams' - - $ref: '#/components/schemas/RegexParserScoringFnParams' - - $ref: '#/components/schemas/BasicScoringFnParams' - discriminator: - propertyName: type - mapping: - llm_as_judge: '#/components/schemas/LLMAsJudgeScoringFnParams' - regex_parser: '#/components/schemas/RegexParserScoringFnParams' - basic: '#/components/schemas/BasicScoringFnParams' - ScoringFnParamsType: - type: string - enum: - - llm_as_judge - - regex_parser - - basic - title: ScoringFnParamsType - description: >- - Types of scoring function parameter configurations. - StringType: - type: object - properties: - type: - type: string - const: string - default: string - description: Discriminator type. Always "string" - additionalProperties: false - required: - - type - title: StringType - description: Parameter type for string values. - UnionType: - type: object - properties: - type: - type: string - const: union - default: union - description: Discriminator type. Always "union" - additionalProperties: false - required: - - type - title: UnionType - description: Parameter type for union values. - ListScoringFunctionsResponse: - type: object + + + :param data: List of input items + + :param object: Object type identifier, always "list" properties: data: - type: array items: - $ref: '#/components/schemas/ScoringFn' - additionalProperties: false + anyOf: + - discriminator: + mapping: + file_search_call: >- + #/$defs/OpenAIResponseOutputMessageFileSearchToolCall + function_call: >- + #/$defs/OpenAIResponseOutputMessageFunctionToolCall + mcp_approval_request: '#/$defs/OpenAIResponseMCPApprovalRequest' + mcp_call: >- + #/$defs/OpenAIResponseOutputMessageMCPCall + mcp_list_tools: >- + #/$defs/OpenAIResponseOutputMessageMCPListTools + message: '#/$defs/OpenAIResponseMessage' + web_search_call: >- + #/$defs/OpenAIResponseOutputMessageWebSearchToolCall + propertyName: type + oneOf: + - $ref: '#/$defs/OpenAIResponseMessage' + - $ref: >- + #/$defs/OpenAIResponseOutputMessageWebSearchToolCall + - $ref: >- + #/$defs/OpenAIResponseOutputMessageFileSearchToolCall + - $ref: >- + #/$defs/OpenAIResponseOutputMessageFunctionToolCall + - $ref: >- + #/$defs/OpenAIResponseOutputMessageMCPCall + - $ref: >- + #/$defs/OpenAIResponseOutputMessageMCPListTools + - $ref: '#/$defs/OpenAIResponseMCPApprovalRequest' + - $ref: >- + #/$defs/OpenAIResponseInputFunctionToolCallOutput + - $ref: >- + #/$defs/OpenAIResponseMCPApprovalResponse + - $ref: '#/$defs/OpenAIResponseMessage' + title: Data + type: array + object: + const: list + default: list + title: Object + type: string + required: + - data + title: ListOpenAIResponseInputItem + type: object + RunShieldRequest: + type: object + RunShieldResponse: + $defs: + SafetyViolation: + description: >- + Details of a safety violation detected by content moderation. + + + :param violation_level: Severity level of the violation + + :param user_message: (Optional) Message to convey to the user about the + violation + + :param metadata: Additional metadata including specific violation codes + for debugging and telemetry + properties: + violation_level: + $ref: '#/$defs/ViolationLevel' + user_message: + anyOf: + - type: string + - type: 'null' + title: User Message + metadata: + additionalProperties: true + title: Metadata + type: object + required: + - violation_level + title: SafetyViolation + type: object + ViolationLevel: + description: >- + Severity level of a safety violation. + + + :cvar INFO: Informational level violation that does not require action + + :cvar WARN: Warning level violation that suggests caution but allows continuation + + :cvar ERROR: Error level violation that requires blocking or intervention + enum: + - info + - warn + - error + title: ViolationLevel + type: string + description: >- + Response from running a safety shield. + + + :param violation: (Optional) Safety violation detected by the shield, if any + properties: + violation: + anyOf: + - $ref: '#/$defs/SafetyViolation' + - type: 'null' + title: RunShieldResponse + type: object + ListScoringFunctionsResponse: + $defs: + AgentTurnInputType: + description: >- + Parameter type for agent turn input. + + + :param type: Discriminator type. Always "agent_turn_input" + properties: + type: + const: agent_turn_input + default: agent_turn_input + title: Type + type: string + title: AgentTurnInputType + type: object + AggregationFunctionType: + description: >- + Types of aggregation functions for scoring results. + + :cvar average: Calculate the arithmetic mean of scores + + :cvar weighted_average: Calculate a weighted average of scores + + :cvar median: Calculate the median value of scores + + :cvar categorical_count: Count occurrences of categorical values + + :cvar accuracy: Calculate accuracy as the proportion of correct answers + enum: + - average + - weighted_average + - median + - categorical_count + - accuracy + title: AggregationFunctionType + type: string + ArrayType: + description: >- + Parameter type for array values. + + + :param type: Discriminator type. Always "array" + properties: + type: + const: array + default: array + title: Type + type: string + title: ArrayType + type: object + BasicScoringFnParams: + description: >- + Parameters for basic scoring function configuration. + + :param type: The type of scoring function parameters, always basic + + :param aggregation_functions: Aggregation functions to apply to the scores + of each row + properties: + type: + const: basic + default: basic + title: Type + type: string + aggregation_functions: + description: >- + Aggregation functions to apply to the scores of each row + items: + $ref: '#/$defs/AggregationFunctionType' + title: Aggregation Functions + type: array + title: BasicScoringFnParams + type: object + BooleanType: + description: >- + Parameter type for boolean values. + + + :param type: Discriminator type. Always "boolean" + properties: + type: + const: boolean + default: boolean + title: Type + type: string + title: BooleanType + type: object + ChatCompletionInputType: + description: >- + Parameter type for chat completion input. + + + :param type: Discriminator type. Always "chat_completion_input" + properties: + type: + const: chat_completion_input + default: chat_completion_input + title: Type + type: string + title: ChatCompletionInputType + type: object + CompletionInputType: + description: >- + Parameter type for completion input. + + + :param type: Discriminator type. Always "completion_input" + properties: + type: + const: completion_input + default: completion_input + title: Type + type: string + title: CompletionInputType + type: object + JsonType: + description: >- + Parameter type for JSON values. + + + :param type: Discriminator type. Always "json" + properties: + type: + const: json + default: json + title: Type + type: string + title: JsonType + type: object + LLMAsJudgeScoringFnParams: + description: >- + Parameters for LLM-as-judge scoring function configuration. + + :param type: The type of scoring function parameters, always llm_as_judge + + :param judge_model: Identifier of the LLM model to use as a judge for + scoring + + :param prompt_template: (Optional) Custom prompt template for the judge + model + + :param judge_score_regexes: Regexes to extract the answer from generated + response + + :param aggregation_functions: Aggregation functions to apply to the scores + of each row + properties: + type: + const: llm_as_judge + default: llm_as_judge + title: Type + type: string + judge_model: + title: Judge Model + type: string + prompt_template: + anyOf: + - type: string + - type: 'null' + title: Prompt Template + judge_score_regexes: + description: >- + Regexes to extract the answer from generated response + items: + type: string + title: Judge Score Regexes + type: array + aggregation_functions: + description: >- + Aggregation functions to apply to the scores of each row + items: + $ref: '#/$defs/AggregationFunctionType' + title: Aggregation Functions + type: array + required: + - judge_model + title: LLMAsJudgeScoringFnParams + type: object + NumberType: + description: >- + Parameter type for numeric values. + + + :param type: Discriminator type. Always "number" + properties: + type: + const: number + default: number + title: Type + type: string + title: NumberType + type: object + ObjectType: + description: >- + Parameter type for object values. + + + :param type: Discriminator type. Always "object" + properties: + type: + const: object + default: object + title: Type + type: string + title: ObjectType + type: object + RegexParserScoringFnParams: + description: >- + Parameters for regex parser scoring function configuration. + + :param type: The type of scoring function parameters, always regex_parser + + :param parsing_regexes: Regex to extract the answer from generated response + + :param aggregation_functions: Aggregation functions to apply to the scores + of each row + properties: + type: + const: regex_parser + default: regex_parser + title: Type + type: string + parsing_regexes: + description: >- + Regex to extract the answer from generated response + items: + type: string + title: Parsing Regexes + type: array + aggregation_functions: + description: >- + Aggregation functions to apply to the scores of each row + items: + $ref: '#/$defs/AggregationFunctionType' + title: Aggregation Functions + type: array + title: RegexParserScoringFnParams + type: object + ScoringFn: + description: >- + A scoring function resource for evaluating model outputs. + + :param type: The resource type, always scoring_function + properties: + identifier: + description: >- + Unique identifier for this resource in llama stack + title: Identifier + type: string + provider_resource_id: + anyOf: + - type: string + - type: 'null' + description: >- + Unique identifier for this resource in the provider + title: Provider Resource Id + provider_id: + description: >- + ID of the provider that owns this resource + title: Provider Id + type: string + type: + const: scoring_function + default: scoring_function + title: Type + type: string + description: + anyOf: + - type: string + - type: 'null' + title: Description + metadata: + additionalProperties: true + description: >- + Any additional metadata for this definition + title: Metadata + type: object + return_type: + description: >- + The return type of the deterministic function + discriminator: + mapping: + agent_turn_input: '#/$defs/AgentTurnInputType' + array: '#/$defs/ArrayType' + boolean: '#/$defs/BooleanType' + chat_completion_input: '#/$defs/ChatCompletionInputType' + completion_input: '#/$defs/CompletionInputType' + json: '#/$defs/JsonType' + number: '#/$defs/NumberType' + object: '#/$defs/ObjectType' + string: '#/$defs/StringType' + union: '#/$defs/UnionType' + propertyName: type + oneOf: + - $ref: '#/$defs/StringType' + - $ref: '#/$defs/NumberType' + - $ref: '#/$defs/BooleanType' + - $ref: '#/$defs/ArrayType' + - $ref: '#/$defs/ObjectType' + - $ref: '#/$defs/JsonType' + - $ref: '#/$defs/UnionType' + - $ref: '#/$defs/ChatCompletionInputType' + - $ref: '#/$defs/CompletionInputType' + - $ref: '#/$defs/AgentTurnInputType' + title: Return Type + params: + anyOf: + - discriminator: + mapping: + basic: '#/$defs/BasicScoringFnParams' + llm_as_judge: '#/$defs/LLMAsJudgeScoringFnParams' + regex_parser: '#/$defs/RegexParserScoringFnParams' + propertyName: type + oneOf: + - $ref: '#/$defs/LLMAsJudgeScoringFnParams' + - $ref: '#/$defs/RegexParserScoringFnParams' + - $ref: '#/$defs/BasicScoringFnParams' + - type: 'null' + description: >- + The parameters for the scoring function for benchmark eval, these + can be overridden for app eval + title: Params + required: + - identifier + - provider_id + - return_type + title: ScoringFn + type: object + StringType: + description: >- + Parameter type for string values. + + + :param type: Discriminator type. Always "string" + properties: + type: + const: string + default: string + title: Type + type: string + title: StringType + type: object + UnionType: + description: >- + Parameter type for union values. + + + :param type: Discriminator type. Always "union" + properties: + type: + const: union + default: union + title: Type + type: string + title: UnionType + type: object + properties: + data: + items: + $ref: '#/$defs/ScoringFn' + title: Data + type: array required: - data title: ListScoringFunctionsResponse - ParamType: - oneOf: - - $ref: '#/components/schemas/StringType' - - $ref: '#/components/schemas/NumberType' - - $ref: '#/components/schemas/BooleanType' - - $ref: '#/components/schemas/ArrayType' - - $ref: '#/components/schemas/ObjectType' - - $ref: '#/components/schemas/JsonType' - - $ref: '#/components/schemas/UnionType' - - $ref: '#/components/schemas/ChatCompletionInputType' - - $ref: '#/components/schemas/CompletionInputType' - - $ref: '#/components/schemas/AgentTurnInputType' - discriminator: - propertyName: type - mapping: - string: '#/components/schemas/StringType' - number: '#/components/schemas/NumberType' - boolean: '#/components/schemas/BooleanType' - array: '#/components/schemas/ArrayType' - object: '#/components/schemas/ObjectType' - json: '#/components/schemas/JsonType' - union: '#/components/schemas/UnionType' - chat_completion_input: '#/components/schemas/ChatCompletionInputType' - completion_input: '#/components/schemas/CompletionInputType' - agent_turn_input: '#/components/schemas/AgentTurnInputType' + type: object RegisterScoringFunctionRequest: type: object - properties: - scoring_fn_id: - type: string + ScoringFn: + $defs: + AgentTurnInputType: description: >- - The ID of the scoring function to register. - description: - type: string - description: The description of the scoring function. - return_type: - $ref: '#/components/schemas/ParamType' - description: The return type of the scoring function. - provider_scoring_fn_id: - type: string + Parameter type for agent turn input. + + + :param type: Discriminator type. Always "agent_turn_input" + properties: + type: + const: agent_turn_input + default: agent_turn_input + title: Type + type: string + title: AgentTurnInputType + type: object + AggregationFunctionType: description: >- - The ID of the provider scoring function to use for the scoring function. - provider_id: + Types of aggregation functions for scoring results. + + :cvar average: Calculate the arithmetic mean of scores + + :cvar weighted_average: Calculate a weighted average of scores + + :cvar median: Calculate the median value of scores + + :cvar categorical_count: Count occurrences of categorical values + + :cvar accuracy: Calculate accuracy as the proportion of correct answers + enum: + - average + - weighted_average + - median + - categorical_count + - accuracy + title: AggregationFunctionType type: string + ArrayType: description: >- - The ID of the provider to use for the scoring function. - params: - $ref: '#/components/schemas/ScoringFnParams' + Parameter type for array values. + + + :param type: Discriminator type. Always "array" + properties: + type: + const: array + default: array + title: Type + type: string + title: ArrayType + type: object + BasicScoringFnParams: description: >- - The parameters for the scoring function for benchmark eval, these can - be overridden for app eval. - additionalProperties: false - required: - - scoring_fn_id - - description - - return_type - title: RegisterScoringFunctionRequest - ScoreRequest: - type: object - properties: - input_rows: - type: array - items: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number + Parameters for basic scoring function configuration. + + :param type: The type of scoring function parameters, always basic + + :param aggregation_functions: Aggregation functions to apply to the scores + of each row + properties: + type: + const: basic + default: basic + title: Type + type: string + aggregation_functions: + description: >- + Aggregation functions to apply to the scores of each row + items: + $ref: '#/$defs/AggregationFunctionType' + title: Aggregation Functions + type: array + title: BasicScoringFnParams + type: object + BooleanType: + description: >- + Parameter type for boolean values. + + + :param type: Discriminator type. Always "boolean" + properties: + type: + const: boolean + default: boolean + title: Type + type: string + title: BooleanType + type: object + ChatCompletionInputType: + description: >- + Parameter type for chat completion input. + + + :param type: Discriminator type. Always "chat_completion_input" + properties: + type: + const: chat_completion_input + default: chat_completion_input + title: Type + type: string + title: ChatCompletionInputType + type: object + CompletionInputType: + description: >- + Parameter type for completion input. + + + :param type: Discriminator type. Always "completion_input" + properties: + type: + const: completion_input + default: completion_input + title: Type + type: string + title: CompletionInputType + type: object + JsonType: + description: >- + Parameter type for JSON values. + + + :param type: Discriminator type. Always "json" + properties: + type: + const: json + default: json + title: Type + type: string + title: JsonType + type: object + LLMAsJudgeScoringFnParams: + description: >- + Parameters for LLM-as-judge scoring function configuration. + + :param type: The type of scoring function parameters, always llm_as_judge + + :param judge_model: Identifier of the LLM model to use as a judge for + scoring + + :param prompt_template: (Optional) Custom prompt template for the judge + model + + :param judge_score_regexes: Regexes to extract the answer from generated + response + + :param aggregation_functions: Aggregation functions to apply to the scores + of each row + properties: + type: + const: llm_as_judge + default: llm_as_judge + title: Type + type: string + judge_model: + title: Judge Model + type: string + prompt_template: + anyOf: - type: string - - type: array - - type: object - description: The rows to score. - scoring_functions: - type: object - additionalProperties: - oneOf: - - $ref: '#/components/schemas/ScoringFnParams' - - type: 'null' - description: >- - The scoring functions to use for the scoring. - additionalProperties: false - required: - - input_rows - - scoring_functions - title: ScoreRequest - ScoreResponse: - type: object - properties: - results: - type: object - additionalProperties: - $ref: '#/components/schemas/ScoringResult' - description: >- - A map of scoring function name to ScoringResult. - additionalProperties: false - required: - - results - title: ScoreResponse - description: The response from scoring. - ScoringResult: - type: object - properties: - score_rows: - type: array - items: - type: object - additionalProperties: - oneOf: - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - The scoring result for each row. Each row is a map of column name to value. - aggregated_results: + title: Prompt Template + judge_score_regexes: + description: >- + Regexes to extract the answer from generated response + items: + type: string + title: Judge Score Regexes + type: array + aggregation_functions: + description: >- + Aggregation functions to apply to the scores of each row + items: + $ref: '#/$defs/AggregationFunctionType' + title: Aggregation Functions + type: array + required: + - judge_model + title: LLMAsJudgeScoringFnParams type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: Map of metric name to aggregated value - additionalProperties: false - required: - - score_rows - - aggregated_results - title: ScoringResult - description: A scoring result for a single row. - ScoreBatchRequest: - type: object - properties: - dataset_id: - type: string - description: The ID of the dataset to score. - scoring_functions: + NumberType: + description: >- + Parameter type for numeric values. + + + :param type: Discriminator type. Always "number" + properties: + type: + const: number + default: number + title: Type + type: string + title: NumberType type: object - additionalProperties: - oneOf: - - $ref: '#/components/schemas/ScoringFnParams' - - type: 'null' + ObjectType: description: >- - The scoring functions to use for the scoring. - save_results_dataset: - type: boolean - description: >- - Whether to save the results to a dataset. - additionalProperties: false - required: - - dataset_id - - scoring_functions - - save_results_dataset - title: ScoreBatchRequest - ScoreBatchResponse: - type: object - properties: - dataset_id: - type: string - description: >- - (Optional) The identifier of the dataset that was scored - results: + Parameter type for object values. + + + :param type: Discriminator type. Always "object" + properties: + type: + const: object + default: object + title: Type + type: string + title: ObjectType type: object - additionalProperties: - $ref: '#/components/schemas/ScoringResult' + RegexParserScoringFnParams: description: >- - A map of scoring function name to ScoringResult - additionalProperties: false - required: - - results - title: ScoreBatchResponse + Parameters for regex parser scoring function configuration. + + :param type: The type of scoring function parameters, always regex_parser + + :param parsing_regexes: Regex to extract the answer from generated response + + :param aggregation_functions: Aggregation functions to apply to the scores + of each row + properties: + type: + const: regex_parser + default: regex_parser + title: Type + type: string + parsing_regexes: + description: >- + Regex to extract the answer from generated response + items: + type: string + title: Parsing Regexes + type: array + aggregation_functions: + description: >- + Aggregation functions to apply to the scores of each row + items: + $ref: '#/$defs/AggregationFunctionType' + title: Aggregation Functions + type: array + title: RegexParserScoringFnParams + type: object + StringType: + description: >- + Parameter type for string values. + + + :param type: Discriminator type. Always "string" + properties: + type: + const: string + default: string + title: Type + type: string + title: StringType + type: object + UnionType: + description: >- + Parameter type for union values. + + + :param type: Discriminator type. Always "union" + properties: + type: + const: union + default: union + title: Type + type: string + title: UnionType + type: object description: >- - Response from batch scoring operations on datasets. - Shield: - type: object + A scoring function resource for evaluating model outputs. + + :param type: The resource type, always scoring_function properties: identifier: + description: >- + Unique identifier for this resource in llama stack + title: Identifier type: string provider_resource_id: - type: string + anyOf: + - type: string + - type: 'null' + description: >- + Unique identifier for this resource in the provider + title: Provider Resource Id provider_id: + description: >- + ID of the provider that owns this resource + title: Provider Id type: string type: + const: scoring_function + default: scoring_function + title: Type type: string - enum: - - model - - shield - - vector_store - - dataset - - scoring_function - - benchmark - - tool - - tool_group - - prompt - const: shield - default: shield - description: The resource type, always shield - params: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object + description: + anyOf: + - type: string + - type: 'null' + title: Description + metadata: + additionalProperties: true description: >- - (Optional) Configuration parameters for the shield - additionalProperties: false + Any additional metadata for this definition + title: Metadata + type: object + return_type: + description: >- + The return type of the deterministic function + discriminator: + mapping: + agent_turn_input: '#/$defs/AgentTurnInputType' + array: '#/$defs/ArrayType' + boolean: '#/$defs/BooleanType' + chat_completion_input: '#/$defs/ChatCompletionInputType' + completion_input: '#/$defs/CompletionInputType' + json: '#/$defs/JsonType' + number: '#/$defs/NumberType' + object: '#/$defs/ObjectType' + string: '#/$defs/StringType' + union: '#/$defs/UnionType' + propertyName: type + oneOf: + - $ref: '#/$defs/StringType' + - $ref: '#/$defs/NumberType' + - $ref: '#/$defs/BooleanType' + - $ref: '#/$defs/ArrayType' + - $ref: '#/$defs/ObjectType' + - $ref: '#/$defs/JsonType' + - $ref: '#/$defs/UnionType' + - $ref: '#/$defs/ChatCompletionInputType' + - $ref: '#/$defs/CompletionInputType' + - $ref: '#/$defs/AgentTurnInputType' + title: Return Type + params: + anyOf: + - discriminator: + mapping: + basic: '#/$defs/BasicScoringFnParams' + llm_as_judge: '#/$defs/LLMAsJudgeScoringFnParams' + regex_parser: '#/$defs/RegexParserScoringFnParams' + propertyName: type + oneOf: + - $ref: '#/$defs/LLMAsJudgeScoringFnParams' + - $ref: '#/$defs/RegexParserScoringFnParams' + - $ref: '#/$defs/BasicScoringFnParams' + - type: 'null' + description: >- + The parameters for the scoring function for benchmark eval, these can + be overridden for app eval + title: Params required: - identifier - provider_id - - type - title: Shield - description: >- - A safety shield resource that can be used to check content. - ListShieldsResponse: + - return_type + title: ScoringFn type: object + ScoreRequest: + type: object + ScoreResponse: + $defs: + ScoringResult: + description: >- + A scoring result for a single row. + + + :param score_rows: The scoring result for each row. Each row is a map + of column name to value. + + :param aggregated_results: Map of metric name to aggregated value + properties: + score_rows: + items: + additionalProperties: true + type: object + title: Score Rows + type: array + aggregated_results: + additionalProperties: true + title: Aggregated Results + type: object + required: + - score_rows + - aggregated_results + title: ScoringResult + type: object + description: >- + The response from scoring. + + + :param results: A map of scoring function name to ScoringResult. + properties: + results: + additionalProperties: + $ref: '#/$defs/ScoringResult' + title: Results + type: object + required: + - results + title: ScoreResponse + type: object + ScoreBatchRequest: + type: object + ScoreBatchResponse: + $defs: + ScoringResult: + description: >- + A scoring result for a single row. + + + :param score_rows: The scoring result for each row. Each row is a map + of column name to value. + + :param aggregated_results: Map of metric name to aggregated value + properties: + score_rows: + items: + additionalProperties: true + type: object + title: Score Rows + type: array + aggregated_results: + additionalProperties: true + title: Aggregated Results + type: object + required: + - score_rows + - aggregated_results + title: ScoringResult + type: object + description: >- + Response from batch scoring operations on datasets. + + + :param dataset_id: (Optional) The identifier of the dataset that was scored + + :param results: A map of scoring function name to ScoringResult + properties: + dataset_id: + anyOf: + - type: string + - type: 'null' + title: Dataset Id + results: + additionalProperties: + $ref: '#/$defs/ScoringResult' + title: Results + type: object + required: + - results + title: ScoreBatchResponse + type: object + ListShieldsResponse: + $defs: + Shield: + description: >- + A safety shield resource that can be used to check content. + + + :param params: (Optional) Configuration parameters for the shield + + :param type: The resource type, always shield + properties: + identifier: + description: >- + Unique identifier for this resource in llama stack + title: Identifier + type: string + provider_resource_id: + anyOf: + - type: string + - type: 'null' + description: >- + Unique identifier for this resource in the provider + title: Provider Resource Id + provider_id: + description: >- + ID of the provider that owns this resource + title: Provider Id + type: string + type: + const: shield + default: shield + title: Type + type: string + params: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Params + required: + - identifier + - provider_id + title: Shield + type: object properties: data: - type: array items: - $ref: '#/components/schemas/Shield' - additionalProperties: false + $ref: '#/$defs/Shield' + title: Data + type: array required: - data title: ListShieldsResponse + type: object RegisterShieldRequest: type: object properties: @@ -10279,209 +14024,584 @@ components: default: > Result {index} - Content: {chunk.content} - Metadata: {metadata} - description: >- - Template for formatting each retrieved chunk in the context. Available - placeholders: {index} (1-based chunk ordinal), {chunk.content} (chunk - content string), {metadata} (chunk metadata dict). Default: "Result {index}\nContent: - {chunk.content}\nMetadata: {metadata}\n" - mode: - $ref: '#/components/schemas/RAGSearchMode' - default: vector - description: >- - Search mode for retrieval—either "vector", "keyword", or "hybrid". Default - "vector". - ranker: - $ref: '#/components/schemas/Ranker' - description: >- - Configuration for the ranker to use in hybrid search. Defaults to RRF - ranker. - additionalProperties: false - required: - - query_generator_config - - max_tokens_in_context - - max_chunks - - chunk_template - title: RAGQueryConfig - description: >- - Configuration for the RAG query generation. - RAGSearchMode: - type: string - enum: - - vector - - keyword - - hybrid - title: RAGSearchMode - description: >- - Search modes for RAG query retrieval: - VECTOR: Uses vector similarity search - for semantic matching - KEYWORD: Uses keyword-based search for exact matching - - HYBRID: Combines both vector and keyword search for better results - RRFRanker: - type: object - properties: - type: - type: string - const: rrf - default: rrf - description: The type of ranker, always "rrf" - impact_factor: - type: number - default: 60.0 - description: >- - The impact factor for RRF scoring. Higher values give more weight to higher-ranked - results. Must be greater than 0 - additionalProperties: false - required: - - type - - impact_factor - title: RRFRanker - description: >- - Reciprocal Rank Fusion (RRF) ranker configuration. - Ranker: - oneOf: - - $ref: '#/components/schemas/RRFRanker' - - $ref: '#/components/schemas/WeightedRanker' - discriminator: - propertyName: type - mapping: - rrf: '#/components/schemas/RRFRanker' - weighted: '#/components/schemas/WeightedRanker' - WeightedRanker: - type: object - properties: - type: - type: string - const: weighted - default: weighted - description: The type of ranker, always "weighted" - alpha: - type: number - default: 0.5 - description: >- - Weight factor between 0 and 1. 0 means only use keyword scores, 1 means - only use vector scores, values in between blend both scores. - additionalProperties: false - required: - - type - - alpha - title: WeightedRanker - description: >- - Weighted ranker configuration that combines vector and keyword scores. - QueryRequest: - type: object - properties: - content: - $ref: '#/components/schemas/InterleavedContent' - description: >- - The query content to search for in the indexed documents - vector_store_ids: - type: array - items: - type: string - description: >- - List of vector database IDs to search within - query_config: - $ref: '#/components/schemas/RAGQueryConfig' - description: >- - (Optional) Configuration parameters for the query operation - additionalProperties: false - required: - - content - - vector_store_ids - title: QueryRequest - RAGQueryResult: - type: object - properties: - content: - $ref: '#/components/schemas/InterleavedContent' - description: >- - (Optional) The retrieved content from the query - metadata: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - Additional metadata about the query result - additionalProperties: false - required: - - metadata - title: RAGQueryResult - description: >- - Result of a RAG query containing retrieved content and metadata. - ToolGroup: - type: object + :param params: (Optional) Configuration parameters for the shield + + :param type: The resource type, always shield properties: identifier: + description: >- + Unique identifier for this resource in llama stack + title: Identifier type: string provider_resource_id: - type: string + anyOf: + - type: string + - type: 'null' + description: >- + Unique identifier for this resource in the provider + title: Provider Resource Id provider_id: + description: >- + ID of the provider that owns this resource + title: Provider Id type: string type: + const: shield + default: shield + title: Type type: string - enum: - - model - - shield - - vector_store - - dataset - - scoring_function - - benchmark - - tool - - tool_group - - prompt - const: tool_group - default: tool_group - description: Type of resource, always 'tool_group' - mcp_endpoint: - $ref: '#/components/schemas/URL' - description: >- - (Optional) Model Context Protocol endpoint for remote tools - args: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - (Optional) Additional arguments for the tool group - additionalProperties: false + params: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Params required: - identifier - provider_id - - type - title: ToolGroup - description: >- - A group of related tools managed together. - ListToolGroupsResponse: + title: Shield type: object + SyntheticDataGenerateRequest: + type: object + SyntheticDataGenerationResponse: + description: >- + Response from the synthetic data generation. Batch of (prompt, response, score) + tuples that pass the threshold. + + + :param synthetic_data: List of generated synthetic data samples that passed + the filtering criteria + + :param statistics: (Optional) Statistical information about the generation + process and filtering results + properties: + synthetic_data: + items: + additionalProperties: true + type: object + title: Synthetic Data + type: array + statistics: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Statistics + required: + - synthetic_data + title: SyntheticDataGenerationResponse + type: object + InvokeToolRequest: + type: object + ToolInvocationResult: + $defs: + ImageContentItem: + description: >- + A image content item + + + :param type: Discriminator type of the content item. Always "image" + + :param image: Image as a base64 encoded string or an URL + properties: + type: + const: image + default: image + title: Type + type: string + image: + $ref: '#/$defs/_URLOrData' + required: + - image + title: ImageContentItem + type: object + TextContentItem: + description: >- + A text content item + + + :param type: Discriminator type of the content item. Always "text" + + :param text: Text content + properties: + type: + const: text + default: text + title: Type + type: string + text: + title: Text + type: string + required: + - text + title: TextContentItem + type: object + URL: + description: >- + A URL reference to external content. + + + :param uri: The URL string pointing to the resource + properties: + uri: + title: Uri + type: string + required: + - uri + title: URL + type: object + _URLOrData: + description: >- + A URL or a base64 encoded string + + + :param url: A URL of the image or data URL in the format of data:image/{type};base64,{data}. + Note that URL could have length limits. + + :param data: base64 encoded image data as string + properties: + url: + anyOf: + - $ref: '#/$defs/URL' + - type: 'null' + data: + anyOf: + - type: string + - type: 'null' + contentEncoding: base64 + title: Data + title: _URLOrData + type: object + description: >- + Result of a tool invocation. + + + :param content: (Optional) The output content from the tool execution + + :param error_message: (Optional) Error message if the tool execution failed + + :param error_code: (Optional) Numeric error code if the tool execution failed + + :param metadata: (Optional) Additional metadata about the tool execution + properties: + content: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + - type: 'null' + title: Content + error_message: + anyOf: + - type: string + - type: 'null' + title: Error Message + error_code: + anyOf: + - type: integer + - type: 'null' + title: Error Code + metadata: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Metadata + title: ToolInvocationResult + type: object + URL: + description: >- + A URL reference to external content. + + + :param uri: The URL string pointing to the resource + properties: + uri: + title: Uri + type: string + required: + - uri + title: URL + type: object + ListToolDefsResponse: + $defs: + ToolDef: + description: >- + Tool definition used in runtime contexts. + + + :param name: Name of the tool + + :param description: (Optional) Human-readable description of what the + tool does + + :param input_schema: (Optional) JSON Schema for tool inputs (MCP inputSchema) + + :param output_schema: (Optional) JSON Schema for tool outputs (MCP outputSchema) + + :param metadata: (Optional) Additional metadata about the tool + + :param toolgroup_id: (Optional) ID of the tool group this tool belongs + to + properties: + toolgroup_id: + anyOf: + - type: string + - type: 'null' + title: Toolgroup Id + name: + title: Name + type: string + description: + anyOf: + - type: string + - type: 'null' + title: Description + input_schema: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Input Schema + output_schema: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Output Schema + metadata: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Metadata + required: + - name + title: ToolDef + type: object + description: >- + Response containing a list of tool definitions. + + + :param data: List of tool definitions properties: data: - type: array items: - $ref: '#/components/schemas/ToolGroup' - description: List of tool groups - additionalProperties: false + $ref: '#/$defs/ToolDef' + title: Data + type: array + required: + - data + title: ListToolDefsResponse + type: object + InsertRequest: + type: object + QueryRequest: + type: object + RAGQueryResult: + $defs: + ImageContentItem: + description: >- + A image content item + + + :param type: Discriminator type of the content item. Always "image" + + :param image: Image as a base64 encoded string or an URL + properties: + type: + const: image + default: image + title: Type + type: string + image: + $ref: '#/$defs/_URLOrData' + required: + - image + title: ImageContentItem + type: object + TextContentItem: + description: >- + A text content item + + + :param type: Discriminator type of the content item. Always "text" + + :param text: Text content + properties: + type: + const: text + default: text + title: Type + type: string + text: + title: Text + type: string + required: + - text + title: TextContentItem + type: object + URL: + description: >- + A URL reference to external content. + + + :param uri: The URL string pointing to the resource + properties: + uri: + title: Uri + type: string + required: + - uri + title: URL + type: object + _URLOrData: + description: >- + A URL or a base64 encoded string + + + :param url: A URL of the image or data URL in the format of data:image/{type};base64,{data}. + Note that URL could have length limits. + + :param data: base64 encoded image data as string + properties: + url: + anyOf: + - $ref: '#/$defs/URL' + - type: 'null' + data: + anyOf: + - type: string + - type: 'null' + contentEncoding: base64 + title: Data + title: _URLOrData + type: object + description: >- + Result of a RAG query containing retrieved content and metadata. + + + :param content: (Optional) The retrieved content from the query + + :param metadata: Additional metadata about the query result + properties: + content: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + - type: 'null' + title: Content + metadata: + additionalProperties: true + title: Metadata + type: object + title: RAGQueryResult + type: object + ListToolGroupsResponse: + $defs: + ToolGroup: + description: >- + A group of related tools managed together. + + + :param type: Type of resource, always 'tool_group' + + :param mcp_endpoint: (Optional) Model Context Protocol endpoint for remote + tools + + :param args: (Optional) Additional arguments for the tool group + properties: + identifier: + description: >- + Unique identifier for this resource in llama stack + title: Identifier + type: string + provider_resource_id: + anyOf: + - type: string + - type: 'null' + description: >- + Unique identifier for this resource in the provider + title: Provider Resource Id + provider_id: + description: >- + ID of the provider that owns this resource + title: Provider Id + type: string + type: + const: tool_group + default: tool_group + title: Type + type: string + mcp_endpoint: + anyOf: + - $ref: '#/$defs/URL' + - type: 'null' + args: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Args + required: + - identifier + - provider_id + title: ToolGroup + type: object + URL: + description: >- + A URL reference to external content. + + + :param uri: The URL string pointing to the resource + properties: + uri: + title: Uri + type: string + required: + - uri + title: URL + type: object + description: >- + Response containing a list of tool groups. + + + :param data: List of tool groups + properties: + data: + items: + $ref: '#/$defs/ToolGroup' + title: Data + type: array required: - data title: ListToolGroupsResponse - description: >- - Response containing a list of tool groups. + type: object RegisterToolGroupRequest: type: object + ToolGroup: + $defs: + URL: + description: >- + A URL reference to external content. + + + :param uri: The URL string pointing to the resource + properties: + uri: + title: Uri + type: string + required: + - uri + title: URL + type: object + description: >- + A group of related tools managed together. + + + :param type: Type of resource, always 'tool_group' + + :param mcp_endpoint: (Optional) Model Context Protocol endpoint for remote + tools + + :param args: (Optional) Additional arguments for the tool group + properties: + identifier: + description: >- + Unique identifier for this resource in llama stack + title: Identifier + type: string + provider_resource_id: + anyOf: + - type: string + - type: 'null' + description: >- + Unique identifier for this resource in the provider + title: Provider Resource Id + provider_id: + description: >- + ID of the provider that owns this resource + title: Provider Id + type: string + type: + const: tool_group + default: tool_group + title: Type + type: string + mcp_endpoint: + anyOf: + - $ref: '#/$defs/URL' + - type: 'null' + args: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Args + required: + - identifier + - provider_id + title: ToolGroup + type: object + ToolDef: + description: >- + Tool definition used in runtime contexts. + + + :param name: Name of the tool + + :param description: (Optional) Human-readable description of what the tool + does + + :param input_schema: (Optional) JSON Schema for tool inputs (MCP inputSchema) + + :param output_schema: (Optional) JSON Schema for tool outputs (MCP outputSchema) + + :param metadata: (Optional) Additional metadata about the tool + + :param toolgroup_id: (Optional) ID of the tool group this tool belongs to properties: toolgroup_id: + anyOf: + - type: string + - type: 'null' + title: Toolgroup Id + name: + title: Name type: string description: The ID of the tool group to register. provider_id: @@ -10556,1555 +14676,2286 @@ components: A chunk of content that can be inserted into a vector database. ChunkMetadata: type: object - properties: - chunk_id: - type: string - description: >- - The ID of the chunk. If not set, it will be generated based on the document - ID and content. - document_id: - type: string - description: >- - The ID of the document this chunk belongs to. - source: - type: string - description: >- - The source of the content, such as a URL, file path, or other identifier. - created_timestamp: - type: integer - description: >- - An optional timestamp indicating when the chunk was created. - updated_timestamp: - type: integer - description: >- - An optional timestamp indicating when the chunk was last updated. - chunk_window: - type: string - description: >- - The window of the chunk, which can be used to group related chunks together. - chunk_tokenizer: - type: string - description: >- - The tokenizer used to create the chunk. Default is Tiktoken. - chunk_embedding_model: - type: string - description: >- - The embedding model used to create the chunk's embedding. - chunk_embedding_dimension: - type: integer - description: >- - The dimension of the embedding vector for the chunk. - content_token_count: - type: integer - description: >- - The number of tokens in the content of the chunk. - metadata_token_count: - type: integer - description: >- - The number of tokens in the metadata of the chunk. - additionalProperties: false - title: ChunkMetadata - description: >- - `ChunkMetadata` is backend metadata for a `Chunk` that is used to store additional - information about the chunk that will not be used in the context during - inference, but is required for backend functionality. The `ChunkMetadata` is - set during chunk creation in `MemoryToolRuntimeImpl().insert()`and is not - expected to change after. Use `Chunk.metadata` for metadata that will - be used in the context during inference. InsertChunksRequest: type: object - properties: - vector_store_id: - type: string - description: >- - The identifier of the vector database to insert the chunks into. - chunks: - type: array - items: - $ref: '#/components/schemas/Chunk' - description: >- - The chunks to insert. Each `Chunk` should contain content which can be - interleaved text, images, or other types. `metadata`: `dict[str, Any]` - and `embedding`: `List[float]` are optional. If `metadata` is provided, - you configure how Llama Stack formats the chunk during generation. If - `embedding` is not provided, it will be computed later. - ttl_seconds: - type: integer - description: The time to live of the chunks. - additionalProperties: false - required: - - vector_store_id - - chunks - title: InsertChunksRequest QueryChunksRequest: type: object - properties: - vector_store_id: - type: string - description: >- - The identifier of the vector database to query. - query: - $ref: '#/components/schemas/InterleavedContent' - description: The query to search for. - params: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: The parameters of the query. - additionalProperties: false - required: - - vector_store_id - - query - title: QueryChunksRequest QueryChunksResponse: - type: object + $defs: + Chunk: + description: >- + A chunk of content that can be inserted into a vector database. + + :param content: The content of the chunk, which can be interleaved text, + images, or other types. + + :param embedding: Optional embedding for the chunk. If not provided, it + will be computed later. + + :param metadata: Metadata associated with the chunk that will be used + in the model context during inference. + + :param stored_chunk_id: The chunk ID that is stored in the vector database. + Used for backend functionality. + + :param chunk_metadata: Metadata for the chunk that will NOT be used in + the context during inference. + The `chunk_metadata` is required backend functionality. + properties: + content: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + title: Content + metadata: + additionalProperties: true + title: Metadata + type: object + embedding: + anyOf: + - items: + type: number + type: array + - type: 'null' + title: Embedding + chunk_id: + anyOf: + - type: string + - type: 'null' + title: Chunk Id + chunk_metadata: + anyOf: + - $ref: '#/$defs/ChunkMetadata' + - type: 'null' + required: + - content + title: Chunk + type: object + ChunkMetadata: + description: >- + `ChunkMetadata` is backend metadata for a `Chunk` that is used to store + additional information about the chunk that + will not be used in the context during inference, but is required + for backend functionality. The `ChunkMetadata` + is set during chunk creation in `MemoryToolRuntimeImpl().insert()`and + is not expected to change after. + Use `Chunk.metadata` for metadata that will be used in the context + during inference. + :param chunk_id: The ID of the chunk. If not set, it will be generated + based on the document ID and content. + + :param document_id: The ID of the document this chunk belongs to. + + :param source: The source of the content, such as a URL, file path, or + other identifier. + + :param created_timestamp: An optional timestamp indicating when the chunk + was created. + + :param updated_timestamp: An optional timestamp indicating when the chunk + was last updated. + + :param chunk_window: The window of the chunk, which can be used to group + related chunks together. + + :param chunk_tokenizer: The tokenizer used to create the chunk. Default + is Tiktoken. + + :param chunk_embedding_model: The embedding model used to create the chunk's + embedding. + + :param chunk_embedding_dimension: The dimension of the embedding vector + for the chunk. + + :param content_token_count: The number of tokens in the content of the + chunk. + + :param metadata_token_count: The number of tokens in the metadata of the + chunk. + properties: + chunk_id: + anyOf: + - type: string + - type: 'null' + title: Chunk Id + document_id: + anyOf: + - type: string + - type: 'null' + title: Document Id + source: + anyOf: + - type: string + - type: 'null' + title: Source + created_timestamp: + anyOf: + - type: integer + - type: 'null' + title: Created Timestamp + updated_timestamp: + anyOf: + - type: integer + - type: 'null' + title: Updated Timestamp + chunk_window: + anyOf: + - type: string + - type: 'null' + title: Chunk Window + chunk_tokenizer: + anyOf: + - type: string + - type: 'null' + title: Chunk Tokenizer + chunk_embedding_model: + anyOf: + - type: string + - type: 'null' + title: Chunk Embedding Model + chunk_embedding_dimension: + anyOf: + - type: integer + - type: 'null' + title: Chunk Embedding Dimension + content_token_count: + anyOf: + - type: integer + - type: 'null' + title: Content Token Count + metadata_token_count: + anyOf: + - type: integer + - type: 'null' + title: Metadata Token Count + title: ChunkMetadata + type: object + ImageContentItem: + description: >- + A image content item + + + :param type: Discriminator type of the content item. Always "image" + + :param image: Image as a base64 encoded string or an URL + properties: + type: + const: image + default: image + title: Type + type: string + image: + $ref: '#/$defs/_URLOrData' + required: + - image + title: ImageContentItem + type: object + TextContentItem: + description: >- + A text content item + + + :param type: Discriminator type of the content item. Always "text" + + :param text: Text content + properties: + type: + const: text + default: text + title: Type + type: string + text: + title: Text + type: string + required: + - text + title: TextContentItem + type: object + URL: + description: >- + A URL reference to external content. + + + :param uri: The URL string pointing to the resource + properties: + uri: + title: Uri + type: string + required: + - uri + title: URL + type: object + _URLOrData: + description: >- + A URL or a base64 encoded string + + + :param url: A URL of the image or data URL in the format of data:image/{type};base64,{data}. + Note that URL could have length limits. + + :param data: base64 encoded image data as string + properties: + url: + anyOf: + - $ref: '#/$defs/URL' + - type: 'null' + data: + anyOf: + - type: string + - type: 'null' + contentEncoding: base64 + title: Data + title: _URLOrData + type: object + description: >- + Response from querying chunks in a vector database. + + + :param chunks: List of content chunks returned from the query + + :param scores: Relevance scores corresponding to each returned chunk properties: chunks: - type: array items: - $ref: '#/components/schemas/Chunk' - description: >- - List of content chunks returned from the query - scores: + $ref: '#/$defs/Chunk' + title: Chunks type: array + scores: items: type: number - description: >- - Relevance scores corresponding to each returned chunk - additionalProperties: false + title: Scores + type: array required: - chunks - scores title: QueryChunksResponse - description: >- - Response from querying chunks in a vector database. - VectorStoreFileCounts: type: object - properties: - completed: - type: integer - description: >- - Number of files that have been successfully processed - cancelled: - type: integer - description: >- - Number of files that had their processing cancelled - failed: - type: integer - description: Number of files that failed to process - in_progress: - type: integer - description: >- - Number of files currently being processed - total: - type: integer - description: >- - Total number of files in the vector store - additionalProperties: false - required: - - completed - - cancelled - - failed - - in_progress - - total - title: VectorStoreFileCounts - description: >- - File processing status counts for a vector store. VectorStoreListResponse: - type: object + $defs: + VectorStoreFileCounts: + description: >- + File processing status counts for a vector store. + + + :param completed: Number of files that have been successfully processed + + :param cancelled: Number of files that had their processing cancelled + + :param failed: Number of files that failed to process + + :param in_progress: Number of files currently being processed + + :param total: Total number of files in the vector store + properties: + completed: + title: Completed + type: integer + cancelled: + title: Cancelled + type: integer + failed: + title: Failed + type: integer + in_progress: + title: In Progress + type: integer + total: + title: Total + type: integer + required: + - completed + - cancelled + - failed + - in_progress + - total + title: VectorStoreFileCounts + type: object + VectorStoreObject: + description: >- + OpenAI Vector Store object. + + + :param id: Unique identifier for the vector store + + :param object: Object type identifier, always "vector_store" + + :param created_at: Timestamp when the vector store was created + + :param name: (Optional) Name of the vector store + + :param usage_bytes: Storage space used by the vector store in bytes + + :param file_counts: File processing status counts for the vector store + + :param status: Current status of the vector store + + :param expires_after: (Optional) Expiration policy for the vector store + + :param expires_at: (Optional) Timestamp when the vector store will expire + + :param last_active_at: (Optional) Timestamp of last activity on the vector + store + + :param metadata: Set of key-value pairs that can be attached to the vector + store + properties: + id: + title: Id + type: string + object: + default: vector_store + title: Object + type: string + created_at: + title: Created At + type: integer + name: + anyOf: + - type: string + - type: 'null' + title: Name + usage_bytes: + default: 0 + title: Usage Bytes + type: integer + file_counts: + $ref: '#/$defs/VectorStoreFileCounts' + status: + default: completed + title: Status + type: string + expires_after: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Expires After + expires_at: + anyOf: + - type: integer + - type: 'null' + title: Expires At + last_active_at: + anyOf: + - type: integer + - type: 'null' + title: Last Active At + metadata: + additionalProperties: true + title: Metadata + type: object + required: + - id + - created_at + - file_counts + title: VectorStoreObject + type: object + description: >- + Response from listing vector stores. + + + :param object: Object type identifier, always "list" + + :param data: List of vector store objects + + :param first_id: (Optional) ID of the first vector store in the list for pagination + + :param last_id: (Optional) ID of the last vector store in the list for pagination + + :param has_more: Whether there are more vector stores available beyond this + page properties: object: - type: string default: list - description: Object type identifier, always "list" + title: Object + type: string data: - type: array items: - $ref: '#/components/schemas/VectorStoreObject' - description: List of vector store objects + $ref: '#/$defs/VectorStoreObject' + title: Data + type: array first_id: - type: string - description: >- - (Optional) ID of the first vector store in the list for pagination + anyOf: + - type: string + - type: 'null' + title: First Id last_id: - type: string - description: >- - (Optional) ID of the last vector store in the list for pagination + anyOf: + - type: string + - type: 'null' + title: Last Id has_more: - type: boolean default: false - description: >- - Whether there are more vector stores available beyond this page - additionalProperties: false + title: Has More + type: boolean required: - - object - data - - has_more title: VectorStoreListResponse - description: Response from listing vector stores. - VectorStoreObject: type: object + VectorStoreObject: + $defs: + VectorStoreFileCounts: + description: >- + File processing status counts for a vector store. + + + :param completed: Number of files that have been successfully processed + + :param cancelled: Number of files that had their processing cancelled + + :param failed: Number of files that failed to process + + :param in_progress: Number of files currently being processed + + :param total: Total number of files in the vector store + properties: + completed: + title: Completed + type: integer + cancelled: + title: Cancelled + type: integer + failed: + title: Failed + type: integer + in_progress: + title: In Progress + type: integer + total: + title: Total + type: integer + required: + - completed + - cancelled + - failed + - in_progress + - total + title: VectorStoreFileCounts + type: object + description: >- + OpenAI Vector Store object. + + + :param id: Unique identifier for the vector store + + :param object: Object type identifier, always "vector_store" + + :param created_at: Timestamp when the vector store was created + + :param name: (Optional) Name of the vector store + + :param usage_bytes: Storage space used by the vector store in bytes + + :param file_counts: File processing status counts for the vector store + + :param status: Current status of the vector store + + :param expires_after: (Optional) Expiration policy for the vector store + + :param expires_at: (Optional) Timestamp when the vector store will expire + + :param last_active_at: (Optional) Timestamp of last activity on the vector + store + + :param metadata: Set of key-value pairs that can be attached to the vector + store properties: id: + title: Id type: string - description: Unique identifier for the vector store object: - type: string default: vector_store - description: >- - Object type identifier, always "vector_store" + title: Object + type: string created_at: + title: Created At type: integer - description: >- - Timestamp when the vector store was created name: - type: string - description: (Optional) Name of the vector store + anyOf: + - type: string + - type: 'null' + title: Name usage_bytes: - type: integer default: 0 - description: >- - Storage space used by the vector store in bytes + title: Usage Bytes + type: integer file_counts: - $ref: '#/components/schemas/VectorStoreFileCounts' - description: >- - File processing status counts for the vector store + $ref: '#/$defs/VectorStoreFileCounts' status: - type: string default: completed - description: Current status of the vector store + title: Status + type: string expires_after: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - (Optional) Expiration policy for the vector store + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Expires After expires_at: - type: integer - description: >- - (Optional) Timestamp when the vector store will expire + anyOf: + - type: integer + - type: 'null' + title: Expires At last_active_at: - type: integer - description: >- - (Optional) Timestamp of last activity on the vector store + anyOf: + - type: integer + - type: 'null' + title: Last Active At metadata: + additionalProperties: true + title: Metadata type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - Set of key-value pairs that can be attached to the vector store - additionalProperties: false required: - id - - object - created_at - - usage_bytes - file_counts - - status - - metadata title: VectorStoreObject - description: OpenAI Vector Store object. - "OpenAICreateVectorStoreRequestWithExtraBody": type: object - properties: - name: - type: string - description: (Optional) A name for the vector store - file_ids: - type: array - items: - type: string - description: >- - List of file IDs to include in the vector store - expires_after: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - (Optional) Expiration policy for the vector store - chunking_strategy: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - (Optional) Strategy for splitting files into chunks - metadata: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - Set of key-value pairs that can be attached to the vector store - additionalProperties: false - title: >- - OpenAICreateVectorStoreRequestWithExtraBody - description: >- - Request to create a vector store with extra_body support. OpenaiUpdateVectorStoreRequest: type: object - properties: - name: - type: string - description: The name of the vector store. - expires_after: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - The expiration policy for a vector store. - metadata: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - Set of 16 key-value pairs that can be attached to an object. - additionalProperties: false - title: OpenaiUpdateVectorStoreRequest VectorStoreDeleteResponse: - type: object + description: >- + Response from deleting a vector store. + + + :param id: Unique identifier of the deleted vector store + + :param object: Object type identifier for the deletion response + + :param deleted: Whether the deletion operation was successful properties: id: + title: Id type: string - description: >- - Unique identifier of the deleted vector store object: - type: string default: vector_store.deleted - description: >- - Object type identifier for the deletion response + title: Object + type: string deleted: - type: boolean default: true - description: >- - Whether the deletion operation was successful - additionalProperties: false + title: Deleted + type: boolean required: - id - - object - - deleted title: VectorStoreDeleteResponse - description: Response from deleting a vector store. - VectorStoreChunkingStrategy: - oneOf: - - $ref: '#/components/schemas/VectorStoreChunkingStrategyAuto' - - $ref: '#/components/schemas/VectorStoreChunkingStrategyStatic' - discriminator: - propertyName: type - mapping: - auto: '#/components/schemas/VectorStoreChunkingStrategyAuto' - static: '#/components/schemas/VectorStoreChunkingStrategyStatic' - VectorStoreChunkingStrategyAuto: type: object - properties: - type: - type: string - const: auto - default: auto - description: >- - Strategy type, always "auto" for automatic chunking - additionalProperties: false - required: - - type - title: VectorStoreChunkingStrategyAuto - description: >- - Automatic chunking strategy for vector store files. - VectorStoreChunkingStrategyStatic: - type: object - properties: - type: - type: string - const: static - default: static - description: >- - Strategy type, always "static" for static chunking - static: - $ref: '#/components/schemas/VectorStoreChunkingStrategyStaticConfig' - description: >- - Configuration parameters for the static chunking strategy - additionalProperties: false - required: - - type - - static - title: VectorStoreChunkingStrategyStatic - description: >- - Static chunking strategy with configurable parameters. - VectorStoreChunkingStrategyStaticConfig: - type: object - properties: - chunk_overlap_tokens: - type: integer - default: 400 - description: >- - Number of tokens to overlap between adjacent chunks - max_chunk_size_tokens: - type: integer - default: 800 - description: >- - Maximum number of tokens per chunk, must be between 100 and 4096 - additionalProperties: false - required: - - chunk_overlap_tokens - - max_chunk_size_tokens - title: VectorStoreChunkingStrategyStaticConfig - description: >- - Configuration for static chunking strategy. - "OpenAICreateVectorStoreFileBatchRequestWithExtraBody": - type: object - properties: - file_ids: - type: array - items: - type: string - description: >- - A list of File IDs that the vector store should use - attributes: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - (Optional) Key-value attributes to store with the files - chunking_strategy: - $ref: '#/components/schemas/VectorStoreChunkingStrategy' - description: >- - (Optional) The chunking strategy used to chunk the file(s). Defaults to - auto - additionalProperties: false - required: - - file_ids - title: >- - OpenAICreateVectorStoreFileBatchRequestWithExtraBody - description: >- - Request to create a vector store file batch with extra_body support. VectorStoreFileBatchObject: - type: object + $defs: + VectorStoreFileCounts: + description: >- + File processing status counts for a vector store. + + + :param completed: Number of files that have been successfully processed + + :param cancelled: Number of files that had their processing cancelled + + :param failed: Number of files that failed to process + + :param in_progress: Number of files currently being processed + + :param total: Total number of files in the vector store + properties: + completed: + title: Completed + type: integer + cancelled: + title: Cancelled + type: integer + failed: + title: Failed + type: integer + in_progress: + title: In Progress + type: integer + total: + title: Total + type: integer + required: + - completed + - cancelled + - failed + - in_progress + - total + title: VectorStoreFileCounts + type: object + description: >- + OpenAI Vector Store File Batch object. + + + :param id: Unique identifier for the file batch + + :param object: Object type identifier, always "vector_store.file_batch" + + :param created_at: Timestamp when the file batch was created + + :param vector_store_id: ID of the vector store containing the file batch + + :param status: Current processing status of the file batch + + :param file_counts: File processing status counts for the batch properties: id: + title: Id type: string - description: Unique identifier for the file batch object: - type: string default: vector_store.file_batch - description: >- - Object type identifier, always "vector_store.file_batch" - created_at: - type: integer - description: >- - Timestamp when the file batch was created - vector_store_id: + title: Object + type: string + created_at: + title: Created At + type: integer + vector_store_id: + title: Vector Store Id type: string - description: >- - ID of the vector store containing the file batch status: - $ref: '#/components/schemas/VectorStoreFileStatus' - description: >- - Current processing status of the file batch + anyOf: + - const: completed + type: string + - const: in_progress + type: string + - const: cancelled + type: string + - const: failed + type: string + title: Status file_counts: - $ref: '#/components/schemas/VectorStoreFileCounts' - description: >- - File processing status counts for the batch - additionalProperties: false + $ref: '#/$defs/VectorStoreFileCounts' required: - id - - object - created_at - vector_store_id - status - file_counts title: VectorStoreFileBatchObject - description: OpenAI Vector Store File Batch object. - VectorStoreFileStatus: - oneOf: - - type: string - const: completed - - type: string - const: in_progress - - type: string - const: cancelled - - type: string - const: failed - VectorStoreFileLastError: type: object - properties: - code: - oneOf: - - type: string - const: server_error - - type: string - const: rate_limit_exceeded + VectorStoreFilesListInBatchResponse: + $defs: + VectorStoreChunkingStrategyAuto: description: >- - Error code indicating the type of failure - message: - type: string + Automatic chunking strategy for vector store files. + + + :param type: Strategy type, always "auto" for automatic chunking + properties: + type: + const: auto + default: auto + title: Type + type: string + title: VectorStoreChunkingStrategyAuto + type: object + VectorStoreChunkingStrategyStatic: description: >- - Human-readable error message describing the failure - additionalProperties: false - required: - - code - - message - title: VectorStoreFileLastError + Static chunking strategy with configurable parameters. + + + :param type: Strategy type, always "static" for static chunking + + :param static: Configuration parameters for the static chunking strategy + properties: + type: + const: static + default: static + title: Type + type: string + static: + $ref: >- + #/$defs/VectorStoreChunkingStrategyStaticConfig + required: + - static + title: VectorStoreChunkingStrategyStatic + type: object + VectorStoreChunkingStrategyStaticConfig: + description: >- + Configuration for static chunking strategy. + + + :param chunk_overlap_tokens: Number of tokens to overlap between adjacent + chunks + + :param max_chunk_size_tokens: Maximum number of tokens per chunk, must + be between 100 and 4096 + properties: + chunk_overlap_tokens: + default: 400 + title: Chunk Overlap Tokens + type: integer + max_chunk_size_tokens: + default: 800 + maximum: 4096 + minimum: 100 + title: Max Chunk Size Tokens + type: integer + title: VectorStoreChunkingStrategyStaticConfig + type: object + VectorStoreFileLastError: + description: >- + Error information for failed vector store file processing. + + + :param code: Error code indicating the type of failure + + :param message: Human-readable error message describing the failure + properties: + code: + anyOf: + - const: server_error + type: string + - const: rate_limit_exceeded + type: string + title: Code + message: + title: Message + type: string + required: + - code + - message + title: VectorStoreFileLastError + type: object + VectorStoreFileObject: + description: >- + OpenAI Vector Store File object. + + + :param id: Unique identifier for the file + + :param object: Object type identifier, always "vector_store.file" + + :param attributes: Key-value attributes associated with the file + + :param chunking_strategy: Strategy used for splitting the file into chunks + + :param created_at: Timestamp when the file was added to the vector store + + :param last_error: (Optional) Error information if file processing failed + + :param status: Current processing status of the file + + :param usage_bytes: Storage space used by this file in bytes + + :param vector_store_id: ID of the vector store containing this file + properties: + id: + title: Id + type: string + object: + default: vector_store.file + title: Object + type: string + attributes: + additionalProperties: true + title: Attributes + type: object + chunking_strategy: + discriminator: + mapping: + auto: '#/$defs/VectorStoreChunkingStrategyAuto' + static: >- + #/$defs/VectorStoreChunkingStrategyStatic + propertyName: type + oneOf: + - $ref: '#/$defs/VectorStoreChunkingStrategyAuto' + - $ref: >- + #/$defs/VectorStoreChunkingStrategyStatic + title: Chunking Strategy + created_at: + title: Created At + type: integer + last_error: + anyOf: + - $ref: '#/$defs/VectorStoreFileLastError' + - type: 'null' + status: + anyOf: + - const: completed + type: string + - const: in_progress + type: string + - const: cancelled + type: string + - const: failed + type: string + title: Status + usage_bytes: + default: 0 + title: Usage Bytes + type: integer + vector_store_id: + title: Vector Store Id + type: string + required: + - id + - chunking_strategy + - created_at + - status + - vector_store_id + title: VectorStoreFileObject + type: object description: >- - Error information for failed vector store file processing. - VectorStoreFileObject: + Response from listing files in a vector store file batch. + + + :param object: Object type identifier, always "list" + + :param data: List of vector store file objects in the batch + + :param first_id: (Optional) ID of the first file in the list for pagination + + :param last_id: (Optional) ID of the last file in the list for pagination + + :param has_more: Whether there are more files available beyond this page + properties: + object: + default: list + title: Object + type: string + data: + items: + $ref: '#/$defs/VectorStoreFileObject' + title: Data + type: array + first_id: + anyOf: + - type: string + - type: 'null' + title: First Id + last_id: + anyOf: + - type: string + - type: 'null' + title: Last Id + has_more: + default: false + title: Has More + type: boolean + required: + - data + title: VectorStoreFilesListInBatchResponse type: object + Union: + type: object + nullable: true + VectorStoreListFilesResponse: + $defs: + VectorStoreChunkingStrategyAuto: + description: >- + Automatic chunking strategy for vector store files. + + + :param type: Strategy type, always "auto" for automatic chunking + properties: + type: + const: auto + default: auto + title: Type + type: string + title: VectorStoreChunkingStrategyAuto + type: object + VectorStoreChunkingStrategyStatic: + description: >- + Static chunking strategy with configurable parameters. + + + :param type: Strategy type, always "static" for static chunking + + :param static: Configuration parameters for the static chunking strategy + properties: + type: + const: static + default: static + title: Type + type: string + static: + $ref: >- + #/$defs/VectorStoreChunkingStrategyStaticConfig + required: + - static + title: VectorStoreChunkingStrategyStatic + type: object + VectorStoreChunkingStrategyStaticConfig: + description: >- + Configuration for static chunking strategy. + + + :param chunk_overlap_tokens: Number of tokens to overlap between adjacent + chunks + + :param max_chunk_size_tokens: Maximum number of tokens per chunk, must + be between 100 and 4096 + properties: + chunk_overlap_tokens: + default: 400 + title: Chunk Overlap Tokens + type: integer + max_chunk_size_tokens: + default: 800 + maximum: 4096 + minimum: 100 + title: Max Chunk Size Tokens + type: integer + title: VectorStoreChunkingStrategyStaticConfig + type: object + VectorStoreFileLastError: + description: >- + Error information for failed vector store file processing. + + + :param code: Error code indicating the type of failure + + :param message: Human-readable error message describing the failure + properties: + code: + anyOf: + - const: server_error + type: string + - const: rate_limit_exceeded + type: string + title: Code + message: + title: Message + type: string + required: + - code + - message + title: VectorStoreFileLastError + type: object + VectorStoreFileObject: + description: >- + OpenAI Vector Store File object. + + + :param id: Unique identifier for the file + + :param object: Object type identifier, always "vector_store.file" + + :param attributes: Key-value attributes associated with the file + + :param chunking_strategy: Strategy used for splitting the file into chunks + + :param created_at: Timestamp when the file was added to the vector store + + :param last_error: (Optional) Error information if file processing failed + + :param status: Current processing status of the file + + :param usage_bytes: Storage space used by this file in bytes + + :param vector_store_id: ID of the vector store containing this file + properties: + id: + title: Id + type: string + object: + default: vector_store.file + title: Object + type: string + attributes: + additionalProperties: true + title: Attributes + type: object + chunking_strategy: + discriminator: + mapping: + auto: '#/$defs/VectorStoreChunkingStrategyAuto' + static: >- + #/$defs/VectorStoreChunkingStrategyStatic + propertyName: type + oneOf: + - $ref: '#/$defs/VectorStoreChunkingStrategyAuto' + - $ref: >- + #/$defs/VectorStoreChunkingStrategyStatic + title: Chunking Strategy + created_at: + title: Created At + type: integer + last_error: + anyOf: + - $ref: '#/$defs/VectorStoreFileLastError' + - type: 'null' + status: + anyOf: + - const: completed + type: string + - const: in_progress + type: string + - const: cancelled + type: string + - const: failed + type: string + title: Status + usage_bytes: + default: 0 + title: Usage Bytes + type: integer + vector_store_id: + title: Vector Store Id + type: string + required: + - id + - chunking_strategy + - created_at + - status + - vector_store_id + title: VectorStoreFileObject + type: object + description: >- + Response from listing files in a vector store. + + + :param object: Object type identifier, always "list" + + :param data: List of vector store file objects + + :param first_id: (Optional) ID of the first file in the list for pagination + + :param last_id: (Optional) ID of the last file in the list for pagination + + :param has_more: Whether there are more files available beyond this page + properties: + object: + default: list + title: Object + type: string + data: + items: + $ref: '#/$defs/VectorStoreFileObject' + title: Data + type: array + first_id: + anyOf: + - type: string + - type: 'null' + title: First Id + last_id: + anyOf: + - type: string + - type: 'null' + title: Last Id + has_more: + default: false + title: Has More + type: boolean + required: + - data + title: VectorStoreListFilesResponse + type: object + OpenaiAttachFileToVectorStoreRequest: + type: object + VectorStoreFileObject: + $defs: + VectorStoreChunkingStrategyAuto: + description: >- + Automatic chunking strategy for vector store files. + + + :param type: Strategy type, always "auto" for automatic chunking + properties: + type: + const: auto + default: auto + title: Type + type: string + title: VectorStoreChunkingStrategyAuto + type: object + VectorStoreChunkingStrategyStatic: + description: >- + Static chunking strategy with configurable parameters. + + + :param type: Strategy type, always "static" for static chunking + + :param static: Configuration parameters for the static chunking strategy + properties: + type: + const: static + default: static + title: Type + type: string + static: + $ref: >- + #/$defs/VectorStoreChunkingStrategyStaticConfig + required: + - static + title: VectorStoreChunkingStrategyStatic + type: object + VectorStoreChunkingStrategyStaticConfig: + description: >- + Configuration for static chunking strategy. + + + :param chunk_overlap_tokens: Number of tokens to overlap between adjacent + chunks + + :param max_chunk_size_tokens: Maximum number of tokens per chunk, must + be between 100 and 4096 + properties: + chunk_overlap_tokens: + default: 400 + title: Chunk Overlap Tokens + type: integer + max_chunk_size_tokens: + default: 800 + maximum: 4096 + minimum: 100 + title: Max Chunk Size Tokens + type: integer + title: VectorStoreChunkingStrategyStaticConfig + type: object + VectorStoreFileLastError: + description: >- + Error information for failed vector store file processing. + + + :param code: Error code indicating the type of failure + + :param message: Human-readable error message describing the failure + properties: + code: + anyOf: + - const: server_error + type: string + - const: rate_limit_exceeded + type: string + title: Code + message: + title: Message + type: string + required: + - code + - message + title: VectorStoreFileLastError + type: object + description: >- + OpenAI Vector Store File object. + + + :param id: Unique identifier for the file + + :param object: Object type identifier, always "vector_store.file" + + :param attributes: Key-value attributes associated with the file + + :param chunking_strategy: Strategy used for splitting the file into chunks + + :param created_at: Timestamp when the file was added to the vector store + + :param last_error: (Optional) Error information if file processing failed + + :param status: Current processing status of the file + + :param usage_bytes: Storage space used by this file in bytes + + :param vector_store_id: ID of the vector store containing this file properties: id: + title: Id type: string - description: Unique identifier for the file object: - type: string default: vector_store.file - description: >- - Object type identifier, always "vector_store.file" - attributes: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - Key-value attributes associated with the file - chunking_strategy: - oneOf: - - $ref: '#/components/schemas/VectorStoreChunkingStrategyAuto' - - $ref: '#/components/schemas/VectorStoreChunkingStrategyStatic' - discriminator: - propertyName: type - mapping: - auto: '#/components/schemas/VectorStoreChunkingStrategyAuto' - static: '#/components/schemas/VectorStoreChunkingStrategyStatic' - description: >- - Strategy used for splitting the file into chunks - created_at: - type: integer - description: >- - Timestamp when the file was added to the vector store - last_error: - $ref: '#/components/schemas/VectorStoreFileLastError' - description: >- - (Optional) Error information if file processing failed - status: - $ref: '#/components/schemas/VectorStoreFileStatus' - description: Current processing status of the file - usage_bytes: - type: integer - default: 0 - description: Storage space used by this file in bytes - vector_store_id: + title: Object + type: string + attributes: + additionalProperties: true + title: Attributes + type: object + chunking_strategy: + discriminator: + mapping: + auto: '#/$defs/VectorStoreChunkingStrategyAuto' + static: >- + #/$defs/VectorStoreChunkingStrategyStatic + propertyName: type + oneOf: + - $ref: '#/$defs/VectorStoreChunkingStrategyAuto' + - $ref: >- + #/$defs/VectorStoreChunkingStrategyStatic + title: Chunking Strategy + created_at: + title: Created At + type: integer + last_error: + anyOf: + - $ref: '#/$defs/VectorStoreFileLastError' + - type: 'null' + status: + anyOf: + - const: completed + type: string + - const: in_progress + type: string + - const: cancelled + type: string + - const: failed + type: string + title: Status + usage_bytes: + default: 0 + title: Usage Bytes + type: integer + vector_store_id: + title: Vector Store Id type: string - description: >- - ID of the vector store containing this file - additionalProperties: false required: - id - - object - - attributes - chunking_strategy - created_at - status - - usage_bytes - vector_store_id title: VectorStoreFileObject - description: OpenAI Vector Store File object. - VectorStoreFilesListInBatchResponse: type: object - properties: - object: - type: string - default: list - description: Object type identifier, always "list" - data: - type: array - items: - $ref: '#/components/schemas/VectorStoreFileObject' - description: >- - List of vector store file objects in the batch - first_id: - type: string - description: >- - (Optional) ID of the first file in the list for pagination - last_id: - type: string - description: >- - (Optional) ID of the last file in the list for pagination - has_more: - type: boolean - default: false - description: >- - Whether there are more files available beyond this page - additionalProperties: false - required: - - object - - data - - has_more - title: VectorStoreFilesListInBatchResponse - description: >- - Response from listing files in a vector store file batch. - VectorStoreListFilesResponse: - type: object - properties: - object: - type: string - default: list - description: Object type identifier, always "list" - data: - type: array - items: - $ref: '#/components/schemas/VectorStoreFileObject' - description: List of vector store file objects - first_id: - type: string - description: >- - (Optional) ID of the first file in the list for pagination - last_id: - type: string - description: >- - (Optional) ID of the last file in the list for pagination - has_more: - type: boolean - default: false - description: >- - Whether there are more files available beyond this page - additionalProperties: false - required: - - object - - data - - has_more - title: VectorStoreListFilesResponse - description: >- - Response from listing files in a vector store. - OpenaiAttachFileToVectorStoreRequest: - type: object - properties: - file_id: - type: string - description: >- - The ID of the file to attach to the vector store. - attributes: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - The key-value attributes stored with the file, which can be used for filtering. - chunking_strategy: - $ref: '#/components/schemas/VectorStoreChunkingStrategy' - description: >- - The chunking strategy to use for the file. - additionalProperties: false - required: - - file_id - title: OpenaiAttachFileToVectorStoreRequest OpenaiUpdateVectorStoreFileRequest: type: object - properties: - attributes: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - The updated key-value attributes to store with the file. - additionalProperties: false - required: - - attributes - title: OpenaiUpdateVectorStoreFileRequest VectorStoreFileDeleteResponse: - type: object - properties: - id: - type: string - description: Unique identifier of the deleted file - object: - type: string - default: vector_store.file.deleted - description: >- - Object type identifier for the deletion response - deleted: - type: boolean - default: true - description: >- - Whether the deletion operation was successful - additionalProperties: false - required: - - id - - object - - deleted - title: VectorStoreFileDeleteResponse description: >- Response from deleting a vector store file. - VectorStoreContent: - type: object + + + :param id: Unique identifier of the deleted file + + :param object: Object type identifier for the deletion response + + :param deleted: Whether the deletion operation was successful properties: - type: + id: + title: Id type: string - const: text - description: >- - Content type, currently only "text" is supported - text: + object: + default: vector_store.file.deleted + title: Object type: string - description: The actual text content - additionalProperties: false + deleted: + default: true + title: Deleted + type: boolean required: - - type - - text - title: VectorStoreContent - description: >- - Content item from a vector store file or search result. - VectorStoreFileContentsResponse: + - id + title: VectorStoreFileDeleteResponse type: object + VectorStoreFileContentsResponse: + $defs: + VectorStoreContent: + description: >- + Content item from a vector store file or search result. + + + :param type: Content type, currently only "text" is supported + + :param text: The actual text content + properties: + type: + const: text + title: Type + type: string + text: + title: Text + type: string + required: + - type + - text + title: VectorStoreContent + type: object + description: >- + Response from retrieving the contents of a vector store file. + + + :param file_id: Unique identifier for the file + + :param filename: Name of the file + + :param attributes: Key-value attributes associated with the file + + :param content: List of content items from the file properties: file_id: + title: File Id type: string - description: Unique identifier for the file filename: + title: Filename type: string - description: Name of the file attributes: + additionalProperties: true + title: Attributes type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - Key-value attributes associated with the file content: - type: array items: - $ref: '#/components/schemas/VectorStoreContent' - description: List of content items from the file - additionalProperties: false + $ref: '#/$defs/VectorStoreContent' + title: Content + type: array required: - file_id - filename - attributes - content title: VectorStoreFileContentsResponse - description: >- - Response from retrieving the contents of a vector store file. + type: object OpenaiSearchVectorStoreRequest: type: object - properties: - query: - oneOf: - - type: string - - type: array - items: - type: string - description: >- - The query string or array for performing the search. - filters: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - Filters based on file attributes to narrow the search results. - max_num_results: - type: integer - description: >- - Maximum number of results to return (1 to 50 inclusive, default 10). - ranking_options: - type: object - properties: - ranker: - type: string - description: >- - (Optional) Name of the ranking algorithm to use - score_threshold: - type: number - default: 0.0 - description: >- - (Optional) Minimum relevance score threshold for results - additionalProperties: false - description: >- - Ranking options for fine-tuning the search results. - rewrite_query: - type: boolean - description: >- - Whether to rewrite the natural language query for vector search (default - false) - search_mode: - type: string - description: >- - The search mode to use - "keyword", "vector", or "hybrid" (default "vector") - additionalProperties: false - required: - - query - title: OpenaiSearchVectorStoreRequest - VectorStoreSearchResponse: - type: object - properties: - file_id: - type: string - description: >- - Unique identifier of the file containing the result - filename: - type: string - description: Name of the file containing the result - score: - type: number - description: Relevance score for this search result - attributes: - type: object - additionalProperties: - oneOf: - - type: string - - type: number - - type: boolean - description: >- - (Optional) Key-value attributes associated with the file - content: - type: array - items: - $ref: '#/components/schemas/VectorStoreContent' - description: >- - List of content items matching the search query - additionalProperties: false - required: - - file_id - - filename - - score - - content - title: VectorStoreSearchResponse - description: Response from searching a vector store. VectorStoreSearchResponsePage: - type: object - properties: - object: - type: string - default: vector_store.search_results.page + $defs: + VectorStoreContent: description: >- - Object type identifier for the search results page - search_query: - type: string + Content item from a vector store file or search result. + + + :param type: Content type, currently only "text" is supported + + :param text: The actual text content + properties: + type: + const: text + title: Type + type: string + text: + title: Text + type: string + required: + - type + - text + title: VectorStoreContent + type: object + VectorStoreSearchResponse: description: >- - The original search query that was executed - data: - type: array - items: - $ref: '#/components/schemas/VectorStoreSearchResponse' - description: List of search result objects - has_more: - type: boolean - default: false - description: >- - Whether there are more results available beyond this page - next_page: - type: string - description: >- - (Optional) Token for retrieving the next page of results - additionalProperties: false - required: - - object - - search_query - - data - - has_more - title: VectorStoreSearchResponsePage + Response from searching a vector store. + + + :param file_id: Unique identifier of the file containing the result + + :param filename: Name of the file containing the result + + :param score: Relevance score for this search result + + :param attributes: (Optional) Key-value attributes associated with the + file + + :param content: List of content items matching the search query + properties: + file_id: + title: File Id + type: string + filename: + title: Filename + type: string + score: + title: Score + type: number + attributes: + anyOf: + - additionalProperties: + anyOf: + - type: string + - type: number + - type: boolean + type: object + - type: 'null' + title: Attributes + content: + items: + $ref: '#/$defs/VectorStoreContent' + title: Content + type: array + required: + - file_id + - filename + - score + - content + title: VectorStoreSearchResponse + type: object description: >- Paginated response from searching a vector store. - VersionInfo: + + + :param object: Object type identifier for the search results page + + :param search_query: The original search query that was executed + + :param data: List of search result objects + + :param has_more: Whether there are more results available beyond this page + + :param next_page: (Optional) Token for retrieving the next page of results + properties: + object: + default: vector_store.search_results.page + title: Object + type: string + search_query: + title: Search Query + type: string + data: + items: + $ref: '#/$defs/VectorStoreSearchResponse' + title: Data + type: array + has_more: + default: false + title: Has More + type: boolean + next_page: + anyOf: + - type: string + - type: 'null' + title: Next Page + required: + - search_query + - data + title: VectorStoreSearchResponsePage type: object + VersionInfo: + description: >- + Version information for the service. + + + :param version: Version number of the service properties: version: + title: Version type: string - description: Version number of the service - additionalProperties: false required: - version title: VersionInfo - description: Version information for the service. + type: object AppendRowsRequest: type: object - properties: - rows: - type: array - items: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: The rows to append to the dataset. - additionalProperties: false - required: - - rows - title: AppendRowsRequest PaginatedResponse: - type: object + description: >- + A generic paginated response that follows a simple format. + + + :param data: The list of items for the current page + + :param has_more: Whether there are more items available after this set + + :param url: The URL for accessing this list properties: data: - type: array items: + additionalProperties: true type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: The list of items for the current page + title: Data + type: array has_more: + title: Has More type: boolean - description: >- - Whether there are more items available after this set url: - type: string - description: The URL for accessing this list - additionalProperties: false + anyOf: + - type: string + - type: 'null' + title: Url required: - data - has_more title: PaginatedResponse - description: >- - A generic paginated response that follows a simple format. - Dataset: type: object - properties: - identifier: - type: string - provider_resource_id: - type: string - provider_id: - type: string - type: - type: string - enum: - - model - - shield - - vector_store - - dataset - - scoring_function - - benchmark - - tool - - tool_group - - prompt - const: dataset - default: dataset + ListDatasetsResponse: + $defs: + Dataset: description: >- - Type of resource, always 'dataset' for datasets - purpose: - type: string + Dataset resource for storing and accessing training or evaluation data. + + + :param type: Type of resource, always 'dataset' for datasets + properties: + identifier: + description: >- + Unique identifier for this resource in llama stack + title: Identifier + type: string + provider_resource_id: + anyOf: + - type: string + - type: 'null' + description: >- + Unique identifier for this resource in the provider + title: Provider Resource Id + provider_id: + description: >- + ID of the provider that owns this resource + title: Provider Id + type: string + type: + const: dataset + default: dataset + title: Type + type: string + purpose: + $ref: '#/$defs/DatasetPurpose' + source: + discriminator: + mapping: + rows: '#/$defs/RowsDataSource' + uri: '#/$defs/URIDataSource' + propertyName: type + oneOf: + - $ref: '#/$defs/URIDataSource' + - $ref: '#/$defs/RowsDataSource' + title: Source + metadata: + additionalProperties: true + description: Any additional metadata for this dataset + title: Metadata + type: object + required: + - identifier + - provider_id + - purpose + - source + title: Dataset + type: object + DatasetPurpose: + description: >- + Purpose of the dataset. Each purpose has a required input data schema. + + + :cvar post-training/messages: The dataset contains messages used for post-training. + { + "messages": [ + {"role": "user", "content": "Hello, world!"}, + {"role": "assistant", "content": "Hello, world!"}, + ] + } + :cvar eval/question-answer: The dataset contains a question column and + an answer column. + { + "question": "What is the capital of France?", + "answer": "Paris" + } + :cvar eval/messages-answer: The dataset contains a messages column with + list of messages and an answer column. + { + "messages": [ + {"role": "user", "content": "Hello, my name is John Doe."}, + {"role": "assistant", "content": "Hello, John Doe. How can + I help you today?"}, + {"role": "user", "content": "What's my name?"}, + ], + "answer": "John Doe" + } enum: - post-training/messages - eval/question-answer - eval/messages-answer + title: DatasetPurpose + type: string + RowsDataSource: description: >- - Purpose of the dataset indicating its intended use - source: - oneOf: - - $ref: '#/components/schemas/URIDataSource' - - $ref: '#/components/schemas/RowsDataSource' - discriminator: - propertyName: type - mapping: - uri: '#/components/schemas/URIDataSource' - rows: '#/components/schemas/RowsDataSource' - description: >- - Data source configuration for the dataset - metadata: + A dataset stored in rows. + + :param rows: The dataset is stored in rows. E.g. + - [ + {"messages": [{"role": "user", "content": "Hello, world!"}, {"role": + "assistant", "content": "Hello, world!"}]} + ] + properties: + type: + const: rows + default: rows + title: Type + type: string + rows: + items: + additionalProperties: true + type: object + title: Rows + type: array + required: + - rows + title: RowsDataSource type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: Additional metadata for the dataset - additionalProperties: false - required: - - identifier - - provider_id - - type - - purpose - - source - - metadata - title: Dataset - description: >- - Dataset resource for storing and accessing training or evaluation data. - RowsDataSource: - type: object - properties: - type: - type: string - const: rows - default: rows - rows: - type: array - items: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object + URIDataSource: description: >- - The dataset is stored in rows. E.g. - [ {"messages": [{"role": "user", - "content": "Hello, world!"}, {"role": "assistant", "content": "Hello, - world!"}]} ] - additionalProperties: false - required: - - type - - rows - title: RowsDataSource - description: A dataset stored in rows. - URIDataSource: - type: object - properties: - type: - type: string - const: uri - default: uri - uri: - type: string - description: >- - The dataset can be obtained from a URI. E.g. - "https://mywebsite.com/mydata.jsonl" - - "lsfs://mydata.jsonl" - "data:csv;base64,{base64_content}" - additionalProperties: false - required: - - type - - uri - title: URIDataSource + A dataset that can be obtained from a URI. + + :param uri: The dataset can be obtained from a URI. E.g. + - "https://mywebsite.com/mydata.jsonl" + - "lsfs://mydata.jsonl" + - "data:csv;base64,{base64_content}" + properties: + type: + const: uri + default: uri + title: Type + type: string + uri: + title: Uri + type: string + required: + - uri + title: URIDataSource + type: object description: >- - A dataset that can be obtained from a URI. - ListDatasetsResponse: - type: object + Response from listing datasets. + + + :param data: List of datasets properties: data: - type: array items: - $ref: '#/components/schemas/Dataset' - description: List of datasets - additionalProperties: false + $ref: '#/$defs/Dataset' + title: Data + type: array required: - data title: ListDatasetsResponse - description: Response from listing datasets. - DataSource: - oneOf: - - $ref: '#/components/schemas/URIDataSource' - - $ref: '#/components/schemas/RowsDataSource' - discriminator: - propertyName: type - mapping: - uri: '#/components/schemas/URIDataSource' - rows: '#/components/schemas/RowsDataSource' + type: object RegisterDatasetRequest: type: object - properties: - purpose: - type: string + Dataset: + $defs: + DatasetPurpose: + description: >- + Purpose of the dataset. Each purpose has a required input data schema. + + + :cvar post-training/messages: The dataset contains messages used for post-training. + { + "messages": [ + {"role": "user", "content": "Hello, world!"}, + {"role": "assistant", "content": "Hello, world!"}, + ] + } + :cvar eval/question-answer: The dataset contains a question column and + an answer column. + { + "question": "What is the capital of France?", + "answer": "Paris" + } + :cvar eval/messages-answer: The dataset contains a messages column with + list of messages and an answer column. + { + "messages": [ + {"role": "user", "content": "Hello, my name is John Doe."}, + {"role": "assistant", "content": "Hello, John Doe. How can + I help you today?"}, + {"role": "user", "content": "What's my name?"}, + ], + "answer": "John Doe" + } enum: - post-training/messages - eval/question-answer - eval/messages-answer - description: >- - The purpose of the dataset. One of: - "post-training/messages": The dataset - contains a messages column with list of messages for post-training. { - "messages": [ {"role": "user", "content": "Hello, world!"}, {"role": "assistant", - "content": "Hello, world!"}, ] } - "eval/question-answer": The dataset - contains a question column and an answer column for evaluation. { "question": - "What is the capital of France?", "answer": "Paris" } - "eval/messages-answer": - The dataset contains a messages column with list of messages and an answer - column for evaluation. { "messages": [ {"role": "user", "content": "Hello, - my name is John Doe."}, {"role": "assistant", "content": "Hello, John - Doe. How can I help you today?"}, {"role": "user", "content": "What's - my name?"}, ], "answer": "John Doe" } - source: - $ref: '#/components/schemas/DataSource' - description: >- - The data source of the dataset. Ensure that the data source schema is - compatible with the purpose of the dataset. Examples: - { "type": "uri", - "uri": "https://mywebsite.com/mydata.jsonl" } - { "type": "uri", "uri": - "lsfs://mydata.jsonl" } - { "type": "uri", "uri": "data:csv;base64,{base64_content}" - } - { "type": "uri", "uri": "huggingface://llamastack/simpleqa?split=train" - } - { "type": "rows", "rows": [ { "messages": [ {"role": "user", "content": - "Hello, world!"}, {"role": "assistant", "content": "Hello, world!"}, ] - } ] } - metadata: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - The metadata for the dataset. - E.g. {"description": "My dataset"}. - dataset_id: + title: DatasetPurpose type: string + RowsDataSource: description: >- - The ID of the dataset. If not provided, an ID will be generated. - additionalProperties: false + A dataset stored in rows. + + :param rows: The dataset is stored in rows. E.g. + - [ + {"messages": [{"role": "user", "content": "Hello, world!"}, {"role": + "assistant", "content": "Hello, world!"}]} + ] + properties: + type: + const: rows + default: rows + title: Type + type: string + rows: + items: + additionalProperties: true + type: object + title: Rows + type: array + required: + - rows + title: RowsDataSource + type: object + URIDataSource: + description: >- + A dataset that can be obtained from a URI. + + :param uri: The dataset can be obtained from a URI. E.g. + - "https://mywebsite.com/mydata.jsonl" + - "lsfs://mydata.jsonl" + - "data:csv;base64,{base64_content}" + properties: + type: + const: uri + default: uri + title: Type + type: string + uri: + title: Uri + type: string + required: + - uri + title: URIDataSource + type: object + description: >- + Dataset resource for storing and accessing training or evaluation data. + + + :param type: Type of resource, always 'dataset' for datasets + properties: + identifier: + description: >- + Unique identifier for this resource in llama stack + title: Identifier + type: string + provider_resource_id: + anyOf: + - type: string + - type: 'null' + description: >- + Unique identifier for this resource in the provider + title: Provider Resource Id + provider_id: + description: >- + ID of the provider that owns this resource + title: Provider Id + type: string + type: + const: dataset + default: dataset + title: Type + type: string + purpose: + $ref: '#/$defs/DatasetPurpose' + source: + discriminator: + mapping: + rows: '#/$defs/RowsDataSource' + uri: '#/$defs/URIDataSource' + propertyName: type + oneOf: + - $ref: '#/$defs/URIDataSource' + - $ref: '#/$defs/RowsDataSource' + title: Source + metadata: + additionalProperties: true + description: Any additional metadata for this dataset + title: Metadata + type: object required: + - identifier + - provider_id - purpose - source - title: RegisterDatasetRequest - AgentConfig: + title: Dataset type: object + CreateAgentRequest: + type: object + AgentCreateResponse: + description: >- + Response returned when creating a new agent. + + + :param agent_id: Unique identifier for the created agent properties: - sampling_params: - $ref: '#/components/schemas/SamplingParams' - input_shields: - type: array - items: - type: string - output_shields: - type: array - items: - type: string - toolgroups: - type: array - items: - $ref: '#/components/schemas/AgentTool' - client_tools: - type: array - items: - $ref: '#/components/schemas/ToolDef' - tool_choice: + agent_id: + title: Agent Id type: string + required: + - agent_id + title: AgentCreateResponse + type: object + Agent: + $defs: + AgentConfig: + description: >- + Configuration for an agent. + + + :param model: The model identifier to use for the agent + + :param instructions: The system instructions for the agent + + :param name: Optional name for the agent, used in telemetry and identification + + :param enable_session_persistence: Optional flag indicating whether session + data has to be persisted + + :param response_format: Optional response format configuration + properties: + sampling_params: + anyOf: + - $ref: '#/$defs/SamplingParams' + - type: 'null' + input_shields: + anyOf: + - items: + type: string + type: array + - type: 'null' + title: Input Shields + output_shields: + anyOf: + - items: + type: string + type: array + - type: 'null' + title: Output Shields + toolgroups: + anyOf: + - items: + anyOf: + - type: string + - $ref: '#/$defs/AgentToolGroupWithArgs' + type: array + - type: 'null' + title: Toolgroups + client_tools: + anyOf: + - items: + $ref: '#/$defs/ToolDef' + type: array + - type: 'null' + title: Client Tools + tool_choice: + anyOf: + - $ref: '#/$defs/ToolChoice' + - type: 'null' + deprecated: true + tool_prompt_format: + anyOf: + - $ref: '#/$defs/ToolPromptFormat' + - type: 'null' + deprecated: true + tool_config: + anyOf: + - $ref: '#/$defs/ToolConfig' + - type: 'null' + max_infer_iters: + anyOf: + - type: integer + - type: 'null' + default: 10 + title: Max Infer Iters + model: + title: Model + type: string + instructions: + title: Instructions + type: string + name: + anyOf: + - type: string + - type: 'null' + title: Name + enable_session_persistence: + anyOf: + - type: boolean + - type: 'null' + default: false + title: Enable Session Persistence + response_format: + anyOf: + - discriminator: + mapping: + grammar: '#/$defs/GrammarResponseFormat' + json_schema: '#/$defs/JsonSchemaResponseFormat' + propertyName: type + oneOf: + - $ref: '#/$defs/JsonSchemaResponseFormat' + - $ref: '#/$defs/GrammarResponseFormat' + - type: 'null' + title: Response Format + required: + - model + - instructions + title: AgentConfig + type: object + AgentToolGroupWithArgs: + properties: + name: + title: Name + type: string + args: + additionalProperties: true + title: Args + type: object + required: + - name + - args + title: AgentToolGroupWithArgs + type: object + GrammarResponseFormat: + description: >- + Configuration for grammar-guided response generation. + + + :param type: Must be "grammar" to identify this format type + + :param bnf: The BNF grammar specification the response should conform + to + properties: + type: + const: grammar + default: grammar + title: Type + type: string + bnf: + additionalProperties: true + title: Bnf + type: object + required: + - bnf + title: GrammarResponseFormat + type: object + GreedySamplingStrategy: + description: >- + Greedy sampling strategy that selects the highest probability token at + each step. + + + :param type: Must be "greedy" to identify this sampling strategy + properties: + type: + const: greedy + default: greedy + title: Type + type: string + title: GreedySamplingStrategy + type: object + JsonSchemaResponseFormat: + description: >- + Configuration for JSON schema-guided response generation. + + + :param type: Must be "json_schema" to identify this format type + + :param json_schema: The JSON schema the response should conform to. In + a Python SDK, this is often a `pydantic` model. + properties: + type: + const: json_schema + default: json_schema + title: Type + type: string + json_schema: + additionalProperties: true + title: Json Schema + type: object + required: + - json_schema + title: JsonSchemaResponseFormat + type: object + SamplingParams: + description: >- + Sampling parameters. + + + :param strategy: The sampling strategy. + + :param max_tokens: The maximum number of tokens that can be generated + in the completion. The token count of + your prompt plus max_tokens cannot exceed the model's context length. + :param repetition_penalty: Number between -2.0 and 2.0. Positive values + penalize new tokens + based on whether they appear in the text so far, increasing the model's + likelihood to talk about new topics. + :param stop: Up to 4 sequences where the API will stop generating further + tokens. + The returned text will not contain the stop sequence. + properties: + strategy: + discriminator: + mapping: + greedy: '#/$defs/GreedySamplingStrategy' + top_k: '#/$defs/TopKSamplingStrategy' + top_p: '#/$defs/TopPSamplingStrategy' + propertyName: type + oneOf: + - $ref: '#/$defs/GreedySamplingStrategy' + - $ref: '#/$defs/TopPSamplingStrategy' + - $ref: '#/$defs/TopKSamplingStrategy' + title: Strategy + max_tokens: + anyOf: + - type: integer + - type: 'null' + title: Max Tokens + repetition_penalty: + anyOf: + - type: number + - type: 'null' + default: 1.0 + title: Repetition Penalty + stop: + anyOf: + - items: + type: string + type: array + - type: 'null' + title: Stop + title: SamplingParams + type: object + SystemMessageBehavior: + description: >- + Config for how to override the default system prompt. + + + :cvar append: Appends the provided system message to the default system + prompt: + https://www.llama.com/docs/model-cards-and-prompt-formats/llama3_2/#-function-definitions-in-the-system-prompt- + :cvar replace: Replaces the default system prompt with the provided system + message. The system message can include the string + '{{function_definitions}}' to indicate where the function definitions + should be inserted. + enum: + - append + - replace + title: SystemMessageBehavior + type: string + ToolChoice: + description: >- + Whether tool use is required or automatic. This is a hint to the model + which may not be followed. It depends on the Instruction Following capabilities + of the model. + + + :cvar auto: The model may use tools if it determines that is appropriate. + + :cvar required: The model must use tools. + + :cvar none: The model must not use tools. enum: - auto - required - none title: ToolChoice - description: >- - Whether tool use is required or automatic. This is a hint to the model - which may not be followed. It depends on the Instruction Following capabilities - of the model. - deprecated: true - tool_prompt_format: type: string + ToolConfig: + description: >- + Configuration for tool use. + + + :param tool_choice: (Optional) Whether tool use is automatic, required, + or none. Can also specify a tool name to use a specific tool. Defaults + to ToolChoice.auto. + + :param tool_prompt_format: (Optional) Instructs the model how to format + tool calls. By default, Llama Stack will attempt to use a format that + is best adapted to the model. + - `ToolPromptFormat.json`: The tool calls are formatted as a JSON + object. + - `ToolPromptFormat.function_tag`: The tool calls are enclosed in + a tag. + - `ToolPromptFormat.python_list`: The tool calls are output as Python + syntax -- a list of function calls. + :param system_message_behavior: (Optional) Config for how to override + the default system prompt. + - `SystemMessageBehavior.append`: Appends the provided system message + to the default system prompt. + - `SystemMessageBehavior.replace`: Replaces the default system prompt + with the provided system message. The system message can include the string + '{{function_definitions}}' to indicate where the function definitions + should be inserted. + properties: + tool_choice: + anyOf: + - $ref: '#/$defs/ToolChoice' + - type: string + - type: 'null' + default: auto + title: Tool Choice + tool_prompt_format: + anyOf: + - $ref: '#/$defs/ToolPromptFormat' + - type: 'null' + system_message_behavior: + anyOf: + - $ref: '#/$defs/SystemMessageBehavior' + - type: 'null' + default: append + title: ToolConfig + type: object + ToolDef: + description: >- + Tool definition used in runtime contexts. + + + :param name: Name of the tool + + :param description: (Optional) Human-readable description of what the + tool does + + :param input_schema: (Optional) JSON Schema for tool inputs (MCP inputSchema) + + :param output_schema: (Optional) JSON Schema for tool outputs (MCP outputSchema) + + :param metadata: (Optional) Additional metadata about the tool + + :param toolgroup_id: (Optional) ID of the tool group this tool belongs + to + properties: + toolgroup_id: + anyOf: + - type: string + - type: 'null' + title: Toolgroup Id + name: + title: Name + type: string + description: + anyOf: + - type: string + - type: 'null' + title: Description + input_schema: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Input Schema + output_schema: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Output Schema + metadata: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Metadata + required: + - name + title: ToolDef + type: object + ToolPromptFormat: + description: >- + Prompt format for calling custom / zero shot tools. + + + :cvar json: JSON format for calling tools. It takes the form: + { + "type": "function", + "function" : { + "name": "function_name", + "description": "function_description", + "parameters": {...} + } + } + :cvar function_tag: Function tag format, pseudo-XML. This looks like: + (parameters) + + :cvar python_list: Python list. The output is a valid Python expression + that can be + evaluated to a list. Each element in the list is a function call. + Example: + ["function_name(param1, param2)", "function_name(param1, param2)"] enum: - json - function_tag - python_list title: ToolPromptFormat - description: >- - Prompt format for calling custom / zero shot tools. - deprecated: true - tool_config: - $ref: '#/components/schemas/ToolConfig' - max_infer_iters: - type: integer - default: 10 - model: type: string + TopKSamplingStrategy: description: >- - The model identifier to use for the agent - instructions: - type: string - description: The system instructions for the agent - name: - type: string - description: >- - Optional name for the agent, used in telemetry and identification - enable_session_persistence: - type: boolean - default: false - description: >- - Optional flag indicating whether session data has to be persisted - response_format: - $ref: '#/components/schemas/ResponseFormat' - description: Optional response format configuration - additionalProperties: false - required: - - model - - instructions - title: AgentConfig - description: Configuration for an agent. - AgentTool: - oneOf: - - type: string - - type: object + Top-k sampling strategy that restricts sampling to the k most likely tokens. + + + :param type: Must be "top_k" to identify this sampling strategy + + :param top_k: Number of top tokens to consider for sampling. Must be at + least 1 properties: - name: + type: + const: top_k + default: top_k + title: Type type: string - args: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - additionalProperties: false + top_k: + minimum: 1 + title: Top K + type: integer required: - - name - - args - title: AgentToolGroupWithArgs - GrammarResponseFormat: - type: object - properties: - type: - type: string - enum: - - json_schema - - grammar - description: >- - Must be "grammar" to identify this format type - const: grammar - default: grammar - bnf: + - top_k + title: TopKSamplingStrategy type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object + TopPSamplingStrategy: description: >- - The BNF grammar specification the response should conform to - additionalProperties: false - required: - - type - - bnf - title: GrammarResponseFormat - description: >- - Configuration for grammar-guided response generation. - GreedySamplingStrategy: - type: object - properties: - type: - type: string - const: greedy - default: greedy - description: >- - Must be "greedy" to identify this sampling strategy - additionalProperties: false - required: - - type - title: GreedySamplingStrategy - description: >- - Greedy sampling strategy that selects the highest probability token at each - step. - JsonSchemaResponseFormat: - type: object - properties: - type: - type: string - enum: - - json_schema - - grammar - description: >- - Must be "json_schema" to identify this format type - const: json_schema - default: json_schema - json_schema: + Top-p (nucleus) sampling strategy that samples from the smallest set of + tokens with cumulative probability >= p. + + + :param type: Must be "top_p" to identify this sampling strategy + + :param temperature: Controls randomness in sampling. Higher values increase + randomness + + :param top_p: Cumulative probability threshold for nucleus sampling. Defaults + to 0.95 + properties: + type: + const: top_p + default: top_p + title: Type + type: string + temperature: + anyOf: + - exclusiveMinimum: 0.0 + type: number + - type: 'null' + title: Temperature + top_p: + anyOf: + - type: number + - type: 'null' + default: 0.95 + title: Top P + required: + - temperature + title: TopPSamplingStrategy type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - The JSON schema the response should conform to. In a Python SDK, this - is often a `pydantic` model. - additionalProperties: false - required: - - type - - json_schema - title: JsonSchemaResponseFormat description: >- - Configuration for JSON schema-guided response generation. - ResponseFormat: - oneOf: - - $ref: '#/components/schemas/JsonSchemaResponseFormat' - - $ref: '#/components/schemas/GrammarResponseFormat' - discriminator: - propertyName: type - mapping: - json_schema: '#/components/schemas/JsonSchemaResponseFormat' - grammar: '#/components/schemas/GrammarResponseFormat' - SamplingParams: - type: object - properties: - strategy: - oneOf: - - $ref: '#/components/schemas/GreedySamplingStrategy' - - $ref: '#/components/schemas/TopPSamplingStrategy' - - $ref: '#/components/schemas/TopKSamplingStrategy' - discriminator: - propertyName: type - mapping: - greedy: '#/components/schemas/GreedySamplingStrategy' - top_p: '#/components/schemas/TopPSamplingStrategy' - top_k: '#/components/schemas/TopKSamplingStrategy' - description: The sampling strategy. - max_tokens: - type: integer - description: >- - The maximum number of tokens that can be generated in the completion. - The token count of your prompt plus max_tokens cannot exceed the model's - context length. - repetition_penalty: - type: number - default: 1.0 - description: >- - Number between -2.0 and 2.0. Positive values penalize new tokens based - on whether they appear in the text so far, increasing the model's likelihood - to talk about new topics. - stop: - type: array - items: - type: string - description: >- - Up to 4 sequences where the API will stop generating further tokens. The - returned text will not contain the stop sequence. - additionalProperties: false - required: - - strategy - title: SamplingParams - description: Sampling parameters. - ToolConfig: - type: object - properties: - tool_choice: - oneOf: - - type: string - enum: - - auto - - required - - none - title: ToolChoice - description: >- - Whether tool use is required or automatic. This is a hint to the model - which may not be followed. It depends on the Instruction Following - capabilities of the model. - - type: string - default: auto - description: >- - (Optional) Whether tool use is automatic, required, or none. Can also - specify a tool name to use a specific tool. Defaults to ToolChoice.auto. - tool_prompt_format: - type: string - enum: - - json - - function_tag - - python_list - description: >- - (Optional) Instructs the model how to format tool calls. By default, Llama - Stack will attempt to use a format that is best adapted to the model. - - `ToolPromptFormat.json`: The tool calls are formatted as a JSON object. - - `ToolPromptFormat.function_tag`: The tool calls are enclosed in a - tag. - `ToolPromptFormat.python_list`: The tool calls are output as Python - syntax -- a list of function calls. - system_message_behavior: - type: string - enum: - - append - - replace - description: >- - (Optional) Config for how to override the default system prompt. - `SystemMessageBehavior.append`: - Appends the provided system message to the default system prompt. - `SystemMessageBehavior.replace`: - Replaces the default system prompt with the provided system message. The - system message can include the string '{{function_definitions}}' to indicate - where the function definitions should be inserted. - default: append - additionalProperties: false - title: ToolConfig - description: Configuration for tool use. - TopKSamplingStrategy: - type: object - properties: - type: - type: string - const: top_k - default: top_k - description: >- - Must be "top_k" to identify this sampling strategy - top_k: - type: integer - description: >- - Number of top tokens to consider for sampling. Must be at least 1 - additionalProperties: false - required: - - type - - top_k - title: TopKSamplingStrategy - description: >- - Top-k sampling strategy that restricts sampling to the k most likely tokens. - TopPSamplingStrategy: - type: object - properties: - type: - type: string - const: top_p - default: top_p - description: >- - Must be "top_p" to identify this sampling strategy - temperature: - type: number - description: >- - Controls randomness in sampling. Higher values increase randomness - top_p: - type: number - default: 0.95 - description: >- - Cumulative probability threshold for nucleus sampling. Defaults to 0.95 - additionalProperties: false - required: - - type - title: TopPSamplingStrategy - description: >- - Top-p (nucleus) sampling strategy that samples from the smallest set of tokens - with cumulative probability >= p. - CreateAgentRequest: - type: object - properties: - agent_config: - $ref: '#/components/schemas/AgentConfig' - description: The configuration for the agent. - additionalProperties: false - required: - - agent_config - title: CreateAgentRequest - AgentCreateResponse: - type: object + An agent instance with configuration and metadata. + + + :param agent_id: Unique identifier for the agent + + :param agent_config: Configuration settings for the agent + + :param created_at: Timestamp when the agent was created properties: agent_id: + title: Agent Id type: string - description: Unique identifier for the created agent - additionalProperties: false - required: - - agent_id - title: AgentCreateResponse - description: >- - Response returned when creating a new agent. - Agent: - type: object - properties: - agent_id: - type: string - description: Unique identifier for the agent agent_config: - $ref: '#/components/schemas/AgentConfig' - description: Configuration settings for the agent + $ref: '#/$defs/AgentConfig' created_at: - type: string format: date-time - description: Timestamp when the agent was created - additionalProperties: false + title: Created At + type: string required: - agent_id - agent_config - created_at title: Agent - description: >- - An agent instance with configuration and metadata. + type: object CreateAgentSessionRequest: type: object - properties: - session_name: - type: string - description: The name of the session to create. - additionalProperties: false - required: - - session_name - title: CreateAgentSessionRequest AgentSessionCreateResponse: - type: object + description: >- + Response returned when creating a new agent session. + + + :param session_id: Unique identifier for the created session properties: session_id: + title: Session Id type: string - description: >- - Unique identifier for the created session - additionalProperties: false required: - session_id title: AgentSessionCreateResponse @@ -12151,119 +17002,735 @@ components: A message containing the model's (assistant) response in a chat conversation. InferenceStep: type: object - properties: - turn_id: - type: string - description: The ID of the turn. - step_id: - type: string - description: The ID of the step. - started_at: - type: string - format: date-time - description: The time the step started. - completed_at: - type: string - format: date-time - description: The time the step completed. - step_type: - type: string - enum: - - inference - - tool_execution - - shield_call - - memory_retrieval - title: StepType - description: Type of the step in an agent turn. - const: inference - default: inference - model_response: - $ref: '#/components/schemas/CompletionMessage' - description: The response from the LLM. - additionalProperties: false - required: - - turn_id - - step_id - - step_type - - model_response - title: InferenceStep - description: An inference step in an agent turn. - MemoryRetrievalStep: - type: object - properties: - turn_id: - type: string - description: The ID of the turn. - step_id: - type: string - description: The ID of the step. - started_at: - type: string - format: date-time - description: The time the step started. - completed_at: - type: string - format: date-time - description: The time the step completed. - step_type: - type: string - enum: - - inference - - tool_execution - - shield_call - - memory_retrieval - title: StepType - description: Type of the step in an agent turn. - const: memory_retrieval - default: memory_retrieval - vector_store_ids: - type: string - description: >- - The IDs of the vector databases to retrieve context from. - inserted_context: - $ref: '#/components/schemas/InterleavedContent' - description: >- - The context retrieved from the vector databases. - additionalProperties: false - required: - - turn_id - - step_id - - step_type - - vector_store_ids - - inserted_context - title: MemoryRetrievalStep - description: >- - A memory retrieval step in an agent turn. Session: - type: object + $defs: + Attachment: + description: >- + An attachment to an agent turn. + + + :param content: The content of the attachment. + + :param mime_type: The MIME type of the attachment. + properties: + content: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + - $ref: '#/$defs/URL' + title: Content + mime_type: + title: Mime Type + type: string + required: + - content + - mime_type + title: Attachment + type: object + BuiltinTool: + enum: + - brave_search + - wolfram_alpha + - photogen + - code_interpreter + title: BuiltinTool + type: string + CompletionMessage: + description: >- + A message containing the model's (assistant) response in a chat conversation. + + + :param role: Must be "assistant" to identify this as the model's response + + :param content: The content of the model's response + + :param stop_reason: Reason why the model stopped generating. Options are: + - `StopReason.end_of_turn`: The model finished generating the entire + response. + - `StopReason.end_of_message`: The model finished generating but generated + a partial response -- usually, a tool call. The user may call the tool + and continue the conversation with the tool's response. + - `StopReason.out_of_tokens`: The model ran out of token budget. + :param tool_calls: List of tool calls. Each tool call is a ToolCall object. + properties: + role: + const: assistant + default: assistant + title: Role + type: string + content: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + title: Content + stop_reason: + $ref: '#/$defs/StopReason' + tool_calls: + anyOf: + - items: + $ref: '#/$defs/ToolCall' + type: array + - type: 'null' + title: Tool Calls + required: + - content + - stop_reason + title: CompletionMessage + type: object + ImageContentItem: + description: >- + A image content item + + + :param type: Discriminator type of the content item. Always "image" + + :param image: Image as a base64 encoded string or an URL + properties: + type: + const: image + default: image + title: Type + type: string + image: + $ref: '#/$defs/_URLOrData' + required: + - image + title: ImageContentItem + type: object + InferenceStep: + description: >- + An inference step in an agent turn. + + + :param model_response: The response from the LLM. + properties: + turn_id: + title: Turn Id + type: string + step_id: + title: Step Id + type: string + started_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Started At + completed_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Completed At + step_type: + const: inference + default: inference + title: Step Type + type: string + model_response: + $ref: '#/$defs/CompletionMessage' + required: + - turn_id + - step_id + - model_response + title: InferenceStep + type: object + MemoryRetrievalStep: + description: >- + A memory retrieval step in an agent turn. + + + :param vector_store_ids: The IDs of the vector databases to retrieve context + from. + + :param inserted_context: The context retrieved from the vector databases. + properties: + turn_id: + title: Turn Id + type: string + step_id: + title: Step Id + type: string + started_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Started At + completed_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Completed At + step_type: + const: memory_retrieval + default: memory_retrieval + title: Step Type + type: string + vector_store_ids: + title: Vector Store Ids + type: string + inserted_context: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + title: Inserted Context + required: + - turn_id + - step_id + - vector_store_ids + - inserted_context + title: MemoryRetrievalStep + type: object + SafetyViolation: + description: >- + Details of a safety violation detected by content moderation. + + + :param violation_level: Severity level of the violation + + :param user_message: (Optional) Message to convey to the user about the + violation + + :param metadata: Additional metadata including specific violation codes + for debugging and telemetry + properties: + violation_level: + $ref: '#/$defs/ViolationLevel' + user_message: + anyOf: + - type: string + - type: 'null' + title: User Message + metadata: + additionalProperties: true + title: Metadata + type: object + required: + - violation_level + title: SafetyViolation + type: object + ShieldCallStep: + description: >- + A shield call step in an agent turn. + + + :param violation: The violation from the shield call. + properties: + turn_id: + title: Turn Id + type: string + step_id: + title: Step Id + type: string + started_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Started At + completed_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Completed At + step_type: + const: shield_call + default: shield_call + title: Step Type + type: string + violation: + anyOf: + - $ref: '#/$defs/SafetyViolation' + - type: 'null' + required: + - turn_id + - step_id + - violation + title: ShieldCallStep + type: object + StopReason: + enum: + - end_of_turn + - end_of_message + - out_of_tokens + title: StopReason + type: string + TextContentItem: + description: >- + A text content item + + + :param type: Discriminator type of the content item. Always "text" + + :param text: Text content + properties: + type: + const: text + default: text + title: Type + type: string + text: + title: Text + type: string + required: + - text + title: TextContentItem + type: object + ToolCall: + properties: + call_id: + title: Call Id + type: string + tool_name: + anyOf: + - $ref: '#/$defs/BuiltinTool' + - type: string + title: Tool Name + arguments: + title: Arguments + type: string + required: + - call_id + - tool_name + - arguments + title: ToolCall + type: object + ToolExecutionStep: + description: >- + A tool execution step in an agent turn. + + + :param tool_calls: The tool calls to execute. + + :param tool_responses: The tool responses from the tool calls. + properties: + turn_id: + title: Turn Id + type: string + step_id: + title: Step Id + type: string + started_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Started At + completed_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Completed At + step_type: + const: tool_execution + default: tool_execution + title: Step Type + type: string + tool_calls: + items: + $ref: '#/$defs/ToolCall' + title: Tool Calls + type: array + tool_responses: + items: + $ref: '#/$defs/ToolResponse' + title: Tool Responses + type: array + required: + - turn_id + - step_id + - tool_calls + - tool_responses + title: ToolExecutionStep + type: object + ToolResponse: + description: >- + Response from a tool invocation. + + + :param call_id: Unique identifier for the tool call this response is for + + :param tool_name: Name of the tool that was invoked + + :param content: The response content from the tool + + :param metadata: (Optional) Additional metadata about the tool response + properties: + call_id: + title: Call Id + type: string + tool_name: + anyOf: + - $ref: '#/$defs/BuiltinTool' + - type: string + title: Tool Name + content: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + title: Content + metadata: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Metadata + required: + - call_id + - tool_name + - content + title: ToolResponse + type: object + ToolResponseMessage: + description: >- + A message representing the result of a tool invocation. + + + :param role: Must be "tool" to identify this as a tool response + + :param call_id: Unique identifier for the tool call this response is for + + :param content: The response content from the tool + properties: + role: + const: tool + default: tool + title: Role + type: string + call_id: + title: Call Id + type: string + content: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + title: Content + required: + - call_id + - content + title: ToolResponseMessage + type: object + Turn: + description: >- + A single turn in an interaction with an Agentic System. + + + :param turn_id: Unique identifier for the turn within a session + + :param session_id: Unique identifier for the conversation session + + :param input_messages: List of messages that initiated this turn + + :param steps: Ordered list of processing steps executed during this turn + + :param output_message: The model's generated response containing content + and metadata + + :param output_attachments: (Optional) Files or media attached to the agent's + response + + :param started_at: Timestamp when the turn began + + :param completed_at: (Optional) Timestamp when the turn finished, if completed + properties: + turn_id: + title: Turn Id + type: string + session_id: + title: Session Id + type: string + input_messages: + items: + anyOf: + - $ref: '#/$defs/UserMessage' + - $ref: '#/$defs/ToolResponseMessage' + title: Input Messages + type: array + steps: + items: + discriminator: + mapping: + inference: '#/$defs/InferenceStep' + memory_retrieval: '#/$defs/MemoryRetrievalStep' + shield_call: '#/$defs/ShieldCallStep' + tool_execution: '#/$defs/ToolExecutionStep' + propertyName: step_type + oneOf: + - $ref: '#/$defs/InferenceStep' + - $ref: '#/$defs/ToolExecutionStep' + - $ref: '#/$defs/ShieldCallStep' + - $ref: '#/$defs/MemoryRetrievalStep' + title: Steps + type: array + output_message: + $ref: '#/$defs/CompletionMessage' + output_attachments: + anyOf: + - items: + $ref: '#/$defs/Attachment' + type: array + - type: 'null' + title: Output Attachments + started_at: + format: date-time + title: Started At + type: string + completed_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Completed At + required: + - turn_id + - session_id + - input_messages + - steps + - output_message + - started_at + title: Turn + type: object + URL: + description: >- + A URL reference to external content. + + + :param uri: The URL string pointing to the resource + properties: + uri: + title: Uri + type: string + required: + - uri + title: URL + type: object + UserMessage: + description: >- + A message from the user in a chat conversation. + + + :param role: Must be "user" to identify this as a user message + + :param content: The content of the message, which can include text and + other media + + :param context: (Optional) This field is used internally by Llama Stack + to pass RAG context. This field may be removed in the API in the future. + properties: + role: + const: user + default: user + title: Role + type: string + content: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + title: Content + context: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + - type: 'null' + title: Context + required: + - content + title: UserMessage + type: object + ViolationLevel: + description: >- + Severity level of a safety violation. + + + :cvar INFO: Informational level violation that does not require action + + :cvar WARN: Warning level violation that suggests caution but allows continuation + + :cvar ERROR: Error level violation that requires blocking or intervention + enum: + - info + - warn + - error + title: ViolationLevel + type: string + _URLOrData: + description: >- + A URL or a base64 encoded string + + + :param url: A URL of the image or data URL in the format of data:image/{type};base64,{data}. + Note that URL could have length limits. + + :param data: base64 encoded image data as string + properties: + url: + anyOf: + - $ref: '#/$defs/URL' + - type: 'null' + data: + anyOf: + - type: string + - type: 'null' + contentEncoding: base64 + title: Data + title: _URLOrData + type: object + description: >- + A single session of an interaction with an Agentic System. + + + :param session_id: Unique identifier for the conversation session + + :param session_name: Human-readable name for the session + + :param turns: List of all turns that have occurred in this session + + :param started_at: Timestamp when the session was created properties: session_id: + title: Session Id type: string - description: >- - Unique identifier for the conversation session session_name: + title: Session Name type: string - description: Human-readable name for the session turns: - type: array items: - $ref: '#/components/schemas/Turn' - description: >- - List of all turns that have occurred in this session + $ref: '#/$defs/Turn' + title: Turns + type: array started_at: - type: string format: date-time - description: Timestamp when the session was created - additionalProperties: false + title: Started At + type: string required: - session_id - session_name - turns - started_at title: Session - description: >- - A single session of an interaction with an Agentic System. - ShieldCallStep: type: object properties: turn_id: @@ -12436,80 +17903,691 @@ components: description: >- A message representing the result of a tool invocation. Turn: - type: object + $defs: + Attachment: + description: >- + An attachment to an agent turn. + + + :param content: The content of the attachment. + + :param mime_type: The MIME type of the attachment. + properties: + content: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + - $ref: '#/$defs/URL' + title: Content + mime_type: + title: Mime Type + type: string + required: + - content + - mime_type + title: Attachment + type: object + BuiltinTool: + enum: + - brave_search + - wolfram_alpha + - photogen + - code_interpreter + title: BuiltinTool + type: string + CompletionMessage: + description: >- + A message containing the model's (assistant) response in a chat conversation. + + + :param role: Must be "assistant" to identify this as the model's response + + :param content: The content of the model's response + + :param stop_reason: Reason why the model stopped generating. Options are: + - `StopReason.end_of_turn`: The model finished generating the entire + response. + - `StopReason.end_of_message`: The model finished generating but generated + a partial response -- usually, a tool call. The user may call the tool + and continue the conversation with the tool's response. + - `StopReason.out_of_tokens`: The model ran out of token budget. + :param tool_calls: List of tool calls. Each tool call is a ToolCall object. + properties: + role: + const: assistant + default: assistant + title: Role + type: string + content: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + title: Content + stop_reason: + $ref: '#/$defs/StopReason' + tool_calls: + anyOf: + - items: + $ref: '#/$defs/ToolCall' + type: array + - type: 'null' + title: Tool Calls + required: + - content + - stop_reason + title: CompletionMessage + type: object + ImageContentItem: + description: >- + A image content item + + + :param type: Discriminator type of the content item. Always "image" + + :param image: Image as a base64 encoded string or an URL + properties: + type: + const: image + default: image + title: Type + type: string + image: + $ref: '#/$defs/_URLOrData' + required: + - image + title: ImageContentItem + type: object + InferenceStep: + description: >- + An inference step in an agent turn. + + + :param model_response: The response from the LLM. + properties: + turn_id: + title: Turn Id + type: string + step_id: + title: Step Id + type: string + started_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Started At + completed_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Completed At + step_type: + const: inference + default: inference + title: Step Type + type: string + model_response: + $ref: '#/$defs/CompletionMessage' + required: + - turn_id + - step_id + - model_response + title: InferenceStep + type: object + MemoryRetrievalStep: + description: >- + A memory retrieval step in an agent turn. + + + :param vector_store_ids: The IDs of the vector databases to retrieve context + from. + + :param inserted_context: The context retrieved from the vector databases. + properties: + turn_id: + title: Turn Id + type: string + step_id: + title: Step Id + type: string + started_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Started At + completed_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Completed At + step_type: + const: memory_retrieval + default: memory_retrieval + title: Step Type + type: string + vector_store_ids: + title: Vector Store Ids + type: string + inserted_context: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + title: Inserted Context + required: + - turn_id + - step_id + - vector_store_ids + - inserted_context + title: MemoryRetrievalStep + type: object + SafetyViolation: + description: >- + Details of a safety violation detected by content moderation. + + + :param violation_level: Severity level of the violation + + :param user_message: (Optional) Message to convey to the user about the + violation + + :param metadata: Additional metadata including specific violation codes + for debugging and telemetry + properties: + violation_level: + $ref: '#/$defs/ViolationLevel' + user_message: + anyOf: + - type: string + - type: 'null' + title: User Message + metadata: + additionalProperties: true + title: Metadata + type: object + required: + - violation_level + title: SafetyViolation + type: object + ShieldCallStep: + description: >- + A shield call step in an agent turn. + + + :param violation: The violation from the shield call. + properties: + turn_id: + title: Turn Id + type: string + step_id: + title: Step Id + type: string + started_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Started At + completed_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Completed At + step_type: + const: shield_call + default: shield_call + title: Step Type + type: string + violation: + anyOf: + - $ref: '#/$defs/SafetyViolation' + - type: 'null' + required: + - turn_id + - step_id + - violation + title: ShieldCallStep + type: object + StopReason: + enum: + - end_of_turn + - end_of_message + - out_of_tokens + title: StopReason + type: string + TextContentItem: + description: >- + A text content item + + + :param type: Discriminator type of the content item. Always "text" + + :param text: Text content + properties: + type: + const: text + default: text + title: Type + type: string + text: + title: Text + type: string + required: + - text + title: TextContentItem + type: object + ToolCall: + properties: + call_id: + title: Call Id + type: string + tool_name: + anyOf: + - $ref: '#/$defs/BuiltinTool' + - type: string + title: Tool Name + arguments: + title: Arguments + type: string + required: + - call_id + - tool_name + - arguments + title: ToolCall + type: object + ToolExecutionStep: + description: >- + A tool execution step in an agent turn. + + + :param tool_calls: The tool calls to execute. + + :param tool_responses: The tool responses from the tool calls. + properties: + turn_id: + title: Turn Id + type: string + step_id: + title: Step Id + type: string + started_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Started At + completed_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Completed At + step_type: + const: tool_execution + default: tool_execution + title: Step Type + type: string + tool_calls: + items: + $ref: '#/$defs/ToolCall' + title: Tool Calls + type: array + tool_responses: + items: + $ref: '#/$defs/ToolResponse' + title: Tool Responses + type: array + required: + - turn_id + - step_id + - tool_calls + - tool_responses + title: ToolExecutionStep + type: object + ToolResponse: + description: >- + Response from a tool invocation. + + + :param call_id: Unique identifier for the tool call this response is for + + :param tool_name: Name of the tool that was invoked + + :param content: The response content from the tool + + :param metadata: (Optional) Additional metadata about the tool response + properties: + call_id: + title: Call Id + type: string + tool_name: + anyOf: + - $ref: '#/$defs/BuiltinTool' + - type: string + title: Tool Name + content: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + title: Content + metadata: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Metadata + required: + - call_id + - tool_name + - content + title: ToolResponse + type: object + ToolResponseMessage: + description: >- + A message representing the result of a tool invocation. + + + :param role: Must be "tool" to identify this as a tool response + + :param call_id: Unique identifier for the tool call this response is for + + :param content: The response content from the tool + properties: + role: + const: tool + default: tool + title: Role + type: string + call_id: + title: Call Id + type: string + content: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + title: Content + required: + - call_id + - content + title: ToolResponseMessage + type: object + URL: + description: >- + A URL reference to external content. + + + :param uri: The URL string pointing to the resource + properties: + uri: + title: Uri + type: string + required: + - uri + title: URL + type: object + UserMessage: + description: >- + A message from the user in a chat conversation. + + + :param role: Must be "user" to identify this as a user message + + :param content: The content of the message, which can include text and + other media + + :param context: (Optional) This field is used internally by Llama Stack + to pass RAG context. This field may be removed in the API in the future. + properties: + role: + const: user + default: user + title: Role + type: string + content: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + title: Content + context: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + - type: 'null' + title: Context + required: + - content + title: UserMessage + type: object + ViolationLevel: + description: >- + Severity level of a safety violation. + + + :cvar INFO: Informational level violation that does not require action + + :cvar WARN: Warning level violation that suggests caution but allows continuation + + :cvar ERROR: Error level violation that requires blocking or intervention + enum: + - info + - warn + - error + title: ViolationLevel + type: string + _URLOrData: + description: >- + A URL or a base64 encoded string + + + :param url: A URL of the image or data URL in the format of data:image/{type};base64,{data}. + Note that URL could have length limits. + + :param data: base64 encoded image data as string + properties: + url: + anyOf: + - $ref: '#/$defs/URL' + - type: 'null' + data: + anyOf: + - type: string + - type: 'null' + contentEncoding: base64 + title: Data + title: _URLOrData + type: object + description: >- + A single turn in an interaction with an Agentic System. + + + :param turn_id: Unique identifier for the turn within a session + + :param session_id: Unique identifier for the conversation session + + :param input_messages: List of messages that initiated this turn + + :param steps: Ordered list of processing steps executed during this turn + + :param output_message: The model's generated response containing content and + metadata + + :param output_attachments: (Optional) Files or media attached to the agent's + response + + :param started_at: Timestamp when the turn began + + :param completed_at: (Optional) Timestamp when the turn finished, if completed properties: turn_id: + title: Turn Id type: string - description: >- - Unique identifier for the turn within a session session_id: + title: Session Id type: string - description: >- - Unique identifier for the conversation session input_messages: - type: array items: - oneOf: - - $ref: '#/components/schemas/UserMessage' - - $ref: '#/components/schemas/ToolResponseMessage' - description: >- - List of messages that initiated this turn + anyOf: + - $ref: '#/$defs/UserMessage' + - $ref: '#/$defs/ToolResponseMessage' + title: Input Messages + type: array steps: - type: array items: - oneOf: - - $ref: '#/components/schemas/InferenceStep' - - $ref: '#/components/schemas/ToolExecutionStep' - - $ref: '#/components/schemas/ShieldCallStep' - - $ref: '#/components/schemas/MemoryRetrievalStep' discriminator: - propertyName: step_type mapping: - inference: '#/components/schemas/InferenceStep' - tool_execution: '#/components/schemas/ToolExecutionStep' - shield_call: '#/components/schemas/ShieldCallStep' - memory_retrieval: '#/components/schemas/MemoryRetrievalStep' - description: >- - Ordered list of processing steps executed during this turn - output_message: - $ref: '#/components/schemas/CompletionMessage' - description: >- - The model's generated response containing content and metadata - output_attachments: + inference: '#/$defs/InferenceStep' + memory_retrieval: '#/$defs/MemoryRetrievalStep' + shield_call: '#/$defs/ShieldCallStep' + tool_execution: '#/$defs/ToolExecutionStep' + propertyName: step_type + oneOf: + - $ref: '#/$defs/InferenceStep' + - $ref: '#/$defs/ToolExecutionStep' + - $ref: '#/$defs/ShieldCallStep' + - $ref: '#/$defs/MemoryRetrievalStep' + title: Steps type: array - items: - type: object - properties: - content: - oneOf: - - type: string - - $ref: '#/components/schemas/InterleavedContentItem' - - type: array - items: - $ref: '#/components/schemas/InterleavedContentItem' - - $ref: '#/components/schemas/URL' - description: The content of the attachment. - mime_type: - type: string - description: The MIME type of the attachment. - additionalProperties: false - required: - - content - - mime_type - title: Attachment - description: An attachment to an agent turn. - description: >- - (Optional) Files or media attached to the agent's response + output_message: + $ref: '#/$defs/CompletionMessage' + output_attachments: + anyOf: + - items: + $ref: '#/$defs/Attachment' + type: array + - type: 'null' + title: Output Attachments started_at: - type: string format: date-time - description: Timestamp when the turn began + title: Started At + type: string completed_at: - type: string - format: date-time - description: >- - (Optional) Timestamp when the turn finished, if completed - additionalProperties: false + anyOf: + - format: date-time + type: string + - type: 'null' + title: Completed At required: - turn_id - session_id @@ -12547,544 +18625,621 @@ components: A message from the user in a chat conversation. CreateAgentTurnRequest: type: object - properties: - messages: - type: array - items: - oneOf: - - $ref: '#/components/schemas/UserMessage' - - $ref: '#/components/schemas/ToolResponseMessage' - description: List of messages to start the turn with. - stream: - type: boolean - description: >- - (Optional) If True, generate an SSE event stream of the response. Defaults - to False. - documents: - type: array - items: - type: object - properties: - content: - oneOf: - - type: string - - $ref: '#/components/schemas/InterleavedContentItem' - - type: array - items: - $ref: '#/components/schemas/InterleavedContentItem' - - $ref: '#/components/schemas/URL' - description: The content of the document. - mime_type: - type: string - description: The MIME type of the document. - additionalProperties: false - required: - - content - - mime_type - title: Document - description: A document to be used by an agent. - description: >- - (Optional) List of documents to create the turn with. - toolgroups: - type: array - items: - $ref: '#/components/schemas/AgentTool' - description: >- - (Optional) List of toolgroups to create the turn with, will be used in - addition to the agent's config toolgroups for the request. - tool_config: - $ref: '#/components/schemas/ToolConfig' - description: >- - (Optional) The tool configuration to create the turn with, will be used - to override the agent's tool_config. - additionalProperties: false - required: - - messages - title: CreateAgentTurnRequest - AgentTurnResponseEvent: - type: object - properties: - payload: - oneOf: - - $ref: '#/components/schemas/AgentTurnResponseStepStartPayload' - - $ref: '#/components/schemas/AgentTurnResponseStepProgressPayload' - - $ref: '#/components/schemas/AgentTurnResponseStepCompletePayload' - - $ref: '#/components/schemas/AgentTurnResponseTurnStartPayload' - - $ref: '#/components/schemas/AgentTurnResponseTurnCompletePayload' - - $ref: '#/components/schemas/AgentTurnResponseTurnAwaitingInputPayload' - discriminator: - propertyName: event_type - mapping: - step_start: '#/components/schemas/AgentTurnResponseStepStartPayload' - step_progress: '#/components/schemas/AgentTurnResponseStepProgressPayload' - step_complete: '#/components/schemas/AgentTurnResponseStepCompletePayload' - turn_start: '#/components/schemas/AgentTurnResponseTurnStartPayload' - turn_complete: '#/components/schemas/AgentTurnResponseTurnCompletePayload' - turn_awaiting_input: '#/components/schemas/AgentTurnResponseTurnAwaitingInputPayload' - description: >- - Event-specific payload containing event data - additionalProperties: false - required: - - payload - title: AgentTurnResponseEvent - description: >- - An event in an agent turn response stream. - AgentTurnResponseStepCompletePayload: - type: object - properties: - event_type: - type: string - enum: - - step_start - - step_complete - - step_progress - - turn_start - - turn_complete - - turn_awaiting_input - const: step_complete - default: step_complete - description: Type of event being reported - step_type: - type: string - enum: - - inference - - tool_execution - - shield_call - - memory_retrieval - description: Type of step being executed - step_id: - type: string - description: >- - Unique identifier for the step within a turn - step_details: - oneOf: - - $ref: '#/components/schemas/InferenceStep' - - $ref: '#/components/schemas/ToolExecutionStep' - - $ref: '#/components/schemas/ShieldCallStep' - - $ref: '#/components/schemas/MemoryRetrievalStep' - discriminator: - propertyName: step_type - mapping: - inference: '#/components/schemas/InferenceStep' - tool_execution: '#/components/schemas/ToolExecutionStep' - shield_call: '#/components/schemas/ShieldCallStep' - memory_retrieval: '#/components/schemas/MemoryRetrievalStep' - description: Complete details of the executed step - additionalProperties: false - required: - - event_type - - step_type - - step_id - - step_details - title: AgentTurnResponseStepCompletePayload - description: >- - Payload for step completion events in agent turn responses. - AgentTurnResponseStepProgressPayload: - type: object - properties: - event_type: - type: string - enum: - - step_start - - step_complete - - step_progress - - turn_start - - turn_complete - - turn_awaiting_input - const: step_progress - default: step_progress - description: Type of event being reported - step_type: - type: string - enum: - - inference - - tool_execution - - shield_call - - memory_retrieval - description: Type of step being executed - step_id: - type: string - description: >- - Unique identifier for the step within a turn - delta: - oneOf: - - $ref: '#/components/schemas/TextDelta' - - $ref: '#/components/schemas/ImageDelta' - - $ref: '#/components/schemas/ToolCallDelta' - discriminator: - propertyName: type - mapping: - text: '#/components/schemas/TextDelta' - image: '#/components/schemas/ImageDelta' - tool_call: '#/components/schemas/ToolCallDelta' - description: >- - Incremental content changes during step execution - additionalProperties: false - required: - - event_type - - step_type - - step_id - - delta - title: AgentTurnResponseStepProgressPayload - description: >- - Payload for step progress events in agent turn responses. - AgentTurnResponseStepStartPayload: - type: object - properties: - event_type: - type: string - enum: - - step_start - - step_complete - - step_progress - - turn_start - - turn_complete - - turn_awaiting_input - const: step_start - default: step_start - description: Type of event being reported - step_type: - type: string - enum: - - inference - - tool_execution - - shield_call - - memory_retrieval - description: Type of step being executed - step_id: - type: string - description: >- - Unique identifier for the step within a turn - metadata: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - (Optional) Additional metadata for the step - additionalProperties: false - required: - - event_type - - step_type - - step_id - title: AgentTurnResponseStepStartPayload - description: >- - Payload for step start events in agent turn responses. - AgentTurnResponseStreamChunk: - type: object - properties: - event: - $ref: '#/components/schemas/AgentTurnResponseEvent' - description: >- - Individual event in the agent turn response stream - additionalProperties: false - required: - - event - title: AgentTurnResponseStreamChunk - description: Streamed agent turn completion response. - "AgentTurnResponseTurnAwaitingInputPayload": - type: object - properties: - event_type: - type: string - enum: - - step_start - - step_complete - - step_progress - - turn_start - - turn_complete - - turn_awaiting_input - const: turn_awaiting_input - default: turn_awaiting_input - description: Type of event being reported - turn: - $ref: '#/components/schemas/Turn' - description: >- - Turn data when waiting for external tool responses - additionalProperties: false - required: - - event_type - - turn - title: >- - AgentTurnResponseTurnAwaitingInputPayload - description: >- - Payload for turn awaiting input events in agent turn responses. - AgentTurnResponseTurnCompletePayload: - type: object - properties: - event_type: - type: string - enum: - - step_start - - step_complete - - step_progress - - turn_start - - turn_complete - - turn_awaiting_input - const: turn_complete - default: turn_complete - description: Type of event being reported - turn: - $ref: '#/components/schemas/Turn' - description: >- - Complete turn data including all steps and results - additionalProperties: false - required: - - event_type - - turn - title: AgentTurnResponseTurnCompletePayload - description: >- - Payload for turn completion events in agent turn responses. - AgentTurnResponseTurnStartPayload: - type: object - properties: - event_type: - type: string - enum: - - step_start - - step_complete - - step_progress - - turn_start - - turn_complete - - turn_awaiting_input - const: turn_start - default: turn_start - description: Type of event being reported - turn_id: - type: string - description: >- - Unique identifier for the turn within a session - additionalProperties: false - required: - - event_type - - turn_id - title: AgentTurnResponseTurnStartPayload - description: >- - Payload for turn start events in agent turn responses. - ImageDelta: - type: object - properties: - type: - type: string - const: image - default: image - description: >- - Discriminator type of the delta. Always "image" - image: - type: string - contentEncoding: base64 - description: The incremental image data as bytes - additionalProperties: false - required: - - type - - image - title: ImageDelta - description: >- - An image content delta for streaming responses. - TextDelta: - type: object - properties: - type: - type: string - const: text - default: text - description: >- - Discriminator type of the delta. Always "text" - text: - type: string - description: The incremental text content - additionalProperties: false - required: - - type - - text - title: TextDelta - description: >- - A text content delta for streaming responses. - ToolCallDelta: - type: object - properties: - type: - type: string - const: tool_call - default: tool_call - description: >- - Discriminator type of the delta. Always "tool_call" - tool_call: - oneOf: - - type: string - - $ref: '#/components/schemas/ToolCall' - description: >- - Either an in-progress tool call string or the final parsed tool call - parse_status: - type: string - enum: - - started - - in_progress - - failed - - succeeded - description: Current parsing status of the tool call - additionalProperties: false - required: - - type - - tool_call - - parse_status - title: ToolCallDelta - description: >- - A tool call content delta for streaming responses. ResumeAgentTurnRequest: type: object - properties: - tool_responses: - type: array - items: - $ref: '#/components/schemas/ToolResponse' - description: >- - The tool call responses to resume the turn with. - stream: - type: boolean - description: Whether to stream the response. - additionalProperties: false - required: - - tool_responses - title: ResumeAgentTurnRequest AgentStepResponse: - type: object + $defs: + BuiltinTool: + enum: + - brave_search + - wolfram_alpha + - photogen + - code_interpreter + title: BuiltinTool + type: string + CompletionMessage: + description: >- + A message containing the model's (assistant) response in a chat conversation. + + + :param role: Must be "assistant" to identify this as the model's response + + :param content: The content of the model's response + + :param stop_reason: Reason why the model stopped generating. Options are: + - `StopReason.end_of_turn`: The model finished generating the entire + response. + - `StopReason.end_of_message`: The model finished generating but generated + a partial response -- usually, a tool call. The user may call the tool + and continue the conversation with the tool's response. + - `StopReason.out_of_tokens`: The model ran out of token budget. + :param tool_calls: List of tool calls. Each tool call is a ToolCall object. + properties: + role: + const: assistant + default: assistant + title: Role + type: string + content: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + title: Content + stop_reason: + $ref: '#/$defs/StopReason' + tool_calls: + anyOf: + - items: + $ref: '#/$defs/ToolCall' + type: array + - type: 'null' + title: Tool Calls + required: + - content + - stop_reason + title: CompletionMessage + type: object + ImageContentItem: + description: >- + A image content item + + + :param type: Discriminator type of the content item. Always "image" + + :param image: Image as a base64 encoded string or an URL + properties: + type: + const: image + default: image + title: Type + type: string + image: + $ref: '#/$defs/_URLOrData' + required: + - image + title: ImageContentItem + type: object + InferenceStep: + description: >- + An inference step in an agent turn. + + + :param model_response: The response from the LLM. + properties: + turn_id: + title: Turn Id + type: string + step_id: + title: Step Id + type: string + started_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Started At + completed_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Completed At + step_type: + const: inference + default: inference + title: Step Type + type: string + model_response: + $ref: '#/$defs/CompletionMessage' + required: + - turn_id + - step_id + - model_response + title: InferenceStep + type: object + MemoryRetrievalStep: + description: >- + A memory retrieval step in an agent turn. + + + :param vector_store_ids: The IDs of the vector databases to retrieve context + from. + + :param inserted_context: The context retrieved from the vector databases. + properties: + turn_id: + title: Turn Id + type: string + step_id: + title: Step Id + type: string + started_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Started At + completed_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Completed At + step_type: + const: memory_retrieval + default: memory_retrieval + title: Step Type + type: string + vector_store_ids: + title: Vector Store Ids + type: string + inserted_context: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + title: Inserted Context + required: + - turn_id + - step_id + - vector_store_ids + - inserted_context + title: MemoryRetrievalStep + type: object + SafetyViolation: + description: >- + Details of a safety violation detected by content moderation. + + + :param violation_level: Severity level of the violation + + :param user_message: (Optional) Message to convey to the user about the + violation + + :param metadata: Additional metadata including specific violation codes + for debugging and telemetry + properties: + violation_level: + $ref: '#/$defs/ViolationLevel' + user_message: + anyOf: + - type: string + - type: 'null' + title: User Message + metadata: + additionalProperties: true + title: Metadata + type: object + required: + - violation_level + title: SafetyViolation + type: object + ShieldCallStep: + description: >- + A shield call step in an agent turn. + + + :param violation: The violation from the shield call. + properties: + turn_id: + title: Turn Id + type: string + step_id: + title: Step Id + type: string + started_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Started At + completed_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Completed At + step_type: + const: shield_call + default: shield_call + title: Step Type + type: string + violation: + anyOf: + - $ref: '#/$defs/SafetyViolation' + - type: 'null' + required: + - turn_id + - step_id + - violation + title: ShieldCallStep + type: object + StopReason: + enum: + - end_of_turn + - end_of_message + - out_of_tokens + title: StopReason + type: string + TextContentItem: + description: >- + A text content item + + + :param type: Discriminator type of the content item. Always "text" + + :param text: Text content + properties: + type: + const: text + default: text + title: Type + type: string + text: + title: Text + type: string + required: + - text + title: TextContentItem + type: object + ToolCall: + properties: + call_id: + title: Call Id + type: string + tool_name: + anyOf: + - $ref: '#/$defs/BuiltinTool' + - type: string + title: Tool Name + arguments: + title: Arguments + type: string + required: + - call_id + - tool_name + - arguments + title: ToolCall + type: object + ToolExecutionStep: + description: >- + A tool execution step in an agent turn. + + + :param tool_calls: The tool calls to execute. + + :param tool_responses: The tool responses from the tool calls. + properties: + turn_id: + title: Turn Id + type: string + step_id: + title: Step Id + type: string + started_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Started At + completed_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Completed At + step_type: + const: tool_execution + default: tool_execution + title: Step Type + type: string + tool_calls: + items: + $ref: '#/$defs/ToolCall' + title: Tool Calls + type: array + tool_responses: + items: + $ref: '#/$defs/ToolResponse' + title: Tool Responses + type: array + required: + - turn_id + - step_id + - tool_calls + - tool_responses + title: ToolExecutionStep + type: object + ToolResponse: + description: >- + Response from a tool invocation. + + + :param call_id: Unique identifier for the tool call this response is for + + :param tool_name: Name of the tool that was invoked + + :param content: The response content from the tool + + :param metadata: (Optional) Additional metadata about the tool response + properties: + call_id: + title: Call Id + type: string + tool_name: + anyOf: + - $ref: '#/$defs/BuiltinTool' + - type: string + title: Tool Name + content: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + title: Content + metadata: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Metadata + required: + - call_id + - tool_name + - content + title: ToolResponse + type: object + URL: + description: >- + A URL reference to external content. + + + :param uri: The URL string pointing to the resource + properties: + uri: + title: Uri + type: string + required: + - uri + title: URL + type: object + ViolationLevel: + description: >- + Severity level of a safety violation. + + + :cvar INFO: Informational level violation that does not require action + + :cvar WARN: Warning level violation that suggests caution but allows continuation + + :cvar ERROR: Error level violation that requires blocking or intervention + enum: + - info + - warn + - error + title: ViolationLevel + type: string + _URLOrData: + description: >- + A URL or a base64 encoded string + + + :param url: A URL of the image or data URL in the format of data:image/{type};base64,{data}. + Note that URL could have length limits. + + :param data: base64 encoded image data as string + properties: + url: + anyOf: + - $ref: '#/$defs/URL' + - type: 'null' + data: + anyOf: + - type: string + - type: 'null' + contentEncoding: base64 + title: Data + title: _URLOrData + type: object + description: >- + Response containing details of a specific agent step. + + + :param step: The complete step data and execution details properties: step: - oneOf: - - $ref: '#/components/schemas/InferenceStep' - - $ref: '#/components/schemas/ToolExecutionStep' - - $ref: '#/components/schemas/ShieldCallStep' - - $ref: '#/components/schemas/MemoryRetrievalStep' discriminator: - propertyName: step_type mapping: - inference: '#/components/schemas/InferenceStep' - tool_execution: '#/components/schemas/ToolExecutionStep' - shield_call: '#/components/schemas/ShieldCallStep' - memory_retrieval: '#/components/schemas/MemoryRetrievalStep' - description: >- - The complete step data and execution details - additionalProperties: false + inference: '#/$defs/InferenceStep' + memory_retrieval: '#/$defs/MemoryRetrievalStep' + shield_call: '#/$defs/ShieldCallStep' + tool_execution: '#/$defs/ToolExecutionStep' + propertyName: step_type + oneOf: + - $ref: '#/$defs/InferenceStep' + - $ref: '#/$defs/ToolExecutionStep' + - $ref: '#/$defs/ShieldCallStep' + - $ref: '#/$defs/MemoryRetrievalStep' + title: Step required: - step title: AgentStepResponse - description: >- - Response containing details of a specific agent step. - Benchmark: type: object - properties: - identifier: - type: string - provider_resource_id: - type: string - provider_id: - type: string - type: - type: string - enum: - - model - - shield - - vector_store - - dataset - - scoring_function - - benchmark - - tool - - tool_group - - prompt - const: benchmark - default: benchmark - description: The resource type, always benchmark - dataset_id: - type: string - description: >- - Identifier of the dataset to use for the benchmark evaluation - scoring_functions: - type: array - items: - type: string - description: >- - List of scoring function identifiers to apply during evaluation - metadata: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: Metadata for this evaluation task - additionalProperties: false - required: - - identifier - - provider_id - - type - - dataset_id - - scoring_functions - - metadata - title: Benchmark - description: >- - A benchmark resource for evaluating model performance. ListBenchmarksResponse: - type: object + $defs: + Benchmark: + description: >- + A benchmark resource for evaluating model performance. + + + :param dataset_id: Identifier of the dataset to use for the benchmark + evaluation + + :param scoring_functions: List of scoring function identifiers to apply + during evaluation + + :param metadata: Metadata for this evaluation task + + :param type: The resource type, always benchmark + properties: + identifier: + description: >- + Unique identifier for this resource in llama stack + title: Identifier + type: string + provider_resource_id: + anyOf: + - type: string + - type: 'null' + description: >- + Unique identifier for this resource in the provider + title: Provider Resource Id + provider_id: + description: >- + ID of the provider that owns this resource + title: Provider Id + type: string + type: + const: benchmark + default: benchmark + title: Type + type: string + dataset_id: + title: Dataset Id + type: string + scoring_functions: + items: + type: string + title: Scoring Functions + type: array + metadata: + additionalProperties: true + description: Metadata for this evaluation task + title: Metadata + type: object + required: + - identifier + - provider_id + - dataset_id + - scoring_functions + title: Benchmark + type: object properties: data: - type: array items: - $ref: '#/components/schemas/Benchmark' - additionalProperties: false + $ref: '#/$defs/Benchmark' + title: Data + type: array required: - data title: ListBenchmarksResponse + type: object RegisterBenchmarkRequest: type: object + Benchmark: + description: >- + A benchmark resource for evaluating model performance. + + + :param dataset_id: Identifier of the dataset to use for the benchmark evaluation + + :param scoring_functions: List of scoring function identifiers to apply during + evaluation + + :param metadata: Metadata for this evaluation task + + :param type: The resource type, always benchmark properties: - benchmark_id: - type: string - description: The ID of the benchmark to register. - dataset_id: - type: string + identifier: description: >- - The ID of the dataset to use for the benchmark. + Unique identifier for this resource in llama stack + title: Identifier + type: string + provider_resource_id: + anyOf: + - type: string + - type: 'null' + description: >- + Unique identifier for this resource in the provider + title: Provider Resource Id + provider_id: + description: >- + ID of the provider that owns this resource + title: Provider Id + type: string + type: + const: benchmark + default: benchmark + title: Type + type: string + dataset_id: + title: Dataset Id + type: string scoring_functions: - type: array items: type: string - description: >- - The scoring functions to use for the benchmark. - provider_benchmark_id: - type: string - description: >- - The ID of the provider benchmark to use for the benchmark. - provider_id: - type: string - description: >- - The ID of the provider to use for the benchmark. + title: Scoring Functions + type: array metadata: + additionalProperties: true + description: Metadata for this evaluation task + title: Metadata type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: The metadata to use for the benchmark. - additionalProperties: false required: - - benchmark_id + - identifier + - provider_id - dataset_id - scoring_functions - title: RegisterBenchmarkRequest - AgentCandidate: + title: Benchmark type: object properties: type: @@ -13182,692 +19337,437 @@ components: A system message providing instructions or context to the model. EvaluateRowsRequest: type: object - properties: - input_rows: - type: array - items: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: The rows to evaluate. - scoring_functions: - type: array - items: - type: string - description: >- - The scoring functions to use for the evaluation. - benchmark_config: - $ref: '#/components/schemas/BenchmarkConfig' - description: The configuration for the benchmark. - additionalProperties: false - required: - - input_rows - - scoring_functions - - benchmark_config - title: EvaluateRowsRequest EvaluateResponse: - type: object + $defs: + ScoringResult: + description: >- + A scoring result for a single row. + + + :param score_rows: The scoring result for each row. Each row is a map + of column name to value. + + :param aggregated_results: Map of metric name to aggregated value + properties: + score_rows: + items: + additionalProperties: true + type: object + title: Score Rows + type: array + aggregated_results: + additionalProperties: true + title: Aggregated Results + type: object + required: + - score_rows + - aggregated_results + title: ScoringResult + type: object + description: >- + The response from an evaluation. + + + :param generations: The generations from the evaluation. + + :param scores: The scores from the evaluation. properties: generations: - type: array items: + additionalProperties: true type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: The generations from the evaluation. + title: Generations + type: array scores: - type: object additionalProperties: - $ref: '#/components/schemas/ScoringResult' - description: The scores from the evaluation. - additionalProperties: false + $ref: '#/$defs/ScoringResult' + title: Scores + type: object required: - generations - scores title: EvaluateResponse - description: The response from an evaluation. + type: object RunEvalRequest: type: object - properties: - benchmark_config: - $ref: '#/components/schemas/BenchmarkConfig' - description: The configuration for the benchmark. - additionalProperties: false - required: - - benchmark_config - title: RunEvalRequest Job: - type: object - properties: - job_id: - type: string - description: Unique identifier for the job - status: - type: string + $defs: + JobStatus: + description: >- + Status of a job execution. + + :cvar completed: Job has finished successfully + + :cvar in_progress: Job is currently running + + :cvar failed: Job has failed during execution + + :cvar scheduled: Job is scheduled but not yet started + + :cvar cancelled: Job was cancelled before completion enum: - completed - in_progress - failed - scheduled - cancelled - description: Current execution status of the job - additionalProperties: false + title: JobStatus + type: string + description: >- + A job execution instance with status tracking. + + + :param job_id: Unique identifier for the job + + :param status: Current execution status of the job + properties: + job_id: + title: Job Id + type: string + status: + $ref: '#/$defs/JobStatus' required: - job_id - status title: Job - description: >- - A job execution instance with status tracking. + type: object RerankRequest: type: object - properties: - model: - type: string - description: >- - The identifier of the reranking model to use. - query: - oneOf: - - type: string - - $ref: '#/components/schemas/OpenAIChatCompletionContentPartTextParam' - - $ref: '#/components/schemas/OpenAIChatCompletionContentPartImageParam' - description: >- - The search query to rank items against. Can be a string, text content - part, or image content part. The input must not exceed the model's max - input token length. - items: - type: array - items: - oneOf: - - type: string - - $ref: '#/components/schemas/OpenAIChatCompletionContentPartTextParam' - - $ref: '#/components/schemas/OpenAIChatCompletionContentPartImageParam' - description: >- - List of items to rerank. Each item can be a string, text content part, - or image content part. Each input must not exceed the model's max input - token length. - max_num_results: - type: integer - description: >- - (Optional) Maximum number of results to return. Default: returns all. - additionalProperties: false - required: - - model - - query - - items - title: RerankRequest - RerankData: - type: object - properties: - index: - type: integer - description: >- - The original index of the document in the input list - relevance_score: - type: number - description: >- - The relevance score from the model output. Values are inverted when applicable - so that higher scores indicate greater relevance. - additionalProperties: false - required: - - index - - relevance_score - title: RerankData - description: >- - A single rerank result from a reranking response. RerankResponse: - type: object + $defs: + RerankData: + description: >- + A single rerank result from a reranking response. + + + :param index: The original index of the document in the input list + + :param relevance_score: The relevance score from the model output. Values + are inverted when applicable so that higher scores indicate greater relevance. + properties: + index: + title: Index + type: integer + relevance_score: + title: Relevance Score + type: number + required: + - index + - relevance_score + title: RerankData + type: object + description: >- + Response from a reranking request. + + + :param data: List of rerank result objects, sorted by relevance score (descending) properties: data: - type: array items: - $ref: '#/components/schemas/RerankData' - description: >- - List of rerank result objects, sorted by relevance score (descending) - additionalProperties: false + $ref: '#/$defs/RerankData' + title: Data + type: array required: - data title: RerankResponse - description: Response from a reranking request. - Checkpoint: type: object - properties: - identifier: - type: string - description: Unique identifier for the checkpoint - created_at: - type: string - format: date-time - description: >- - Timestamp when the checkpoint was created - epoch: - type: integer - description: >- - Training epoch when the checkpoint was saved - post_training_job_id: - type: string - description: >- - Identifier of the training job that created this checkpoint - path: - type: string - description: >- - File system path where the checkpoint is stored - training_metrics: - $ref: '#/components/schemas/PostTrainingMetric' - description: >- - (Optional) Training metrics associated with this checkpoint - additionalProperties: false - required: - - identifier - - created_at - - epoch - - post_training_job_id - - path - title: Checkpoint - description: Checkpoint created during training runs. PostTrainingJobArtifactsResponse: - type: object + $defs: + Checkpoint: + description: >- + Checkpoint created during training runs. + + + :param identifier: Unique identifier for the checkpoint + + :param created_at: Timestamp when the checkpoint was created + + :param epoch: Training epoch when the checkpoint was saved + + :param post_training_job_id: Identifier of the training job that created + this checkpoint + + :param path: File system path where the checkpoint is stored + + :param training_metrics: (Optional) Training metrics associated with this + checkpoint + properties: + identifier: + title: Identifier + type: string + created_at: + format: date-time + title: Created At + type: string + epoch: + title: Epoch + type: integer + post_training_job_id: + title: Post Training Job Id + type: string + path: + title: Path + type: string + training_metrics: + anyOf: + - $ref: '#/$defs/PostTrainingMetric' + - type: 'null' + required: + - identifier + - created_at + - epoch + - post_training_job_id + - path + title: Checkpoint + type: object + PostTrainingMetric: + description: >- + Training metrics captured during post-training jobs. + + + :param epoch: Training epoch number + + :param train_loss: Loss value on the training dataset + + :param validation_loss: Loss value on the validation dataset + + :param perplexity: Perplexity metric indicating model confidence + properties: + epoch: + title: Epoch + type: integer + train_loss: + title: Train Loss + type: number + validation_loss: + title: Validation Loss + type: number + perplexity: + title: Perplexity + type: number + required: + - epoch + - train_loss + - validation_loss + - perplexity + title: PostTrainingMetric + type: object + description: >- + Artifacts of a finetuning job. + + + :param job_uuid: Unique identifier for the training job + + :param checkpoints: List of model checkpoints created during training properties: job_uuid: + title: Job Uuid type: string - description: Unique identifier for the training job checkpoints: - type: array items: - $ref: '#/components/schemas/Checkpoint' - description: >- - List of model checkpoints created during training - additionalProperties: false + $ref: '#/$defs/Checkpoint' + title: Checkpoints + type: array required: - job_uuid - - checkpoints title: PostTrainingJobArtifactsResponse - description: Artifacts of a finetuning job. - PostTrainingMetric: type: object - properties: - epoch: - type: integer - description: Training epoch number - train_loss: - type: number - description: Loss value on the training dataset - validation_loss: - type: number - description: Loss value on the validation dataset - perplexity: - type: number - description: >- - Perplexity metric indicating model confidence - additionalProperties: false - required: - - epoch - - train_loss - - validation_loss - - perplexity - title: PostTrainingMetric - description: >- - Training metrics captured during post-training jobs. CancelTrainingJobRequest: type: object - properties: - job_uuid: - type: string - description: The UUID of the job to cancel. - additionalProperties: false - required: - - job_uuid - title: CancelTrainingJobRequest PostTrainingJobStatusResponse: - type: object - properties: - job_uuid: - type: string - description: Unique identifier for the training job - status: - type: string + $defs: + Checkpoint: + description: >- + Checkpoint created during training runs. + + + :param identifier: Unique identifier for the checkpoint + + :param created_at: Timestamp when the checkpoint was created + + :param epoch: Training epoch when the checkpoint was saved + + :param post_training_job_id: Identifier of the training job that created + this checkpoint + + :param path: File system path where the checkpoint is stored + + :param training_metrics: (Optional) Training metrics associated with this + checkpoint + properties: + identifier: + title: Identifier + type: string + created_at: + format: date-time + title: Created At + type: string + epoch: + title: Epoch + type: integer + post_training_job_id: + title: Post Training Job Id + type: string + path: + title: Path + type: string + training_metrics: + anyOf: + - $ref: '#/$defs/PostTrainingMetric' + - type: 'null' + required: + - identifier + - created_at + - epoch + - post_training_job_id + - path + title: Checkpoint + type: object + JobStatus: + description: >- + Status of a job execution. + + :cvar completed: Job has finished successfully + + :cvar in_progress: Job is currently running + + :cvar failed: Job has failed during execution + + :cvar scheduled: Job is scheduled but not yet started + + :cvar cancelled: Job was cancelled before completion enum: - completed - in_progress - failed - scheduled - cancelled - description: Current status of the training job - scheduled_at: + title: JobStatus type: string - format: date-time + PostTrainingMetric: description: >- - (Optional) Timestamp when the job was scheduled - started_at: - type: string - format: date-time - description: >- - (Optional) Timestamp when the job execution began - completed_at: - type: string - format: date-time - description: >- - (Optional) Timestamp when the job finished, if completed - resources_allocated: + Training metrics captured during post-training jobs. + + + :param epoch: Training epoch number + + :param train_loss: Loss value on the training dataset + + :param validation_loss: Loss value on the validation dataset + + :param perplexity: Perplexity metric indicating model confidence + properties: + epoch: + title: Epoch + type: integer + train_loss: + title: Train Loss + type: number + validation_loss: + title: Validation Loss + type: number + perplexity: + title: Perplexity + type: number + required: + - epoch + - train_loss + - validation_loss + - perplexity + title: PostTrainingMetric type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - (Optional) Information about computational resources allocated to the - job + description: >- + Status of a finetuning job. + + + :param job_uuid: Unique identifier for the training job + + :param status: Current status of the training job + + :param scheduled_at: (Optional) Timestamp when the job was scheduled + + :param started_at: (Optional) Timestamp when the job execution began + + :param completed_at: (Optional) Timestamp when the job finished, if completed + + :param resources_allocated: (Optional) Information about computational resources + allocated to the job + + :param checkpoints: List of model checkpoints created during training + properties: + job_uuid: + title: Job Uuid + type: string + status: + $ref: '#/$defs/JobStatus' + scheduled_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Scheduled At + started_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Started At + completed_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Completed At + resources_allocated: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Resources Allocated checkpoints: - type: array items: - $ref: '#/components/schemas/Checkpoint' - description: >- - List of model checkpoints created during training - additionalProperties: false + $ref: '#/$defs/Checkpoint' + title: Checkpoints + type: array required: - job_uuid - status - - checkpoints title: PostTrainingJobStatusResponse - description: Status of a finetuning job. - ListPostTrainingJobsResponse: type: object + ListPostTrainingJobsResponse: + $defs: + PostTrainingJob: + properties: + job_uuid: + title: Job Uuid + type: string + required: + - job_uuid + title: PostTrainingJob + type: object properties: data: - type: array items: - type: object - properties: - job_uuid: - type: string - additionalProperties: false - required: - - job_uuid - title: PostTrainingJob - additionalProperties: false + $ref: '#/$defs/PostTrainingJob' + title: Data + type: array required: - data title: ListPostTrainingJobsResponse - DPOAlignmentConfig: type: object - properties: - beta: - type: number - description: Temperature parameter for the DPO loss - loss_type: - $ref: '#/components/schemas/DPOLossType' - default: sigmoid - description: The type of loss function to use for DPO - additionalProperties: false - required: - - beta - - loss_type - title: DPOAlignmentConfig - description: >- - Configuration for Direct Preference Optimization (DPO) alignment. - DPOLossType: - type: string - enum: - - sigmoid - - hinge - - ipo - - kto_pair - title: DPOLossType - DataConfig: - type: object - properties: - dataset_id: - type: string - description: >- - Unique identifier for the training dataset - batch_size: - type: integer - description: Number of samples per training batch - shuffle: - type: boolean - description: >- - Whether to shuffle the dataset during training - data_format: - $ref: '#/components/schemas/DatasetFormat' - description: >- - Format of the dataset (instruct or dialog) - validation_dataset_id: - type: string - description: >- - (Optional) Unique identifier for the validation dataset - packed: - type: boolean - default: false - description: >- - (Optional) Whether to pack multiple samples into a single sequence for - efficiency - train_on_input: - type: boolean - default: false - description: >- - (Optional) Whether to compute loss on input tokens as well as output tokens - additionalProperties: false - required: - - dataset_id - - batch_size - - shuffle - - data_format - title: DataConfig - description: >- - Configuration for training data and data loading. - DatasetFormat: - type: string - enum: - - instruct - - dialog - title: DatasetFormat - description: Format of the training dataset. - EfficiencyConfig: - type: object - properties: - enable_activation_checkpointing: - type: boolean - default: false - description: >- - (Optional) Whether to use activation checkpointing to reduce memory usage - enable_activation_offloading: - type: boolean - default: false - description: >- - (Optional) Whether to offload activations to CPU to save GPU memory - memory_efficient_fsdp_wrap: - type: boolean - default: false - description: >- - (Optional) Whether to use memory-efficient FSDP wrapping - fsdp_cpu_offload: - type: boolean - default: false - description: >- - (Optional) Whether to offload FSDP parameters to CPU - additionalProperties: false - title: EfficiencyConfig - description: >- - Configuration for memory and compute efficiency optimizations. - OptimizerConfig: - type: object - properties: - optimizer_type: - $ref: '#/components/schemas/OptimizerType' - description: >- - Type of optimizer to use (adam, adamw, or sgd) - lr: - type: number - description: Learning rate for the optimizer - weight_decay: - type: number - description: >- - Weight decay coefficient for regularization - num_warmup_steps: - type: integer - description: Number of steps for learning rate warmup - additionalProperties: false - required: - - optimizer_type - - lr - - weight_decay - - num_warmup_steps - title: OptimizerConfig - description: >- - Configuration parameters for the optimization algorithm. - OptimizerType: - type: string - enum: - - adam - - adamw - - sgd - title: OptimizerType - description: >- - Available optimizer algorithms for training. - TrainingConfig: - type: object - properties: - n_epochs: - type: integer - description: Number of training epochs to run - max_steps_per_epoch: - type: integer - default: 1 - description: Maximum number of steps to run per epoch - gradient_accumulation_steps: - type: integer - default: 1 - description: >- - Number of steps to accumulate gradients before updating - max_validation_steps: - type: integer - default: 1 - description: >- - (Optional) Maximum number of validation steps per epoch - data_config: - $ref: '#/components/schemas/DataConfig' - description: >- - (Optional) Configuration for data loading and formatting - optimizer_config: - $ref: '#/components/schemas/OptimizerConfig' - description: >- - (Optional) Configuration for the optimization algorithm - efficiency_config: - $ref: '#/components/schemas/EfficiencyConfig' - description: >- - (Optional) Configuration for memory and compute optimizations - dtype: - type: string - default: bf16 - description: >- - (Optional) Data type for model parameters (bf16, fp16, fp32) - additionalProperties: false - required: - - n_epochs - - max_steps_per_epoch - - gradient_accumulation_steps - title: TrainingConfig - description: >- - Comprehensive configuration for the training process. PreferenceOptimizeRequest: type: object - properties: - job_uuid: - type: string - description: The UUID of the job to create. - finetuned_model: - type: string - description: The model to fine-tune. - algorithm_config: - $ref: '#/components/schemas/DPOAlignmentConfig' - description: The algorithm configuration. - training_config: - $ref: '#/components/schemas/TrainingConfig' - description: The training configuration. - hyperparam_search_config: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: The hyperparam search configuration. - logger_config: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: The logger configuration. - additionalProperties: false - required: - - job_uuid - - finetuned_model - - algorithm_config - - training_config - - hyperparam_search_config - - logger_config - title: PreferenceOptimizeRequest PostTrainingJob: - type: object properties: job_uuid: + title: Job Uuid type: string - additionalProperties: false required: - job_uuid title: PostTrainingJob - AlgorithmConfig: - oneOf: - - $ref: '#/components/schemas/LoraFinetuningConfig' - - $ref: '#/components/schemas/QATFinetuningConfig' - discriminator: - propertyName: type - mapping: - LoRA: '#/components/schemas/LoraFinetuningConfig' - QAT: '#/components/schemas/QATFinetuningConfig' - LoraFinetuningConfig: type: object - properties: - type: - type: string - const: LoRA - default: LoRA - description: Algorithm type identifier, always "LoRA" - lora_attn_modules: - type: array - items: - type: string - description: >- - List of attention module names to apply LoRA to - apply_lora_to_mlp: - type: boolean - description: Whether to apply LoRA to MLP layers - apply_lora_to_output: - type: boolean - description: >- - Whether to apply LoRA to output projection layers - rank: - type: integer - description: >- - Rank of the LoRA adaptation (lower rank = fewer parameters) - alpha: - type: integer - description: >- - LoRA scaling parameter that controls adaptation strength - use_dora: - type: boolean - default: false - description: >- - (Optional) Whether to use DoRA (Weight-Decomposed Low-Rank Adaptation) - quantize_base: - type: boolean - default: false - description: >- - (Optional) Whether to quantize the base model weights - additionalProperties: false - required: - - type - - lora_attn_modules - - apply_lora_to_mlp - - apply_lora_to_output - - rank - - alpha - title: LoraFinetuningConfig - description: >- - Configuration for Low-Rank Adaptation (LoRA) fine-tuning. - QATFinetuningConfig: - type: object - properties: - type: - type: string - const: QAT - default: QAT - description: Algorithm type identifier, always "QAT" - quantizer_name: - type: string - description: >- - Name of the quantization algorithm to use - group_size: - type: integer - description: Size of groups for grouped quantization - additionalProperties: false - required: - - type - - quantizer_name - - group_size - title: QATFinetuningConfig - description: >- - Configuration for Quantization-Aware Training (QAT) fine-tuning. SupervisedFineTuneRequest: type: object - properties: - job_uuid: - type: string - description: The UUID of the job to create. - training_config: - $ref: '#/components/schemas/TrainingConfig' - description: The training configuration. - hyperparam_search_config: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: The hyperparam search configuration. - logger_config: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: The logger configuration. - model: - type: string - description: The model to fine-tune. - checkpoint_dir: - type: string - description: The directory to save checkpoint(s) to. - algorithm_config: - $ref: '#/components/schemas/AlgorithmConfig' - description: The algorithm configuration. - additionalProperties: false - required: - - job_uuid - - training_config - - hyperparam_search_config - - logger_config - title: SupervisedFineTuneRequest responses: BadRequest400: description: The request was invalid or malformed @@ -13957,16 +19857,12 @@ tags: Llama Stack Inference API for generating completions, chat completions, and embeddings. - - This API provides the raw interface to the underlying models. Three kinds of - models are supported: - - - LLM models: these models generate "raw" and "chat" (conversational) completions. - - - Embedding models: these models generate embeddings to be used for semantic + This API provides the raw interface to the underlying models. Three kinds + of models are supported: + - LLM models: these models generate "raw" and "chat" (conversational) completions. + - Embedding models: these models generate embeddings to be used for semantic search. - - - Rerank models: these models reorder the documents based on their relevance + - Rerank models: these models reorder the documents based on their relevance to a query. x-displayName: Inference - name: Inspect diff --git a/docs/openapi_generator/README.md b/docs/openapi_generator/README.md deleted file mode 100644 index 85021d911..000000000 --- a/docs/openapi_generator/README.md +++ /dev/null @@ -1 +0,0 @@ -The RFC Specification (OpenAPI format) is generated from the set of API endpoints located in `llama_stack.core/server/endpoints.py` using the `generate.py` utility. diff --git a/docs/openapi_generator/generate.py b/docs/openapi_generator/generate.py deleted file mode 100644 index 65720df4a..000000000 --- a/docs/openapi_generator/generate.py +++ /dev/null @@ -1,134 +0,0 @@ -# Copyright (c) Meta Platforms, Inc. and affiliates. -# All rights reserved. -# -# This source code is licensed under the terms described in the LICENSE file in -# the root directory of this source tree. - -# Copyright (c) Meta Platforms, Inc. and affiliates. -# All rights reserved. -# -# This source code is licensed under the terms described found in the -# LICENSE file in the root directory of this source tree. - -from datetime import datetime -from pathlib import Path -import sys -import fire -import ruamel.yaml as yaml - -from llama_stack.apis.version import LLAMA_STACK_API_V1 # noqa: E402 -from llama_stack.core.stack import LlamaStack # noqa: E402 - -from .pyopenapi.options import Options # noqa: E402 -from .pyopenapi.specification import Info, Server # noqa: E402 -from .pyopenapi.utility import Specification, validate_api # noqa: E402 - - -def str_presenter(dumper, data): - if data.startswith(f"/{LLAMA_STACK_API_V1}") or data.startswith( - "#/components/schemas/" - ): - style = None - else: - style = ">" if "\n" in data or len(data) > 40 else None - return dumper.represent_scalar("tag:yaml.org,2002:str", data, style=style) - - -def generate_spec(output_dir: Path, stability_filter: str = None, main_spec: bool = False, combined_spec: bool = False): - """Generate OpenAPI spec with optional stability filtering.""" - - if combined_spec: - # Special case for combined stable + experimental APIs - title_suffix = " - Stable & Experimental APIs" - filename_prefix = "stainless-" - description_suffix = "\n\n**🔗 COMBINED**: This specification includes both stable production-ready APIs and experimental pre-release APIs. Use stable APIs for production deployments and experimental APIs for testing new features." - # Use the special "stainless" filter to include stable + experimental APIs - stability_filter = "stainless" - elif stability_filter: - title_suffix = { - "stable": " - Stable APIs" if not main_spec else "", - "experimental": " - Experimental APIs", - "deprecated": " - Deprecated APIs" - }.get(stability_filter, f" - {stability_filter.title()} APIs") - - # Use main spec filename for stable when main_spec=True - if main_spec and stability_filter == "stable": - filename_prefix = "" - else: - filename_prefix = f"{stability_filter}-" - - description_suffix = { - "stable": "\n\n**✅ STABLE**: Production-ready APIs with backward compatibility guarantees.", - "experimental": "\n\n**🧪 EXPERIMENTAL**: Pre-release APIs (v1alpha, v1beta) that may change before becoming stable.", - "deprecated": "\n\n**⚠️ DEPRECATED**: Legacy APIs that may be removed in future versions. Use for migration reference only." - }.get(stability_filter, "") - else: - title_suffix = "" - filename_prefix = "" - description_suffix = "" - - spec = Specification( - LlamaStack, - Options( - server=Server(url="http://any-hosted-llama-stack.com"), - info=Info( - title=f"Llama Stack Specification{title_suffix}", - version=LLAMA_STACK_API_V1, - description=f"""This is the specification of the Llama Stack that provides - a set of endpoints and their corresponding interfaces that are tailored to - best leverage Llama Models.{description_suffix}""", - ), - include_standard_error_responses=True, - stability_filter=stability_filter, # Pass the filter to the generator - ), - ) - - yaml_filename = f"{filename_prefix}llama-stack-spec.yaml" - - with open(output_dir / yaml_filename, "w", encoding="utf-8") as fp: - y = yaml.YAML() - y.default_flow_style = False - y.block_seq_indent = 2 - y.map_indent = 2 - y.sequence_indent = 4 - y.sequence_dash_offset = 2 - y.width = 80 - y.allow_unicode = True - y.representer.add_representer(str, str_presenter) - - y.dump( - spec.get_json(), - fp, - ) - -def main(output_dir: str): - output_dir = Path(output_dir) - if not output_dir.exists(): - raise ValueError(f"Directory {output_dir} does not exist") - - # Validate API protocols before generating spec - return_type_errors = validate_api() - if return_type_errors: - print("\nAPI Method Return Type Validation Errors:\n") - for error in return_type_errors: - print(error, file=sys.stderr) - sys.exit(1) - - now = str(datetime.now()) - print(f"Converting the spec to YAML (openapi.yaml) and HTML (openapi.html) at {now}") - print("") - - # Generate main spec as stable APIs (llama-stack-spec.yaml) - print("Generating main specification (stable APIs)...") - generate_spec(output_dir, "stable", main_spec=True) - - print("Generating other stability-filtered specifications...") - generate_spec(output_dir, "experimental") - generate_spec(output_dir, "deprecated") - - print("Generating combined stable + experimental specification...") - generate_spec(output_dir, combined_spec=True) - - -if __name__ == "__main__": - fire.Fire(main) diff --git a/docs/openapi_generator/pyopenapi/README.md b/docs/openapi_generator/pyopenapi/README.md deleted file mode 100644 index 1b5fbce19..000000000 --- a/docs/openapi_generator/pyopenapi/README.md +++ /dev/null @@ -1 +0,0 @@ -This is forked from https://github.com/hunyadi/pyopenapi diff --git a/docs/openapi_generator/pyopenapi/__init__.py b/docs/openapi_generator/pyopenapi/__init__.py deleted file mode 100644 index 756f351d8..000000000 --- a/docs/openapi_generator/pyopenapi/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -# Copyright (c) Meta Platforms, Inc. and affiliates. -# All rights reserved. -# -# This source code is licensed under the terms described in the LICENSE file in -# the root directory of this source tree. diff --git a/docs/openapi_generator/pyopenapi/generator.py b/docs/openapi_generator/pyopenapi/generator.py deleted file mode 100644 index 30fc9038d..000000000 --- a/docs/openapi_generator/pyopenapi/generator.py +++ /dev/null @@ -1,1175 +0,0 @@ -# Copyright (c) Meta Platforms, Inc. and affiliates. -# All rights reserved. -# -# This source code is licensed under the terms described in the LICENSE file in -# the root directory of this source tree. - -import hashlib -import inspect -import ipaddress -import os -import types -import typing -from dataclasses import make_dataclass -from pathlib import Path -from typing import Annotated, Any, Dict, get_args, get_origin, Set, Union - -from fastapi import UploadFile - -from llama_stack.apis.datatypes import Error -from llama_stack.strong_typing.core import JsonType -from llama_stack.strong_typing.docstring import Docstring, parse_type -from llama_stack.strong_typing.inspection import ( - is_generic_list, - is_type_optional, - is_type_union, - is_unwrapped_body_param, - unwrap_generic_list, - unwrap_optional_type, - unwrap_union_types, -) -from llama_stack.strong_typing.name import python_type_to_name -from llama_stack.strong_typing.schema import ( - get_schema_identifier, - JsonSchemaGenerator, - register_schema, - Schema, - SchemaOptions, -) -from llama_stack.strong_typing.serialization import json_dump_string, object_to_json -from pydantic import BaseModel - -from .operations import ( - EndpointOperation, - get_endpoint_events, - get_endpoint_operations, - HTTPMethod, -) -from .options import * -from .specification import ( - Components, - Document, - Example, - ExampleRef, - ExtraBodyParameter, - MediaType, - Operation, - Parameter, - ParameterLocation, - PathItem, - RequestBody, - Response, - ResponseRef, - SchemaOrRef, - SchemaRef, - Tag, - TagGroup, -) - -register_schema( - ipaddress.IPv4Address, - schema={ - "type": "string", - "format": "ipv4", - "title": "IPv4 address", - "description": "IPv4 address, according to dotted-quad ABNF syntax as defined in RFC 2673, section 3.2.", - }, - examples=["192.0.2.0", "198.51.100.1", "203.0.113.255"], -) - -register_schema( - ipaddress.IPv6Address, - schema={ - "type": "string", - "format": "ipv6", - "title": "IPv6 address", - "description": "IPv6 address, as defined in RFC 2373, section 2.2.", - }, - examples=[ - "FEDC:BA98:7654:3210:FEDC:BA98:7654:3210", - "1080:0:0:0:8:800:200C:417A", - "1080::8:800:200C:417A", - "FF01::101", - "::1", - ], -) - - -def http_status_to_string(status_code: HTTPStatusCode) -> str: - "Converts an HTTP status code to a string." - - if isinstance(status_code, HTTPStatus): - return str(status_code.value) - elif isinstance(status_code, int): - return str(status_code) - elif isinstance(status_code, str): - return status_code - else: - raise TypeError("expected: HTTP status code") - - -class SchemaBuilder: - schema_generator: JsonSchemaGenerator - schemas: Dict[str, Schema] - - def __init__(self, schema_generator: JsonSchemaGenerator) -> None: - self.schema_generator = schema_generator - self.schemas = {} - - def classdef_to_schema(self, typ: type) -> Schema: - """ - Converts a type to a JSON schema. - For nested types found in the type hierarchy, adds the type to the schema registry in the OpenAPI specification section `components`. - """ - - type_schema, type_definitions = self.schema_generator.classdef_to_schema(typ) - - # append schema to list of known schemas, to be used in OpenAPI's Components Object section - for ref, schema in type_definitions.items(): - self._add_ref(ref, schema) - - return type_schema - - def classdef_to_named_schema(self, name: str, typ: type) -> Schema: - schema = self.classdef_to_schema(typ) - self._add_ref(name, schema) - return schema - - def classdef_to_ref(self, typ: type) -> SchemaOrRef: - """ - Converts a type to a JSON schema, and if possible, returns a schema reference. - For composite types (such as classes), adds the type to the schema registry in the OpenAPI specification section `components`. - """ - - type_schema = self.classdef_to_schema(typ) - if typ is str or typ is int or typ is float: - # represent simple types as themselves - return type_schema - - type_name = get_schema_identifier(typ) - if type_name is not None: - return self._build_ref(type_name, type_schema) - - try: - type_name = python_type_to_name(typ) - return self._build_ref(type_name, type_schema) - except TypeError: - pass - - return type_schema - - def _build_ref(self, type_name: str, type_schema: Schema) -> SchemaRef: - self._add_ref(type_name, type_schema) - return SchemaRef(type_name) - - def _add_ref(self, type_name: str, type_schema: Schema) -> None: - if type_name not in self.schemas: - self.schemas[type_name] = type_schema - - -class ContentBuilder: - schema_builder: SchemaBuilder - schema_transformer: Optional[Callable[[SchemaOrRef], SchemaOrRef]] - sample_transformer: Optional[Callable[[JsonType], JsonType]] - - def __init__( - self, - schema_builder: SchemaBuilder, - schema_transformer: Optional[Callable[[SchemaOrRef], SchemaOrRef]] = None, - sample_transformer: Optional[Callable[[JsonType], JsonType]] = None, - ) -> None: - self.schema_builder = schema_builder - self.schema_transformer = schema_transformer - self.sample_transformer = sample_transformer - - def build_content( - self, payload_type: type, examples: Optional[List[Any]] = None - ) -> Dict[str, MediaType]: - "Creates the content subtree for a request or response." - - def is_iterator_type(t): - return "StreamChunk" in str(t) or "OpenAIResponseObjectStream" in str(t) - - def get_media_type(t): - if is_generic_list(t): - return "application/jsonl" - elif is_iterator_type(t): - return "text/event-stream" - else: - return "application/json" - - if typing.get_origin(payload_type) in (typing.Union, types.UnionType): - media_types = [] - item_types = [] - for x in typing.get_args(payload_type): - media_types.append(get_media_type(x)) - item_types.append(x) - - if len(set(media_types)) == 1: - # all types have the same media type - return {media_types[0]: self.build_media_type(payload_type, examples)} - else: - # different types have different media types - return { - media_type: self.build_media_type(item_type, examples) - for media_type, item_type in zip(media_types, item_types) - } - - if is_generic_list(payload_type): - media_type = "application/jsonl" - item_type = unwrap_generic_list(payload_type) - else: - media_type = "application/json" - item_type = payload_type - - return {media_type: self.build_media_type(item_type, examples)} - - def build_media_type( - self, item_type: type, examples: Optional[List[Any]] = None - ) -> MediaType: - schema = self.schema_builder.classdef_to_ref(item_type) - if self.schema_transformer: - schema_transformer: Callable[[SchemaOrRef], SchemaOrRef] = ( - self.schema_transformer - ) - schema = schema_transformer(schema) - - if not examples: - return MediaType(schema=schema) - - if len(examples) == 1: - return MediaType(schema=schema, example=self._build_example(examples[0])) - - return MediaType( - schema=schema, - examples=self._build_examples(examples), - ) - - def _build_examples( - self, examples: List[Any] - ) -> Dict[str, Union[Example, ExampleRef]]: - "Creates a set of several examples for a media type." - - if self.sample_transformer: - sample_transformer: Callable[[JsonType], JsonType] = self.sample_transformer # type: ignore - else: - sample_transformer = lambda sample: sample - - results: Dict[str, Union[Example, ExampleRef]] = {} - for example in examples: - value = sample_transformer(object_to_json(example)) - - hash_string = ( - hashlib.sha256(json_dump_string(value).encode("utf-8")) - .digest() - .hex()[:16] - ) - name = f"ex-{hash_string}" - - results[name] = Example(value=value) - - return results - - def _build_example(self, example: Any) -> Any: - "Creates a single example for a media type." - - if self.sample_transformer: - sample_transformer: Callable[[JsonType], JsonType] = self.sample_transformer # type: ignore - else: - sample_transformer = lambda sample: sample - - return sample_transformer(object_to_json(example)) - - -@dataclass -class ResponseOptions: - """ - Configuration options for building a response for an operation. - - :param type_descriptions: Maps each response type to a textual description (if available). - :param examples: A list of response examples. - :param status_catalog: Maps each response type to an HTTP status code. - :param default_status_code: HTTP status code assigned to responses that have no mapping. - """ - - type_descriptions: Dict[type, str] - examples: Optional[List[Any]] - status_catalog: Dict[type, HTTPStatusCode] - default_status_code: HTTPStatusCode - - -@dataclass -class StatusResponse: - status_code: str - types: List[type] = dataclasses.field(default_factory=list) - examples: List[Any] = dataclasses.field(default_factory=list) - - -def create_docstring_for_request( - request_name: str, fields: List[Tuple[str, type, Any]], doc_params: Dict[str, str] -) -> str: - """Creates a ReST-style docstring for a dynamically generated request dataclass.""" - lines = ["\n"] # Short description - - # Add parameter documentation in ReST format - for name, type_ in fields: - desc = doc_params.get(name, "") - lines.append(f":param {name}: {desc}") - - return "\n".join(lines) - - -class ResponseBuilder: - content_builder: ContentBuilder - - def __init__(self, content_builder: ContentBuilder) -> None: - self.content_builder = content_builder - - def _get_status_responses( - self, options: ResponseOptions - ) -> Dict[str, StatusResponse]: - status_responses: Dict[str, StatusResponse] = {} - - for response_type in options.type_descriptions.keys(): - status_code = http_status_to_string( - options.status_catalog.get(response_type, options.default_status_code) - ) - - # look up response for status code - if status_code not in status_responses: - status_responses[status_code] = StatusResponse(status_code) - status_response = status_responses[status_code] - - # append response types that are assigned the given status code - status_response.types.append(response_type) - - # append examples that have the matching response type - if options.examples: - status_response.examples.extend( - example - for example in options.examples - if isinstance(example, response_type) - ) - - return dict(sorted(status_responses.items())) - - def build_response( - self, options: ResponseOptions - ) -> Dict[str, Union[Response, ResponseRef]]: - """ - Groups responses that have the same status code. - """ - - responses: Dict[str, Union[Response, ResponseRef]] = {} - status_responses = self._get_status_responses(options) - for status_code, status_response in status_responses.items(): - response_types = tuple(status_response.types) - if len(response_types) > 1: - composite_response_type: type = Union[response_types] # type: ignore - else: - (response_type,) = response_types - composite_response_type = response_type - - description = " **OR** ".join( - filter( - None, - ( - options.type_descriptions[response_type] - for response_type in response_types - ), - ) - ) - - responses[status_code] = self._build_response( - response_type=composite_response_type, - description=description, - examples=status_response.examples or None, - ) - - return responses - - def _build_response( - self, - response_type: type, - description: str, - examples: Optional[List[Any]] = None, - ) -> Response: - "Creates a response subtree." - - if response_type is not None: - return Response( - description=description, - content=self.content_builder.build_content(response_type, examples), - ) - else: - return Response(description=description) - - -def schema_error_wrapper(schema: SchemaOrRef) -> Schema: - "Wraps an error output schema into a top-level error schema." - - return { - "type": "object", - "properties": { - "error": schema, # type: ignore - }, - "additionalProperties": False, - "required": [ - "error", - ], - } - - -def sample_error_wrapper(error: JsonType) -> JsonType: - "Wraps an error output sample into a top-level error sample." - - return {"error": error} - - -class Generator: - endpoint: type - options: Options - schema_builder: SchemaBuilder - responses: Dict[str, Response] - - def __init__(self, endpoint: type, options: Options) -> None: - self.endpoint = endpoint - self.options = options - schema_generator = JsonSchemaGenerator( - SchemaOptions( - definitions_path="#/components/schemas/", - use_examples=self.options.use_examples, - property_description_fun=options.property_description_fun, - ) - ) - self.schema_builder = SchemaBuilder(schema_generator) - self.responses = {} - - # Create standard error responses - self._create_standard_error_responses() - - def _create_standard_error_responses(self) -> None: - """ - Creates standard error responses that can be reused across operations. - These will be added to the components.responses section of the OpenAPI document. - """ - # Get the Error schema - error_schema = self.schema_builder.classdef_to_ref(Error) - - # Create standard error responses - self.responses["BadRequest400"] = Response( - description="The request was invalid or malformed", - content={ - "application/json": MediaType( - schema=error_schema, - example={ - "status": 400, - "title": "Bad Request", - "detail": "The request was invalid or malformed", - }, - ) - }, - ) - - self.responses["TooManyRequests429"] = Response( - description="The client has sent too many requests in a given amount of time", - content={ - "application/json": MediaType( - schema=error_schema, - example={ - "status": 429, - "title": "Too Many Requests", - "detail": "You have exceeded the rate limit. Please try again later.", - }, - ) - }, - ) - - self.responses["InternalServerError500"] = Response( - description="The server encountered an unexpected error", - content={ - "application/json": MediaType( - schema=error_schema, - example={ - "status": 500, - "title": "Internal Server Error", - "detail": "An unexpected error occurred. Our team has been notified.", - }, - ) - }, - ) - - # Add a default error response for any unhandled error cases - self.responses["DefaultError"] = Response( - description="An unexpected error occurred", - content={ - "application/json": MediaType( - schema=error_schema, - example={ - "status": 0, - "title": "Error", - "detail": "An unexpected error occurred", - }, - ) - }, - ) - - def _build_type_tag(self, ref: str, schema: Schema) -> Tag: - # Don't include schema definition in the tag description because for one, - # it is not very valuable and for another, it causes string formatting - # discrepancies via the Stainless Studio. - # - # definition = f'' - title = typing.cast(str, schema.get("title")) - description = typing.cast(str, schema.get("description")) - return Tag( - name=ref, - description="\n\n".join(s for s in (title, description) if s is not None), - ) - - def _build_extra_tag_groups( - self, extra_types: Dict[str, Dict[str, type]] - ) -> Dict[str, List[Tag]]: - """ - Creates a dictionary of tag group captions as keys, and tag lists as values. - - :param extra_types: A dictionary of type categories and list of types in that category. - """ - - extra_tags: Dict[str, List[Tag]] = {} - - for category_name, category_items in extra_types.items(): - tag_list: List[Tag] = [] - - for name, extra_type in category_items.items(): - schema = self.schema_builder.classdef_to_schema(extra_type) - tag_list.append(self._build_type_tag(name, schema)) - - if tag_list: - extra_tags[category_name] = tag_list - - return extra_tags - - def _get_api_group_for_operation(self, op) -> str | None: - """ - Determine the API group for an operation based on its route path. - - Args: - op: The endpoint operation - - Returns: - The API group name derived from the route, or None if unable to determine - """ - if not hasattr(op, 'webmethod') or not op.webmethod or not hasattr(op.webmethod, 'route'): - return None - - route = op.webmethod.route - if not route or not route.startswith('/'): - return None - - # Extract API group from route path - # Examples: /v1/agents/list -> agents-api - # /v1/responses -> responses-api - # /v1/models -> models-api - path_parts = route.strip('/').split('/') - - if len(path_parts) < 2: - return None - - # Skip version prefix (v1, v1alpha, v1beta, etc.) - if path_parts[0].startswith('v1'): - if len(path_parts) < 2: - return None - api_segment = path_parts[1] - else: - api_segment = path_parts[0] - - # Convert to supplementary file naming convention - # agents -> agents-api, responses -> responses-api, etc. - return f"{api_segment}-api" - - def _load_supplemental_content(self, api_group: str | None) -> str: - """ - Load supplemental content for an API group based on stability level. - - Follows this resolution order: - 1. docs/supplementary/{stability}/{api_group}.md - 2. docs/supplementary/shared/{api_group}.md (fallback) - 3. Empty string if no files found - - Args: - api_group: The API group name (e.g., "agents-responses-api"), or None if no mapping exists - - Returns: - The supplemental content as markdown string, or empty string if not found - """ - if not api_group: - return "" - - base_path = Path(__file__).parent.parent.parent / "supplementary" - - # Try stability-specific content first if stability filter is set - if self.options.stability_filter: - stability_path = base_path / self.options.stability_filter / f"{api_group}.md" - if stability_path.exists(): - try: - return stability_path.read_text(encoding="utf-8") - except Exception as e: - print(f"Warning: Could not read stability-specific supplemental content from {stability_path}: {e}") - - # Fall back to shared content - shared_path = base_path / "shared" / f"{api_group}.md" - if shared_path.exists(): - try: - return shared_path.read_text(encoding="utf-8") - except Exception as e: - print(f"Warning: Could not read shared supplemental content from {shared_path}: {e}") - - # No supplemental content found - return "" - - def _build_operation(self, op: EndpointOperation) -> Operation: - if op.defining_class.__name__ in [ - "SyntheticDataGeneration", - "PostTraining", - ]: - op.defining_class.__name__ = f"{op.defining_class.__name__} (Coming Soon)" - print(op.defining_class.__name__) - - # TODO (xiyan): temporary fix for datasetio inner impl + datasets api - # if op.defining_class.__name__ in ["DatasetIO"]: - # op.defining_class.__name__ = "Datasets" - - doc_string = parse_type(op.func_ref) - doc_params = dict( - (param.name, param.description) for param in doc_string.params.values() - ) - - # parameters passed in URL component path - path_parameters = [ - Parameter( - name=param_name, - in_=ParameterLocation.Path, - description=doc_params.get(param_name), - required=True, - schema=self.schema_builder.classdef_to_ref(param_type), - ) - for param_name, param_type in op.path_params - ] - - # parameters passed in URL component query string - query_parameters = [] - for param_name, param_type in op.query_params: - if is_type_optional(param_type): - inner_type: type = unwrap_optional_type(param_type) - required = False - else: - inner_type = param_type - required = True - - query_parameter = Parameter( - name=param_name, - in_=ParameterLocation.Query, - description=doc_params.get(param_name), - required=required, - schema=self.schema_builder.classdef_to_ref(inner_type), - ) - query_parameters.append(query_parameter) - - # parameters passed anywhere - parameters = path_parameters + query_parameters - - # Build extra body parameters documentation - extra_body_parameters = [] - for param_name, param_type, description in op.extra_body_params: - if is_type_optional(param_type): - inner_type: type = unwrap_optional_type(param_type) - required = False - else: - inner_type = param_type - required = True - - # Use description from ExtraBodyField if available, otherwise from docstring - param_description = description or doc_params.get(param_name) - - extra_body_param = ExtraBodyParameter( - name=param_name, - schema=self.schema_builder.classdef_to_ref(inner_type), - description=param_description, - required=required, - ) - extra_body_parameters.append(extra_body_param) - - webmethod = getattr(op.func_ref, "__webmethod__", None) - raw_bytes_request_body = False - if webmethod: - raw_bytes_request_body = getattr(webmethod, "raw_bytes_request_body", False) - - # data passed in request body as raw bytes cannot have request parameters - if raw_bytes_request_body and op.request_params: - raise ValueError( - "Cannot have both raw bytes request body and request parameters" - ) - - # data passed in request body as raw bytes - if raw_bytes_request_body: - requestBody = RequestBody( - content={ - "application/octet-stream": { - "schema": { - "type": "string", - "format": "binary", - } - } - }, - required=True, - ) - # data passed in request body as multipart/form-data - elif op.multipart_params: - builder = ContentBuilder(self.schema_builder) - - # Create schema properties for multipart form fields - properties = {} - required_fields = [] - - for name, param_type in op.multipart_params: - if get_origin(param_type) is Annotated: - base_type = get_args(param_type)[0] - else: - base_type = param_type - - # Check if the type is optional - is_optional = is_type_optional(base_type) - if is_optional: - base_type = unwrap_optional_type(base_type) - - if base_type is UploadFile: - # File upload - properties[name] = {"type": "string", "format": "binary"} - else: - # All other types - generate schema reference - # This includes enums, BaseModels, and simple types - properties[name] = self.schema_builder.classdef_to_ref(base_type) - - if not is_optional: - required_fields.append(name) - - multipart_schema = { - "type": "object", - "properties": properties, - "required": required_fields, - } - - requestBody = RequestBody( - content={"multipart/form-data": {"schema": multipart_schema}}, - required=True, - ) - # data passed in payload as JSON and mapped to request parameters - elif op.request_params: - builder = ContentBuilder(self.schema_builder) - first = next(iter(op.request_params)) - request_name, request_type = first - - # Special case: if there's a single parameter with Body(embed=False) that's a BaseModel, - # unwrap it to show the flat structure in the OpenAPI spec - # Example: openai_chat_completion() - if (len(op.request_params) == 1 and is_unwrapped_body_param(request_type)): - pass - else: - op_name = "".join(word.capitalize() for word in op.name.split("_")) - request_name = f"{op_name}Request" - fields = [ - ( - name, - type_, - ) - for name, type_ in op.request_params - ] - request_type = make_dataclass( - request_name, - fields, - namespace={ - "__doc__": create_docstring_for_request( - request_name, fields, doc_params - ) - }, - ) - - requestBody = RequestBody( - content={ - "application/json": builder.build_media_type( - request_type, op.request_examples - ) - }, - description=doc_params.get(request_name), - required=True, - ) - else: - requestBody = None - - # success response types - if doc_string.returns is None and is_type_union(op.response_type): - # split union of return types into a list of response types - success_type_docstring: Dict[type, Docstring] = { - typing.cast(type, item): parse_type(item) - for item in unwrap_union_types(op.response_type) - } - success_type_descriptions = { - item: doc_string.short_description - for item, doc_string in success_type_docstring.items() - } - else: - # use return type as a single response type - success_type_descriptions = { - op.response_type: ( - doc_string.returns.description if doc_string.returns else "OK" - ) - } - - response_examples = op.response_examples or [] - success_examples = [ - example - for example in response_examples - if not isinstance(example, Exception) - ] - - content_builder = ContentBuilder(self.schema_builder) - response_builder = ResponseBuilder(content_builder) - response_options = ResponseOptions( - success_type_descriptions, - success_examples if self.options.use_examples else None, - self.options.success_responses, - "200", - ) - responses = response_builder.build_response(response_options) - - # failure response types - if doc_string.raises: - exception_types: Dict[type, str] = { - item.raise_type: item.description for item in doc_string.raises.values() - } - exception_examples = [ - example - for example in response_examples - if isinstance(example, Exception) - ] - - if self.options.error_wrapper: - schema_transformer = schema_error_wrapper - sample_transformer = sample_error_wrapper - else: - schema_transformer = None - sample_transformer = None - - content_builder = ContentBuilder( - self.schema_builder, - schema_transformer=schema_transformer, - sample_transformer=sample_transformer, - ) - response_builder = ResponseBuilder(content_builder) - response_options = ResponseOptions( - exception_types, - exception_examples if self.options.use_examples else None, - self.options.error_responses, - "500", - ) - responses.update(response_builder.build_response(response_options)) - - assert len(responses.keys()) > 0, f"No responses found for {op.name}" - - # Add standard error response references - if self.options.include_standard_error_responses: - if "400" not in responses: - responses["400"] = ResponseRef("BadRequest400") - if "429" not in responses: - responses["429"] = ResponseRef("TooManyRequests429") - if "500" not in responses: - responses["500"] = ResponseRef("InternalServerError500") - if "default" not in responses: - responses["default"] = ResponseRef("DefaultError") - - if op.event_type is not None: - builder = ContentBuilder(self.schema_builder) - callbacks = { - f"{op.func_name}_callback": { - "{$request.query.callback}": PathItem( - post=Operation( - requestBody=RequestBody( - content=builder.build_content(op.event_type) - ), - responses={"200": Response(description="OK")}, - ) - ) - } - } - - else: - callbacks = None - - # Build base description from docstring - base_description = "\n".join( - filter(None, [doc_string.short_description, doc_string.long_description]) - ) - - # Individual endpoints get clean descriptions only - description = base_description - - return Operation( - tags=[ - getattr(op.defining_class, "API_NAMESPACE", op.defining_class.__name__) - ], - summary=doc_string.short_description, - description=description, - parameters=parameters, - requestBody=requestBody, - responses=responses, - callbacks=callbacks, - deprecated=getattr(op.webmethod, "deprecated", False) - or "DEPRECATED" in op.func_name, - security=[] if op.public else None, - extraBodyParameters=extra_body_parameters if extra_body_parameters else None, - ) - - def _get_api_stability_priority(self, api_level: str) -> int: - """ - Return sorting priority for API stability levels. - Lower numbers = higher priority (appear first) - - :param api_level: The API level (e.g., "v1", "v1beta", "v1alpha") - :return: Priority number for sorting - """ - stability_order = { - "v1": 0, # Stable - highest priority - "v1beta": 1, # Beta - medium priority - "v1alpha": 2, # Alpha - lowest priority - } - return stability_order.get(api_level, 999) # Unknown levels go last - - def generate(self) -> Document: - paths: Dict[str, PathItem] = {} - endpoint_classes: Set[type] = set() - - # Collect all operations and filter by stability if specified - operations = list( - get_endpoint_operations( - self.endpoint, use_examples=self.options.use_examples - ) - ) - - # Filter operations by stability level if requested - if self.options.stability_filter: - filtered_operations = [] - for op in operations: - deprecated = ( - getattr(op.webmethod, "deprecated", False) - or "DEPRECATED" in op.func_name - ) - stability_level = op.webmethod.level - - if self.options.stability_filter == "stable": - # Include v1 non-deprecated endpoints - if stability_level == "v1" and not deprecated: - filtered_operations.append(op) - elif self.options.stability_filter == "experimental": - # Include v1alpha and v1beta endpoints (deprecated or not) - if stability_level in ["v1alpha", "v1beta"]: - filtered_operations.append(op) - elif self.options.stability_filter == "deprecated": - # Include only deprecated endpoints - if deprecated: - filtered_operations.append(op) - elif self.options.stability_filter == "stainless": - # Include both stable (v1 non-deprecated) and experimental (v1alpha, v1beta) endpoints - if (stability_level == "v1" and not deprecated) or stability_level in ["v1alpha", "v1beta"]: - filtered_operations.append(op) - - operations = filtered_operations - print( - f"Filtered to {len(operations)} operations for stability level: {self.options.stability_filter}" - ) - - # Sort operations by multiple criteria for consistent ordering: - # 1. Stability level with deprecation handling (global priority): - # - Active stable (v1) comes first - # - Beta (v1beta) comes next - # - Alpha (v1alpha) comes next - # - Deprecated stable (v1 deprecated) comes last - # 2. Route path (group related endpoints within same stability level) - # 3. HTTP method (GET, POST, PUT, DELETE, PATCH) - # 4. Operation name (alphabetical) - def sort_key(op): - http_method_order = { - HTTPMethod.GET: 0, - HTTPMethod.POST: 1, - HTTPMethod.PUT: 2, - HTTPMethod.DELETE: 3, - HTTPMethod.PATCH: 4, - } - - # Enhanced stability priority for migration pattern support - deprecated = getattr(op.webmethod, "deprecated", False) - stability_priority = self._get_api_stability_priority(op.webmethod.level) - - # Deprecated versions should appear after everything else - # This ensures deprecated stable endpoints come last globally - if deprecated: - stability_priority += 10 # Push deprecated endpoints to the end - - return ( - stability_priority, # Global stability handling comes first - op.get_route( - op.webmethod - ), # Group by route path within stability level - http_method_order.get(op.http_method, 999), - op.func_name, - ) - - operations.sort(key=sort_key) - - # Debug output for migration pattern tracking - migration_routes = {} - for op in operations: - route_key = (op.get_route(op.webmethod), op.http_method) - if route_key not in migration_routes: - migration_routes[route_key] = [] - migration_routes[route_key].append( - (op.webmethod.level, getattr(op.webmethod, "deprecated", False)) - ) - - for route_key, versions in migration_routes.items(): - if len(versions) > 1: - print(f"Migration pattern detected for {route_key[1]} {route_key[0]}:") - for level, deprecated in versions: - status = "DEPRECATED" if deprecated else "ACTIVE" - print(f" - {level} ({status})") - - for op in operations: - endpoint_classes.add(op.defining_class) - - operation = self._build_operation(op) - - if op.http_method is HTTPMethod.GET: - pathItem = PathItem(get=operation) - elif op.http_method is HTTPMethod.PUT: - pathItem = PathItem(put=operation) - elif op.http_method is HTTPMethod.POST: - pathItem = PathItem(post=operation) - elif op.http_method is HTTPMethod.DELETE: - pathItem = PathItem(delete=operation) - elif op.http_method is HTTPMethod.PATCH: - pathItem = PathItem(patch=operation) - else: - raise NotImplementedError(f"unknown HTTP method: {op.http_method}") - - route = op.get_route(op.webmethod) - route = route.replace(":path", "") - print(f"route: {route}") - if route in paths: - paths[route].update(pathItem) - else: - paths[route] = pathItem - - operation_tags: List[Tag] = [] - for cls in endpoint_classes: - doc_string = parse_type(cls) - if hasattr(cls, "API_NAMESPACE") and cls.API_NAMESPACE != cls.__name__: - continue - - # Add supplemental content to tag pages - api_group = f"{cls.__name__.lower()}-api" - supplemental_content = self._load_supplemental_content(api_group) - - tag_description = doc_string.long_description or "" - if supplemental_content: - if tag_description: - tag_description = f"{tag_description}\n\n{supplemental_content}" - else: - tag_description = supplemental_content - - operation_tags.append( - Tag( - name=cls.__name__, - description=tag_description, - displayName=doc_string.short_description, - ) - ) - - # types that are emitted by events - event_tags: List[Tag] = [] - events = get_endpoint_events(self.endpoint) - for ref, event_type in events.items(): - event_schema = self.schema_builder.classdef_to_named_schema(ref, event_type) - event_tags.append(self._build_type_tag(ref, event_schema)) - - # types that are explicitly declared - extra_tag_groups: Dict[str, List[Tag]] = {} - if self.options.extra_types is not None: - if isinstance(self.options.extra_types, list): - extra_tag_groups = self._build_extra_tag_groups( - {"AdditionalTypes": self.options.extra_types} - ) - elif isinstance(self.options.extra_types, dict): - extra_tag_groups = self._build_extra_tag_groups( - self.options.extra_types - ) - else: - raise TypeError( - f"type mismatch for collection of extra types: {type(self.options.extra_types)}" - ) - - # list all operations and types - tags: List[Tag] = [] - tags.extend(operation_tags) - tags.extend(event_tags) - for extra_tag_group in extra_tag_groups.values(): - tags.extend(extra_tag_group) - - tags = sorted(tags, key=lambda t: t.name) - - tag_groups = [] - if operation_tags: - tag_groups.append( - TagGroup( - name=self.options.map("Operations"), - tags=sorted(tag.name for tag in operation_tags), - ) - ) - if event_tags: - tag_groups.append( - TagGroup( - name=self.options.map("Events"), - tags=sorted(tag.name for tag in event_tags), - ) - ) - for caption, extra_tag_group in extra_tag_groups.items(): - tag_groups.append( - TagGroup( - name=caption, - tags=sorted(tag.name for tag in extra_tag_group), - ) - ) - - if self.options.default_security_scheme: - securitySchemes = {"Default": self.options.default_security_scheme} - else: - securitySchemes = None - - return Document( - openapi=".".join(str(item) for item in self.options.version), - info=self.options.info, - jsonSchemaDialect=( - "https://json-schema.org/draft/2020-12/schema" - if self.options.version >= (3, 1, 0) - else None - ), - servers=[self.options.server], - paths=paths, - components=Components( - schemas=self.schema_builder.schemas, - responses=self.responses, - securitySchemes=securitySchemes, - ), - security=[{"Default": []}], - tags=tags, - tagGroups=tag_groups, - ) diff --git a/docs/openapi_generator/pyopenapi/operations.py b/docs/openapi_generator/pyopenapi/operations.py deleted file mode 100644 index 2970d7e53..000000000 --- a/docs/openapi_generator/pyopenapi/operations.py +++ /dev/null @@ -1,463 +0,0 @@ -# Copyright (c) Meta Platforms, Inc. and affiliates. -# All rights reserved. -# -# This source code is licensed under the terms described in the LICENSE file in -# the root directory of this source tree. - -import collections.abc -import enum -import inspect -import typing -from dataclasses import dataclass -from typing import Any, Callable, Dict, Iterable, Iterator, List, Optional, Tuple, Union - -from llama_stack.apis.version import LLAMA_STACK_API_V1, LLAMA_STACK_API_V1BETA, LLAMA_STACK_API_V1ALPHA - -from termcolor import colored - -from llama_stack.strong_typing.inspection import get_signature - -from typing import get_origin, get_args - -from fastapi import UploadFile -from fastapi.params import File, Form -from typing import Annotated - -from llama_stack.schema_utils import ExtraBodyField - - -def split_prefix( - s: str, sep: str, prefix: Union[str, Iterable[str]] -) -> Tuple[Optional[str], str]: - """ - Recognizes a prefix at the beginning of a string. - - :param s: The string to check. - :param sep: A separator between (one of) the prefix(es) and the rest of the string. - :param prefix: A string or a set of strings to identify as a prefix. - :return: A tuple of the recognized prefix (if any) and the rest of the string excluding the separator (or the entire string). - """ - - if isinstance(prefix, str): - if s.startswith(prefix + sep): - return prefix, s[len(prefix) + len(sep) :] - else: - return None, s - - for p in prefix: - if s.startswith(p + sep): - return p, s[len(p) + len(sep) :] - - return None, s - - -def _get_annotation_type(annotation: Union[type, str], callable: Callable) -> type: - "Maps a stringized reference to a type, as if using `from __future__ import annotations`." - - if isinstance(annotation, str): - return eval(annotation, callable.__globals__) - else: - return annotation - - -class HTTPMethod(enum.Enum): - "HTTP method used to invoke an endpoint operation." - - GET = "GET" - POST = "POST" - PUT = "PUT" - DELETE = "DELETE" - PATCH = "PATCH" - - -OperationParameter = Tuple[str, type] - - -class ValidationError(TypeError): - pass - - -@dataclass -class EndpointOperation: - """ - Type information and metadata associated with an endpoint operation. - - "param defining_class: The most specific class that defines the endpoint operation. - :param name: The short name of the endpoint operation. - :param func_name: The name of the function to invoke when the operation is triggered. - :param func_ref: The callable to invoke when the operation is triggered. - :param route: A custom route string assigned to the operation. - :param path_params: Parameters of the operation signature that are passed in the path component of the URL string. - :param query_params: Parameters of the operation signature that are passed in the query string as `key=value` pairs. - :param request_params: The parameter that corresponds to the data transmitted in the request body. - :param multipart_params: Parameters that indicate multipart/form-data request body. - :param extra_body_params: Parameters that arrive via extra_body and are documented but not in SDK. - :param event_type: The Python type of the data that is transmitted out-of-band (e.g. via websockets) while the operation is in progress. - :param response_type: The Python type of the data that is transmitted in the response body. - :param http_method: The HTTP method used to invoke the endpoint such as POST, GET or PUT. - :param public: True if the operation can be invoked without prior authentication. - :param request_examples: Sample requests that the operation might take. - :param response_examples: Sample responses that the operation might produce. - """ - - defining_class: type - name: str - func_name: str - func_ref: Callable[..., Any] - route: Optional[str] - path_params: List[OperationParameter] - query_params: List[OperationParameter] - request_params: Optional[OperationParameter] - multipart_params: List[OperationParameter] - extra_body_params: List[tuple[str, type, str | None]] - event_type: Optional[type] - response_type: type - http_method: HTTPMethod - public: bool - request_examples: Optional[List[Any]] = None - response_examples: Optional[List[Any]] = None - - def get_route(self, webmethod) -> str: - api_level = webmethod.level - - if self.route is not None: - return "/".join(["", api_level, self.route.lstrip("/")]) - - route_parts = ["", api_level, self.name] - for param_name, _ in self.path_params: - route_parts.append("{" + param_name + "}") - return "/".join(route_parts) - - -class _FormatParameterExtractor: - "A visitor to exract parameters in a format string." - - keys: List[str] - - def __init__(self) -> None: - self.keys = [] - - def __getitem__(self, key: str) -> None: - self.keys.append(key) - return None - - -def _get_route_parameters(route: str) -> List[str]: - extractor = _FormatParameterExtractor() - # Replace all occurrences of ":path" with empty string - route = route.replace(":path", "") - route.format_map(extractor) - return extractor.keys - - -def _get_endpoint_functions( - endpoint: type, prefixes: List[str] -) -> Iterator[Tuple[str, str, str, Callable]]: - if not inspect.isclass(endpoint): - raise ValueError(f"object is not a class type: {endpoint}") - - functions = inspect.getmembers(endpoint, inspect.isfunction) - for func_name, func_ref in functions: - webmethods = [] - - # Check for multiple webmethods (stacked decorators) - if hasattr(func_ref, "__webmethods__"): - webmethods = func_ref.__webmethods__ - - if not webmethods: - continue - - for webmethod in webmethods: - print(f"Processing {colored(func_name, 'white')}...") - operation_name = func_name - - if webmethod.method == "GET": - prefix = "get" - elif webmethod.method == "DELETE": - prefix = "delete" - elif webmethod.method == "POST": - prefix = "post" - elif operation_name.startswith("get_") or operation_name.endswith("/get"): - prefix = "get" - elif ( - operation_name.startswith("delete_") - or operation_name.startswith("remove_") - or operation_name.endswith("/delete") - or operation_name.endswith("/remove") - ): - prefix = "delete" - else: - # by default everything else is a POST - prefix = "post" - - yield prefix, operation_name, func_name, func_ref - - -def _get_defining_class(member_fn: str, derived_cls: type) -> type: - "Find the class in which a member function is first defined in a class inheritance hierarchy." - - # This import must be dynamic here - from llama_stack.apis.tools import RAGToolRuntime, ToolRuntime - - # iterate in reverse member resolution order to find most specific class first - for cls in reversed(inspect.getmro(derived_cls)): - for name, _ in inspect.getmembers(cls, inspect.isfunction): - if name == member_fn: - # HACK ALERT - if cls == RAGToolRuntime: - return ToolRuntime - return cls - - raise ValidationError( - f"cannot find defining class for {member_fn} in {derived_cls}" - ) - - -def get_endpoint_operations( - endpoint: type, use_examples: bool = True -) -> List[EndpointOperation]: - """ - Extracts a list of member functions in a class eligible for HTTP interface binding. - - These member functions are expected to have a signature like - ``` - async def get_object(self, uuid: str, version: int) -> Object: - ... - ``` - where the prefix `get_` translates to an HTTP GET, `object` corresponds to the name of the endpoint operation, - `uuid` and `version` are mapped to route path elements in "/object/{uuid}/{version}", and `Object` becomes - the response payload type, transmitted as an object serialized to JSON. - - If the member function has a composite class type in the argument list, it becomes the request payload type, - and the caller is expected to provide the data as serialized JSON in an HTTP POST request. - - :param endpoint: A class with member functions that can be mapped to an HTTP endpoint. - :param use_examples: Whether to return examples associated with member functions. - """ - - result = [] - - for prefix, operation_name, func_name, func_ref in _get_endpoint_functions( - endpoint, - [ - "create", - "delete", - "do", - "get", - "post", - "put", - "remove", - "set", - "update", - ], - ): - # Get all webmethods for this function - webmethods = getattr(func_ref, "__webmethods__", []) - - # Create one EndpointOperation for each webmethod - for webmethod in webmethods: - route = webmethod.route - route_params = _get_route_parameters(route) if route is not None else None - public = webmethod.public - request_examples = webmethod.request_examples - response_examples = webmethod.response_examples - - # inspect function signature for path and query parameters, and request/response payload type - signature = get_signature(func_ref) - - path_params = [] - query_params = [] - request_params = [] - multipart_params = [] - extra_body_params = [] - - for param_name, parameter in signature.parameters.items(): - param_type = _get_annotation_type(parameter.annotation, func_ref) - - # omit "self" for instance methods - if param_name == "self" and param_type is inspect.Parameter.empty: - continue - - # check if all parameters have explicit type - if parameter.annotation is inspect.Parameter.empty: - raise ValidationError( - f"parameter '{param_name}' in function '{func_name}' has no type annotation" - ) - - # Check if this is an extra_body parameter - is_extra_body, extra_body_desc = _is_extra_body_param(param_type) - if is_extra_body: - # Store in a separate list for documentation - extra_body_params.append((param_name, param_type, extra_body_desc)) - continue # Skip adding to request_params - - is_multipart = _is_multipart_param(param_type) - - if prefix in ["get", "delete"]: - if route_params is not None and param_name in route_params: - path_params.append((param_name, param_type)) - else: - query_params.append((param_name, param_type)) - else: - if route_params is not None and param_name in route_params: - path_params.append((param_name, param_type)) - elif is_multipart: - multipart_params.append((param_name, param_type)) - else: - request_params.append((param_name, param_type)) - - # check if function has explicit return type - if signature.return_annotation is inspect.Signature.empty: - raise ValidationError( - f"function '{func_name}' has no return type annotation" - ) - - return_type = _get_annotation_type(signature.return_annotation, func_ref) - - # operations that produce events are labeled as Generator[YieldType, SendType, ReturnType] - # where YieldType is the event type, SendType is None, and ReturnType is the immediate response type to the request - if typing.get_origin(return_type) is collections.abc.Generator: - event_type, send_type, response_type = typing.get_args(return_type) - if send_type is not type(None): - raise ValidationError( - f"function '{func_name}' has a return type Generator[Y,S,R] and therefore looks like an event but has an explicit send type" - ) - else: - event_type = None - - def process_type(t): - if typing.get_origin(t) is collections.abc.AsyncIterator: - # NOTE(ashwin): this is SSE and there is no way to represent it. either we make it a List - # or the item type. I am choosing it to be the latter - args = typing.get_args(t) - return args[0] - elif typing.get_origin(t) is typing.Union: - types = [process_type(a) for a in typing.get_args(t)] - return typing._UnionGenericAlias(typing.Union, tuple(types)) - else: - return t - - response_type = process_type(return_type) - - if prefix in ["delete", "remove"]: - http_method = HTTPMethod.DELETE - elif prefix == "post": - http_method = HTTPMethod.POST - elif prefix == "get": - http_method = HTTPMethod.GET - elif prefix == "set": - http_method = HTTPMethod.PUT - elif prefix == "update": - http_method = HTTPMethod.PATCH - else: - raise ValidationError(f"unknown prefix {prefix}") - - # Create an EndpointOperation for this specific webmethod - operation = EndpointOperation( - defining_class=_get_defining_class(func_name, endpoint), - name=operation_name, - func_name=func_name, - func_ref=func_ref, - route=route, - path_params=path_params, - query_params=query_params, - request_params=request_params, - multipart_params=multipart_params, - extra_body_params=extra_body_params, - event_type=event_type, - response_type=response_type, - http_method=http_method, - public=public, - request_examples=request_examples if use_examples else None, - response_examples=response_examples if use_examples else None, - ) - - # Store the specific webmethod with this operation - operation.webmethod = webmethod - result.append(operation) - - if not result: - raise ValidationError(f"no eligible endpoint operations in type {endpoint}") - - return result - - -def get_endpoint_events(endpoint: type) -> Dict[str, type]: - results = {} - - for decl in typing.get_type_hints(endpoint).values(): - # check if signature is Callable[...] - origin = typing.get_origin(decl) - if origin is None or not issubclass(origin, Callable): # type: ignore - continue - - # check if signature is Callable[[...], Any] - args = typing.get_args(decl) - if len(args) != 2: - continue - params_type, return_type = args - if not isinstance(params_type, list): - continue - - # check if signature is Callable[[...], None] - if not issubclass(return_type, type(None)): - continue - - # check if signature is Callable[[EventType], None] - if len(params_type) != 1: - continue - - param_type = params_type[0] - results[param_type.__name__] = param_type - - return results - - -def _is_multipart_param(param_type: type) -> bool: - """ - Check if a parameter type indicates multipart form data. - - Returns True if the type is: - - UploadFile - - Annotated[UploadFile, File()] - - Annotated[str, Form()] - - Annotated[Any, File()] - - Annotated[Any, Form()] - """ - if param_type is UploadFile: - return True - - # Check for Annotated types - origin = get_origin(param_type) - if origin is None: - return False - - if origin is Annotated: - args = get_args(param_type) - if len(args) < 2: - return False - - # Check the annotations for File() or Form() - for annotation in args[1:]: - if isinstance(annotation, (File, Form)): - return True - return False - - -def _is_extra_body_param(param_type: type) -> tuple[bool, str | None]: - """ - Check if parameter is marked as coming from extra_body. - - Returns: - (is_extra_body, description): Tuple of boolean and optional description - """ - origin = get_origin(param_type) - if origin is Annotated: - args = get_args(param_type) - for annotation in args[1:]: - if isinstance(annotation, ExtraBodyField): - return True, annotation.description - # Also check by type name for cases where import matters - if type(annotation).__name__ == 'ExtraBodyField': - return True, getattr(annotation, 'description', None) - return False, None diff --git a/docs/openapi_generator/pyopenapi/options.py b/docs/openapi_generator/pyopenapi/options.py deleted file mode 100644 index 53855b5b6..000000000 --- a/docs/openapi_generator/pyopenapi/options.py +++ /dev/null @@ -1,78 +0,0 @@ -# Copyright (c) Meta Platforms, Inc. and affiliates. -# All rights reserved. -# -# This source code is licensed under the terms described in the LICENSE file in -# the root directory of this source tree. - -import dataclasses -from dataclasses import dataclass -from http import HTTPStatus -from typing import Callable, ClassVar, Dict, List, Optional, Tuple, Union - -from .specification import ( - Info, - SecurityScheme, - SecuritySchemeAPI, - SecuritySchemeHTTP, - SecuritySchemeOpenIDConnect, - Server, -) - -HTTPStatusCode = Union[HTTPStatus, int, str] - - -@dataclass -class Options: - """ - :param server: Base URL for the API endpoint. - :param info: Meta-information for the endpoint specification. - :param version: OpenAPI specification version as a tuple of major, minor, revision. - :param default_security_scheme: Security scheme to apply to endpoints, unless overridden on a per-endpoint basis. - :param extra_types: Extra types in addition to those found in operation signatures. Use a dictionary to group related types. - :param use_examples: Whether to emit examples for operations. - :param success_responses: Associates operation response types with HTTP status codes. - :param error_responses: Associates error response types with HTTP status codes. - :param error_wrapper: True if errors are encapsulated in an error object wrapper. - :param property_description_fun: Custom transformation function to apply to class property documentation strings. - :param captions: User-defined captions for sections such as "Operations" or "Types", and (if applicable) groups of extra types. - :param include_standard_error_responses: Whether to include standard error responses (400, 429, 500, 503) in all operations. - """ - - server: Server - info: Info - version: Tuple[int, int, int] = (3, 1, 0) - default_security_scheme: Optional[SecurityScheme] = None - extra_types: Union[List[type], Dict[str, List[type]], None] = None - use_examples: bool = True - success_responses: Dict[type, HTTPStatusCode] = dataclasses.field( - default_factory=dict - ) - error_responses: Dict[type, HTTPStatusCode] = dataclasses.field( - default_factory=dict - ) - error_wrapper: bool = False - property_description_fun: Optional[Callable[[type, str, str], str]] = None - captions: Optional[Dict[str, str]] = None - include_standard_error_responses: bool = True - stability_filter: Optional[str] = None - - default_captions: ClassVar[Dict[str, str]] = { - "Operations": "Operations", - "Types": "Types", - "Events": "Events", - "AdditionalTypes": "Additional types", - } - - def map(self, id: str) -> str: - "Maps a language-neutral placeholder string to language-dependent text." - - if self.captions is not None: - caption = self.captions.get(id) - if caption is not None: - return caption - - caption = self.__class__.default_captions.get(id) - if caption is not None: - return caption - - raise KeyError(f"no caption found for ID: {id}") diff --git a/docs/openapi_generator/pyopenapi/specification.py b/docs/openapi_generator/pyopenapi/specification.py deleted file mode 100644 index 90bf54316..000000000 --- a/docs/openapi_generator/pyopenapi/specification.py +++ /dev/null @@ -1,269 +0,0 @@ -# Copyright (c) Meta Platforms, Inc. and affiliates. -# All rights reserved. -# -# This source code is licensed under the terms described in the LICENSE file in -# the root directory of this source tree. - -import dataclasses -import enum -from dataclasses import dataclass -from typing import Any, ClassVar, Dict, List, Optional, Union - -from llama_stack.strong_typing.schema import JsonType, Schema, StrictJsonType - -URL = str - - -@dataclass -class Ref: - ref_type: ClassVar[str] - id: str - - def to_json(self) -> StrictJsonType: - return {"$ref": f"#/components/{self.ref_type}/{self.id}"} - - -@dataclass -class SchemaRef(Ref): - ref_type: ClassVar[str] = "schemas" - - -SchemaOrRef = Union[Schema, SchemaRef] - - -@dataclass -class ResponseRef(Ref): - ref_type: ClassVar[str] = "responses" - - -@dataclass -class ParameterRef(Ref): - ref_type: ClassVar[str] = "parameters" - - -@dataclass -class ExampleRef(Ref): - ref_type: ClassVar[str] = "examples" - - -@dataclass -class Contact: - name: Optional[str] = None - url: Optional[URL] = None - email: Optional[str] = None - - -@dataclass -class License: - name: str - url: Optional[URL] = None - - -@dataclass -class Info: - title: str - version: str - description: Optional[str] = None - termsOfService: Optional[str] = None - contact: Optional[Contact] = None - license: Optional[License] = None - - -@dataclass -class MediaType: - schema: Optional[SchemaOrRef] = None - example: Optional[Any] = None - examples: Optional[Dict[str, Union["Example", ExampleRef]]] = None - - -@dataclass -class RequestBody: - content: Dict[str, MediaType | Dict[str, Any]] - description: Optional[str] = None - required: Optional[bool] = None - - -@dataclass -class Response: - description: str - content: Optional[Dict[str, MediaType]] = None - - -class ParameterLocation(enum.Enum): - Query = "query" - Header = "header" - Path = "path" - Cookie = "cookie" - - -@dataclass -class Parameter: - name: str - in_: ParameterLocation - description: Optional[str] = None - required: Optional[bool] = None - schema: Optional[SchemaOrRef] = None - example: Optional[Any] = None - - -@dataclass -class ExtraBodyParameter: - """Represents a parameter that arrives via extra_body in the request.""" - name: str - schema: SchemaOrRef - description: Optional[str] = None - required: Optional[bool] = None - - -@dataclass -class Operation: - responses: Dict[str, Union[Response, ResponseRef]] - tags: Optional[List[str]] = None - summary: Optional[str] = None - description: Optional[str] = None - operationId: Optional[str] = None - parameters: Optional[List[Parameter]] = None - requestBody: Optional[RequestBody] = None - callbacks: Optional[Dict[str, "Callback"]] = None - security: Optional[List["SecurityRequirement"]] = None - deprecated: Optional[bool] = None - extraBodyParameters: Optional[List[ExtraBodyParameter]] = None - - -@dataclass -class PathItem: - summary: Optional[str] = None - description: Optional[str] = None - get: Optional[Operation] = None - put: Optional[Operation] = None - post: Optional[Operation] = None - delete: Optional[Operation] = None - options: Optional[Operation] = None - head: Optional[Operation] = None - patch: Optional[Operation] = None - trace: Optional[Operation] = None - - def update(self, other: "PathItem") -> None: - "Merges another instance of this class into this object." - - for field in dataclasses.fields(self.__class__): - value = getattr(other, field.name) - if value is not None: - setattr(self, field.name, value) - - -# maps run-time expressions such as "$request.body#/url" to path items -Callback = Dict[str, PathItem] - - -@dataclass -class Example: - summary: Optional[str] = None - description: Optional[str] = None - value: Optional[Any] = None - externalValue: Optional[URL] = None - - -@dataclass -class Server: - url: URL - description: Optional[str] = None - - -class SecuritySchemeType(enum.Enum): - ApiKey = "apiKey" - HTTP = "http" - OAuth2 = "oauth2" - OpenIDConnect = "openIdConnect" - - -@dataclass -class SecurityScheme: - type: SecuritySchemeType - description: str - - -@dataclass(init=False) -class SecuritySchemeAPI(SecurityScheme): - name: str - in_: ParameterLocation - - def __init__(self, description: str, name: str, in_: ParameterLocation) -> None: - super().__init__(SecuritySchemeType.ApiKey, description) - self.name = name - self.in_ = in_ - - -@dataclass(init=False) -class SecuritySchemeHTTP(SecurityScheme): - scheme: str - bearerFormat: Optional[str] = None - - def __init__( - self, description: str, scheme: str, bearerFormat: Optional[str] = None - ) -> None: - super().__init__(SecuritySchemeType.HTTP, description) - self.scheme = scheme - self.bearerFormat = bearerFormat - - -@dataclass(init=False) -class SecuritySchemeOpenIDConnect(SecurityScheme): - openIdConnectUrl: str - - def __init__(self, description: str, openIdConnectUrl: str) -> None: - super().__init__(SecuritySchemeType.OpenIDConnect, description) - self.openIdConnectUrl = openIdConnectUrl - - -@dataclass -class Components: - schemas: Optional[Dict[str, Schema]] = None - responses: Optional[Dict[str, Response]] = None - parameters: Optional[Dict[str, Parameter]] = None - examples: Optional[Dict[str, Example]] = None - requestBodies: Optional[Dict[str, RequestBody]] = None - securitySchemes: Optional[Dict[str, SecurityScheme]] = None - callbacks: Optional[Dict[str, Callback]] = None - - -SecurityScope = str -SecurityRequirement = Dict[str, List[SecurityScope]] - - -@dataclass -class Tag: - name: str - description: Optional[str] = None - displayName: Optional[str] = None - - -@dataclass -class TagGroup: - """ - A ReDoc extension to provide information about groups of tags. - - Exposed via the vendor-specific property "x-tagGroups" of the top-level object. - """ - - name: str - tags: List[str] - - -@dataclass -class Document: - """ - This class is a Python dataclass adaptation of the OpenAPI Specification. - - For details, see - """ - - openapi: str - info: Info - servers: List[Server] - paths: Dict[str, PathItem] - jsonSchemaDialect: Optional[str] = None - components: Optional[Components] = None - security: Optional[List[SecurityRequirement]] = None - tags: Optional[List[Tag]] = None - tagGroups: Optional[List[TagGroup]] = None diff --git a/docs/openapi_generator/pyopenapi/template.html b/docs/openapi_generator/pyopenapi/template.html deleted file mode 100644 index 5848f364e..000000000 --- a/docs/openapi_generator/pyopenapi/template.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - OpenAPI specification - - - - - - - - - - - - - diff --git a/docs/openapi_generator/pyopenapi/utility.py b/docs/openapi_generator/pyopenapi/utility.py deleted file mode 100644 index c1425b250..000000000 --- a/docs/openapi_generator/pyopenapi/utility.py +++ /dev/null @@ -1,288 +0,0 @@ -# Copyright (c) Meta Platforms, Inc. and affiliates. -# All rights reserved. -# -# This source code is licensed under the terms described in the LICENSE file in -# the root directory of this source tree. - -import json -import typing -import inspect -from pathlib import Path -from typing import Any, List, Optional, TextIO, Union, get_type_hints, get_origin, get_args - -from pydantic import BaseModel -from llama_stack.strong_typing.schema import object_to_json, StrictJsonType -from llama_stack.strong_typing.inspection import is_unwrapped_body_param -from llama_stack.core.resolver import api_protocol_map - -from .generator import Generator -from .options import Options -from .specification import Document - -THIS_DIR = Path(__file__).parent - - -class Specification: - document: Document - - def __init__(self, endpoint: type, options: Options): - generator = Generator(endpoint, options) - self.document = generator.generate() - - def get_json(self) -> StrictJsonType: - """ - Returns the OpenAPI specification as a Python data type (e.g. `dict` for an object, `list` for an array). - - The result can be serialized to a JSON string with `json.dump` or `json.dumps`. - """ - - json_doc = typing.cast(StrictJsonType, object_to_json(self.document)) - - if isinstance(json_doc, dict): - # rename vendor-specific properties - tag_groups = json_doc.pop("tagGroups", None) - if tag_groups: - json_doc["x-tagGroups"] = tag_groups - tags = json_doc.get("tags") - if tags and isinstance(tags, list): - for tag in tags: - if not isinstance(tag, dict): - continue - - display_name = tag.pop("displayName", None) - if display_name: - tag["x-displayName"] = display_name - - # Handle operations to rename extraBodyParameters -> x-llama-stack-extra-body-params - paths = json_doc.get("paths", {}) - for path_item in paths.values(): - if isinstance(path_item, dict): - for method in ["get", "post", "put", "delete", "patch"]: - operation = path_item.get(method) - if operation and isinstance(operation, dict): - extra_body_params = operation.pop("extraBodyParameters", None) - if extra_body_params: - operation["x-llama-stack-extra-body-params"] = extra_body_params - - return json_doc - - def get_json_string(self, pretty_print: bool = False) -> str: - """ - Returns the OpenAPI specification as a JSON string. - - :param pretty_print: Whether to use line indents to beautify the output. - """ - - json_doc = self.get_json() - if pretty_print: - return json.dumps( - json_doc, check_circular=False, ensure_ascii=False, indent=4 - ) - else: - return json.dumps( - json_doc, - check_circular=False, - ensure_ascii=False, - separators=(",", ":"), - ) - - def write_json(self, f: TextIO, pretty_print: bool = False) -> None: - """ - Writes the OpenAPI specification to a file as a JSON string. - - :param pretty_print: Whether to use line indents to beautify the output. - """ - - json_doc = self.get_json() - if pretty_print: - json.dump( - json_doc, - f, - check_circular=False, - ensure_ascii=False, - indent=4, - ) - else: - json.dump( - json_doc, - f, - check_circular=False, - ensure_ascii=False, - separators=(",", ":"), - ) - - def write_html(self, f: TextIO, pretty_print: bool = False) -> None: - """ - Creates a stand-alone HTML page for the OpenAPI specification with ReDoc. - - :param pretty_print: Whether to use line indents to beautify the JSON string in the HTML file. - """ - - path = THIS_DIR / "template.html" - with path.open(encoding="utf-8", errors="strict") as html_template_file: - html_template = html_template_file.read() - - html = html_template.replace( - "{ /* OPENAPI_SPECIFICATION */ }", - self.get_json_string(pretty_print=pretty_print), - ) - - f.write(html) - -def is_optional_type(type_: Any) -> bool: - """Check if a type is Optional.""" - origin = get_origin(type_) - args = get_args(type_) - return origin is Optional or (origin is Union and type(None) in args) - - -def _validate_api_method_return_type(method) -> str | None: - hints = get_type_hints(method) - - if 'return' not in hints: - return "has no return type annotation" - - return_type = hints['return'] - if is_optional_type(return_type): - return "returns Optional type where a return value is mandatory" - - -def _validate_api_method_doesnt_return_list(method) -> str | None: - hints = get_type_hints(method) - - if 'return' not in hints: - return "has no return type annotation" - - return_type = hints['return'] - if get_origin(return_type) is list: - return "returns a list where a PaginatedResponse or List*Response object is expected" - - -def _validate_api_delete_method_returns_none(method) -> str | None: - hints = get_type_hints(method) - - if 'return' not in hints: - return "has no return type annotation" - - return_type = hints['return'] - - # Allow OpenAI endpoints to return response objects since they follow OpenAI specification - method_name = getattr(method, '__name__', '') - if method_name.__contains__('openai_'): - return None - - if return_type is not None and return_type is not type(None): - return "does not return None where None is mandatory" - - -def _validate_list_parameters_contain_data(method) -> str | None: - hints = get_type_hints(method) - - if 'return' not in hints: - return "has no return type annotation" - - return_type = hints['return'] - if not inspect.isclass(return_type): - return - - if not return_type.__name__.startswith('List'): - return - - if 'data' not in return_type.model_fields: - return "does not have a mandatory data attribute containing the list of objects" - - -def _validate_has_ellipsis(method) -> str | None: - source = inspect.getsource(method) - if "..." not in source and not "NotImplementedError" in source: - return "does not contain ellipsis (...) in its implementation" - -def _validate_has_return_in_docstring(method) -> str | None: - source = inspect.getsource(method) - return_type = method.__annotations__.get('return') - if return_type is not None and return_type != type(None) and ":returns:" not in source: - return "does not have a ':returns:' in its docstring" - -def _validate_has_params_in_docstring(method) -> str | None: - source = inspect.getsource(method) - sig = inspect.signature(method) - - params_list = [p for p in sig.parameters.values() if p.name != "self"] - if len(params_list) == 1: - param = params_list[0] - param_type = param.annotation - if is_unwrapped_body_param(param_type): - return - - # Only check if the method has more than one parameter - if len(sig.parameters) > 1 and ":param" not in source: - return "does not have a ':param' in its docstring" - -def _validate_has_no_return_none_in_docstring(method) -> str | None: - source = inspect.getsource(method) - return_type = method.__annotations__.get('return') - if return_type is None and ":returns: None" in source: - return "has a ':returns: None' in its docstring which is redundant for None-returning functions" - -def _validate_docstring_lines_end_with_dot(method) -> str | None: - docstring = inspect.getdoc(method) - if docstring is None: - return None - - lines = docstring.split('\n') - for line in lines: - line = line.strip() - if line and not any(line.endswith(char) for char in '.:{}[]()",'): - return f"docstring line '{line}' does not end with a valid character: . : {{ }} [ ] ( ) , \"" - -_VALIDATORS = { - "GET": [ - _validate_api_method_return_type, - _validate_list_parameters_contain_data, - _validate_api_method_doesnt_return_list, - _validate_has_ellipsis, - _validate_has_return_in_docstring, - _validate_has_params_in_docstring, - _validate_docstring_lines_end_with_dot, - ], - "DELETE": [ - _validate_api_delete_method_returns_none, - _validate_has_ellipsis, - _validate_has_return_in_docstring, - _validate_has_params_in_docstring, - _validate_has_no_return_none_in_docstring - ], - "POST": [ - _validate_has_ellipsis, - _validate_has_return_in_docstring, - _validate_has_params_in_docstring, - _validate_has_no_return_none_in_docstring, - _validate_docstring_lines_end_with_dot, - ], -} - - -def _get_methods_by_type(protocol, method_type: str): - members = inspect.getmembers(protocol, predicate=inspect.isfunction) - return { - method_name: method - for method_name, method in members - if (webmethod := getattr(method, '__webmethod__', None)) - if webmethod and webmethod.method == method_type - } - - -def validate_api() -> List[str]: - """Validate the API protocols.""" - errors = [] - protocols = api_protocol_map() - - for target, validators in _VALIDATORS.items(): - for protocol_name, protocol in protocols.items(): - for validator in validators: - for method_name, method in _get_methods_by_type(protocol, target).items(): - err = validator(method) - if err: - errors.append(f"Method {protocol_name}.{method_name} {err}") - - return errors diff --git a/docs/openapi_generator/run_openapi_generator.sh b/docs/openapi_generator/run_openapi_generator.sh deleted file mode 100755 index 6cffd42b0..000000000 --- a/docs/openapi_generator/run_openapi_generator.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash - -# Copyright (c) Meta Platforms, Inc. and affiliates. -# All rights reserved. -# -# This source code is licensed under the terms described in the LICENSE file in -# the root directory of this source tree. - -PYTHONPATH=${PYTHONPATH:-} -THIS_DIR="$(cd "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")" && pwd)" - -set -euo pipefail - -missing_packages=() - -check_package() { - if ! pip show "$1" &>/dev/null; then - missing_packages+=("$1") - fi -} - -if [ ${#missing_packages[@]} -ne 0 ]; then - echo "Error: The following package(s) are not installed:" - printf " - %s\n" "${missing_packages[@]}" - echo "Please install them using:" - echo "pip install ${missing_packages[*]}" - exit 1 -fi - -stack_dir=$(dirname $(dirname $THIS_DIR)) -PYTHONPATH=$PYTHONPATH:$stack_dir \ - python -m docs.openapi_generator.generate $(dirname $THIS_DIR)/static - -cp $stack_dir/docs/static/stainless-llama-stack-spec.yaml $stack_dir/client-sdks/stainless/openapi.yml diff --git a/docs/static/deprecated-llama-stack-spec.yaml b/docs/static/deprecated-llama-stack-spec.yaml index 3bc965eb7..d77423732 100644 --- a/docs/static/deprecated-llama-stack-spec.yaml +++ b/docs/static/deprecated-llama-stack-spec.yaml @@ -1,16 +1,8 @@ openapi: 3.1.0 info: - title: >- - Llama Stack Specification - Deprecated APIs - version: v1 - description: >- - This is the specification of the Llama Stack that provides - a set of endpoints and their corresponding interfaces that are - tailored to - best leverage Llama Models. - - **⚠️ DEPRECATED**: Legacy APIs that may be removed in future versions. Use for - migration reference only. + title: Llama Stack API + description: A comprehensive API for building and deploying AI applications + version: 1.0.0 servers: - url: http://any-hosted-llama-stack.com paths: {} @@ -58,8 +50,7 @@ components: title: Bad Request detail: The request was invalid or malformed TooManyRequests429: - description: >- - The client has sent too many requests in a given amount of time + description: The client has sent too many requests in a given amount of time content: application/json: schema: @@ -67,11 +58,9 @@ components: example: status: 429 title: Too Many Requests - detail: >- - You have exceeded the rate limit. Please try again later. + detail: You have exceeded the rate limit. Please try again later. InternalServerError500: - description: >- - The server encountered an unexpected error + description: The server encountered an unexpected error content: application/json: schema: @@ -79,10 +68,9 @@ components: example: status: 500 title: Internal Server Error - detail: >- - An unexpected error occurred. Our team has been notified. + detail: An unexpected error occurred DefaultError: - description: An unexpected error occurred + description: An error occurred content: application/json: schema: diff --git a/docs/static/experimental-llama-stack-spec.yaml b/docs/static/experimental-llama-stack-spec.yaml index 0a52bc89b..c81b375b0 100644 --- a/docs/static/experimental-llama-stack-spec.yaml +++ b/docs/static/experimental-llama-stack-spec.yaml @@ -1,55 +1,76 @@ openapi: 3.1.0 info: - title: >- - Llama Stack Specification - Experimental APIs - version: v1 - description: >- - This is the specification of the Llama Stack that provides - a set of endpoints and their corresponding interfaces that are - tailored to - best leverage Llama Models. - - **🧪 EXPERIMENTAL**: Pre-release APIs (v1alpha, v1beta) that may change before - becoming stable. + title: Llama Stack API + description: A comprehensive API for building and deploying AI applications + version: 1.0.0 servers: - - url: http://any-hosted-llama-stack.com +- url: https://api.llamastack.com + description: Production server +- url: https://staging-api.llamastack.com + description: Staging server paths: /v1beta/datasetio/append-rows/{dataset_id}: post: + tags: + - V1Beta + summary: Append Rows + description: Generic endpoint - this would be replaced with actual implementation. + operationId: append_rows_v1beta_datasetio_append_rows__dataset_id__post + parameters: + - name: args + in: query + required: true + schema: + title: Args + - name: kwargs + in: query + required: true + schema: + title: Kwargs responses: '200': - description: OK + description: Successful Response + content: + application/json: + schema: {} '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - DatasetIO - summary: Append rows to a dataset. - description: Append rows to a dataset. - parameters: - - name: dataset_id - in: path - description: >- - The ID of the dataset to append the rows to. - required: true - schema: - type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/AppendRowsRequest' - required: true - deprecated: false + description: Default Response /v1beta/datasetio/iterrows/{dataset_id}: get: + tags: + - V1Beta + summary: Iterrows + description: Query endpoint for proper schema generation. + operationId: iterrows_v1beta_datasetio_iterrows__dataset_id__get + parameters: + - name: dataset_id + in: path + required: true + schema: + type: string + title: Dataset Id + - name: start_index + in: query + required: false + schema: + type: integer + title: Start Index + - name: limit + in: query + required: false + schema: + type: integer + title: Limit responses: '200': description: A PaginatedResponse. @@ -59,57 +80,23 @@ paths: $ref: '#/components/schemas/PaginatedResponse' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - DatasetIO - summary: >- - Get a paginated list of rows from a dataset. - description: >- - Get a paginated list of rows from a dataset. - - Uses offset-based pagination where: - - - start_index: The starting index (0-based). If None, starts from beginning. - - - limit: Number of items to return. If None or -1, returns all items. - - - The response includes: - - - data: List of items for the current page. - - - has_more: Whether there are more items available after this set. - parameters: - - name: dataset_id - in: path - description: >- - The ID of the dataset to get the rows from. - required: true - schema: - type: string - - name: start_index - in: query - description: >- - Index into dataset for the first row to get. Get all rows if None. - required: false - schema: - type: integer - - name: limit - in: query - description: The number of rows to get. - required: false - schema: - type: integer - deprecated: false + description: Default Response /v1beta/datasets: get: + tags: + - V1Beta + summary: List Datasets + description: Response-only endpoint for proper schema generation. + operationId: list_datasets_v1beta_datasets_get responses: '200': description: A ListDatasetsResponse. @@ -119,21 +106,40 @@ paths: $ref: '#/components/schemas/ListDatasetsResponse' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Datasets - summary: List all datasets. - description: List all datasets. - parameters: [] - deprecated: false + description: Default Response post: + tags: + - V1Beta + summary: Register Dataset + description: Query endpoint for proper schema generation. + operationId: register_dataset_v1beta_datasets_post + parameters: + - name: purpose + in: query + required: false + schema: + $ref: '#/components/schemas/DatasetPurpose' + - name: metadata + in: query + required: false + schema: + type: string + title: Metadata + - name: dataset_id + in: query + required: false + schema: + type: string + title: Dataset Id responses: '200': description: A Dataset. @@ -143,28 +149,65 @@ paths: $ref: '#/components/schemas/Dataset' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Datasets - summary: Register a new dataset. - description: Register a new dataset. - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/RegisterDatasetRequest' - required: true - deprecated: false + description: Default Response /v1beta/datasets/{dataset_id}: + delete: + tags: + - V1Beta + summary: Unregister Dataset + description: Generic endpoint - this would be replaced with actual implementation. + operationId: unregister_dataset_v1beta_datasets__dataset_id__delete + parameters: + - name: args + in: query + required: true + schema: + title: Args + - name: kwargs + in: query + required: true + schema: + title: Kwargs + responses: + '200': + description: Successful Response + content: + application/json: + schema: {} + '400': + $ref: '#/components/responses/BadRequest400' + description: Bad Request + '429': + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests + '500': + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error + default: + $ref: '#/components/responses/DefaultError' + description: Default Response get: + tags: + - V1Beta + summary: Get Dataset + description: Query endpoint for proper schema generation. + operationId: get_dataset_v1beta_datasets__dataset_id__get + parameters: + - name: dataset_id + in: path + required: true + schema: + type: string + title: Dataset Id responses: '200': description: A Dataset. @@ -174,54 +217,36 @@ paths: $ref: '#/components/schemas/Dataset' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Datasets - summary: Get a dataset by its ID. - description: Get a dataset by its ID. - parameters: - - name: dataset_id - in: path - description: The ID of the dataset to get. - required: true - schema: - type: string - deprecated: false - delete: - responses: - '200': - description: OK - '400': - $ref: '#/components/responses/BadRequest400' - '429': - $ref: >- - #/components/responses/TooManyRequests429 - '500': - $ref: >- - #/components/responses/InternalServerError500 - default: - $ref: '#/components/responses/DefaultError' - tags: - - Datasets - summary: Unregister a dataset by its ID. - description: Unregister a dataset by its ID. - parameters: - - name: dataset_id - in: path - description: The ID of the dataset to unregister. - required: true - schema: - type: string - deprecated: false + description: Default Response /v1alpha/agents: get: + tags: + - V1Alpha + summary: List Agents + description: Query endpoint for proper schema generation. + operationId: list_agents_v1alpha_agents_get + parameters: + - name: start_index + in: query + required: false + schema: + type: integer + title: Start Index + - name: limit + in: query + required: false + schema: + type: integer + title: Limit responses: '200': description: A PaginatedResponse. @@ -231,67 +256,96 @@ paths: $ref: '#/components/schemas/PaginatedResponse' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Agents - summary: List all agents. - description: List all agents. - parameters: - - name: start_index - in: query - description: The index to start the pagination from. - required: false - schema: - type: integer - - name: limit - in: query - description: The number of agents to return. - required: false - schema: - type: integer - deprecated: false + description: Default Response post: + tags: + - V1Alpha + summary: Create Agent + description: Typed endpoint for proper schema generation. + operationId: create_agent_v1alpha_agents_post + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AgentConfig' responses: '200': - description: >- - An AgentCreateResponse with the agent ID. + description: An AgentCreateResponse with the agent ID. content: application/json: schema: $ref: '#/components/schemas/AgentCreateResponse' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Agents - summary: >- - Create an agent with the given configuration. - description: >- - Create an agent with the given configuration. - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateAgentRequest' - required: true - deprecated: false + description: Default Response /v1alpha/agents/{agent_id}: + delete: + tags: + - V1Alpha + summary: Delete Agent + description: Generic endpoint - this would be replaced with actual implementation. + operationId: delete_agent_v1alpha_agents__agent_id__delete + parameters: + - name: args + in: query + required: true + schema: + title: Args + - name: kwargs + in: query + required: true + schema: + title: Kwargs + responses: + '200': + description: Successful Response + content: + application/json: + schema: {} + '400': + $ref: '#/components/responses/BadRequest400' + description: Bad Request + '429': + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests + '500': + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error + default: + $ref: '#/components/responses/DefaultError' + description: Default Response get: + tags: + - V1Alpha + summary: Get Agent + description: Query endpoint for proper schema generation. + operationId: get_agent_v1alpha_agents__agent_id__get + parameters: + - name: agent_id + in: path + required: true + schema: + type: string + title: Agent Id responses: '200': description: An Agent of the agent. @@ -301,56 +355,36 @@ paths: $ref: '#/components/schemas/Agent' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Agents - summary: Describe an agent by its ID. - description: Describe an agent by its ID. - parameters: - - name: agent_id - in: path - description: ID of the agent. - required: true - schema: - type: string - deprecated: false - delete: - responses: - '200': - description: OK - '400': - $ref: '#/components/responses/BadRequest400' - '429': - $ref: >- - #/components/responses/TooManyRequests429 - '500': - $ref: >- - #/components/responses/InternalServerError500 - default: - $ref: '#/components/responses/DefaultError' - tags: - - Agents - summary: >- - Delete an agent by its ID and its associated sessions and turns. - description: >- - Delete an agent by its ID and its associated sessions and turns. - parameters: - - name: agent_id - in: path - description: The ID of the agent to delete. - required: true - schema: - type: string - deprecated: false + description: Default Response /v1alpha/agents/{agent_id}/session: post: + tags: + - V1Alpha + summary: Create Agent Session + description: Query endpoint for proper schema generation. + operationId: create_agent_session_v1alpha_agents__agent_id__session_post + parameters: + - name: agent_id + in: path + required: true + schema: + type: string + title: Agent Id + - name: session_name + in: query + required: false + schema: + type: string + title: Session Name responses: '200': description: An AgentSessionCreateResponse. @@ -360,35 +394,77 @@ paths: $ref: '#/components/schemas/AgentSessionCreateResponse' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Agents - summary: Create a new session for an agent. - description: Create a new session for an agent. - parameters: - - name: agent_id - in: path - description: >- - The ID of the agent to create the session for. - required: true - schema: - type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateAgentSessionRequest' - required: true - deprecated: false + description: Default Response /v1alpha/agents/{agent_id}/session/{session_id}: + delete: + tags: + - V1Alpha + summary: Delete Agents Session + description: Generic endpoint - this would be replaced with actual implementation. + operationId: delete_agents_session_v1alpha_agents__agent_id__session__session_id__delete + parameters: + - name: args + in: query + required: true + schema: + title: Args + - name: kwargs + in: query + required: true + schema: + title: Kwargs + responses: + '200': + description: Successful Response + content: + application/json: + schema: {} + '400': + $ref: '#/components/responses/BadRequest400' + description: Bad Request + '429': + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests + '500': + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error + default: + $ref: '#/components/responses/DefaultError' + description: Default Response get: + tags: + - V1Alpha + summary: Get Agents Session + description: Query endpoint for proper schema generation. + operationId: get_agents_session_v1alpha_agents__agent_id__session__session_id__get + parameters: + - name: session_id + in: path + required: true + schema: + type: string + title: Session Id + - name: agent_id + in: path + required: true + schema: + type: string + title: Agent Id + - name: turn_ids + in: query + required: false + schema: + type: string + title: Turn Ids responses: '200': description: A Session. @@ -398,129 +474,93 @@ paths: $ref: '#/components/schemas/Session' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Agents - summary: Retrieve an agent session by its ID. - description: Retrieve an agent session by its ID. - parameters: - - name: session_id - in: path - description: The ID of the session to get. - required: true - schema: - type: string - - name: agent_id - in: path - description: >- - The ID of the agent to get the session for. - required: true - schema: - type: string - - name: turn_ids - in: query - description: >- - (Optional) List of turn IDs to filter the session by. - required: false - schema: - type: array - items: - type: string - deprecated: false - delete: - responses: - '200': - description: OK - '400': - $ref: '#/components/responses/BadRequest400' - '429': - $ref: >- - #/components/responses/TooManyRequests429 - '500': - $ref: >- - #/components/responses/InternalServerError500 - default: - $ref: '#/components/responses/DefaultError' - tags: - - Agents - summary: >- - Delete an agent session by its ID and its associated turns. - description: >- - Delete an agent session by its ID and its associated turns. - parameters: - - name: session_id - in: path - description: The ID of the session to delete. - required: true - schema: - type: string - - name: agent_id - in: path - description: >- - The ID of the agent to delete the session for. - required: true - schema: - type: string - deprecated: false + description: Default Response /v1alpha/agents/{agent_id}/session/{session_id}/turn: post: - responses: - '200': - description: >- - If stream=False, returns a Turn object. If stream=True, returns an SSE - event stream of AgentTurnResponseStreamChunk. - content: - application/json: - schema: - $ref: '#/components/schemas/Turn' - text/event-stream: - schema: - $ref: '#/components/schemas/AgentTurnResponseStreamChunk' - '400': - $ref: '#/components/responses/BadRequest400' - '429': - $ref: >- - #/components/responses/TooManyRequests429 - '500': - $ref: >- - #/components/responses/InternalServerError500 - default: - $ref: '#/components/responses/DefaultError' tags: - - Agents - summary: Create a new turn for an agent. - description: Create a new turn for an agent. + - V1Alpha + summary: Create Agent Turn + description: Query endpoint for proper schema generation. + operationId: create_agent_turn_v1alpha_agents__agent_id__session__session_id__turn_post parameters: - - name: agent_id - in: path - description: >- - The ID of the agent to create the turn for. - required: true - schema: - type: string - - name: session_id - in: path - description: >- - The ID of the session to create the turn for. - required: true - schema: - type: string + - name: agent_id + in: path + required: true + schema: + type: string + title: Agent Id + - name: session_id + in: path + required: true + schema: + type: string + title: Session Id + - name: stream + in: query + required: false + schema: + type: boolean + default: false + title: Stream requestBody: content: application/json: schema: - $ref: '#/components/schemas/CreateAgentTurnRequest' - required: true - deprecated: false + $ref: '#/components/schemas/Body_create_agent_turn_v1alpha_agents__agent_id__session__session_id__turn_post' + responses: + '200': + description: If stream=False, returns a Turn object. + content: + application/json: + schema: + $ref: '#/components/schemas/Turn' + '400': + $ref: '#/components/responses/BadRequest400' + description: Bad Request + '429': + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests + '500': + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error + default: + $ref: '#/components/responses/DefaultError' + description: Default Response /v1alpha/agents/{agent_id}/session/{session_id}/turn/{turn_id}: get: + tags: + - V1Alpha + summary: Get Agents Turn + description: Query endpoint for proper schema generation. + operationId: get_agents_turn_v1alpha_agents__agent_id__session__session_id__turn__turn_id__get + parameters: + - name: agent_id + in: path + required: true + schema: + type: string + title: Agent Id + - name: session_id + in: path + required: true + schema: + type: string + title: Session Id + - name: turn_id + in: path + required: true + schema: + type: string + title: Turn Id responses: '200': description: A Turn. @@ -530,101 +570,106 @@ paths: $ref: '#/components/schemas/Turn' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Agents - summary: Retrieve an agent turn by its ID. - description: Retrieve an agent turn by its ID. - parameters: - - name: agent_id - in: path - description: The ID of the agent to get the turn for. - required: true - schema: - type: string - - name: session_id - in: path - description: >- - The ID of the session to get the turn for. - required: true - schema: - type: string - - name: turn_id - in: path - description: The ID of the turn to get. - required: true - schema: - type: string - deprecated: false + description: Default Response /v1alpha/agents/{agent_id}/session/{session_id}/turn/{turn_id}/resume: post: - responses: - '200': - description: >- - A Turn object if stream is False, otherwise an AsyncIterator of AgentTurnResponseStreamChunk - objects. - content: - application/json: - schema: - $ref: '#/components/schemas/Turn' - text/event-stream: - schema: - $ref: '#/components/schemas/AgentTurnResponseStreamChunk' - '400': - $ref: '#/components/responses/BadRequest400' - '429': - $ref: >- - #/components/responses/TooManyRequests429 - '500': - $ref: >- - #/components/responses/InternalServerError500 - default: - $ref: '#/components/responses/DefaultError' tags: - - Agents - summary: >- - Resume an agent turn with executed tool call responses. - description: >- - Resume an agent turn with executed tool call responses. - - When a Turn has the status `awaiting_input` due to pending input from client - side tool calls, this endpoint can be used to submit the outputs from the - tool calls once they are ready. + - V1Alpha + summary: Resume Agent Turn + description: Query endpoint for proper schema generation. + operationId: resume_agent_turn_v1alpha_agents__agent_id__session__session_id__turn__turn_id__resume_post parameters: - - name: agent_id - in: path - description: The ID of the agent to resume. - required: true - schema: - type: string - - name: session_id - in: path - description: The ID of the session to resume. - required: true - schema: - type: string - - name: turn_id - in: path - description: The ID of the turn to resume. - required: true - schema: - type: string + - name: agent_id + in: path + required: true + schema: + type: string + title: Agent Id + - name: session_id + in: path + required: true + schema: + type: string + title: Session Id + - name: turn_id + in: path + required: true + schema: + type: string + title: Turn Id + - name: stream + in: query + required: false + schema: + type: boolean + default: false + title: Stream requestBody: content: application/json: schema: - $ref: '#/components/schemas/ResumeAgentTurnRequest' - required: true - deprecated: false + $ref: '#/components/schemas/ToolResponse' + responses: + '200': + description: A Turn object if stream is False, otherwise an AsyncIterator + of AgentTurnResponseStreamChunk objects. + content: + application/json: + schema: + $ref: '#/components/schemas/Turn' + '400': + $ref: '#/components/responses/BadRequest400' + description: Bad Request + '429': + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests + '500': + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error + default: + $ref: '#/components/responses/DefaultError' + description: Default Response /v1alpha/agents/{agent_id}/session/{session_id}/turn/{turn_id}/step/{step_id}: get: + tags: + - V1Alpha + summary: Get Agents Step + description: Query endpoint for proper schema generation. + operationId: get_agents_step_v1alpha_agents__agent_id__session__session_id__turn__turn_id__step__step_id__get + parameters: + - name: agent_id + in: path + required: true + schema: + type: string + title: Agent Id + - name: session_id + in: path + required: true + schema: + type: string + title: Session Id + - name: turn_id + in: path + required: true + schema: + type: string + title: Turn Id + - name: step_id + in: path + required: true + schema: + type: string + title: Step Id responses: '200': description: An AgentStepResponse. @@ -634,47 +679,42 @@ paths: $ref: '#/components/schemas/AgentStepResponse' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Agents - summary: Retrieve an agent step by its ID. - description: Retrieve an agent step by its ID. - parameters: - - name: agent_id - in: path - description: The ID of the agent to get the step for. - required: true - schema: - type: string - - name: session_id - in: path - description: >- - The ID of the session to get the step for. - required: true - schema: - type: string - - name: turn_id - in: path - description: The ID of the turn to get the step for. - required: true - schema: - type: string - - name: step_id - in: path - description: The ID of the step to get. - required: true - schema: - type: string - deprecated: false + description: Default Response /v1alpha/agents/{agent_id}/sessions: get: + tags: + - V1Alpha + summary: List Agent Sessions + description: Query endpoint for proper schema generation. + operationId: list_agent_sessions_v1alpha_agents__agent_id__sessions_get + parameters: + - name: agent_id + in: path + required: true + schema: + type: string + title: Agent Id + - name: start_index + in: query + required: false + schema: + type: integer + title: Start Index + - name: limit + in: query + required: false + schema: + type: integer + title: Limit responses: '200': description: A PaginatedResponse. @@ -684,41 +724,23 @@ paths: $ref: '#/components/schemas/PaginatedResponse' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Agents - summary: List all session(s) of a given agent. - description: List all session(s) of a given agent. - parameters: - - name: agent_id - in: path - description: >- - The ID of the agent to list sessions for. - required: true - schema: - type: string - - name: start_index - in: query - description: The index to start the pagination from. - required: false - schema: - type: integer - - name: limit - in: query - description: The number of sessions to return. - required: false - schema: - type: integer - deprecated: false + description: Default Response /v1alpha/eval/benchmarks: get: + tags: + - V1Alpha + summary: List Benchmarks + description: Response-only endpoint for proper schema generation. + operationId: list_benchmarks_v1alpha_eval_benchmarks_get responses: '200': description: A ListBenchmarksResponse. @@ -728,48 +750,100 @@ paths: $ref: '#/components/schemas/ListBenchmarksResponse' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Benchmarks - summary: List all benchmarks. - description: List all benchmarks. - parameters: [] - deprecated: false + description: Default Response post: + tags: + - V1Alpha + summary: Register Benchmark + description: Generic endpoint - this would be replaced with actual implementation. + operationId: register_benchmark_v1alpha_eval_benchmarks_post + parameters: + - name: args + in: query + required: true + schema: + title: Args + - name: kwargs + in: query + required: true + schema: + title: Kwargs responses: '200': - description: OK + description: Successful Response + content: + application/json: + schema: {} '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Benchmarks - summary: Register a benchmark. - description: Register a benchmark. - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/RegisterBenchmarkRequest' - required: true - deprecated: false + description: Default Response /v1alpha/eval/benchmarks/{benchmark_id}: + delete: + tags: + - V1Alpha + summary: Unregister Benchmark + description: Generic endpoint - this would be replaced with actual implementation. + operationId: unregister_benchmark_v1alpha_eval_benchmarks__benchmark_id__delete + parameters: + - name: args + in: query + required: true + schema: + title: Args + - name: kwargs + in: query + required: true + schema: + title: Kwargs + responses: + '200': + description: Successful Response + content: + application/json: + schema: {} + '400': + $ref: '#/components/responses/BadRequest400' + description: Bad Request + '429': + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests + '500': + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error + default: + $ref: '#/components/responses/DefaultError' + description: Default Response get: + tags: + - V1Alpha + summary: Get Benchmark + description: Query endpoint for proper schema generation. + operationId: get_benchmark_v1alpha_eval_benchmarks__benchmark_id__get + parameters: + - name: benchmark_id + in: path + required: true + schema: + type: string + title: Benchmark Id responses: '200': description: A Benchmark. @@ -779,132 +853,135 @@ paths: $ref: '#/components/schemas/Benchmark' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Benchmarks - summary: Get a benchmark by its ID. - description: Get a benchmark by its ID. - parameters: - - name: benchmark_id - in: path - description: The ID of the benchmark to get. - required: true - schema: - type: string - deprecated: false - delete: - responses: - '200': - description: OK - '400': - $ref: '#/components/responses/BadRequest400' - '429': - $ref: >- - #/components/responses/TooManyRequests429 - '500': - $ref: >- - #/components/responses/InternalServerError500 - default: - $ref: '#/components/responses/DefaultError' - tags: - - Benchmarks - summary: Unregister a benchmark. - description: Unregister a benchmark. - parameters: - - name: benchmark_id - in: path - description: The ID of the benchmark to unregister. - required: true - schema: - type: string - deprecated: false + description: Default Response /v1alpha/eval/benchmarks/{benchmark_id}/evaluations: post: + tags: + - V1Alpha + summary: Evaluate Rows + description: Typed endpoint for proper schema generation. + operationId: evaluate_rows_v1alpha_eval_benchmarks__benchmark_id__evaluations_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/BenchmarkConfig' + required: true responses: '200': - description: >- - EvaluateResponse object containing generations and scores. + description: EvaluateResponse object containing generations and scores. content: application/json: schema: $ref: '#/components/schemas/EvaluateResponse' '400': + description: Bad Request $ref: '#/components/responses/BadRequest400' '429': - $ref: >- - #/components/responses/TooManyRequests429 + description: Too Many Requests + $ref: '#/components/responses/TooManyRequests429' '500': - $ref: >- - #/components/responses/InternalServerError500 + description: Internal Server Error + $ref: '#/components/responses/InternalServerError500' default: + description: Default Response $ref: '#/components/responses/DefaultError' + /v1alpha/eval/benchmarks/{benchmark_id}/jobs: + post: tags: - - Eval - summary: Evaluate a list of rows on a benchmark. - description: Evaluate a list of rows on a benchmark. - parameters: - - name: benchmark_id - in: path - description: >- - The ID of the benchmark to run the evaluation on. - required: true - schema: - type: string + - V1Alpha + summary: Run Eval + description: Typed endpoint for proper schema generation. + operationId: run_eval_v1alpha_eval_benchmarks__benchmark_id__jobs_post requestBody: content: application/json: schema: - $ref: '#/components/schemas/EvaluateRowsRequest' + $ref: '#/components/schemas/BenchmarkConfig' required: true - deprecated: false - /v1alpha/eval/benchmarks/{benchmark_id}/jobs: - post: responses: '200': - description: >- - The job that was created to run the evaluation. + description: The job that was created to run the evaluation. content: application/json: schema: $ref: '#/components/schemas/Job' '400': + description: Bad Request $ref: '#/components/responses/BadRequest400' '429': - $ref: >- - #/components/responses/TooManyRequests429 + description: Too Many Requests + $ref: '#/components/responses/TooManyRequests429' '500': - $ref: >- - #/components/responses/InternalServerError500 + description: Internal Server Error + $ref: '#/components/responses/InternalServerError500' + default: + description: Default Response + $ref: '#/components/responses/DefaultError' + /v1alpha/eval/benchmarks/{benchmark_id}/jobs/{job_id}: + delete: + tags: + - V1Alpha + summary: Job Cancel + description: Generic endpoint - this would be replaced with actual implementation. + operationId: job_cancel_v1alpha_eval_benchmarks__benchmark_id__jobs__job_id__delete + parameters: + - name: args + in: query + required: true + schema: + title: Args + - name: kwargs + in: query + required: true + schema: + title: Kwargs + responses: + '200': + description: Successful Response + content: + application/json: + schema: {} + '400': + $ref: '#/components/responses/BadRequest400' + description: Bad Request + '429': + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests + '500': + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Eval - summary: Run an evaluation on a benchmark. - description: Run an evaluation on a benchmark. - parameters: - - name: benchmark_id - in: path - description: >- - The ID of the benchmark to run the evaluation on. - required: true - schema: - type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/RunEvalRequest' - required: true - deprecated: false - /v1alpha/eval/benchmarks/{benchmark_id}/jobs/{job_id}: + description: Default Response get: + tags: + - V1Alpha + summary: Job Status + description: Query endpoint for proper schema generation. + operationId: job_status_v1alpha_eval_benchmarks__benchmark_id__jobs__job_id__get + parameters: + - name: benchmark_id + in: path + required: true + schema: + type: string + title: Benchmark Id + - name: job_id + in: path + required: true + schema: + type: string + title: Job Id responses: '200': description: The status of the evaluation job. @@ -914,68 +991,36 @@ paths: $ref: '#/components/schemas/Job' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Eval - summary: Get the status of a job. - description: Get the status of a job. - parameters: - - name: benchmark_id - in: path - description: >- - The ID of the benchmark to run the evaluation on. - required: true - schema: - type: string - - name: job_id - in: path - description: The ID of the job to get the status of. - required: true - schema: - type: string - deprecated: false - delete: - responses: - '200': - description: OK - '400': - $ref: '#/components/responses/BadRequest400' - '429': - $ref: >- - #/components/responses/TooManyRequests429 - '500': - $ref: >- - #/components/responses/InternalServerError500 - default: - $ref: '#/components/responses/DefaultError' - tags: - - Eval - summary: Cancel a job. - description: Cancel a job. - parameters: - - name: benchmark_id - in: path - description: >- - The ID of the benchmark to run the evaluation on. - required: true - schema: - type: string - - name: job_id - in: path - description: The ID of the job to cancel. - required: true - schema: - type: string - deprecated: false + description: Default Response /v1alpha/eval/benchmarks/{benchmark_id}/jobs/{job_id}/result: get: + tags: + - V1Alpha + summary: Job Result + description: Query endpoint for proper schema generation. + operationId: job_result_v1alpha_eval_benchmarks__benchmark_id__jobs__job_id__result_get + parameters: + - name: benchmark_id + in: path + required: true + schema: + type: string + title: Benchmark Id + - name: job_id + in: path + required: true + schema: + type: string + title: Job Id responses: '200': description: The result of the job. @@ -985,69 +1030,81 @@ paths: $ref: '#/components/schemas/EvaluateResponse' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Eval - summary: Get the result of a job. - description: Get the result of a job. - parameters: - - name: benchmark_id - in: path - description: >- - The ID of the benchmark to run the evaluation on. - required: true - schema: - type: string - - name: job_id - in: path - description: The ID of the job to get the result of. - required: true - schema: - type: string - deprecated: false + description: Default Response /v1alpha/inference/rerank: post: + tags: + - V1Alpha + summary: Rerank + description: Query endpoint for proper schema generation. + operationId: rerank_v1alpha_inference_rerank_post + parameters: + - name: model + in: query + required: false + schema: + type: string + title: Model + - name: query + in: query + required: false + schema: + type: string + title: Query + - name: items + in: query + required: false + schema: + type: string + title: Items + - name: max_num_results + in: query + required: false + schema: + type: integer + title: Max Num Results responses: '200': - description: >- - RerankResponse with indices sorted by relevance score (descending). + description: RerankResponse with indices sorted by relevance score (descending). content: application/json: schema: $ref: '#/components/schemas/RerankResponse' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Inference - summary: >- - Rerank a list of documents based on their relevance to a query. - description: >- - Rerank a list of documents based on their relevance to a query. - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/RerankRequest' - required: true - deprecated: false + description: Default Response /v1alpha/post-training/job/artifacts: get: + tags: + - V1Alpha + summary: Get Training Job Artifacts + description: Query endpoint for proper schema generation. + operationId: get_training_job_artifacts_v1alpha_post_training_job_artifacts_get + parameters: + - name: job_uuid + in: query + required: false + schema: + type: string + title: Job Uuid responses: '200': description: A PostTrainingJobArtifactsResponse. @@ -1057,56 +1114,66 @@ paths: $ref: '#/components/schemas/PostTrainingJobArtifactsResponse' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - PostTraining (Coming Soon) - summary: Get the artifacts of a training job. - description: Get the artifacts of a training job. - parameters: - - name: job_uuid - in: query - description: >- - The UUID of the job to get the artifacts of. - required: true - schema: - type: string - deprecated: false + description: Default Response /v1alpha/post-training/job/cancel: post: + tags: + - V1Alpha + summary: Cancel Training Job + description: Generic endpoint - this would be replaced with actual implementation. + operationId: cancel_training_job_v1alpha_post_training_job_cancel_post + parameters: + - name: args + in: query + required: true + schema: + title: Args + - name: kwargs + in: query + required: true + schema: + title: Kwargs responses: '200': - description: OK + description: Successful Response + content: + application/json: + schema: {} '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - PostTraining (Coming Soon) - summary: Cancel a training job. - description: Cancel a training job. - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CancelTrainingJobRequest' - required: true - deprecated: false + description: Default Response /v1alpha/post-training/job/status: get: + tags: + - V1Alpha + summary: Get Training Job Status + description: Query endpoint for proper schema generation. + operationId: get_training_job_status_v1alpha_post_training_job_status_get + parameters: + - name: job_uuid + in: query + required: false + schema: + type: string + title: Job Uuid responses: '200': description: A PostTrainingJobStatusResponse. @@ -1116,29 +1183,23 @@ paths: $ref: '#/components/schemas/PostTrainingJobStatusResponse' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - PostTraining (Coming Soon) - summary: Get the status of a training job. - description: Get the status of a training job. - parameters: - - name: job_uuid - in: query - description: >- - The UUID of the job to get the status of. - required: true - schema: - type: string - deprecated: false + description: Default Response /v1alpha/post-training/jobs: get: + tags: + - V1Alpha + summary: Get Training Jobs + description: Response-only endpoint for proper schema generation. + operationId: get_training_jobs_v1alpha_post_training_jobs_get responses: '200': description: A ListPostTrainingJobsResponse. @@ -1147,23 +1208,30 @@ paths: schema: $ref: '#/components/schemas/ListPostTrainingJobsResponse' '400': + description: Bad Request $ref: '#/components/responses/BadRequest400' '429': - $ref: >- - #/components/responses/TooManyRequests429 + description: Too Many Requests + $ref: '#/components/responses/TooManyRequests429' '500': - $ref: >- - #/components/responses/InternalServerError500 + description: Internal Server Error + $ref: '#/components/responses/InternalServerError500' default: + description: Default Response $ref: '#/components/responses/DefaultError' - tags: - - PostTraining (Coming Soon) - summary: Get all training jobs. - description: Get all training jobs. - parameters: [] - deprecated: false /v1alpha/post-training/preference-optimize: post: + tags: + - V1Alpha + summary: Preference Optimize + description: Typed endpoint for proper schema generation. + operationId: preference_optimize_v1alpha_post_training_preference_optimize_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DPOAlignmentConfig' + required: true responses: '200': description: A PostTrainingJob. @@ -1172,29 +1240,30 @@ paths: schema: $ref: '#/components/schemas/PostTrainingJob' '400': + description: Bad Request $ref: '#/components/responses/BadRequest400' '429': - $ref: >- - #/components/responses/TooManyRequests429 + description: Too Many Requests + $ref: '#/components/responses/TooManyRequests429' '500': - $ref: >- - #/components/responses/InternalServerError500 + description: Internal Server Error + $ref: '#/components/responses/InternalServerError500' default: + description: Default Response $ref: '#/components/responses/DefaultError' - tags: - - PostTraining (Coming Soon) - summary: Run preference optimization of a model. - description: Run preference optimization of a model. - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/PreferenceOptimizeRequest' - required: true - deprecated: false /v1alpha/post-training/supervised-fine-tune: post: + tags: + - V1Alpha + summary: Supervised Fine Tune + description: Typed endpoint for proper schema generation. + operationId: supervised_fine_tune_v1alpha_post_training_supervised_fine_tune_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TrainingConfig' + required: true responses: '200': description: A PostTrainingJob. @@ -1203,2819 +1272,1512 @@ paths: schema: $ref: '#/components/schemas/PostTrainingJob' '400': + description: Bad Request $ref: '#/components/responses/BadRequest400' '429': - $ref: >- - #/components/responses/TooManyRequests429 + description: Too Many Requests + $ref: '#/components/responses/TooManyRequests429' '500': - $ref: >- - #/components/responses/InternalServerError500 + description: Internal Server Error + $ref: '#/components/responses/InternalServerError500' default: + description: Default Response $ref: '#/components/responses/DefaultError' - tags: - - PostTraining (Coming Soon) - summary: Run supervised fine-tuning of a model. - description: Run supervised fine-tuning of a model. - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/SupervisedFineTuneRequest' - required: true - deprecated: false -jsonSchemaDialect: >- - https://json-schema.org/draft/2020-12/schema components: schemas: - Error: - type: object - properties: - status: - type: integer - description: HTTP status code - title: - type: string - description: >- - Error title, a short summary of the error which is invariant for an error - type - detail: - type: string - description: >- - Error detail, a longer human-readable description of the error - instance: - type: string - description: >- - (Optional) A URL which can be used to retrieve more information about - the specific occurrence of the error - additionalProperties: false - required: - - status - - title - - detail - title: Error - description: >- - Error response from the API. Roughly follows RFC 7807. - AppendRowsRequest: - type: object - properties: - rows: - type: array - items: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: The rows to append to the dataset. - additionalProperties: false - required: - - rows - title: AppendRowsRequest - PaginatedResponse: - type: object - properties: - data: - type: array - items: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: The list of items for the current page - has_more: - type: boolean - description: >- - Whether there are more items available after this set - url: - type: string - description: The URL for accessing this list - additionalProperties: false - required: - - data - - has_more - title: PaginatedResponse - description: >- - A generic paginated response that follows a simple format. - Dataset: - type: object - properties: - identifier: - type: string - provider_resource_id: - type: string - provider_id: - type: string - type: - type: string - enum: - - model - - shield - - vector_store - - dataset - - scoring_function - - benchmark - - tool - - tool_group - - prompt - const: dataset - default: dataset - description: >- - Type of resource, always 'dataset' for datasets - purpose: - type: string - enum: - - post-training/messages - - eval/question-answer - - eval/messages-answer - description: >- - Purpose of the dataset indicating its intended use - source: - oneOf: - - $ref: '#/components/schemas/URIDataSource' - - $ref: '#/components/schemas/RowsDataSource' - discriminator: - propertyName: type - mapping: - uri: '#/components/schemas/URIDataSource' - rows: '#/components/schemas/RowsDataSource' - description: >- - Data source configuration for the dataset - metadata: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: Additional metadata for the dataset - additionalProperties: false - required: - - identifier - - provider_id - - type - - purpose - - source - - metadata - title: Dataset - description: >- - Dataset resource for storing and accessing training or evaluation data. - RowsDataSource: - type: object - properties: - type: - type: string - const: rows - default: rows - rows: - type: array - items: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - The dataset is stored in rows. E.g. - [ {"messages": [{"role": "user", - "content": "Hello, world!"}, {"role": "assistant", "content": "Hello, - world!"}]} ] - additionalProperties: false - required: - - type - - rows - title: RowsDataSource - description: A dataset stored in rows. - URIDataSource: - type: object - properties: - type: - type: string - const: uri - default: uri - uri: - type: string - description: >- - The dataset can be obtained from a URI. E.g. - "https://mywebsite.com/mydata.jsonl" - - "lsfs://mydata.jsonl" - "data:csv;base64,{base64_content}" - additionalProperties: false - required: - - type - - uri - title: URIDataSource - description: >- - A dataset that can be obtained from a URI. - ListDatasetsResponse: - type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/Dataset' - description: List of datasets - additionalProperties: false - required: - - data - title: ListDatasetsResponse - description: Response from listing datasets. - DataSource: - oneOf: - - $ref: '#/components/schemas/URIDataSource' - - $ref: '#/components/schemas/RowsDataSource' - discriminator: - propertyName: type - mapping: - uri: '#/components/schemas/URIDataSource' - rows: '#/components/schemas/RowsDataSource' - RegisterDatasetRequest: - type: object - properties: - purpose: - type: string - enum: - - post-training/messages - - eval/question-answer - - eval/messages-answer - description: >- - The purpose of the dataset. One of: - "post-training/messages": The dataset - contains a messages column with list of messages for post-training. { - "messages": [ {"role": "user", "content": "Hello, world!"}, {"role": "assistant", - "content": "Hello, world!"}, ] } - "eval/question-answer": The dataset - contains a question column and an answer column for evaluation. { "question": - "What is the capital of France?", "answer": "Paris" } - "eval/messages-answer": - The dataset contains a messages column with list of messages and an answer - column for evaluation. { "messages": [ {"role": "user", "content": "Hello, - my name is John Doe."}, {"role": "assistant", "content": "Hello, John - Doe. How can I help you today?"}, {"role": "user", "content": "What's - my name?"}, ], "answer": "John Doe" } - source: - $ref: '#/components/schemas/DataSource' - description: >- - The data source of the dataset. Ensure that the data source schema is - compatible with the purpose of the dataset. Examples: - { "type": "uri", - "uri": "https://mywebsite.com/mydata.jsonl" } - { "type": "uri", "uri": - "lsfs://mydata.jsonl" } - { "type": "uri", "uri": "data:csv;base64,{base64_content}" - } - { "type": "uri", "uri": "huggingface://llamastack/simpleqa?split=train" - } - { "type": "rows", "rows": [ { "messages": [ {"role": "user", "content": - "Hello, world!"}, {"role": "assistant", "content": "Hello, world!"}, ] - } ] } - metadata: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - The metadata for the dataset. - E.g. {"description": "My dataset"}. - dataset_id: - type: string - description: >- - The ID of the dataset. If not provided, an ID will be generated. - additionalProperties: false - required: - - purpose - - source - title: RegisterDatasetRequest - AgentConfig: - type: object - properties: - sampling_params: - $ref: '#/components/schemas/SamplingParams' - input_shields: - type: array - items: - type: string - output_shields: - type: array - items: - type: string - toolgroups: - type: array - items: - $ref: '#/components/schemas/AgentTool' - client_tools: - type: array - items: - $ref: '#/components/schemas/ToolDef' - tool_choice: - type: string - enum: - - auto - - required - - none - title: ToolChoice - description: >- - Whether tool use is required or automatic. This is a hint to the model - which may not be followed. It depends on the Instruction Following capabilities - of the model. - deprecated: true - tool_prompt_format: - type: string - enum: - - json - - function_tag - - python_list - title: ToolPromptFormat - description: >- - Prompt format for calling custom / zero shot tools. - deprecated: true - tool_config: - $ref: '#/components/schemas/ToolConfig' - max_infer_iters: - type: integer - default: 10 - model: - type: string - description: >- - The model identifier to use for the agent - instructions: - type: string - description: The system instructions for the agent - name: - type: string - description: >- - Optional name for the agent, used in telemetry and identification - enable_session_persistence: - type: boolean - default: false - description: >- - Optional flag indicating whether session data has to be persisted - response_format: - $ref: '#/components/schemas/ResponseFormat' - description: Optional response format configuration - additionalProperties: false - required: - - model - - instructions - title: AgentConfig - description: Configuration for an agent. - AgentTool: - oneOf: - - type: string - - type: object - properties: - name: - type: string - args: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - additionalProperties: false - required: - - name - - args - title: AgentToolGroupWithArgs - GrammarResponseFormat: - type: object - properties: - type: - type: string - enum: - - json_schema - - grammar - description: >- - Must be "grammar" to identify this format type - const: grammar - default: grammar - bnf: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - The BNF grammar specification the response should conform to - additionalProperties: false - required: - - type - - bnf - title: GrammarResponseFormat - description: >- - Configuration for grammar-guided response generation. - GreedySamplingStrategy: - type: object - properties: - type: - type: string - const: greedy - default: greedy - description: >- - Must be "greedy" to identify this sampling strategy - additionalProperties: false - required: - - type - title: GreedySamplingStrategy - description: >- - Greedy sampling strategy that selects the highest probability token at each - step. - JsonSchemaResponseFormat: - type: object - properties: - type: - type: string - enum: - - json_schema - - grammar - description: >- - Must be "json_schema" to identify this format type - const: json_schema - default: json_schema - json_schema: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - The JSON schema the response should conform to. In a Python SDK, this - is often a `pydantic` model. - additionalProperties: false - required: - - type - - json_schema - title: JsonSchemaResponseFormat - description: >- - Configuration for JSON schema-guided response generation. - ResponseFormat: - oneOf: - - $ref: '#/components/schemas/JsonSchemaResponseFormat' - - $ref: '#/components/schemas/GrammarResponseFormat' - discriminator: - propertyName: type - mapping: - json_schema: '#/components/schemas/JsonSchemaResponseFormat' - grammar: '#/components/schemas/GrammarResponseFormat' - SamplingParams: - type: object - properties: - strategy: - oneOf: - - $ref: '#/components/schemas/GreedySamplingStrategy' - - $ref: '#/components/schemas/TopPSamplingStrategy' - - $ref: '#/components/schemas/TopKSamplingStrategy' - discriminator: - propertyName: type - mapping: - greedy: '#/components/schemas/GreedySamplingStrategy' - top_p: '#/components/schemas/TopPSamplingStrategy' - top_k: '#/components/schemas/TopKSamplingStrategy' - description: The sampling strategy. - max_tokens: - type: integer - description: >- - The maximum number of tokens that can be generated in the completion. - The token count of your prompt plus max_tokens cannot exceed the model's - context length. - repetition_penalty: - type: number - default: 1.0 - description: >- - Number between -2.0 and 2.0. Positive values penalize new tokens based - on whether they appear in the text so far, increasing the model's likelihood - to talk about new topics. - stop: - type: array - items: - type: string - description: >- - Up to 4 sequences where the API will stop generating further tokens. The - returned text will not contain the stop sequence. - additionalProperties: false - required: - - strategy - title: SamplingParams - description: Sampling parameters. - ToolConfig: - type: object - properties: - tool_choice: - oneOf: - - type: string - enum: - - auto - - required - - none - title: ToolChoice - description: >- - Whether tool use is required or automatic. This is a hint to the model - which may not be followed. It depends on the Instruction Following - capabilities of the model. - - type: string - default: auto - description: >- - (Optional) Whether tool use is automatic, required, or none. Can also - specify a tool name to use a specific tool. Defaults to ToolChoice.auto. - tool_prompt_format: - type: string - enum: - - json - - function_tag - - python_list - description: >- - (Optional) Instructs the model how to format tool calls. By default, Llama - Stack will attempt to use a format that is best adapted to the model. - - `ToolPromptFormat.json`: The tool calls are formatted as a JSON object. - - `ToolPromptFormat.function_tag`: The tool calls are enclosed in a - tag. - `ToolPromptFormat.python_list`: The tool calls are output as Python - syntax -- a list of function calls. - system_message_behavior: - type: string - enum: - - append - - replace - description: >- - (Optional) Config for how to override the default system prompt. - `SystemMessageBehavior.append`: - Appends the provided system message to the default system prompt. - `SystemMessageBehavior.replace`: - Replaces the default system prompt with the provided system message. The - system message can include the string '{{function_definitions}}' to indicate - where the function definitions should be inserted. - default: append - additionalProperties: false - title: ToolConfig - description: Configuration for tool use. - ToolDef: - type: object - properties: - toolgroup_id: - type: string - description: >- - (Optional) ID of the tool group this tool belongs to - name: - type: string - description: Name of the tool - description: - type: string - description: >- - (Optional) Human-readable description of what the tool does - input_schema: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - (Optional) JSON Schema for tool inputs (MCP inputSchema) - output_schema: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - (Optional) JSON Schema for tool outputs (MCP outputSchema) - metadata: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - (Optional) Additional metadata about the tool - additionalProperties: false - required: - - name - title: ToolDef - description: >- - Tool definition used in runtime contexts. - TopKSamplingStrategy: - type: object - properties: - type: - type: string - const: top_k - default: top_k - description: >- - Must be "top_k" to identify this sampling strategy - top_k: - type: integer - description: >- - Number of top tokens to consider for sampling. Must be at least 1 - additionalProperties: false - required: - - type - - top_k - title: TopKSamplingStrategy - description: >- - Top-k sampling strategy that restricts sampling to the k most likely tokens. - TopPSamplingStrategy: - type: object - properties: - type: - type: string - const: top_p - default: top_p - description: >- - Must be "top_p" to identify this sampling strategy - temperature: - type: number - description: >- - Controls randomness in sampling. Higher values increase randomness - top_p: - type: number - default: 0.95 - description: >- - Cumulative probability threshold for nucleus sampling. Defaults to 0.95 - additionalProperties: false - required: - - type - title: TopPSamplingStrategy - description: >- - Top-p (nucleus) sampling strategy that samples from the smallest set of tokens - with cumulative probability >= p. - CreateAgentRequest: - type: object - properties: - agent_config: - $ref: '#/components/schemas/AgentConfig' - description: The configuration for the agent. - additionalProperties: false - required: - - agent_config - title: CreateAgentRequest - AgentCreateResponse: - type: object - properties: - agent_id: - type: string - description: Unique identifier for the created agent - additionalProperties: false - required: - - agent_id - title: AgentCreateResponse - description: >- - Response returned when creating a new agent. - Agent: - type: object - properties: - agent_id: - type: string - description: Unique identifier for the agent - agent_config: - $ref: '#/components/schemas/AgentConfig' - description: Configuration settings for the agent - created_at: - type: string - format: date-time - description: Timestamp when the agent was created - additionalProperties: false - required: - - agent_id - - agent_config - - created_at - title: Agent - description: >- - An agent instance with configuration and metadata. - CreateAgentSessionRequest: - type: object - properties: - session_name: - type: string - description: The name of the session to create. - additionalProperties: false - required: - - session_name - title: CreateAgentSessionRequest - AgentSessionCreateResponse: - type: object - properties: - session_id: - type: string - description: >- - Unique identifier for the created session - additionalProperties: false - required: - - session_id - title: AgentSessionCreateResponse - description: >- - Response returned when creating a new agent session. - CompletionMessage: - type: object - properties: - role: - type: string - const: assistant - default: assistant - description: >- - Must be "assistant" to identify this as the model's response - content: - $ref: '#/components/schemas/InterleavedContent' - description: The content of the model's response - stop_reason: - type: string - enum: - - end_of_turn - - end_of_message - - out_of_tokens - description: >- - Reason why the model stopped generating. Options are: - `StopReason.end_of_turn`: - The model finished generating the entire response. - `StopReason.end_of_message`: - The model finished generating but generated a partial response -- usually, - a tool call. The user may call the tool and continue the conversation - with the tool's response. - `StopReason.out_of_tokens`: The model ran - out of token budget. - tool_calls: - type: array - items: - $ref: '#/components/schemas/ToolCall' - description: >- - List of tool calls. Each tool call is a ToolCall object. - additionalProperties: false - required: - - role - - content - - stop_reason - title: CompletionMessage - description: >- - A message containing the model's (assistant) response in a chat conversation. - ImageContentItem: - type: object - properties: - type: - type: string - const: image - default: image - description: >- - Discriminator type of the content item. Always "image" - image: - type: object - properties: - url: - $ref: '#/components/schemas/URL' - description: >- - A URL of the image or data URL in the format of data:image/{type};base64,{data}. - Note that URL could have length limits. - data: - type: string - contentEncoding: base64 - description: base64 encoded image data as string - additionalProperties: false - description: >- - Image as a base64 encoded string or an URL - additionalProperties: false - required: - - type - - image - title: ImageContentItem - description: A image content item - InferenceStep: - type: object - properties: - turn_id: - type: string - description: The ID of the turn. - step_id: - type: string - description: The ID of the step. - started_at: - type: string - format: date-time - description: The time the step started. - completed_at: - type: string - format: date-time - description: The time the step completed. - step_type: - type: string - enum: - - inference - - tool_execution - - shield_call - - memory_retrieval - title: StepType - description: Type of the step in an agent turn. - const: inference - default: inference - model_response: - $ref: '#/components/schemas/CompletionMessage' - description: The response from the LLM. - additionalProperties: false - required: - - turn_id - - step_id - - step_type - - model_response - title: InferenceStep - description: An inference step in an agent turn. - InterleavedContent: - oneOf: - - type: string - - $ref: '#/components/schemas/InterleavedContentItem' - - type: array - items: - $ref: '#/components/schemas/InterleavedContentItem' - InterleavedContentItem: - oneOf: - - $ref: '#/components/schemas/ImageContentItem' - - $ref: '#/components/schemas/TextContentItem' - discriminator: - propertyName: type - mapping: - image: '#/components/schemas/ImageContentItem' - text: '#/components/schemas/TextContentItem' - MemoryRetrievalStep: - type: object - properties: - turn_id: - type: string - description: The ID of the turn. - step_id: - type: string - description: The ID of the step. - started_at: - type: string - format: date-time - description: The time the step started. - completed_at: - type: string - format: date-time - description: The time the step completed. - step_type: - type: string - enum: - - inference - - tool_execution - - shield_call - - memory_retrieval - title: StepType - description: Type of the step in an agent turn. - const: memory_retrieval - default: memory_retrieval - vector_store_ids: - type: string - description: >- - The IDs of the vector databases to retrieve context from. - inserted_context: - $ref: '#/components/schemas/InterleavedContent' - description: >- - The context retrieved from the vector databases. - additionalProperties: false - required: - - turn_id - - step_id - - step_type - - vector_store_ids - - inserted_context - title: MemoryRetrievalStep - description: >- - A memory retrieval step in an agent turn. - SafetyViolation: - type: object - properties: - violation_level: - $ref: '#/components/schemas/ViolationLevel' - description: Severity level of the violation - user_message: - type: string - description: >- - (Optional) Message to convey to the user about the violation - metadata: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - Additional metadata including specific violation codes for debugging and - telemetry - additionalProperties: false - required: - - violation_level - - metadata - title: SafetyViolation - description: >- - Details of a safety violation detected by content moderation. - Session: - type: object - properties: - session_id: - type: string - description: >- - Unique identifier for the conversation session - session_name: - type: string - description: Human-readable name for the session - turns: - type: array - items: - $ref: '#/components/schemas/Turn' - description: >- - List of all turns that have occurred in this session - started_at: - type: string - format: date-time - description: Timestamp when the session was created - additionalProperties: false - required: - - session_id - - session_name - - turns - - started_at - title: Session - description: >- - A single session of an interaction with an Agentic System. - ShieldCallStep: - type: object - properties: - turn_id: - type: string - description: The ID of the turn. - step_id: - type: string - description: The ID of the step. - started_at: - type: string - format: date-time - description: The time the step started. - completed_at: - type: string - format: date-time - description: The time the step completed. - step_type: - type: string - enum: - - inference - - tool_execution - - shield_call - - memory_retrieval - title: StepType - description: Type of the step in an agent turn. - const: shield_call - default: shield_call - violation: - $ref: '#/components/schemas/SafetyViolation' - description: The violation from the shield call. - additionalProperties: false - required: - - turn_id - - step_id - - step_type - title: ShieldCallStep - description: A shield call step in an agent turn. - TextContentItem: - type: object - properties: - type: - type: string - const: text - default: text - description: >- - Discriminator type of the content item. Always "text" - text: - type: string - description: Text content - additionalProperties: false - required: - - type - - text - title: TextContentItem - description: A text content item - ToolCall: - type: object - properties: - call_id: - type: string - tool_name: - oneOf: - - type: string - enum: - - brave_search - - wolfram_alpha - - photogen - - code_interpreter - title: BuiltinTool - - type: string - arguments: - type: string - additionalProperties: false - required: - - call_id - - tool_name - - arguments - title: ToolCall - ToolExecutionStep: - type: object - properties: - turn_id: - type: string - description: The ID of the turn. - step_id: - type: string - description: The ID of the step. - started_at: - type: string - format: date-time - description: The time the step started. - completed_at: - type: string - format: date-time - description: The time the step completed. - step_type: - type: string - enum: - - inference - - tool_execution - - shield_call - - memory_retrieval - title: StepType - description: Type of the step in an agent turn. - const: tool_execution - default: tool_execution - tool_calls: - type: array - items: - $ref: '#/components/schemas/ToolCall' - description: The tool calls to execute. - tool_responses: - type: array - items: - $ref: '#/components/schemas/ToolResponse' - description: The tool responses from the tool calls. - additionalProperties: false - required: - - turn_id - - step_id - - step_type - - tool_calls - - tool_responses - title: ToolExecutionStep - description: A tool execution step in an agent turn. - ToolResponse: - type: object - properties: - call_id: - type: string - description: >- - Unique identifier for the tool call this response is for - tool_name: - oneOf: - - type: string - enum: - - brave_search - - wolfram_alpha - - photogen - - code_interpreter - title: BuiltinTool - - type: string - description: Name of the tool that was invoked - content: - $ref: '#/components/schemas/InterleavedContent' - description: The response content from the tool - metadata: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - (Optional) Additional metadata about the tool response - additionalProperties: false - required: - - call_id - - tool_name - - content - title: ToolResponse - description: Response from a tool invocation. - ToolResponseMessage: - type: object - properties: - role: - type: string - const: tool - default: tool - description: >- - Must be "tool" to identify this as a tool response - call_id: - type: string - description: >- - Unique identifier for the tool call this response is for - content: - $ref: '#/components/schemas/InterleavedContent' - description: The response content from the tool - additionalProperties: false - required: - - role - - call_id - - content - title: ToolResponseMessage - description: >- - A message representing the result of a tool invocation. - Turn: - type: object - properties: - turn_id: - type: string - description: >- - Unique identifier for the turn within a session - session_id: - type: string - description: >- - Unique identifier for the conversation session - input_messages: - type: array - items: - oneOf: - - $ref: '#/components/schemas/UserMessage' - - $ref: '#/components/schemas/ToolResponseMessage' - description: >- - List of messages that initiated this turn - steps: - type: array - items: - oneOf: - - $ref: '#/components/schemas/InferenceStep' - - $ref: '#/components/schemas/ToolExecutionStep' - - $ref: '#/components/schemas/ShieldCallStep' - - $ref: '#/components/schemas/MemoryRetrievalStep' - discriminator: - propertyName: step_type - mapping: - inference: '#/components/schemas/InferenceStep' - tool_execution: '#/components/schemas/ToolExecutionStep' - shield_call: '#/components/schemas/ShieldCallStep' - memory_retrieval: '#/components/schemas/MemoryRetrievalStep' - description: >- - Ordered list of processing steps executed during this turn - output_message: - $ref: '#/components/schemas/CompletionMessage' - description: >- - The model's generated response containing content and metadata - output_attachments: - type: array - items: - type: object - properties: - content: - oneOf: - - type: string - - $ref: '#/components/schemas/InterleavedContentItem' - - type: array - items: - $ref: '#/components/schemas/InterleavedContentItem' - - $ref: '#/components/schemas/URL' - description: The content of the attachment. - mime_type: - type: string - description: The MIME type of the attachment. - additionalProperties: false - required: - - content - - mime_type - title: Attachment - description: An attachment to an agent turn. - description: >- - (Optional) Files or media attached to the agent's response - started_at: - type: string - format: date-time - description: Timestamp when the turn began - completed_at: - type: string - format: date-time - description: >- - (Optional) Timestamp when the turn finished, if completed - additionalProperties: false - required: - - turn_id - - session_id - - input_messages - - steps - - output_message - - started_at - title: Turn - description: >- - A single turn in an interaction with an Agentic System. - URL: - type: object - properties: - uri: - type: string - description: The URL string pointing to the resource - additionalProperties: false - required: - - uri - title: URL - description: A URL reference to external content. - UserMessage: - type: object - properties: - role: - type: string - const: user - default: user - description: >- - Must be "user" to identify this as a user message - content: - $ref: '#/components/schemas/InterleavedContent' - description: >- - The content of the message, which can include text and other media - context: - $ref: '#/components/schemas/InterleavedContent' - description: >- - (Optional) This field is used internally by Llama Stack to pass RAG context. - This field may be removed in the API in the future. - additionalProperties: false - required: - - role - - content - title: UserMessage - description: >- - A message from the user in a chat conversation. - ViolationLevel: - type: string - enum: - - info - - warn - - error - title: ViolationLevel - description: Severity level of a safety violation. - CreateAgentTurnRequest: - type: object - properties: - messages: - type: array - items: - oneOf: - - $ref: '#/components/schemas/UserMessage' - - $ref: '#/components/schemas/ToolResponseMessage' - description: List of messages to start the turn with. - stream: - type: boolean - description: >- - (Optional) If True, generate an SSE event stream of the response. Defaults - to False. - documents: - type: array - items: - type: object - properties: - content: - oneOf: - - type: string - - $ref: '#/components/schemas/InterleavedContentItem' - - type: array - items: - $ref: '#/components/schemas/InterleavedContentItem' - - $ref: '#/components/schemas/URL' - description: The content of the document. - mime_type: - type: string - description: The MIME type of the document. - additionalProperties: false - required: - - content - - mime_type - title: Document - description: A document to be used by an agent. - description: >- - (Optional) List of documents to create the turn with. - toolgroups: - type: array - items: - $ref: '#/components/schemas/AgentTool' - description: >- - (Optional) List of toolgroups to create the turn with, will be used in - addition to the agent's config toolgroups for the request. - tool_config: - $ref: '#/components/schemas/ToolConfig' - description: >- - (Optional) The tool configuration to create the turn with, will be used - to override the agent's tool_config. - additionalProperties: false - required: - - messages - title: CreateAgentTurnRequest - AgentTurnResponseEvent: - type: object - properties: - payload: - oneOf: - - $ref: '#/components/schemas/AgentTurnResponseStepStartPayload' - - $ref: '#/components/schemas/AgentTurnResponseStepProgressPayload' - - $ref: '#/components/schemas/AgentTurnResponseStepCompletePayload' - - $ref: '#/components/schemas/AgentTurnResponseTurnStartPayload' - - $ref: '#/components/schemas/AgentTurnResponseTurnCompletePayload' - - $ref: '#/components/schemas/AgentTurnResponseTurnAwaitingInputPayload' - discriminator: - propertyName: event_type - mapping: - step_start: '#/components/schemas/AgentTurnResponseStepStartPayload' - step_progress: '#/components/schemas/AgentTurnResponseStepProgressPayload' - step_complete: '#/components/schemas/AgentTurnResponseStepCompletePayload' - turn_start: '#/components/schemas/AgentTurnResponseTurnStartPayload' - turn_complete: '#/components/schemas/AgentTurnResponseTurnCompletePayload' - turn_awaiting_input: '#/components/schemas/AgentTurnResponseTurnAwaitingInputPayload' - description: >- - Event-specific payload containing event data - additionalProperties: false - required: - - payload - title: AgentTurnResponseEvent - description: >- - An event in an agent turn response stream. - AgentTurnResponseStepCompletePayload: - type: object - properties: - event_type: - type: string - enum: - - step_start - - step_complete - - step_progress - - turn_start - - turn_complete - - turn_awaiting_input - const: step_complete - default: step_complete - description: Type of event being reported - step_type: - type: string - enum: - - inference - - tool_execution - - shield_call - - memory_retrieval - description: Type of step being executed - step_id: - type: string - description: >- - Unique identifier for the step within a turn - step_details: - oneOf: - - $ref: '#/components/schemas/InferenceStep' - - $ref: '#/components/schemas/ToolExecutionStep' - - $ref: '#/components/schemas/ShieldCallStep' - - $ref: '#/components/schemas/MemoryRetrievalStep' - discriminator: - propertyName: step_type - mapping: - inference: '#/components/schemas/InferenceStep' - tool_execution: '#/components/schemas/ToolExecutionStep' - shield_call: '#/components/schemas/ShieldCallStep' - memory_retrieval: '#/components/schemas/MemoryRetrievalStep' - description: Complete details of the executed step - additionalProperties: false - required: - - event_type - - step_type - - step_id - - step_details - title: AgentTurnResponseStepCompletePayload - description: >- - Payload for step completion events in agent turn responses. - AgentTurnResponseStepProgressPayload: - type: object - properties: - event_type: - type: string - enum: - - step_start - - step_complete - - step_progress - - turn_start - - turn_complete - - turn_awaiting_input - const: step_progress - default: step_progress - description: Type of event being reported - step_type: - type: string - enum: - - inference - - tool_execution - - shield_call - - memory_retrieval - description: Type of step being executed - step_id: - type: string - description: >- - Unique identifier for the step within a turn - delta: - oneOf: - - $ref: '#/components/schemas/TextDelta' - - $ref: '#/components/schemas/ImageDelta' - - $ref: '#/components/schemas/ToolCallDelta' - discriminator: - propertyName: type - mapping: - text: '#/components/schemas/TextDelta' - image: '#/components/schemas/ImageDelta' - tool_call: '#/components/schemas/ToolCallDelta' - description: >- - Incremental content changes during step execution - additionalProperties: false - required: - - event_type - - step_type - - step_id - - delta - title: AgentTurnResponseStepProgressPayload - description: >- - Payload for step progress events in agent turn responses. - AgentTurnResponseStepStartPayload: - type: object - properties: - event_type: - type: string - enum: - - step_start - - step_complete - - step_progress - - turn_start - - turn_complete - - turn_awaiting_input - const: step_start - default: step_start - description: Type of event being reported - step_type: - type: string - enum: - - inference - - tool_execution - - shield_call - - memory_retrieval - description: Type of step being executed - step_id: - type: string - description: >- - Unique identifier for the step within a turn - metadata: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - (Optional) Additional metadata for the step - additionalProperties: false - required: - - event_type - - step_type - - step_id - title: AgentTurnResponseStepStartPayload - description: >- - Payload for step start events in agent turn responses. - AgentTurnResponseStreamChunk: - type: object - properties: - event: - $ref: '#/components/schemas/AgentTurnResponseEvent' - description: >- - Individual event in the agent turn response stream - additionalProperties: false - required: - - event - title: AgentTurnResponseStreamChunk - description: Streamed agent turn completion response. - "AgentTurnResponseTurnAwaitingInputPayload": - type: object - properties: - event_type: - type: string - enum: - - step_start - - step_complete - - step_progress - - turn_start - - turn_complete - - turn_awaiting_input - const: turn_awaiting_input - default: turn_awaiting_input - description: Type of event being reported - turn: - $ref: '#/components/schemas/Turn' - description: >- - Turn data when waiting for external tool responses - additionalProperties: false - required: - - event_type - - turn - title: >- - AgentTurnResponseTurnAwaitingInputPayload - description: >- - Payload for turn awaiting input events in agent turn responses. - AgentTurnResponseTurnCompletePayload: - type: object - properties: - event_type: - type: string - enum: - - step_start - - step_complete - - step_progress - - turn_start - - turn_complete - - turn_awaiting_input - const: turn_complete - default: turn_complete - description: Type of event being reported - turn: - $ref: '#/components/schemas/Turn' - description: >- - Complete turn data including all steps and results - additionalProperties: false - required: - - event_type - - turn - title: AgentTurnResponseTurnCompletePayload - description: >- - Payload for turn completion events in agent turn responses. - AgentTurnResponseTurnStartPayload: - type: object - properties: - event_type: - type: string - enum: - - step_start - - step_complete - - step_progress - - turn_start - - turn_complete - - turn_awaiting_input - const: turn_start - default: turn_start - description: Type of event being reported - turn_id: - type: string - description: >- - Unique identifier for the turn within a session - additionalProperties: false - required: - - event_type - - turn_id - title: AgentTurnResponseTurnStartPayload - description: >- - Payload for turn start events in agent turn responses. - ImageDelta: - type: object - properties: - type: - type: string - const: image - default: image - description: >- - Discriminator type of the delta. Always "image" - image: - type: string - contentEncoding: base64 - description: The incremental image data as bytes - additionalProperties: false - required: - - type - - image - title: ImageDelta - description: >- - An image content delta for streaming responses. - TextDelta: - type: object - properties: - type: - type: string - const: text - default: text - description: >- - Discriminator type of the delta. Always "text" - text: - type: string - description: The incremental text content - additionalProperties: false - required: - - type - - text - title: TextDelta - description: >- - A text content delta for streaming responses. - ToolCallDelta: - type: object - properties: - type: - type: string - const: tool_call - default: tool_call - description: >- - Discriminator type of the delta. Always "tool_call" - tool_call: - oneOf: - - type: string - - $ref: '#/components/schemas/ToolCall' - description: >- - Either an in-progress tool call string or the final parsed tool call - parse_status: - type: string - enum: - - started - - in_progress - - failed - - succeeded - description: Current parsing status of the tool call - additionalProperties: false - required: - - type - - tool_call - - parse_status - title: ToolCallDelta - description: >- - A tool call content delta for streaming responses. - ResumeAgentTurnRequest: - type: object - properties: - tool_responses: - type: array - items: - $ref: '#/components/schemas/ToolResponse' - description: >- - The tool call responses to resume the turn with. - stream: - type: boolean - description: Whether to stream the response. - additionalProperties: false - required: - - tool_responses - title: ResumeAgentTurnRequest - AgentStepResponse: - type: object - properties: - step: - oneOf: - - $ref: '#/components/schemas/InferenceStep' - - $ref: '#/components/schemas/ToolExecutionStep' - - $ref: '#/components/schemas/ShieldCallStep' - - $ref: '#/components/schemas/MemoryRetrievalStep' - discriminator: - propertyName: step_type - mapping: - inference: '#/components/schemas/InferenceStep' - tool_execution: '#/components/schemas/ToolExecutionStep' - shield_call: '#/components/schemas/ShieldCallStep' - memory_retrieval: '#/components/schemas/MemoryRetrievalStep' - description: >- - The complete step data and execution details - additionalProperties: false - required: - - step - title: AgentStepResponse - description: >- - Response containing details of a specific agent step. - Benchmark: - type: object - properties: - identifier: - type: string - provider_resource_id: - type: string - provider_id: - type: string - type: - type: string - enum: - - model - - shield - - vector_store - - dataset - - scoring_function - - benchmark - - tool - - tool_group - - prompt - const: benchmark - default: benchmark - description: The resource type, always benchmark - dataset_id: - type: string - description: >- - Identifier of the dataset to use for the benchmark evaluation - scoring_functions: - type: array - items: - type: string - description: >- - List of scoring function identifiers to apply during evaluation - metadata: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: Metadata for this evaluation task - additionalProperties: false - required: - - identifier - - provider_id - - type - - dataset_id - - scoring_functions - - metadata - title: Benchmark - description: >- - A benchmark resource for evaluating model performance. - ListBenchmarksResponse: - type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/Benchmark' - additionalProperties: false - required: - - data - title: ListBenchmarksResponse - RegisterBenchmarkRequest: - type: object - properties: - benchmark_id: - type: string - description: The ID of the benchmark to register. - dataset_id: - type: string - description: >- - The ID of the dataset to use for the benchmark. - scoring_functions: - type: array - items: - type: string - description: >- - The scoring functions to use for the benchmark. - provider_benchmark_id: - type: string - description: >- - The ID of the provider benchmark to use for the benchmark. - provider_id: - type: string - description: >- - The ID of the provider to use for the benchmark. - metadata: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: The metadata to use for the benchmark. - additionalProperties: false - required: - - benchmark_id - - dataset_id - - scoring_functions - title: RegisterBenchmarkRequest AgentCandidate: - type: object properties: type: type: string const: agent + title: Type default: agent config: $ref: '#/components/schemas/AgentConfig' - description: >- - The configuration for the agent candidate. - additionalProperties: false + type: object required: - - type - - config + - config title: AgentCandidate - description: An agent candidate for evaluation. + description: 'An agent candidate for evaluation. + + + :param config: The configuration for the agent candidate.' + AgentConfig: + properties: + sampling_params: + anyOf: + - $ref: '#/components/schemas/SamplingParams' + - type: 'null' + input_shields: + anyOf: + - items: + type: string + type: array + - type: 'null' + title: Input Shields + output_shields: + anyOf: + - items: + type: string + type: array + - type: 'null' + title: Output Shields + toolgroups: + anyOf: + - items: + anyOf: + - type: string + - $ref: '#/components/schemas/AgentToolGroupWithArgs' + type: array + - type: 'null' + title: Toolgroups + client_tools: + anyOf: + - items: + $ref: '#/components/schemas/ToolDef' + type: array + - type: 'null' + title: Client Tools + tool_choice: + anyOf: + - $ref: '#/components/schemas/ToolChoice' + - type: 'null' + deprecated: true + tool_prompt_format: + anyOf: + - $ref: '#/components/schemas/ToolPromptFormat' + - type: 'null' + deprecated: true + tool_config: + anyOf: + - $ref: '#/components/schemas/ToolConfig' + - type: 'null' + max_infer_iters: + anyOf: + - type: integer + - type: 'null' + title: Max Infer Iters + default: 10 + model: + type: string + title: Model + instructions: + type: string + title: Instructions + name: + anyOf: + - type: string + - type: 'null' + title: Name + enable_session_persistence: + anyOf: + - type: boolean + - type: 'null' + title: Enable Session Persistence + default: false + response_format: + anyOf: + - oneOf: + - $ref: '#/components/schemas/JsonSchemaResponseFormat' + - $ref: '#/components/schemas/GrammarResponseFormat' + discriminator: + propertyName: type + mapping: + grammar: '#/components/schemas/GrammarResponseFormat' + json_schema: '#/components/schemas/JsonSchemaResponseFormat' + - type: 'null' + title: Response Format + type: object + required: + - model + - instructions + title: AgentConfig + description: 'Configuration for an agent. + + + :param model: The model identifier to use for the agent + + :param instructions: The system instructions for the agent + + :param name: Optional name for the agent, used in telemetry and identification + + :param enable_session_persistence: Optional flag indicating whether session + data has to be persisted + + :param response_format: Optional response format configuration' + AgentCreateResponse: + properties: + agent_id: + type: string + title: Agent Id + type: object + required: + - agent_id + title: AgentCreateResponse + description: 'Response returned when creating a new agent. + + + :param agent_id: Unique identifier for the created agent' + AgentToolGroupWithArgs: + properties: + name: + type: string + title: Name + args: + additionalProperties: true + type: object + title: Args + type: object + required: + - name + - args + title: AgentToolGroupWithArgs AggregationFunctionType: type: string enum: - - average - - weighted_average - - median - - categorical_count - - accuracy + - average + - weighted_average + - median + - categorical_count + - accuracy title: AggregationFunctionType - description: >- - Types of aggregation functions for scoring results. + description: 'Types of aggregation functions for scoring results. + + :cvar average: Calculate the arithmetic mean of scores + + :cvar weighted_average: Calculate a weighted average of scores + + :cvar median: Calculate the median value of scores + + :cvar categorical_count: Count occurrences of categorical values + + :cvar accuracy: Calculate accuracy as the proportion of correct answers' BasicScoringFnParams: - type: object properties: type: - $ref: '#/components/schemas/ScoringFnParamsType' + type: string const: basic + title: Type default: basic - description: >- - The type of scoring function parameters, always basic aggregation_functions: - type: array items: $ref: '#/components/schemas/AggregationFunctionType' - description: >- - Aggregation functions to apply to the scores of each row - additionalProperties: false - required: - - type - - aggregation_functions - title: BasicScoringFnParams - description: >- - Parameters for basic scoring function configuration. - BenchmarkConfig: + type: array + title: Aggregation Functions + description: Aggregation functions to apply to the scores of each row type: object + title: BasicScoringFnParams + description: 'Parameters for basic scoring function configuration. + + :param type: The type of scoring function parameters, always basic + + :param aggregation_functions: Aggregation functions to apply to the scores + of each row' + Benchmark: + properties: + identifier: + type: string + title: Identifier + description: Unique identifier for this resource in llama stack + provider_resource_id: + anyOf: + - type: string + - type: 'null' + title: Provider Resource Id + description: Unique identifier for this resource in the provider + provider_id: + type: string + title: Provider Id + description: ID of the provider that owns this resource + type: + type: string + const: benchmark + title: Type + default: benchmark + dataset_id: + type: string + title: Dataset Id + scoring_functions: + items: + type: string + type: array + title: Scoring Functions + metadata: + additionalProperties: true + type: object + title: Metadata + description: Metadata for this evaluation task + type: object + required: + - identifier + - provider_id + - dataset_id + - scoring_functions + title: Benchmark + description: 'A benchmark resource for evaluating model performance. + + + :param dataset_id: Identifier of the dataset to use for the benchmark evaluation + + :param scoring_functions: List of scoring function identifiers to apply during + evaluation + + :param metadata: Metadata for this evaluation task + + :param type: The resource type, always benchmark' + BenchmarkConfig: properties: eval_candidate: oneOf: - - $ref: '#/components/schemas/ModelCandidate' - - $ref: '#/components/schemas/AgentCandidate' + - $ref: '#/components/schemas/ModelCandidate' + - $ref: '#/components/schemas/AgentCandidate' + title: Eval Candidate discriminator: propertyName: type mapping: - model: '#/components/schemas/ModelCandidate' agent: '#/components/schemas/AgentCandidate' - description: The candidate to evaluate. + model: '#/components/schemas/ModelCandidate' scoring_params: - type: object additionalProperties: - $ref: '#/components/schemas/ScoringFnParams' - description: >- - Map between scoring function id and parameters for each scoring function - you want to run + oneOf: + - $ref: '#/components/schemas/LLMAsJudgeScoringFnParams' + - $ref: '#/components/schemas/RegexParserScoringFnParams' + - $ref: '#/components/schemas/BasicScoringFnParams' + discriminator: + propertyName: type + mapping: + basic: '#/components/schemas/BasicScoringFnParams' + llm_as_judge: '#/components/schemas/LLMAsJudgeScoringFnParams' + regex_parser: '#/components/schemas/RegexParserScoringFnParams' + type: object + title: Scoring Params + description: Map between scoring function id and parameters for each scoring + function you want to run num_examples: - type: integer - description: >- - (Optional) The number of examples to evaluate. If not provided, all examples - in the dataset will be evaluated - additionalProperties: false - required: - - eval_candidate - - scoring_params - title: BenchmarkConfig - description: >- - A benchmark configuration for evaluation. - LLMAsJudgeScoringFnParams: + anyOf: + - type: integer + - type: 'null' + title: Num Examples + description: Number of examples to evaluate (useful for testing), if not + provided, all examples in the dataset will be evaluated type: object + required: + - eval_candidate + title: BenchmarkConfig + description: 'A benchmark configuration for evaluation. + + + :param eval_candidate: The candidate to evaluate. + + :param scoring_params: Map between scoring function id and parameters for + each scoring function you want to run + + :param num_examples: (Optional) The number of examples to evaluate. If not + provided, all examples in the dataset will be evaluated' + Body_create_agent_turn_v1alpha_agents__agent_id__session__session_id__turn_post: + properties: + messages: + $ref: '#/components/schemas/UserMessage' + documents: + $ref: '#/components/schemas/Document' + toolgroups: + anyOf: + - type: string + - $ref: '#/components/schemas/AgentToolGroupWithArgs' + title: Toolgroups + tool_config: + $ref: '#/components/schemas/ToolConfig' + type: object + title: Body_create_agent_turn_v1alpha_agents__agent_id__session__session_id__turn_post + BuiltinTool: + type: string + enum: + - brave_search + - wolfram_alpha + - photogen + - code_interpreter + title: BuiltinTool + DPOAlignmentConfig: + properties: + beta: + type: number + title: Beta + loss_type: + $ref: '#/components/schemas/DPOLossType' + default: sigmoid + type: object + required: + - beta + title: DPOAlignmentConfig + description: 'Configuration for Direct Preference Optimization (DPO) alignment. + + + :param beta: Temperature parameter for the DPO loss + + :param loss_type: The type of loss function to use for DPO' + DPOLossType: + type: string + enum: + - sigmoid + - hinge + - ipo + - kto_pair + title: DPOLossType + DataConfig: + properties: + dataset_id: + type: string + title: Dataset Id + batch_size: + type: integer + title: Batch Size + shuffle: + type: boolean + title: Shuffle + data_format: + $ref: '#/components/schemas/DatasetFormat' + validation_dataset_id: + anyOf: + - type: string + - type: 'null' + title: Validation Dataset Id + packed: + anyOf: + - type: boolean + - type: 'null' + title: Packed + default: false + train_on_input: + anyOf: + - type: boolean + - type: 'null' + title: Train On Input + default: false + type: object + required: + - dataset_id + - batch_size + - shuffle + - data_format + title: DataConfig + description: 'Configuration for training data and data loading. + + + :param dataset_id: Unique identifier for the training dataset + + :param batch_size: Number of samples per training batch + + :param shuffle: Whether to shuffle the dataset during training + + :param data_format: Format of the dataset (instruct or dialog) + + :param validation_dataset_id: (Optional) Unique identifier for the validation + dataset + + :param packed: (Optional) Whether to pack multiple samples into a single sequence + for efficiency + + :param train_on_input: (Optional) Whether to compute loss on input tokens + as well as output tokens' + Dataset: + properties: + identifier: + type: string + title: Identifier + description: Unique identifier for this resource in llama stack + provider_resource_id: + anyOf: + - type: string + - type: 'null' + title: Provider Resource Id + description: Unique identifier for this resource in the provider + provider_id: + type: string + title: Provider Id + description: ID of the provider that owns this resource + type: + type: string + const: dataset + title: Type + default: dataset + purpose: + $ref: '#/components/schemas/DatasetPurpose' + source: + oneOf: + - $ref: '#/components/schemas/URIDataSource' + - $ref: '#/components/schemas/RowsDataSource' + title: Source + discriminator: + propertyName: type + mapping: + rows: '#/components/schemas/RowsDataSource' + uri: '#/components/schemas/URIDataSource' + metadata: + additionalProperties: true + type: object + title: Metadata + description: Any additional metadata for this dataset + type: object + required: + - identifier + - provider_id + - purpose + - source + title: Dataset + description: 'Dataset resource for storing and accessing training or evaluation + data. + + + :param type: Type of resource, always ''dataset'' for datasets' + DatasetFormat: + type: string + enum: + - instruct + - dialog + title: DatasetFormat + description: 'Format of the training dataset. + + :cvar instruct: Instruction-following format with prompt and completion + + :cvar dialog: Multi-turn conversation format with messages' + DatasetPurpose: + type: string + enum: + - post-training/messages + - eval/question-answer + - eval/messages-answer + title: DatasetPurpose + description: "Purpose of the dataset. Each purpose has a required input data\ + \ schema.\n\n:cvar post-training/messages: The dataset contains messages used\ + \ for post-training.\n {\n \"messages\": [\n {\"role\"\ + : \"user\", \"content\": \"Hello, world!\"},\n {\"role\": \"assistant\"\ + , \"content\": \"Hello, world!\"},\n ]\n }\n:cvar eval/question-answer:\ + \ The dataset contains a question column and an answer column.\n {\n \ + \ \"question\": \"What is the capital of France?\",\n \"answer\"\ + : \"Paris\"\n }\n:cvar eval/messages-answer: The dataset contains a messages\ + \ column with list of messages and an answer column.\n {\n \"messages\"\ + : [\n {\"role\": \"user\", \"content\": \"Hello, my name is John\ + \ Doe.\"},\n {\"role\": \"assistant\", \"content\": \"Hello, John\ + \ Doe. How can I help you today?\"},\n {\"role\": \"user\", \"\ + content\": \"What's my name?\"},\n ],\n \"answer\": \"John Doe\"\ + \n }" + Document: + properties: + content: + anyOf: + - type: string + - oneOf: + - $ref: '#/components/schemas/ImageContentItem' + - $ref: '#/components/schemas/TextContentItem' + discriminator: + propertyName: type + mapping: + image: '#/components/schemas/ImageContentItem' + text: '#/components/schemas/TextContentItem' + - items: + oneOf: + - $ref: '#/components/schemas/ImageContentItem' + - $ref: '#/components/schemas/TextContentItem' + discriminator: + propertyName: type + mapping: + image: '#/components/schemas/ImageContentItem' + text: '#/components/schemas/TextContentItem' + type: array + - $ref: '#/components/schemas/URL' + title: Content + mime_type: + type: string + title: Mime Type + type: object + required: + - content + - mime_type + title: Document + description: 'A document to be used by an agent. + + + :param content: The content of the document. + + :param mime_type: The MIME type of the document.' + EfficiencyConfig: + properties: + enable_activation_checkpointing: + anyOf: + - type: boolean + - type: 'null' + title: Enable Activation Checkpointing + default: false + enable_activation_offloading: + anyOf: + - type: boolean + - type: 'null' + title: Enable Activation Offloading + default: false + memory_efficient_fsdp_wrap: + anyOf: + - type: boolean + - type: 'null' + title: Memory Efficient Fsdp Wrap + default: false + fsdp_cpu_offload: + anyOf: + - type: boolean + - type: 'null' + title: Fsdp Cpu Offload + default: false + type: object + title: EfficiencyConfig + description: 'Configuration for memory and compute efficiency optimizations. + + + :param enable_activation_checkpointing: (Optional) Whether to use activation + checkpointing to reduce memory usage + + :param enable_activation_offloading: (Optional) Whether to offload activations + to CPU to save GPU memory + + :param memory_efficient_fsdp_wrap: (Optional) Whether to use memory-efficient + FSDP wrapping + + :param fsdp_cpu_offload: (Optional) Whether to offload FSDP parameters to + CPU' + EvaluateResponse: + properties: + generations: + items: + additionalProperties: true + type: object + type: array + title: Generations + scores: + additionalProperties: + $ref: '#/components/schemas/ScoringResult' + type: object + title: Scores + type: object + required: + - generations + - scores + title: EvaluateResponse + description: 'The response from an evaluation. + + + :param generations: The generations from the evaluation. + + :param scores: The scores from the evaluation.' + GrammarResponseFormat: properties: type: - $ref: '#/components/schemas/ScoringFnParamsType' + type: string + const: grammar + title: Type + default: grammar + bnf: + additionalProperties: true + type: object + title: Bnf + type: object + required: + - bnf + title: GrammarResponseFormat + description: 'Configuration for grammar-guided response generation. + + + :param type: Must be "grammar" to identify this format type + + :param bnf: The BNF grammar specification the response should conform to' + GreedySamplingStrategy: + properties: + type: + type: string + const: greedy + title: Type + default: greedy + type: object + title: GreedySamplingStrategy + description: 'Greedy sampling strategy that selects the highest probability + token at each step. + + + :param type: Must be "greedy" to identify this sampling strategy' + ImageContentItem: + properties: + type: + type: string + const: image + title: Type + default: image + image: + $ref: '#/components/schemas/_URLOrData' + type: object + required: + - image + title: ImageContentItem + description: 'A image content item + + + :param type: Discriminator type of the content item. Always "image" + + :param image: Image as a base64 encoded string or an URL' + Job: + properties: + job_id: + type: string + title: Job Id + status: + $ref: '#/components/schemas/JobStatus' + type: object + required: + - job_id + - status + title: Job + description: 'A job execution instance with status tracking. + + + :param job_id: Unique identifier for the job + + :param status: Current execution status of the job' + JobStatus: + type: string + enum: + - completed + - in_progress + - failed + - scheduled + - cancelled + title: JobStatus + description: 'Status of a job execution. + + :cvar completed: Job has finished successfully + + :cvar in_progress: Job is currently running + + :cvar failed: Job has failed during execution + + :cvar scheduled: Job is scheduled but not yet started + + :cvar cancelled: Job was cancelled before completion' + JsonSchemaResponseFormat: + properties: + type: + type: string + const: json_schema + title: Type + default: json_schema + json_schema: + additionalProperties: true + type: object + title: Json Schema + type: object + required: + - json_schema + title: JsonSchemaResponseFormat + description: 'Configuration for JSON schema-guided response generation. + + + :param type: Must be "json_schema" to identify this format type + + :param json_schema: The JSON schema the response should conform to. In a Python + SDK, this is often a `pydantic` model.' + LLMAsJudgeScoringFnParams: + properties: + type: + type: string const: llm_as_judge + title: Type default: llm_as_judge - description: >- - The type of scoring function parameters, always llm_as_judge judge_model: type: string - description: >- - Identifier of the LLM model to use as a judge for scoring + title: Judge Model prompt_template: - type: string - description: >- - (Optional) Custom prompt template for the judge model + anyOf: + - type: string + - type: 'null' + title: Prompt Template judge_score_regexes: - type: array items: type: string - description: >- - Regexes to extract the answer from generated response - aggregation_functions: type: array + title: Judge Score Regexes + description: Regexes to extract the answer from generated response + aggregation_functions: items: $ref: '#/components/schemas/AggregationFunctionType' - description: >- - Aggregation functions to apply to the scores of each row - additionalProperties: false - required: - - type - - judge_model - - judge_score_regexes - - aggregation_functions - title: LLMAsJudgeScoringFnParams - description: >- - Parameters for LLM-as-judge scoring function configuration. - ModelCandidate: + type: array + title: Aggregation Functions + description: Aggregation functions to apply to the scores of each row type: object + required: + - judge_model + title: LLMAsJudgeScoringFnParams + description: 'Parameters for LLM-as-judge scoring function configuration. + + :param type: The type of scoring function parameters, always llm_as_judge + + :param judge_model: Identifier of the LLM model to use as a judge for scoring + + :param prompt_template: (Optional) Custom prompt template for the judge model + + :param judge_score_regexes: Regexes to extract the answer from generated response + + :param aggregation_functions: Aggregation functions to apply to the scores + of each row' + ListBenchmarksResponse: + properties: + data: + items: + $ref: '#/components/schemas/Benchmark' + type: array + title: Data + type: object + required: + - data + title: ListBenchmarksResponse + ListDatasetsResponse: + properties: + data: + items: + $ref: '#/components/schemas/Dataset' + type: array + title: Data + type: object + required: + - data + title: ListDatasetsResponse + description: 'Response from listing datasets. + + + :param data: List of datasets' + ListPostTrainingJobsResponse: + properties: + data: + items: + $ref: '#/components/schemas/PostTrainingJob' + type: array + title: Data + type: object + required: + - data + title: ListPostTrainingJobsResponse + ModelCandidate: properties: type: type: string const: model + title: Type default: model model: type: string - description: The model ID to evaluate. + title: Model sampling_params: $ref: '#/components/schemas/SamplingParams' - description: The sampling parameters for the model. system_message: - $ref: '#/components/schemas/SystemMessage' - description: >- - (Optional) The system message providing instructions or context to the - model. - additionalProperties: false - required: - - type - - model - - sampling_params - title: ModelCandidate - description: A model candidate for evaluation. - RegexParserScoringFnParams: + anyOf: + - $ref: '#/components/schemas/SystemMessage' + - type: 'null' type: object - properties: - type: - $ref: '#/components/schemas/ScoringFnParamsType' - const: regex_parser - default: regex_parser - description: >- - The type of scoring function parameters, always regex_parser - parsing_regexes: - type: array - items: - type: string - description: >- - Regex to extract the answer from generated response - aggregation_functions: - type: array - items: - $ref: '#/components/schemas/AggregationFunctionType' - description: >- - Aggregation functions to apply to the scores of each row - additionalProperties: false required: - - type - - parsing_regexes - - aggregation_functions - title: RegexParserScoringFnParams - description: >- - Parameters for regex parser scoring function configuration. - ScoringFnParams: - oneOf: - - $ref: '#/components/schemas/LLMAsJudgeScoringFnParams' - - $ref: '#/components/schemas/RegexParserScoringFnParams' - - $ref: '#/components/schemas/BasicScoringFnParams' - discriminator: - propertyName: type - mapping: - llm_as_judge: '#/components/schemas/LLMAsJudgeScoringFnParams' - regex_parser: '#/components/schemas/RegexParserScoringFnParams' - basic: '#/components/schemas/BasicScoringFnParams' - ScoringFnParamsType: + - model + - sampling_params + title: ModelCandidate + description: 'A model candidate for evaluation. + + + :param model: The model ID to evaluate. + + :param sampling_params: The sampling parameters for the model. + + :param system_message: (Optional) The system message providing instructions + or context to the model.' + OptimizerConfig: + properties: + optimizer_type: + $ref: '#/components/schemas/OptimizerType' + lr: + type: number + title: Lr + weight_decay: + type: number + title: Weight Decay + num_warmup_steps: + type: integer + title: Num Warmup Steps + type: object + required: + - optimizer_type + - lr + - weight_decay + - num_warmup_steps + title: OptimizerConfig + description: 'Configuration parameters for the optimization algorithm. + + + :param optimizer_type: Type of optimizer to use (adam, adamw, or sgd) + + :param lr: Learning rate for the optimizer + + :param weight_decay: Weight decay coefficient for regularization + + :param num_warmup_steps: Number of steps for learning rate warmup' + OptimizerType: type: string enum: - - llm_as_judge - - regex_parser - - basic - title: ScoringFnParamsType - description: >- - Types of scoring function parameter configurations. - SystemMessage: + - adam + - adamw + - sgd + title: OptimizerType + description: 'Available optimizer algorithms for training. + + :cvar adam: Adaptive Moment Estimation optimizer + + :cvar adamw: AdamW optimizer with weight decay + + :cvar sgd: Stochastic Gradient Descent optimizer' + PostTrainingJob: + properties: + job_uuid: + type: string + title: Job Uuid type: object + required: + - job_uuid + title: PostTrainingJob + RegexParserScoringFnParams: + properties: + type: + type: string + const: regex_parser + title: Type + default: regex_parser + parsing_regexes: + items: + type: string + type: array + title: Parsing Regexes + description: Regex to extract the answer from generated response + aggregation_functions: + items: + $ref: '#/components/schemas/AggregationFunctionType' + type: array + title: Aggregation Functions + description: Aggregation functions to apply to the scores of each row + type: object + title: RegexParserScoringFnParams + description: 'Parameters for regex parser scoring function configuration. + + :param type: The type of scoring function parameters, always regex_parser + + :param parsing_regexes: Regex to extract the answer from generated response + + :param aggregation_functions: Aggregation functions to apply to the scores + of each row' + RowsDataSource: + properties: + type: + type: string + const: rows + title: Type + default: rows + rows: + items: + additionalProperties: true + type: object + type: array + title: Rows + type: object + required: + - rows + title: RowsDataSource + description: "A dataset stored in rows.\n:param rows: The dataset is stored\ + \ in rows. E.g.\n - [\n {\"messages\": [{\"role\": \"user\", \"\ + content\": \"Hello, world!\"}, {\"role\": \"assistant\", \"content\": \"Hello,\ + \ world!\"}]}\n ]" + SamplingParams: + properties: + strategy: + oneOf: + - $ref: '#/components/schemas/GreedySamplingStrategy' + - $ref: '#/components/schemas/TopPSamplingStrategy' + - $ref: '#/components/schemas/TopKSamplingStrategy' + title: Strategy + discriminator: + propertyName: type + mapping: + greedy: '#/components/schemas/GreedySamplingStrategy' + top_k: '#/components/schemas/TopKSamplingStrategy' + top_p: '#/components/schemas/TopPSamplingStrategy' + max_tokens: + anyOf: + - type: integer + - type: 'null' + title: Max Tokens + repetition_penalty: + anyOf: + - type: number + - type: 'null' + title: Repetition Penalty + default: 1.0 + stop: + anyOf: + - items: + type: string + type: array + - type: 'null' + title: Stop + type: object + title: SamplingParams + description: "Sampling parameters.\n\n:param strategy: The sampling strategy.\n\ + :param max_tokens: The maximum number of tokens that can be generated in the\ + \ completion. The token count of\n your prompt plus max_tokens cannot exceed\ + \ the model's context length.\n:param repetition_penalty: Number between -2.0\ + \ and 2.0. Positive values penalize new tokens\n based on whether they\ + \ appear in the text so far, increasing the model's likelihood to talk about\ + \ new topics.\n:param stop: Up to 4 sequences where the API will stop generating\ + \ further tokens.\n The returned text will not contain the stop sequence." + ScoringResult: + properties: + score_rows: + items: + additionalProperties: true + type: object + type: array + title: Score Rows + aggregated_results: + additionalProperties: true + type: object + title: Aggregated Results + type: object + required: + - score_rows + - aggregated_results + title: ScoringResult + description: 'A scoring result for a single row. + + + :param score_rows: The scoring result for each row. Each row is a map of column + name to value. + + :param aggregated_results: Map of metric name to aggregated value' + SystemMessage: properties: role: type: string const: system + title: Role default: system - description: >- - Must be "system" to identify this as a system message content: - $ref: '#/components/schemas/InterleavedContent' - description: >- - The content of the "system prompt". If multiple system messages are provided, - they are concatenated. The underlying Llama Stack code may also add other - system messages (for example, for formatting tool definitions). - additionalProperties: false + anyOf: + - type: string + - oneOf: + - $ref: '#/components/schemas/ImageContentItem' + - $ref: '#/components/schemas/TextContentItem' + discriminator: + propertyName: type + mapping: + image: '#/components/schemas/ImageContentItem' + text: '#/components/schemas/TextContentItem' + - items: + oneOf: + - $ref: '#/components/schemas/ImageContentItem' + - $ref: '#/components/schemas/TextContentItem' + discriminator: + propertyName: type + mapping: + image: '#/components/schemas/ImageContentItem' + text: '#/components/schemas/TextContentItem' + type: array + title: Content + type: object required: - - role - - content + - content title: SystemMessage - description: >- - A system message providing instructions or context to the model. - EvaluateRowsRequest: - type: object - properties: - input_rows: - type: array - items: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: The rows to evaluate. - scoring_functions: - type: array - items: - type: string - description: >- - The scoring functions to use for the evaluation. - benchmark_config: - $ref: '#/components/schemas/BenchmarkConfig' - description: The configuration for the benchmark. - additionalProperties: false - required: - - input_rows - - scoring_functions - - benchmark_config - title: EvaluateRowsRequest - EvaluateResponse: - type: object - properties: - generations: - type: array - items: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: The generations from the evaluation. - scores: - type: object - additionalProperties: - $ref: '#/components/schemas/ScoringResult' - description: The scores from the evaluation. - additionalProperties: false - required: - - generations - - scores - title: EvaluateResponse - description: The response from an evaluation. - ScoringResult: - type: object - properties: - score_rows: - type: array - items: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - The scoring result for each row. Each row is a map of column name to value. - aggregated_results: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: Map of metric name to aggregated value - additionalProperties: false - required: - - score_rows - - aggregated_results - title: ScoringResult - description: A scoring result for a single row. - RunEvalRequest: - type: object - properties: - benchmark_config: - $ref: '#/components/schemas/BenchmarkConfig' - description: The configuration for the benchmark. - additionalProperties: false - required: - - benchmark_config - title: RunEvalRequest - Job: - type: object - properties: - job_id: - type: string - description: Unique identifier for the job - status: - type: string - enum: - - completed - - in_progress - - failed - - scheduled - - cancelled - description: Current execution status of the job - additionalProperties: false - required: - - job_id - - status - title: Job - description: >- - A job execution instance with status tracking. - "OpenAIChatCompletionContentPartImageParam": - type: object - properties: - type: - type: string - const: image_url - default: image_url - description: >- - Must be "image_url" to identify this as image content - image_url: - $ref: '#/components/schemas/OpenAIImageURL' - description: >- - Image URL specification and processing details - additionalProperties: false - required: - - type - - image_url - title: >- - OpenAIChatCompletionContentPartImageParam - description: >- - Image content part for OpenAI-compatible chat completion messages. - OpenAIChatCompletionContentPartTextParam: - type: object + description: 'A system message providing instructions or context to the model. + + + :param role: Must be "system" to identify this as a system message + + :param content: The content of the "system prompt". If multiple system messages + are provided, they are concatenated. The underlying Llama Stack code may also + add other system messages (for example, for formatting tool definitions).' + SystemMessageBehavior: + type: string + enum: + - append + - replace + title: SystemMessageBehavior + description: "Config for how to override the default system prompt.\n\n:cvar\ + \ append: Appends the provided system message to the default system prompt:\n\ + \ https://www.llama.com/docs/model-cards-and-prompt-formats/llama3_2/#-function-definitions-in-the-system-prompt-\n\ + :cvar replace: Replaces the default system prompt with the provided system\ + \ message. The system message can include the string\n '{{function_definitions}}'\ + \ to indicate where the function definitions should be inserted." + TextContentItem: properties: type: type: string const: text + title: Type default: text - description: >- - Must be "text" to identify this as text content text: type: string - description: The text content of the message - additionalProperties: false - required: - - type - - text - title: OpenAIChatCompletionContentPartTextParam - description: >- - Text content part for OpenAI-compatible chat completion messages. - OpenAIImageURL: + title: Text type: object - properties: - url: - type: string - description: >- - URL of the image to include in the message - detail: - type: string - description: >- - (Optional) Level of detail for image processing. Can be "low", "high", - or "auto" - additionalProperties: false required: - - url - title: OpenAIImageURL - description: >- - Image URL specification for OpenAI-compatible chat completion messages. - RerankRequest: - type: object + - text + title: TextContentItem + description: 'A text content item + + + :param type: Discriminator type of the content item. Always "text" + + :param text: Text content' + ToolChoice: + type: string + enum: + - auto + - required + - none + title: ToolChoice + description: 'Whether tool use is required or automatic. This is a hint to the + model which may not be followed. It depends on the Instruction Following capabilities + of the model. + + + :cvar auto: The model may use tools if it determines that is appropriate. + + :cvar required: The model must use tools. + + :cvar none: The model must not use tools.' + ToolConfig: properties: - model: - type: string - description: >- - The identifier of the reranking model to use. - query: - oneOf: - - type: string - - $ref: '#/components/schemas/OpenAIChatCompletionContentPartTextParam' - - $ref: '#/components/schemas/OpenAIChatCompletionContentPartImageParam' - description: >- - The search query to rank items against. Can be a string, text content - part, or image content part. The input must not exceed the model's max - input token length. - items: - type: array - items: - oneOf: - - type: string - - $ref: '#/components/schemas/OpenAIChatCompletionContentPartTextParam' - - $ref: '#/components/schemas/OpenAIChatCompletionContentPartImageParam' - description: >- - List of items to rerank. Each item can be a string, text content part, - or image content part. Each input must not exceed the model's max input - token length. - max_num_results: - type: integer - description: >- - (Optional) Maximum number of results to return. Default: returns all. - additionalProperties: false - required: - - model - - query - - items - title: RerankRequest - RerankData: + tool_choice: + anyOf: + - $ref: '#/components/schemas/ToolChoice' + - type: string + - type: 'null' + title: Tool Choice + default: auto + tool_prompt_format: + anyOf: + - $ref: '#/components/schemas/ToolPromptFormat' + - type: 'null' + system_message_behavior: + anyOf: + - $ref: '#/components/schemas/SystemMessageBehavior' + - type: 'null' + default: append type: object + title: ToolConfig + description: "Configuration for tool use.\n\n:param tool_choice: (Optional)\ + \ Whether tool use is automatic, required, or none. Can also specify a tool\ + \ name to use a specific tool. Defaults to ToolChoice.auto.\n:param tool_prompt_format:\ + \ (Optional) Instructs the model how to format tool calls. By default, Llama\ + \ Stack will attempt to use a format that is best adapted to the model.\n\ + \ - `ToolPromptFormat.json`: The tool calls are formatted as a JSON object.\n\ + \ - `ToolPromptFormat.function_tag`: The tool calls are enclosed in a \ + \ tag.\n - `ToolPromptFormat.python_list`: The tool calls are output as\ + \ Python syntax -- a list of function calls.\n:param system_message_behavior:\ + \ (Optional) Config for how to override the default system prompt.\n -\ + \ `SystemMessageBehavior.append`: Appends the provided system message to the\ + \ default system prompt.\n - `SystemMessageBehavior.replace`: Replaces\ + \ the default system prompt with the provided system message. The system message\ + \ can include the string\n '{{function_definitions}}' to indicate where\ + \ the function definitions should be inserted." + ToolDef: properties: - index: - type: integer - description: >- - The original index of the document in the input list - relevance_score: - type: number - description: >- - The relevance score from the model output. Values are inverted when applicable - so that higher scores indicate greater relevance. - additionalProperties: false - required: - - index - - relevance_score - title: RerankData - description: >- - A single rerank result from a reranking response. - RerankResponse: - type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/RerankData' - description: >- - List of rerank result objects, sorted by relevance score (descending) - additionalProperties: false - required: - - data - title: RerankResponse - description: Response from a reranking request. - Checkpoint: - type: object - properties: - identifier: + toolgroup_id: + anyOf: + - type: string + - type: 'null' + title: Toolgroup Id + name: type: string - description: Unique identifier for the checkpoint - created_at: - type: string - format: date-time - description: >- - Timestamp when the checkpoint was created - epoch: - type: integer - description: >- - Training epoch when the checkpoint was saved - post_training_job_id: - type: string - description: >- - Identifier of the training job that created this checkpoint - path: - type: string - description: >- - File system path where the checkpoint is stored - training_metrics: - $ref: '#/components/schemas/PostTrainingMetric' - description: >- - (Optional) Training metrics associated with this checkpoint - additionalProperties: false - required: - - identifier - - created_at - - epoch - - post_training_job_id - - path - title: Checkpoint - description: Checkpoint created during training runs. - PostTrainingJobArtifactsResponse: - type: object - properties: - job_uuid: - type: string - description: Unique identifier for the training job - checkpoints: - type: array - items: - $ref: '#/components/schemas/Checkpoint' - description: >- - List of model checkpoints created during training - additionalProperties: false - required: - - job_uuid - - checkpoints - title: PostTrainingJobArtifactsResponse - description: Artifacts of a finetuning job. - PostTrainingMetric: - type: object - properties: - epoch: - type: integer - description: Training epoch number - train_loss: - type: number - description: Loss value on the training dataset - validation_loss: - type: number - description: Loss value on the validation dataset - perplexity: - type: number - description: >- - Perplexity metric indicating model confidence - additionalProperties: false - required: - - epoch - - train_loss - - validation_loss - - perplexity - title: PostTrainingMetric - description: >- - Training metrics captured during post-training jobs. - CancelTrainingJobRequest: - type: object - properties: - job_uuid: - type: string - description: The UUID of the job to cancel. - additionalProperties: false - required: - - job_uuid - title: CancelTrainingJobRequest - PostTrainingJobStatusResponse: - type: object - properties: - job_uuid: - type: string - description: Unique identifier for the training job - status: - type: string - enum: - - completed - - in_progress - - failed - - scheduled - - cancelled - description: Current status of the training job - scheduled_at: - type: string - format: date-time - description: >- - (Optional) Timestamp when the job was scheduled - started_at: - type: string - format: date-time - description: >- - (Optional) Timestamp when the job execution began - completed_at: - type: string - format: date-time - description: >- - (Optional) Timestamp when the job finished, if completed - resources_allocated: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - (Optional) Information about computational resources allocated to the - job - checkpoints: - type: array - items: - $ref: '#/components/schemas/Checkpoint' - description: >- - List of model checkpoints created during training - additionalProperties: false - required: - - job_uuid - - status - - checkpoints - title: PostTrainingJobStatusResponse - description: Status of a finetuning job. - ListPostTrainingJobsResponse: - type: object - properties: - data: - type: array - items: + title: Name + description: + anyOf: + - type: string + - type: 'null' + title: Description + input_schema: + anyOf: + - additionalProperties: true type: object - properties: - job_uuid: - type: string - additionalProperties: false - required: - - job_uuid - title: PostTrainingJob - additionalProperties: false - required: - - data - title: ListPostTrainingJobsResponse - DPOAlignmentConfig: + - type: 'null' + title: Input Schema + output_schema: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Output Schema + metadata: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Metadata type: object - properties: - beta: - type: number - description: Temperature parameter for the DPO loss - loss_type: - $ref: '#/components/schemas/DPOLossType' - default: sigmoid - description: The type of loss function to use for DPO - additionalProperties: false required: - - beta - - loss_type - title: DPOAlignmentConfig - description: >- - Configuration for Direct Preference Optimization (DPO) alignment. - DPOLossType: + - name + title: ToolDef + description: 'Tool definition used in runtime contexts. + + + :param name: Name of the tool + + :param description: (Optional) Human-readable description of what the tool + does + + :param input_schema: (Optional) JSON Schema for tool inputs (MCP inputSchema) + + :param output_schema: (Optional) JSON Schema for tool outputs (MCP outputSchema) + + :param metadata: (Optional) Additional metadata about the tool + + :param toolgroup_id: (Optional) ID of the tool group this tool belongs to' + ToolPromptFormat: type: string enum: - - sigmoid - - hinge - - ipo - - kto_pair - title: DPOLossType - DataConfig: - type: object + - json + - function_tag + - python_list + title: ToolPromptFormat + description: "Prompt format for calling custom / zero shot tools.\n\n:cvar json:\ + \ JSON format for calling tools. It takes the form:\n {\n \"type\"\ + : \"function\",\n \"function\" : {\n \"name\": \"function_name\"\ + ,\n \"description\": \"function_description\",\n \"\ + parameters\": {...}\n }\n }\n:cvar function_tag: Function tag format,\ + \ pseudo-XML. This looks like:\n (parameters)\n\ + \n:cvar python_list: Python list. The output is a valid Python expression\ + \ that can be\n evaluated to a list. Each element in the list is a function\ + \ call. Example:\n [\"function_name(param1, param2)\", \"function_name(param1,\ + \ param2)\"]" + ToolResponse: properties: - dataset_id: + call_id: type: string - description: >- - Unique identifier for the training dataset - batch_size: - type: integer - description: Number of samples per training batch - shuffle: - type: boolean - description: >- - Whether to shuffle the dataset during training - data_format: - $ref: '#/components/schemas/DatasetFormat' - description: >- - Format of the dataset (instruct or dialog) - validation_dataset_id: + title: Call Id + tool_name: + anyOf: + - $ref: '#/components/schemas/BuiltinTool' + - type: string + title: Tool Name + content: + anyOf: + - type: string + - oneOf: + - $ref: '#/components/schemas/ImageContentItem' + - $ref: '#/components/schemas/TextContentItem' + discriminator: + propertyName: type + mapping: + image: '#/components/schemas/ImageContentItem' + text: '#/components/schemas/TextContentItem' + - items: + oneOf: + - $ref: '#/components/schemas/ImageContentItem' + - $ref: '#/components/schemas/TextContentItem' + discriminator: + propertyName: type + mapping: + image: '#/components/schemas/ImageContentItem' + text: '#/components/schemas/TextContentItem' + type: array + title: Content + metadata: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Metadata + type: object + required: + - call_id + - tool_name + - content + title: ToolResponse + description: 'Response from a tool invocation. + + + :param call_id: Unique identifier for the tool call this response is for + + :param tool_name: Name of the tool that was invoked + + :param content: The response content from the tool + + :param metadata: (Optional) Additional metadata about the tool response' + TopKSamplingStrategy: + properties: + type: type: string - description: >- - (Optional) Unique identifier for the validation dataset - packed: - type: boolean - default: false - description: >- - (Optional) Whether to pack multiple samples into a single sequence for - efficiency - train_on_input: - type: boolean - default: false - description: >- - (Optional) Whether to compute loss on input tokens as well as output tokens - additionalProperties: false - required: - - dataset_id - - batch_size - - shuffle - - data_format - title: DataConfig - description: >- - Configuration for training data and data loading. - DatasetFormat: - type: string - enum: - - instruct - - dialog - title: DatasetFormat - description: Format of the training dataset. - EfficiencyConfig: - type: object - properties: - enable_activation_checkpointing: - type: boolean - default: false - description: >- - (Optional) Whether to use activation checkpointing to reduce memory usage - enable_activation_offloading: - type: boolean - default: false - description: >- - (Optional) Whether to offload activations to CPU to save GPU memory - memory_efficient_fsdp_wrap: - type: boolean - default: false - description: >- - (Optional) Whether to use memory-efficient FSDP wrapping - fsdp_cpu_offload: - type: boolean - default: false - description: >- - (Optional) Whether to offload FSDP parameters to CPU - additionalProperties: false - title: EfficiencyConfig - description: >- - Configuration for memory and compute efficiency optimizations. - OptimizerConfig: - type: object - properties: - optimizer_type: - $ref: '#/components/schemas/OptimizerType' - description: >- - Type of optimizer to use (adam, adamw, or sgd) - lr: - type: number - description: Learning rate for the optimizer - weight_decay: - type: number - description: >- - Weight decay coefficient for regularization - num_warmup_steps: + const: top_k + title: Type + default: top_k + top_k: type: integer - description: Number of steps for learning rate warmup - additionalProperties: false + minimum: 1.0 + title: Top K + type: object required: - - optimizer_type - - lr - - weight_decay - - num_warmup_steps - title: OptimizerConfig - description: >- - Configuration parameters for the optimization algorithm. - OptimizerType: - type: string - enum: - - adam - - adamw - - sgd - title: OptimizerType - description: >- - Available optimizer algorithms for training. + - top_k + title: TopKSamplingStrategy + description: 'Top-k sampling strategy that restricts sampling to the k most + likely tokens. + + + :param type: Must be "top_k" to identify this sampling strategy + + :param top_k: Number of top tokens to consider for sampling. Must be at least + 1' + TopPSamplingStrategy: + properties: + type: + type: string + const: top_p + title: Type + default: top_p + temperature: + anyOf: + - type: number + minimum: 0.0 + - type: 'null' + title: Temperature + top_p: + anyOf: + - type: number + - type: 'null' + title: Top P + default: 0.95 + type: object + required: + - temperature + title: TopPSamplingStrategy + description: 'Top-p (nucleus) sampling strategy that samples from the smallest + set of tokens with cumulative probability >= p. + + + :param type: Must be "top_p" to identify this sampling strategy + + :param temperature: Controls randomness in sampling. Higher values increase + randomness + + :param top_p: Cumulative probability threshold for nucleus sampling. Defaults + to 0.95' TrainingConfig: - type: object properties: n_epochs: type: integer - description: Number of training epochs to run + title: N Epochs max_steps_per_epoch: type: integer + title: Max Steps Per Epoch default: 1 - description: Maximum number of steps to run per epoch gradient_accumulation_steps: type: integer + title: Gradient Accumulation Steps default: 1 - description: >- - Number of steps to accumulate gradients before updating max_validation_steps: - type: integer + anyOf: + - type: integer + - type: 'null' + title: Max Validation Steps default: 1 - description: >- - (Optional) Maximum number of validation steps per epoch data_config: - $ref: '#/components/schemas/DataConfig' - description: >- - (Optional) Configuration for data loading and formatting + anyOf: + - $ref: '#/components/schemas/DataConfig' + - type: 'null' optimizer_config: - $ref: '#/components/schemas/OptimizerConfig' - description: >- - (Optional) Configuration for the optimization algorithm + anyOf: + - $ref: '#/components/schemas/OptimizerConfig' + - type: 'null' efficiency_config: - $ref: '#/components/schemas/EfficiencyConfig' - description: >- - (Optional) Configuration for memory and compute optimizations + anyOf: + - $ref: '#/components/schemas/EfficiencyConfig' + - type: 'null' dtype: - type: string + anyOf: + - type: string + - type: 'null' + title: Dtype default: bf16 - description: >- - (Optional) Data type for model parameters (bf16, fp16, fp32) - additionalProperties: false + type: object required: - - n_epochs - - max_steps_per_epoch - - gradient_accumulation_steps + - n_epochs title: TrainingConfig - description: >- - Comprehensive configuration for the training process. - PreferenceOptimizeRequest: - type: object - properties: - job_uuid: - type: string - description: The UUID of the job to create. - finetuned_model: - type: string - description: The model to fine-tune. - algorithm_config: - $ref: '#/components/schemas/DPOAlignmentConfig' - description: The algorithm configuration. - training_config: - $ref: '#/components/schemas/TrainingConfig' - description: The training configuration. - hyperparam_search_config: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: The hyperparam search configuration. - logger_config: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: The logger configuration. - additionalProperties: false - required: - - job_uuid - - finetuned_model - - algorithm_config - - training_config - - hyperparam_search_config - - logger_config - title: PreferenceOptimizeRequest - PostTrainingJob: - type: object - properties: - job_uuid: - type: string - additionalProperties: false - required: - - job_uuid - title: PostTrainingJob - AlgorithmConfig: - oneOf: - - $ref: '#/components/schemas/LoraFinetuningConfig' - - $ref: '#/components/schemas/QATFinetuningConfig' - discriminator: - propertyName: type - mapping: - LoRA: '#/components/schemas/LoraFinetuningConfig' - QAT: '#/components/schemas/QATFinetuningConfig' - LoraFinetuningConfig: - type: object + description: 'Comprehensive configuration for the training process. + + + :param n_epochs: Number of training epochs to run + + :param max_steps_per_epoch: Maximum number of steps to run per epoch + + :param gradient_accumulation_steps: Number of steps to accumulate gradients + before updating + + :param max_validation_steps: (Optional) Maximum number of validation steps + per epoch + + :param data_config: (Optional) Configuration for data loading and formatting + + :param optimizer_config: (Optional) Configuration for the optimization algorithm + + :param efficiency_config: (Optional) Configuration for memory and compute + optimizations + + :param dtype: (Optional) Data type for model parameters (bf16, fp16, fp32)' + URIDataSource: properties: type: type: string - const: LoRA - default: LoRA - description: Algorithm type identifier, always "LoRA" - lora_attn_modules: - type: array - items: - type: string - description: >- - List of attention module names to apply LoRA to - apply_lora_to_mlp: - type: boolean - description: Whether to apply LoRA to MLP layers - apply_lora_to_output: - type: boolean - description: >- - Whether to apply LoRA to output projection layers - rank: - type: integer - description: >- - Rank of the LoRA adaptation (lower rank = fewer parameters) - alpha: - type: integer - description: >- - LoRA scaling parameter that controls adaptation strength - use_dora: - type: boolean - default: false - description: >- - (Optional) Whether to use DoRA (Weight-Decomposed Low-Rank Adaptation) - quantize_base: - type: boolean - default: false - description: >- - (Optional) Whether to quantize the base model weights - additionalProperties: false - required: - - type - - lora_attn_modules - - apply_lora_to_mlp - - apply_lora_to_output - - rank - - alpha - title: LoraFinetuningConfig - description: >- - Configuration for Low-Rank Adaptation (LoRA) fine-tuning. - QATFinetuningConfig: + const: uri + title: Type + default: uri + uri: + type: string + title: Uri type: object - properties: - type: - type: string - const: QAT - default: QAT - description: Algorithm type identifier, always "QAT" - quantizer_name: - type: string - description: >- - Name of the quantization algorithm to use - group_size: - type: integer - description: Size of groups for grouped quantization - additionalProperties: false required: - - type - - quantizer_name - - group_size - title: QATFinetuningConfig - description: >- - Configuration for Quantization-Aware Training (QAT) fine-tuning. - SupervisedFineTuneRequest: + - uri + title: URIDataSource + description: "A dataset that can be obtained from a URI.\n:param uri: The dataset\ + \ can be obtained from a URI. E.g.\n - \"https://mywebsite.com/mydata.jsonl\"\ + \n - \"lsfs://mydata.jsonl\"\n - \"data:csv;base64,{base64_content}\"" + URL: + properties: + uri: + type: string + title: Uri type: object - properties: - job_uuid: - type: string - description: The UUID of the job to create. - training_config: - $ref: '#/components/schemas/TrainingConfig' - description: The training configuration. - hyperparam_search_config: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: The hyperparam search configuration. - logger_config: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: The logger configuration. - model: - type: string - description: The model to fine-tune. - checkpoint_dir: - type: string - description: The directory to save checkpoint(s) to. - algorithm_config: - $ref: '#/components/schemas/AlgorithmConfig' - description: The algorithm configuration. - additionalProperties: false required: - - job_uuid - - training_config - - hyperparam_search_config - - logger_config - title: SupervisedFineTuneRequest + - uri + title: URL + description: 'A URL reference to external content. + + + :param uri: The URL string pointing to the resource' + UserMessage: + properties: + role: + type: string + const: user + title: Role + default: user + content: + anyOf: + - type: string + - oneOf: + - $ref: '#/components/schemas/ImageContentItem' + - $ref: '#/components/schemas/TextContentItem' + discriminator: + propertyName: type + mapping: + image: '#/components/schemas/ImageContentItem' + text: '#/components/schemas/TextContentItem' + - items: + oneOf: + - $ref: '#/components/schemas/ImageContentItem' + - $ref: '#/components/schemas/TextContentItem' + discriminator: + propertyName: type + mapping: + image: '#/components/schemas/ImageContentItem' + text: '#/components/schemas/TextContentItem' + type: array + title: Content + context: + anyOf: + - type: string + - oneOf: + - $ref: '#/components/schemas/ImageContentItem' + - $ref: '#/components/schemas/TextContentItem' + discriminator: + propertyName: type + mapping: + image: '#/components/schemas/ImageContentItem' + text: '#/components/schemas/TextContentItem' + - items: + oneOf: + - $ref: '#/components/schemas/ImageContentItem' + - $ref: '#/components/schemas/TextContentItem' + discriminator: + propertyName: type + mapping: + image: '#/components/schemas/ImageContentItem' + text: '#/components/schemas/TextContentItem' + type: array + - type: 'null' + title: Context + type: object + required: + - content + title: UserMessage + description: 'A message from the user in a chat conversation. + + + :param role: Must be "user" to identify this as a user message + + :param content: The content of the message, which can include text and other + media + + :param context: (Optional) This field is used internally by Llama Stack to + pass RAG context. This field may be removed in the API in the future.' + _URLOrData: + properties: + url: + anyOf: + - $ref: '#/components/schemas/URL' + - type: 'null' + data: + anyOf: + - type: string + - type: 'null' + contentEncoding: base64 + title: Data + type: object + title: _URLOrData + description: 'A URL or a base64 encoded string + + + :param url: A URL of the image or data URL in the format of data:image/{type};base64,{data}. + Note that URL could have length limits. + + :param data: base64 encoded image data as string' + Error: + description: 'Error response from the API. Roughly follows RFC 7807. + + + :param status: HTTP status code + + :param title: Error title, a short summary of the error which is invariant + for an error type + + :param detail: Error detail, a longer human-readable description of the error + + :param instance: (Optional) A URL which can be used to retrieve more information + about the specific occurrence of the error' + properties: + status: + title: Status + type: integer + title: + title: Title + type: string + detail: + title: Detail + type: string + instance: + anyOf: + - type: string + - type: 'null' + default: null + title: Instance + required: + - status + - title + - detail + title: Error + type: object responses: BadRequest400: description: The request was invalid or malformed @@ -4028,8 +2790,7 @@ components: title: Bad Request detail: The request was invalid or malformed TooManyRequests429: - description: >- - The client has sent too many requests in a given amount of time + description: The client has sent too many requests in a given amount of time content: application/json: schema: @@ -4037,11 +2798,9 @@ components: example: status: 429 title: Too Many Requests - detail: >- - You have exceeded the rate limit. Please try again later. + detail: You have exceeded the rate limit. Please try again later. InternalServerError500: - description: >- - The server encountered an unexpected error + description: The server encountered an unexpected error content: application/json: schema: @@ -4049,86 +2808,10 @@ components: example: status: 500 title: Internal Server Error - detail: >- - An unexpected error occurred. Our team has been notified. + detail: An unexpected error occurred DefaultError: - description: An unexpected error occurred + description: An error occurred content: application/json: schema: $ref: '#/components/schemas/Error' - example: - status: 0 - title: Error - detail: An unexpected error occurred -security: - - Default: [] -tags: - - name: Agents - description: >- - APIs for creating and interacting with agentic systems. - - - ## Agents API (Experimental) - - - > **🧪 EXPERIMENTAL**: This API is in preview and may change based on user feedback. - Great for exploring new capabilities and providing feedback to influence the - final design. - - - Main functionalities provided by this API: - - - - Create agents with specific instructions and ability to use tools. - - - Interactions with agents are grouped into sessions ("threads"), and each interaction - is called a "turn". - - - Agents can be provided with various tools (see the ToolGroups and ToolRuntime - APIs for more details). - - - Agents can be provided with various shields (see the Safety API for more details). - - - Agents can also use Memory to retrieve information from knowledge bases. See - the RAG Tool and Vector IO APIs for more details. - - - ### 🧪 Feedback Welcome - - - This API is actively being developed. We welcome feedback on: - - - API design and usability - - - Performance characteristics - - - Missing features or capabilities - - - Integration patterns - - - **Provide Feedback**: [GitHub Discussions](https://github.com/llamastack/llama-stack/discussions) - or [GitHub Issues](https://github.com/llamastack/llama-stack/issues) - x-displayName: Agents - - name: Benchmarks - description: '' - - name: DatasetIO - description: '' - - name: Datasets - description: '' - - name: Eval - description: >- - Llama Stack Evaluation API for running evaluations on model and agent candidates. - x-displayName: Evaluations - - name: PostTraining (Coming Soon) - description: '' -x-tagGroups: - - name: Operations - tags: - - Agents - - Benchmarks - - DatasetIO - - Datasets - - Eval - - PostTraining (Coming Soon) diff --git a/docs/static/llama-stack-spec.html b/docs/static/llama-stack-spec.html deleted file mode 100644 index 514bff145..000000000 --- a/docs/static/llama-stack-spec.html +++ /dev/null @@ -1,13724 +0,0 @@ - - - - - - - OpenAPI specification - - - - - - - - - - - - - diff --git a/docs/static/llama-stack-spec.yaml b/docs/static/llama-stack-spec.yaml index 2e87550ed..16e00b829 100644 --- a/docs/static/llama-stack-spec.yaml +++ b/docs/static/llama-stack-spec.yaml @@ -1,19 +1,35 @@ openapi: 3.1.0 info: - title: Llama Stack Specification - version: v1 - description: >- - This is the specification of the Llama Stack that provides - a set of endpoints and their corresponding interfaces that are - tailored to - best leverage Llama Models. - - **✅ STABLE**: Production-ready APIs with backward compatibility guarantees. + title: Llama Stack API + description: A comprehensive API for building and deploying AI applications + version: 1.0.0 servers: - - url: http://any-hosted-llama-stack.com +- url: https://api.llamastack.com + description: Production server +- url: https://staging-api.llamastack.com + description: Staging server paths: /v1/batches: get: + tags: + - V1 + summary: List Batches + description: Query endpoint for proper schema generation. + operationId: list_batches_v1_batches_get + parameters: + - name: after + in: query + required: false + schema: + type: string + title: After + - name: limit + in: query + required: false + schema: + type: integer + default: 20 + title: Limit responses: '200': description: A list of batch objects. @@ -23,35 +39,53 @@ paths: $ref: '#/components/schemas/ListBatchesResponse' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Batches - summary: List all batches for the current user. - description: List all batches for the current user. - parameters: - - name: after - in: query - description: >- - A cursor for pagination; returns batches after this batch ID. - required: false - schema: - type: string - - name: limit - in: query - description: >- - Number of batches to return (default 20, max 100). - required: true - schema: - type: integer - deprecated: false + description: Default Response post: + tags: + - V1 + summary: Create Batch + description: Query endpoint for proper schema generation. + operationId: create_batch_v1_batches_post + parameters: + - name: input_file_id + in: query + required: false + schema: + type: string + title: Input File Id + - name: endpoint + in: query + required: false + schema: + type: string + title: Endpoint + - name: completion_window + in: query + required: false + schema: + type: string + title: Completion Window + - name: metadata + in: query + required: false + schema: + type: string + title: Metadata + - name: idempotency_key + in: query + required: false + schema: + type: string + title: Idempotency Key responses: '200': description: The created batch object. @@ -61,30 +95,30 @@ paths: $ref: '#/components/schemas/Batch' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Batches - summary: >- - Create a new batch for processing multiple API requests. - description: >- - Create a new batch for processing multiple API requests. - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateBatchRequest' - required: true - deprecated: false + description: Default Response /v1/batches/{batch_id}: get: + tags: + - V1 + summary: Retrieve Batch + description: Query endpoint for proper schema generation. + operationId: retrieve_batch_v1_batches__batch_id__get + parameters: + - name: batch_id + in: path + required: true + schema: + type: string + title: Batch Id responses: '200': description: The batch object. @@ -94,30 +128,30 @@ paths: $ref: '#/components/schemas/Batch' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Batches - summary: >- - Retrieve information about a specific batch. - description: >- - Retrieve information about a specific batch. - parameters: - - name: batch_id - in: path - description: The ID of the batch to retrieve. - required: true - schema: - type: string - deprecated: false + description: Default Response /v1/batches/{batch_id}/cancel: post: + tags: + - V1 + summary: Cancel Batch + description: Query endpoint for proper schema generation. + operationId: cancel_batch_v1_batches__batch_id__cancel_post + parameters: + - name: batch_id + in: path + required: true + schema: + type: string + title: Batch Id responses: '200': description: The updated batch object. @@ -127,28 +161,49 @@ paths: $ref: '#/components/schemas/Batch' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Batches - summary: Cancel a batch that is in progress. - description: Cancel a batch that is in progress. - parameters: - - name: batch_id - in: path - description: The ID of the batch to cancel. - required: true - schema: - type: string - deprecated: false + description: Default Response /v1/chat/completions: get: + tags: + - V1 + summary: List Chat Completions + description: Query endpoint for proper schema generation. + operationId: list_chat_completions_v1_chat_completions_get + parameters: + - name: after + in: query + required: false + schema: + type: string + title: After + - name: limit + in: query + required: false + schema: + type: integer + default: 20 + title: Limit + - name: model + in: query + required: false + schema: + type: string + title: Model + - name: order + in: query + required: false + schema: + $ref: '#/components/schemas/Order' + default: desc responses: '200': description: A ListOpenAIChatCompletionResponse. @@ -158,86 +213,61 @@ paths: $ref: '#/components/schemas/ListOpenAIChatCompletionResponse' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Inference - summary: List chat completions. - description: List chat completions. - parameters: - - name: after - in: query - description: >- - The ID of the last chat completion to return. - required: false - schema: - type: string - - name: limit - in: query - description: >- - The maximum number of chat completions to return. - required: false - schema: - type: integer - - name: model - in: query - description: The model to filter by. - required: false - schema: - type: string - - name: order - in: query - description: >- - The order to sort the chat completions by: "asc" or "desc". Defaults to - "desc". - required: false - schema: - $ref: '#/components/schemas/Order' - deprecated: false + description: Default Response post: + tags: + - V1 + summary: Openai Chat Completion + description: Typed endpoint for proper schema generation. + operationId: openai_chat_completion_v1_chat_completions_post + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/OpenAIChatCompletionRequestWithExtraBody' responses: '200': description: An OpenAIChatCompletion. content: application/json: schema: - oneOf: - - $ref: '#/components/schemas/OpenAIChatCompletion' - - $ref: '#/components/schemas/OpenAIChatCompletionChunk' + $ref: '#/components/schemas/OpenAIChatCompletion' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Inference - summary: Create chat completions. - description: >- - Create chat completions. - - Generate an OpenAI-compatible chat completion for the given messages using - the specified model. - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/OpenAIChatCompletionRequestWithExtraBody' - required: true - deprecated: false + description: Default Response /v1/chat/completions/{completion_id}: get: + tags: + - V1 + summary: Get Chat Completion + description: Query endpoint for proper schema generation. + operationId: get_chat_completion_v1_chat_completions__completion_id__get + parameters: + - name: completion_id + in: path + required: true + schema: + type: string + title: Completion Id responses: '200': description: A OpenAICompletionWithInputMessages. @@ -247,31 +277,29 @@ paths: $ref: '#/components/schemas/OpenAICompletionWithInputMessages' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Inference - summary: Get chat completion. - description: >- - Get chat completion. - - Describe a chat completion by its ID. - parameters: - - name: completion_id - in: path - description: ID of the chat completion. - required: true - schema: - type: string - deprecated: false + description: Default Response /v1/completions: post: + tags: + - V1 + summary: Openai Completion + description: Typed endpoint for proper schema generation. + operationId: openai_completion_v1_completions_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/OpenAICompletionRequestWithExtraBody' + required: true responses: '200': description: An OpenAICompletion. @@ -280,33 +308,58 @@ paths: schema: $ref: '#/components/schemas/OpenAICompletion' '400': + description: Bad Request $ref: '#/components/responses/BadRequest400' '429': - $ref: >- - #/components/responses/TooManyRequests429 + description: Too Many Requests + $ref: '#/components/responses/TooManyRequests429' '500': - $ref: >- - #/components/responses/InternalServerError500 + description: Internal Server Error + $ref: '#/components/responses/InternalServerError500' default: + description: Default Response $ref: '#/components/responses/DefaultError' + /v1/conversations: + post: tags: - - Inference - summary: Create completion. - description: >- - Create completion. - - Generate an OpenAI-compatible completion for the given prompt using the specified - model. - parameters: [] + - V1 + summary: Create Conversation + description: Query endpoint for proper schema generation. + operationId: create_conversation_v1_conversations_post + parameters: + - name: metadata + in: query + required: false + schema: + type: string + title: Metadata requestBody: content: application/json: schema: - $ref: '#/components/schemas/OpenAICompletionRequestWithExtraBody' - required: true - deprecated: false - /v1/conversations: - post: + oneOf: + - $ref: '#/components/schemas/OpenAIResponseMessage' + - $ref: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' + - $ref: '#/components/schemas/OpenAIResponseOutputMessageFileSearchToolCall' + - $ref: '#/components/schemas/OpenAIResponseOutputMessageFunctionToolCall' + - $ref: '#/components/schemas/OpenAIResponseInputFunctionToolCallOutput' + - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' + - $ref: '#/components/schemas/OpenAIResponseMCPApprovalResponse' + - $ref: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' + - $ref: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' + discriminator: + propertyName: type + mapping: + message: '#/components/schemas/OpenAIResponseMessage' + web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' + file_search_call: '#/components/schemas/OpenAIResponseOutputMessageFileSearchToolCall' + function_call: '#/components/schemas/OpenAIResponseOutputMessageFunctionToolCall' + function_call_output: '#/components/schemas/OpenAIResponseInputFunctionToolCallOutput' + mcp_approval_request: '#/components/schemas/OpenAIResponseMCPApprovalRequest' + mcp_approval_response: '#/components/schemas/OpenAIResponseMCPApprovalResponse' + mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' + mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' + title: Items responses: '200': description: The created conversation object. @@ -316,103 +369,30 @@ paths: $ref: '#/components/schemas/Conversation' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Conversations - summary: Create a conversation. - description: >- - Create a conversation. - - Create a conversation. - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreateConversationRequest' - required: true - deprecated: false + description: Default Response /v1/conversations/{conversation_id}: - get: - responses: - '200': - description: The conversation object. - content: - application/json: - schema: - $ref: '#/components/schemas/Conversation' - '400': - $ref: '#/components/responses/BadRequest400' - '429': - $ref: >- - #/components/responses/TooManyRequests429 - '500': - $ref: >- - #/components/responses/InternalServerError500 - default: - $ref: '#/components/responses/DefaultError' - tags: - - Conversations - summary: Retrieve a conversation. - description: >- - Retrieve a conversation. - - Get a conversation with the given ID. - parameters: - - name: conversation_id - in: path - description: The conversation identifier. - required: true - schema: - type: string - deprecated: false - post: - responses: - '200': - description: The updated conversation object. - content: - application/json: - schema: - $ref: '#/components/schemas/Conversation' - '400': - $ref: '#/components/responses/BadRequest400' - '429': - $ref: >- - #/components/responses/TooManyRequests429 - '500': - $ref: >- - #/components/responses/InternalServerError500 - default: - $ref: '#/components/responses/DefaultError' - tags: - - Conversations - summary: Update a conversation. - description: >- - Update a conversation. - - Update a conversation's metadata with the given ID. - parameters: - - name: conversation_id - in: path - description: The conversation identifier. - required: true - schema: - type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateConversationRequest' - required: true - deprecated: false delete: + tags: + - V1 + summary: Openai Delete Conversation + description: Query endpoint for proper schema generation. + operationId: openai_delete_conversation_v1_conversations__conversation_id__delete + parameters: + - name: conversation_id + in: path + required: true + schema: + type: string + title: Conversation Id responses: '200': description: The deleted conversation resource. @@ -422,31 +402,123 @@ paths: $ref: '#/components/schemas/ConversationDeletedResource' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' + description: Default Response + get: tags: - - Conversations - summary: Delete a conversation. - description: >- - Delete a conversation. - - Delete a conversation with the given ID. + - V1 + summary: Get Conversation + description: Query endpoint for proper schema generation. + operationId: get_conversation_v1_conversations__conversation_id__get parameters: - - name: conversation_id - in: path - description: The conversation identifier. - required: true - schema: - type: string - deprecated: false + - name: conversation_id + in: path + required: true + schema: + type: string + title: Conversation Id + responses: + '200': + description: The conversation object. + content: + application/json: + schema: + $ref: '#/components/schemas/Conversation' + '400': + $ref: '#/components/responses/BadRequest400' + description: Bad Request + '429': + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests + '500': + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error + default: + $ref: '#/components/responses/DefaultError' + description: Default Response + post: + tags: + - V1 + summary: Update Conversation + description: Query endpoint for proper schema generation. + operationId: update_conversation_v1_conversations__conversation_id__post + parameters: + - name: conversation_id + in: path + required: true + schema: + type: string + title: Conversation Id + - name: metadata + in: query + required: false + schema: + type: string + title: Metadata + responses: + '200': + description: The updated conversation object. + content: + application/json: + schema: + $ref: '#/components/schemas/Conversation' + '400': + $ref: '#/components/responses/BadRequest400' + description: Bad Request + '429': + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests + '500': + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error + default: + $ref: '#/components/responses/DefaultError' + description: Default Response /v1/conversations/{conversation_id}/items: get: + tags: + - V1 + summary: List Items + description: Query endpoint for proper schema generation. + operationId: list_items_v1_conversations__conversation_id__items_get + parameters: + - name: conversation_id + in: path + required: true + schema: + type: string + title: Conversation Id + - name: after + in: query + required: false + schema: + type: string + title: After + - name: include + in: query + required: false + schema: + $ref: '#/components/schemas/ConversationItemInclude' + - name: limit + in: query + required: false + schema: + type: integer + title: Limit + - name: order + in: query + required: false + schema: + type: string + title: Order responses: '200': description: List of conversation items. @@ -456,74 +528,44 @@ paths: $ref: '#/components/schemas/ConversationItemList' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Conversations - summary: List items. - description: >- - List items. - - List items in the conversation. - parameters: - - name: conversation_id - in: path - description: The conversation identifier. - required: true - schema: - type: string - - name: after - in: query - description: >- - An item ID to list items after, used in pagination. - required: false - schema: - type: string - - name: include - in: query - description: >- - Specify additional output data to include in the response. - required: false - schema: - type: array - items: - type: string - enum: - - web_search_call.action.sources - - code_interpreter_call.outputs - - computer_call_output.output.image_url - - file_search_call.results - - message.input_image.image_url - - message.output_text.logprobs - - reasoning.encrypted_content - title: ConversationItemInclude - description: >- - Specify additional output data to include in the model response. - - name: limit - in: query - description: >- - A limit on the number of objects to be returned (1-100, default 20). - required: false - schema: - type: integer - - name: order - in: query - description: >- - The order to return items in (asc or desc, default desc). - required: false - schema: - type: string - enum: - - asc - - desc - deprecated: false + description: Default Response post: + tags: + - V1 + summary: Add Items + description: Query endpoint for proper schema generation. + operationId: add_items_v1_conversations__conversation_id__items_post + parameters: + - name: conversation_id + in: path + required: true + schema: + type: string + title: Conversation Id + requestBody: + content: + application/json: + schema: + anyOf: + - $ref: '#/components/schemas/OpenAIResponseMessage' + - $ref: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' + - $ref: '#/components/schemas/OpenAIResponseOutputMessageFileSearchToolCall' + - $ref: '#/components/schemas/OpenAIResponseOutputMessageFunctionToolCall' + - $ref: '#/components/schemas/OpenAIResponseInputFunctionToolCallOutput' + - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' + - $ref: '#/components/schemas/OpenAIResponseMCPApprovalResponse' + - $ref: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' + - $ref: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' + title: Items responses: '200': description: List of created items. @@ -533,76 +575,36 @@ paths: $ref: '#/components/schemas/ConversationItemList' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Conversations - summary: Create items. - description: >- - Create items. - - Create items in the conversation. - parameters: - - name: conversation_id - in: path - description: The conversation identifier. - required: true - schema: - type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/AddItemsRequest' - required: true - deprecated: false + description: Default Response /v1/conversations/{conversation_id}/items/{item_id}: - get: - responses: - '200': - description: The conversation item. - content: - application/json: - schema: - $ref: '#/components/schemas/ConversationItem' - '400': - $ref: '#/components/responses/BadRequest400' - '429': - $ref: >- - #/components/responses/TooManyRequests429 - '500': - $ref: >- - #/components/responses/InternalServerError500 - default: - $ref: '#/components/responses/DefaultError' - tags: - - Conversations - summary: Retrieve an item. - description: >- - Retrieve an item. - - Retrieve a conversation item. - parameters: - - name: conversation_id - in: path - description: The conversation identifier. - required: true - schema: - type: string - - name: item_id - in: path - description: The item identifier. - required: true - schema: - type: string - deprecated: false delete: + tags: + - V1 + summary: Openai Delete Conversation Item + description: Query endpoint for proper schema generation. + operationId: openai_delete_conversation_item_v1_conversations__conversation_id__items__item_id__delete + parameters: + - name: conversation_id + in: path + required: true + schema: + type: string + title: Conversation Id + - name: item_id + in: path + required: true + schema: + type: string + title: Item Id responses: '200': description: The deleted item resource. @@ -612,339 +614,311 @@ paths: $ref: '#/components/schemas/ConversationItemDeletedResource' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' + description: Default Response + get: tags: - - Conversations - summary: Delete an item. - description: >- - Delete an item. - - Delete a conversation item. + - V1 + summary: Retrieve + description: Generic endpoint - this would be replaced with actual implementation. + operationId: retrieve_v1_conversations__conversation_id__items__item_id__get parameters: - - name: conversation_id - in: path - description: The conversation identifier. - required: true - schema: - type: string - - name: item_id - in: path - description: The item identifier. - required: true - schema: - type: string - deprecated: false - /v1/embeddings: - post: + - name: args + in: query + required: true + schema: + title: Args + - name: kwargs + in: query + required: true + schema: + title: Kwargs responses: '200': - description: >- - An OpenAIEmbeddingsResponse containing the embeddings. + description: The conversation item. content: application/json: - schema: - $ref: '#/components/schemas/OpenAIEmbeddingsResponse' + schema: {} '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' + description: Default Response + /v1/embeddings: + post: tags: - - Inference - summary: Create embeddings. - description: >- - Create embeddings. - - Generate OpenAI-compatible embeddings for the given input using the specified - model. - parameters: [] + - V1 + summary: Openai Embeddings + description: Typed endpoint for proper schema generation. + operationId: openai_embeddings_v1_embeddings_post requestBody: content: application/json: schema: $ref: '#/components/schemas/OpenAIEmbeddingsRequestWithExtraBody' required: true - deprecated: false - /v1/files: - get: responses: '200': - description: >- - An ListOpenAIFileResponse containing the list of files. + description: An OpenAIEmbeddingsResponse containing the embeddings. + content: + application/json: + schema: + $ref: '#/components/schemas/OpenAIEmbeddingsResponse' + '400': + description: Bad Request + $ref: '#/components/responses/BadRequest400' + '429': + description: Too Many Requests + $ref: '#/components/responses/TooManyRequests429' + '500': + description: Internal Server Error + $ref: '#/components/responses/InternalServerError500' + default: + description: Default Response + $ref: '#/components/responses/DefaultError' + /v1/files: + get: + tags: + - V1 + summary: Openai List Files + description: Query endpoint for proper schema generation. + operationId: openai_list_files_v1_files_get + parameters: + - name: after + in: query + required: false + schema: + type: string + title: After + - name: limit + in: query + required: false + schema: + type: integer + default: 10000 + title: Limit + - name: order + in: query + required: false + schema: + $ref: '#/components/schemas/Order' + default: desc + - name: purpose + in: query + required: false + schema: + $ref: '#/components/schemas/OpenAIFilePurpose' + responses: + '200': + description: An ListOpenAIFileResponse containing the list of files. content: application/json: schema: $ref: '#/components/schemas/ListOpenAIFileResponse' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Files - summary: List files. - description: >- - List files. - - Returns a list of files that belong to the user's organization. - parameters: - - name: after - in: query - description: >- - A cursor for use in pagination. `after` is an object ID that defines your - place in the list. For instance, if you make a list request and receive - 100 objects, ending with obj_foo, your subsequent call can include after=obj_foo - in order to fetch the next page of the list. - required: false - schema: - type: string - - name: limit - in: query - description: >- - A limit on the number of objects to be returned. Limit can range between - 1 and 10,000, and the default is 10,000. - required: false - schema: - type: integer - - name: order - in: query - description: >- - Sort order by the `created_at` timestamp of the objects. `asc` for ascending - order and `desc` for descending order. - required: false - schema: - $ref: '#/components/schemas/Order' - - name: purpose - in: query - description: >- - Only return files with the given purpose. - required: false - schema: - $ref: '#/components/schemas/OpenAIFilePurpose' - deprecated: false + description: Default Response post: + tags: + - V1 + summary: Openai Upload File + description: Response-only endpoint for proper schema generation. + operationId: openai_upload_file_v1_files_post responses: '200': - description: >- - An OpenAIFileObject representing the uploaded file. + description: An OpenAIFileObject representing the uploaded file. content: application/json: schema: $ref: '#/components/schemas/OpenAIFileObject' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Files - summary: Upload file. - description: >- - Upload file. - - Upload a file that can be used across various endpoints. - - - The file upload should be a multipart form request with: - - - file: The File object (not file name) to be uploaded. - - - purpose: The intended purpose of the uploaded file. - - - expires_after: Optional form values describing expiration for the file. - parameters: [] - requestBody: - content: - multipart/form-data: - schema: - type: object - properties: - file: - type: string - format: binary - purpose: - $ref: '#/components/schemas/OpenAIFilePurpose' - expires_after: - $ref: '#/components/schemas/ExpiresAfter' - required: - - file - - purpose - required: true - deprecated: false + description: Default Response /v1/files/{file_id}: - get: - responses: - '200': - description: >- - An OpenAIFileObject containing file information. - content: - application/json: - schema: - $ref: '#/components/schemas/OpenAIFileObject' - '400': - $ref: '#/components/responses/BadRequest400' - '429': - $ref: >- - #/components/responses/TooManyRequests429 - '500': - $ref: >- - #/components/responses/InternalServerError500 - default: - $ref: '#/components/responses/DefaultError' - tags: - - Files - summary: Retrieve file. - description: >- - Retrieve file. - - Returns information about a specific file. - parameters: - - name: file_id - in: path - description: >- - The ID of the file to use for this request. - required: true - schema: - type: string - deprecated: false delete: + tags: + - V1 + summary: Openai Delete File + description: Query endpoint for proper schema generation. + operationId: openai_delete_file_v1_files__file_id__delete + parameters: + - name: file_id + in: path + required: true + schema: + type: string + title: File Id responses: '200': - description: >- - An OpenAIFileDeleteResponse indicating successful deletion. + description: An OpenAIFileDeleteResponse indicating successful deletion. content: application/json: schema: $ref: '#/components/schemas/OpenAIFileDeleteResponse' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Files - summary: Delete file. - description: Delete file. - parameters: - - name: file_id - in: path - description: >- - The ID of the file to use for this request. - required: true - schema: - type: string - deprecated: false - /v1/files/{file_id}/content: + description: Default Response get: + tags: + - V1 + summary: Openai Retrieve File + description: Query endpoint for proper schema generation. + operationId: openai_retrieve_file_v1_files__file_id__get + parameters: + - name: file_id + in: path + required: true + schema: + type: string + title: File Id responses: '200': - description: >- - The raw file content as a binary response. + description: An OpenAIFileObject containing file information. content: application/json: schema: - $ref: '#/components/schemas/Response' + $ref: '#/components/schemas/OpenAIFileObject' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Files - summary: Retrieve file content. - description: >- - Retrieve file content. - - Returns the contents of the specified file. - parameters: - - name: file_id - in: path - description: >- - The ID of the file to use for this request. - required: true - schema: - type: string - deprecated: false - /v1/health: + description: Default Response + /v1/files/{file_id}/content: get: + tags: + - V1 + summary: Openai Retrieve File Content + description: Generic endpoint - this would be replaced with actual implementation. + operationId: openai_retrieve_file_content_v1_files__file_id__content_get + parameters: + - name: args + in: query + required: true + schema: + title: Args + - name: kwargs + in: query + required: true + schema: + title: Kwargs responses: '200': - description: >- - Health information indicating if the service is operational. + description: The raw file content as a binary response. + content: + application/json: + schema: {} + '400': + $ref: '#/components/responses/BadRequest400' + description: Bad Request + '429': + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests + '500': + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error + default: + $ref: '#/components/responses/DefaultError' + description: Default Response + /v1/health: + get: + tags: + - V1 + summary: Health + description: Response-only endpoint for proper schema generation. + operationId: health_v1_health_get + responses: + '200': + description: Health information indicating if the service is operational. content: application/json: schema: $ref: '#/components/schemas/HealthInfo' '400': + description: Bad Request $ref: '#/components/responses/BadRequest400' '429': - $ref: >- - #/components/responses/TooManyRequests429 + description: Too Many Requests + $ref: '#/components/responses/TooManyRequests429' '500': - $ref: >- - #/components/responses/InternalServerError500 + description: Internal Server Error + $ref: '#/components/responses/InternalServerError500' default: + description: Default Response $ref: '#/components/responses/DefaultError' - tags: - - Inspect - summary: Get health status. - description: >- - Get health status. - - Get the current health status of the service. - parameters: [] - deprecated: false /v1/inspect/routes: get: + tags: + - V1 + summary: List Routes + description: Response-only endpoint for proper schema generation. + operationId: list_routes_v1_inspect_routes_get responses: '200': - description: >- - Response containing information about all available routes. + description: Response containing information about all available routes. content: application/json: schema: $ref: '#/components/schemas/ListRoutesResponse' '400': + description: Bad Request $ref: '#/components/responses/BadRequest400' '429': - $ref: >- - #/components/responses/TooManyRequests429 + description: Too Many Requests + $ref: '#/components/responses/TooManyRequests429' '500': - $ref: >- - #/components/responses/InternalServerError500 + description: Internal Server Error + $ref: '#/components/responses/InternalServerError500' default: + description: Default Response $ref: '#/components/responses/DefaultError' tags: - Inspect @@ -972,6 +946,11 @@ paths: deprecated: false /v1/models: get: + tags: + - V1 + summary: List Models + description: Response-only endpoint for proper schema generation. + operationId: list_models_v1_models_get responses: '200': description: A OpenAIListModelsResponse. @@ -981,12 +960,13 @@ paths: $ref: '#/components/schemas/OpenAIListModelsResponse' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' tags: @@ -996,6 +976,41 @@ paths: parameters: [] deprecated: false post: + tags: + - V1 + summary: Register Model + description: Query endpoint for proper schema generation. + operationId: register_model_v1_models_post + parameters: + - name: model_id + in: query + required: false + schema: + type: string + title: Model Id + - name: provider_model_id + in: query + required: false + schema: + type: string + title: Provider Model Id + - name: provider_id + in: query + required: false + schema: + type: string + title: Provider Id + - name: metadata + in: query + required: false + schema: + type: string + title: Metadata + - name: model_type + in: query + required: false + schema: + $ref: '#/components/schemas/ModelType' responses: '200': description: A Model. @@ -1005,31 +1020,65 @@ paths: $ref: '#/components/schemas/Model' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Models - summary: Register model. - description: >- - Register model. - - Register a model. - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/RegisterModelRequest' - required: true - deprecated: false + description: Default Response /v1/models/{model_id}: + delete: + tags: + - V1 + summary: Unregister Model + description: Generic endpoint - this would be replaced with actual implementation. + operationId: unregister_model_v1_models__model_id__delete + parameters: + - name: args + in: query + required: true + schema: + title: Args + - name: kwargs + in: query + required: true + schema: + title: Kwargs + responses: + '200': + description: Successful Response + content: + application/json: + schema: {} + '400': + $ref: '#/components/responses/BadRequest400' + description: Bad Request + '429': + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests + '500': + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error + default: + $ref: '#/components/responses/DefaultError' + description: Default Response get: + tags: + - V1 + summary: Get Model + description: Query endpoint for proper schema generation. + operationId: get_model_v1_models__model_id__get + parameters: + - name: model_id + in: path + required: true + schema: + type: string + title: Model Id responses: '200': description: A Model. @@ -1039,61 +1088,36 @@ paths: $ref: '#/components/schemas/Model' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Models - summary: Get model. - description: >- - Get model. - - Get a model by its identifier. - parameters: - - name: model_id - in: path - description: The identifier of the model to get. - required: true - schema: - type: string - deprecated: false - delete: - responses: - '200': - description: OK - '400': - $ref: '#/components/responses/BadRequest400' - '429': - $ref: >- - #/components/responses/TooManyRequests429 - '500': - $ref: >- - #/components/responses/InternalServerError500 - default: - $ref: '#/components/responses/DefaultError' - tags: - - Models - summary: Unregister model. - description: >- - Unregister model. - - Unregister a model. - parameters: - - name: model_id - in: path - description: >- - The identifier of the model to unregister. - required: true - schema: - type: string - deprecated: false + description: Default Response /v1/moderations: post: + tags: + - V1 + summary: Run Moderation + description: Query endpoint for proper schema generation. + operationId: run_moderation_v1_moderations_post + parameters: + - name: input + in: query + required: false + schema: + type: string + title: Input + - name: model + in: query + required: false + schema: + type: string + title: Model responses: '200': description: A moderation object. @@ -1103,56 +1127,61 @@ paths: $ref: '#/components/schemas/ModerationObject' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Safety - summary: Create moderation. - description: >- - Create moderation. - - Classifies if text and/or image inputs are potentially harmful. - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/RunModerationRequest' - required: true - deprecated: false + description: Default Response /v1/prompts: get: + tags: + - V1 + summary: List Prompts + description: Response-only endpoint for proper schema generation. + operationId: list_prompts_v1_prompts_get responses: '200': - description: >- - A ListPromptsResponse containing all prompts. + description: A ListPromptsResponse containing all prompts. content: application/json: schema: $ref: '#/components/schemas/ListPromptsResponse' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Prompts - summary: List all prompts. - description: List all prompts. - parameters: [] - deprecated: false + description: Default Response post: + tags: + - V1 + summary: Create Prompt + description: Query endpoint for proper schema generation. + operationId: create_prompt_v1_prompts_post + parameters: + - name: prompt + in: query + required: false + schema: + type: string + title: Prompt + - name: variables + in: query + required: false + schema: + type: string + title: Variables responses: '200': description: The created Prompt resource. @@ -1162,31 +1191,71 @@ paths: $ref: '#/components/schemas/Prompt' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Prompts - summary: Create prompt. - description: >- - Create prompt. - - Create a new prompt. - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CreatePromptRequest' - required: true - deprecated: false + description: Default Response /v1/prompts/{prompt_id}: + delete: + tags: + - V1 + summary: Delete Prompt + description: Generic endpoint - this would be replaced with actual implementation. + operationId: delete_prompt_v1_prompts__prompt_id__delete + parameters: + - name: args + in: query + required: true + schema: + title: Args + - name: kwargs + in: query + required: true + schema: + title: Kwargs + responses: + '200': + description: Successful Response + content: + application/json: + schema: {} + '400': + $ref: '#/components/responses/BadRequest400' + description: Bad Request + '429': + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests + '500': + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error + default: + $ref: '#/components/responses/DefaultError' + description: Default Response get: + tags: + - V1 + summary: Get Prompt + description: Query endpoint for proper schema generation. + operationId: get_prompt_v1_prompts__prompt_id__get + parameters: + - name: prompt_id + in: path + required: true + schema: + type: string + title: Prompt Id + - name: version + in: query + required: false + schema: + type: integer + title: Version responses: '200': description: A Prompt resource. @@ -1196,248 +1265,237 @@ paths: $ref: '#/components/schemas/Prompt' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Prompts - summary: Get prompt. - description: >- - Get prompt. - - Get a prompt by its identifier and optional version. - parameters: - - name: prompt_id - in: path - description: The identifier of the prompt to get. - required: true - schema: - type: string - - name: version - in: query - description: >- - The version of the prompt to get (defaults to latest). - required: false - schema: - type: integer - deprecated: false + description: Default Response post: + tags: + - V1 + summary: Update Prompt + description: Query endpoint for proper schema generation. + operationId: update_prompt_v1_prompts__prompt_id__post + parameters: + - name: prompt_id + in: path + required: true + schema: + type: string + title: Prompt Id + - name: prompt + in: query + required: false + schema: + type: string + title: Prompt + - name: version + in: query + required: false + schema: + type: integer + title: Version + - name: variables + in: query + required: false + schema: + type: string + title: Variables + - name: set_as_default + in: query + required: false + schema: + type: boolean + default: true + title: Set As Default responses: '200': - description: >- - The updated Prompt resource with incremented version. + description: The updated Prompt resource with incremented version. content: application/json: schema: $ref: '#/components/schemas/Prompt' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Prompts - summary: Update prompt. - description: >- - Update prompt. - - Update an existing prompt (increments version). - parameters: - - name: prompt_id - in: path - description: The identifier of the prompt to update. - required: true - schema: - type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UpdatePromptRequest' - required: true - deprecated: false - delete: - responses: - '200': - description: OK - '400': - $ref: '#/components/responses/BadRequest400' - '429': - $ref: >- - #/components/responses/TooManyRequests429 - '500': - $ref: >- - #/components/responses/InternalServerError500 - default: - $ref: '#/components/responses/DefaultError' - tags: - - Prompts - summary: Delete prompt. - description: >- - Delete prompt. - - Delete a prompt. - parameters: - - name: prompt_id - in: path - description: The identifier of the prompt to delete. - required: true - schema: - type: string - deprecated: false + description: Default Response /v1/prompts/{prompt_id}/set-default-version: post: + tags: + - V1 + summary: Set Default Version + description: Query endpoint for proper schema generation. + operationId: set_default_version_v1_prompts__prompt_id__set_default_version_post + parameters: + - name: prompt_id + in: path + required: true + schema: + type: string + title: Prompt Id + - name: version + in: query + required: false + schema: + type: integer + title: Version responses: '200': - description: >- - The prompt with the specified version now set as default. + description: The prompt with the specified version now set as default. content: application/json: schema: $ref: '#/components/schemas/Prompt' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Prompts - summary: Set prompt version. - description: >- - Set prompt version. - - Set which version of a prompt should be the default in get_prompt (latest). - parameters: - - name: prompt_id - in: path - description: The identifier of the prompt. - required: true - schema: - type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/SetDefaultVersionRequest' - required: true - deprecated: false + description: Default Response /v1/prompts/{prompt_id}/versions: get: + tags: + - V1 + summary: List Prompt Versions + description: Query endpoint for proper schema generation. + operationId: list_prompt_versions_v1_prompts__prompt_id__versions_get + parameters: + - name: prompt_id + in: path + required: true + schema: + type: string + title: Prompt Id responses: '200': - description: >- - A ListPromptsResponse containing all versions of the prompt. + description: A ListPromptsResponse containing all versions of the prompt. content: application/json: schema: $ref: '#/components/schemas/ListPromptsResponse' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Prompts - summary: List prompt versions. - description: >- - List prompt versions. - - List all versions of a specific prompt. - parameters: - - name: prompt_id - in: path - description: >- - The identifier of the prompt to list versions for. - required: true - schema: - type: string - deprecated: false + description: Default Response /v1/providers: get: + tags: + - V1 + summary: List Providers + description: Response-only endpoint for proper schema generation. + operationId: list_providers_v1_providers_get responses: '200': - description: >- - A ListProvidersResponse containing information about all providers. + description: A ListProvidersResponse containing information about all providers. content: application/json: schema: $ref: '#/components/schemas/ListProvidersResponse' '400': + description: Bad Request $ref: '#/components/responses/BadRequest400' '429': - $ref: >- - #/components/responses/TooManyRequests429 + description: Too Many Requests + $ref: '#/components/responses/TooManyRequests429' '500': - $ref: >- - #/components/responses/InternalServerError500 + description: Internal Server Error + $ref: '#/components/responses/InternalServerError500' default: + description: Default Response $ref: '#/components/responses/DefaultError' - tags: - - Providers - summary: List providers. - description: >- - List providers. - - List all available providers. - parameters: [] - deprecated: false /v1/providers/{provider_id}: get: + tags: + - V1 + summary: Inspect Provider + description: Query endpoint for proper schema generation. + operationId: inspect_provider_v1_providers__provider_id__get + parameters: + - name: provider_id + in: path + required: true + schema: + type: string + title: Provider Id responses: '200': - description: >- - A ProviderInfo object containing the provider's details. + description: A ProviderInfo object containing the provider's details. content: application/json: schema: $ref: '#/components/schemas/ProviderInfo' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Providers - summary: Get provider. - description: >- - Get provider. - - Get detailed information about a specific provider. - parameters: - - name: provider_id - in: path - description: The ID of the provider to inspect. - required: true - schema: - type: string - deprecated: false + description: Default Response /v1/responses: get: + tags: + - V1 + summary: List Openai Responses + description: Query endpoint for proper schema generation. + operationId: list_openai_responses_v1_responses_get + parameters: + - name: after + in: query + required: false + schema: + type: string + title: After + - name: limit + in: query + required: false + schema: + type: integer + default: 50 + title: Limit + - name: model + in: query + required: false + schema: + type: string + title: Model + - name: order + in: query + required: false + schema: + $ref: '#/components/schemas/Order' + default: desc responses: '200': description: A ListOpenAIResponseObject. @@ -1447,92 +1505,91 @@ paths: $ref: '#/components/schemas/ListOpenAIResponseObject' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Agents - summary: List all responses. - description: List all responses. - parameters: - - name: after - in: query - description: The ID of the last response to return. - required: false - schema: - type: string - - name: limit - in: query - description: The number of responses to return. - required: false - schema: - type: integer - - name: model - in: query - description: The model to filter responses by. - required: false - schema: - type: string - - name: order - in: query - description: >- - The order to sort responses by when sorted by created_at ('asc' or 'desc'). - required: false - schema: - $ref: '#/components/schemas/Order' - deprecated: false + description: Default Response post: - responses: - '200': - description: An OpenAIResponseObject. - content: - application/json: - schema: - $ref: '#/components/schemas/OpenAIResponseObject' - text/event-stream: - schema: - $ref: '#/components/schemas/OpenAIResponseObjectStream' - '400': - $ref: '#/components/responses/BadRequest400' - '429': - $ref: >- - #/components/responses/TooManyRequests429 - '500': - $ref: >- - #/components/responses/InternalServerError500 - default: - $ref: '#/components/responses/DefaultError' tags: - - Agents - summary: Create a model response. - description: Create a model response. - parameters: [] + - V1 + summary: Create Openai Response + description: Query endpoint for proper schema generation. + operationId: create_openai_response_v1_responses_post + parameters: + - name: input + in: query + required: false + schema: + type: string + title: Input + - name: model + in: query + required: false + schema: + type: string + title: Model + - name: instructions + in: query + required: false + schema: + type: string + title: Instructions + - name: previous_response_id + in: query + required: false + schema: + type: string + title: Previous Response Id + - name: conversation + in: query + required: false + schema: + type: string + title: Conversation + - name: store + in: query + required: false + schema: + type: boolean + default: true + title: Store + - name: stream + in: query + required: false + schema: + type: boolean + default: false + title: Stream + - name: temperature + in: query + required: false + schema: + type: number + title: Temperature + - name: include + in: query + required: false + schema: + type: string + title: Include + - name: max_infer_iters + in: query + required: false + schema: + type: integer + default: 10 + title: Max Infer Iters requestBody: content: application/json: schema: - $ref: '#/components/schemas/CreateOpenaiResponseRequest' - required: true - deprecated: false - x-llama-stack-extra-body-params: - - name: guardrails - schema: - type: array - items: - oneOf: - - type: string - - $ref: '#/components/schemas/ResponseGuardrailSpec' - description: >- - List of guardrails to apply during response generation. Guardrails provide - safety and content moderation. - required: false - /v1/responses/{response_id}: - get: + $ref: '#/components/schemas/Body_create_openai_response_v1_responses_post' responses: '200': description: An OpenAIResponseObject. @@ -1542,28 +1599,30 @@ paths: $ref: '#/components/schemas/OpenAIResponseObject' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Agents - summary: Get a model response. - description: Get a model response. - parameters: - - name: response_id - in: path - description: >- - The ID of the OpenAI response to retrieve. - required: true - schema: - type: string - deprecated: false + description: Default Response + /v1/responses/{response_id}: delete: + tags: + - V1 + summary: Delete Openai Response + description: Query endpoint for proper schema generation. + operationId: delete_openai_response_v1_responses__response_id__delete + parameters: + - name: response_id + in: path + required: true + schema: + type: string + title: Response Id responses: '200': description: An OpenAIDeleteResponseObject @@ -1573,28 +1632,93 @@ paths: $ref: '#/components/schemas/OpenAIDeleteResponseObject' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' + description: Default Response + get: tags: - - Agents - summary: Delete a response. - description: Delete a response. + - V1 + summary: Get Openai Response + description: Query endpoint for proper schema generation. + operationId: get_openai_response_v1_responses__response_id__get parameters: - - name: response_id - in: path - description: The ID of the OpenAI response to delete. - required: true - schema: - type: string - deprecated: false + - name: response_id + in: path + required: true + schema: + type: string + title: Response Id + responses: + '200': + description: An OpenAIResponseObject. + content: + application/json: + schema: + $ref: '#/components/schemas/OpenAIResponseObject' + '400': + $ref: '#/components/responses/BadRequest400' + description: Bad Request + '429': + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests + '500': + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error + default: + $ref: '#/components/responses/DefaultError' + description: Default Response /v1/responses/{response_id}/input_items: get: + tags: + - V1 + summary: List Openai Response Input Items + description: Query endpoint for proper schema generation. + operationId: list_openai_response_input_items_v1_responses__response_id__input_items_get + parameters: + - name: response_id + in: path + required: true + schema: + type: string + title: Response Id + - name: after + in: query + required: false + schema: + type: string + title: After + - name: before + in: query + required: false + schema: + type: string + title: Before + - name: include + in: query + required: false + schema: + type: string + title: Include + - name: limit + in: query + required: false + schema: + type: integer + default: 20 + title: Limit + - name: order + in: query + required: false + schema: + $ref: '#/components/schemas/Order' + default: desc responses: '200': description: An ListOpenAIResponseInputItem. @@ -1604,67 +1728,47 @@ paths: $ref: '#/components/schemas/ListOpenAIResponseInputItem' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Agents - summary: List input items. - description: List input items. - parameters: - - name: response_id - in: path - description: >- - The ID of the response to retrieve input items for. - required: true - schema: - type: string - - name: after - in: query - description: >- - An item ID to list items after, used for pagination. - required: false - schema: - type: string - - name: before - in: query - description: >- - An item ID to list items before, used for pagination. - required: false - schema: - type: string - - name: include - in: query - description: >- - Additional fields to include in the response. - required: false - schema: - type: array - items: - type: string - - name: limit - in: query - description: >- - A limit on the number of objects to be returned. Limit can range between - 1 and 100, and the default is 20. - required: false - schema: - type: integer - - name: order - in: query - description: >- - The order to return the input items in. Default is desc. - required: false - schema: - $ref: '#/components/schemas/Order' - deprecated: false + description: Default Response /v1/safety/run-shield: post: + tags: + - V1 + summary: Run Shield + description: Query endpoint for proper schema generation. + operationId: run_shield_v1_safety_run_shield_post + parameters: + - name: shield_id + in: query + required: false + schema: + type: string + title: Shield Id + - name: params + in: query + required: false + schema: + type: string + title: Params + requestBody: + content: + application/json: + schema: + anyOf: + - $ref: '#/components/schemas/OpenAIUserMessageParam-Input' + - $ref: '#/components/schemas/OpenAISystemMessageParam' + - $ref: '#/components/schemas/OpenAIAssistantMessageParam-Input' + - $ref: '#/components/schemas/OpenAIToolMessageParam' + - $ref: '#/components/schemas/OpenAIDeveloperMessageParam' + title: Messages responses: '200': description: A RunShieldResponse. @@ -1674,31 +1778,23 @@ paths: $ref: '#/components/schemas/RunShieldResponse' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Safety - summary: Run shield. - description: >- - Run shield. - - Run a shield. - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/RunShieldRequest' - required: true - deprecated: false + description: Default Response /v1/scoring-functions: get: + tags: + - V1 + summary: List Scoring Functions + description: Response-only endpoint for proper schema generation. + operationId: list_scoring_functions_v1_scoring_functions_get responses: '200': description: A ListScoringFunctionsResponse. @@ -1708,48 +1804,100 @@ paths: $ref: '#/components/schemas/ListScoringFunctionsResponse' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - ScoringFunctions - summary: List all scoring functions. - description: List all scoring functions. - parameters: [] - deprecated: false + description: Default Response post: + tags: + - V1 + summary: Register Scoring Function + description: Generic endpoint - this would be replaced with actual implementation. + operationId: register_scoring_function_v1_scoring_functions_post + parameters: + - name: args + in: query + required: true + schema: + title: Args + - name: kwargs + in: query + required: true + schema: + title: Kwargs responses: '200': - description: OK + description: Successful Response + content: + application/json: + schema: {} '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - ScoringFunctions - summary: Register a scoring function. - description: Register a scoring function. - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/RegisterScoringFunctionRequest' - required: true - deprecated: false + description: Default Response /v1/scoring-functions/{scoring_fn_id}: + delete: + tags: + - V1 + summary: Unregister Scoring Function + description: Generic endpoint - this would be replaced with actual implementation. + operationId: unregister_scoring_function_v1_scoring_functions__scoring_fn_id__delete + parameters: + - name: args + in: query + required: true + schema: + title: Args + - name: kwargs + in: query + required: true + schema: + title: Kwargs + responses: + '200': + description: Successful Response + content: + application/json: + schema: {} + '400': + $ref: '#/components/responses/BadRequest400' + description: Bad Request + '429': + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests + '500': + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error + default: + $ref: '#/components/responses/DefaultError' + description: Default Response get: + tags: + - V1 + summary: Get Scoring Function + description: Query endpoint for proper schema generation. + operationId: get_scoring_function_v1_scoring_functions__scoring_fn_id__get + parameters: + - name: scoring_fn_id + in: path + required: true + schema: + type: string + title: Scoring Fn Id responses: '200': description: A ScoringFn. @@ -1759,87 +1907,82 @@ paths: $ref: '#/components/schemas/ScoringFn' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - ScoringFunctions - summary: Get a scoring function by its ID. - description: Get a scoring function by its ID. - parameters: - - name: scoring_fn_id - in: path - description: The ID of the scoring function to get. - required: true - schema: - type: string - deprecated: false - delete: - responses: - '200': - description: OK - '400': - $ref: '#/components/responses/BadRequest400' - '429': - $ref: >- - #/components/responses/TooManyRequests429 - '500': - $ref: >- - #/components/responses/InternalServerError500 - default: - $ref: '#/components/responses/DefaultError' - tags: - - ScoringFunctions - summary: Unregister a scoring function. - description: Unregister a scoring function. - parameters: - - name: scoring_fn_id - in: path - description: >- - The ID of the scoring function to unregister. - required: true - schema: - type: string - deprecated: false + description: Default Response /v1/scoring/score: post: + tags: + - V1 + summary: Score + description: Query endpoint for proper schema generation. + operationId: score_v1_scoring_score_post + parameters: + - name: input_rows + in: query + required: false + schema: + type: string + title: Input Rows + - name: scoring_functions + in: query + required: false + schema: + type: string + title: Scoring Functions responses: '200': - description: >- - A ScoreResponse object containing rows and aggregated results. + description: A ScoreResponse object containing rows and aggregated results. content: application/json: schema: $ref: '#/components/schemas/ScoreResponse' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Scoring - summary: Score a list of rows. - description: Score a list of rows. - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ScoreRequest' - required: true - deprecated: false + description: Default Response /v1/scoring/score-batch: post: + tags: + - V1 + summary: Score Batch + description: Query endpoint for proper schema generation. + operationId: score_batch_v1_scoring_score_batch_post + parameters: + - name: dataset_id + in: query + required: false + schema: + type: string + title: Dataset Id + - name: scoring_functions + in: query + required: false + schema: + type: string + title: Scoring Functions + - name: save_results_dataset + in: query + required: false + schema: + type: boolean + default: false + title: Save Results Dataset responses: '200': description: A ScoreBatchResponse. @@ -1849,28 +1992,23 @@ paths: $ref: '#/components/schemas/ScoreBatchResponse' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Scoring - summary: Score a batch of rows. - description: Score a batch of rows. - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ScoreBatchRequest' - required: true - deprecated: false + description: Default Response /v1/shields: get: + tags: + - V1 + summary: List Shields + description: Response-only endpoint for proper schema generation. + operationId: list_shields_v1_shields_get responses: '200': description: A ListShieldsResponse. @@ -1880,21 +2018,47 @@ paths: $ref: '#/components/schemas/ListShieldsResponse' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Shields - summary: List all shields. - description: List all shields. - parameters: [] - deprecated: false + description: Default Response post: + tags: + - V1 + summary: Register Shield + description: Query endpoint for proper schema generation. + operationId: register_shield_v1_shields_post + parameters: + - name: shield_id + in: query + required: false + schema: + type: string + title: Shield Id + - name: provider_shield_id + in: query + required: false + schema: + type: string + title: Provider Shield Id + - name: provider_id + in: query + required: false + schema: + type: string + title: Provider Id + - name: params + in: query + required: false + schema: + type: string + title: Params responses: '200': description: A Shield. @@ -1904,28 +2068,65 @@ paths: $ref: '#/components/schemas/Shield' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - Shields - summary: Register a shield. - description: Register a shield. - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/RegisterShieldRequest' - required: true - deprecated: false + description: Default Response /v1/shields/{identifier}: + delete: + tags: + - V1 + summary: Unregister Shield + description: Generic endpoint - this would be replaced with actual implementation. + operationId: unregister_shield_v1_shields__identifier__delete + parameters: + - name: args + in: query + required: true + schema: + title: Args + - name: kwargs + in: query + required: true + schema: + title: Kwargs + responses: + '200': + description: Successful Response + content: + application/json: + schema: {} + '400': + $ref: '#/components/responses/BadRequest400' + description: Bad Request + '429': + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests + '500': + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error + default: + $ref: '#/components/responses/DefaultError' + description: Default Response get: + tags: + - V1 + summary: Get Shield + description: Query endpoint for proper schema generation. + operationId: get_shield_v1_shields__identifier__get + parameters: + - name: identifier + in: path + required: true + schema: + type: string + title: Identifier responses: '200': description: A Shield. @@ -1935,12 +2136,13 @@ paths: $ref: '#/components/schemas/Shield' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' tags: @@ -1984,6 +2186,24 @@ paths: deprecated: false /v1/tool-runtime/invoke: post: + tags: + - V1 + summary: Invoke Tool + description: Query endpoint for proper schema generation. + operationId: invoke_tool_v1_tool_runtime_invoke_post + parameters: + - name: tool_name + in: query + required: false + schema: + type: string + title: Tool Name + - name: kwargs + in: query + required: false + schema: + type: string + title: Kwargs responses: '200': description: A ToolInvocationResult. @@ -1993,28 +2213,35 @@ paths: $ref: '#/components/schemas/ToolInvocationResult' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' + description: Default Response + /v1/tool-runtime/list-tools: + get: tags: - - ToolRuntime - summary: Run a tool with the given arguments. - description: Run a tool with the given arguments. - parameters: [] + - V1 + summary: List Runtime Tools + description: Query endpoint for proper schema generation. + operationId: list_runtime_tools_v1_tool_runtime_list_tools_get + parameters: + - name: tool_group_id + in: query + required: false + schema: + type: string + title: Tool Group Id requestBody: content: application/json: schema: - $ref: '#/components/schemas/InvokeToolRequest' - required: true - deprecated: false - /v1/tool-runtime/list-tools: - get: + $ref: '#/components/schemas/URL' responses: '200': description: A ListToolDefsResponse. @@ -2024,99 +2251,103 @@ paths: $ref: '#/components/schemas/ListToolDefsResponse' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - ToolRuntime - summary: List all tools in the runtime. - description: List all tools in the runtime. - parameters: - - name: tool_group_id - in: query - description: >- - The ID of the tool group to list tools for. - required: false - schema: - type: string - - name: mcp_endpoint - in: query - description: >- - The MCP endpoint to use for the tool group. - required: false - schema: - $ref: '#/components/schemas/URL' - deprecated: false + description: Default Response /v1/tool-runtime/rag-tool/insert: post: + tags: + - V1 + summary: Rag Tool.Insert + description: Generic endpoint - this would be replaced with actual implementation. + operationId: rag_tool_insert_v1_tool_runtime_rag_tool_insert_post + parameters: + - name: args + in: query + required: true + schema: + title: Args + - name: kwargs + in: query + required: true + schema: + title: Kwargs responses: '200': - description: OK + description: Successful Response + content: + application/json: + schema: {} '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' + description: Default Response + /v1/tool-runtime/rag-tool/query: + post: tags: - - ToolRuntime - summary: >- - Index documents so they can be used by the RAG system. - description: >- - Index documents so they can be used by the RAG system. - parameters: [] + - V1 + summary: Rag Tool.Query + description: Query endpoint for proper schema generation. + operationId: rag_tool_query_v1_tool_runtime_rag_tool_query_post + parameters: + - name: content + in: query + required: false + schema: + type: string + title: Content + - name: vector_store_ids + in: query + required: false + schema: + type: string + title: Vector Store Ids requestBody: content: application/json: schema: - $ref: '#/components/schemas/InsertRequest' - required: true - deprecated: false - /v1/tool-runtime/rag-tool/query: - post: + $ref: '#/components/schemas/RAGQueryConfig' responses: '200': - description: >- - RAGQueryResult containing the retrieved content and metadata + description: RAGQueryResult containing the retrieved content and metadata content: application/json: schema: $ref: '#/components/schemas/RAGQueryResult' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - ToolRuntime - summary: >- - Query the RAG system for context; typically invoked by the agent. - description: >- - Query the RAG system for context; typically invoked by the agent. - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/QueryRequest' - required: true - deprecated: false + description: Default Response /v1/toolgroups: get: + tags: + - V1 + summary: List Tool Groups + description: Response-only endpoint for proper schema generation. + operationId: list_tool_groups_v1_toolgroups_get responses: '200': description: A ListToolGroupsResponse. @@ -2126,48 +2357,100 @@ paths: $ref: '#/components/schemas/ListToolGroupsResponse' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - ToolGroups - summary: List tool groups with optional provider. - description: List tool groups with optional provider. - parameters: [] - deprecated: false + description: Default Response post: + tags: + - V1 + summary: Register Tool Group + description: Generic endpoint - this would be replaced with actual implementation. + operationId: register_tool_group_v1_toolgroups_post + parameters: + - name: args + in: query + required: true + schema: + title: Args + - name: kwargs + in: query + required: true + schema: + title: Kwargs responses: '200': - description: OK + description: Successful Response + content: + application/json: + schema: {} '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - ToolGroups - summary: Register a tool group. - description: Register a tool group. - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/RegisterToolGroupRequest' - required: true - deprecated: false + description: Default Response /v1/toolgroups/{toolgroup_id}: + delete: + tags: + - V1 + summary: Unregister Toolgroup + description: Generic endpoint - this would be replaced with actual implementation. + operationId: unregister_toolgroup_v1_toolgroups__toolgroup_id__delete + parameters: + - name: args + in: query + required: true + schema: + title: Args + - name: kwargs + in: query + required: true + schema: + title: Kwargs + responses: + '200': + description: Successful Response + content: + application/json: + schema: {} + '400': + $ref: '#/components/responses/BadRequest400' + description: Bad Request + '429': + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests + '500': + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error + default: + $ref: '#/components/responses/DefaultError' + description: Default Response get: + tags: + - V1 + summary: Get Tool Group + description: Query endpoint for proper schema generation. + operationId: get_tool_group_v1_toolgroups__toolgroup_id__get + parameters: + - name: toolgroup_id + in: path + required: true + schema: + type: string + title: Toolgroup Id responses: '200': description: A ToolGroup. @@ -2177,54 +2460,30 @@ paths: $ref: '#/components/schemas/ToolGroup' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - ToolGroups - summary: Get a tool group by its ID. - description: Get a tool group by its ID. - parameters: - - name: toolgroup_id - in: path - description: The ID of the tool group to get. - required: true - schema: - type: string - deprecated: false - delete: - responses: - '200': - description: OK - '400': - $ref: '#/components/responses/BadRequest400' - '429': - $ref: >- - #/components/responses/TooManyRequests429 - '500': - $ref: >- - #/components/responses/InternalServerError500 - default: - $ref: '#/components/responses/DefaultError' - tags: - - ToolGroups - summary: Unregister a tool group. - description: Unregister a tool group. - parameters: - - name: toolgroup_id - in: path - description: The ID of the tool group to unregister. - required: true - schema: - type: string - deprecated: false + description: Default Response /v1/tools: get: + tags: + - V1 + summary: List Tools + description: Query endpoint for proper schema generation. + operationId: list_tools_v1_tools_get + parameters: + - name: toolgroup_id + in: query + required: false + schema: + type: string + title: Toolgroup Id responses: '200': description: A ListToolDefsResponse. @@ -2234,29 +2493,30 @@ paths: $ref: '#/components/schemas/ListToolDefsResponse' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - ToolGroups - summary: List tools with optional tool group. - description: List tools with optional tool group. - parameters: - - name: toolgroup_id - in: query - description: >- - The ID of the tool group to list tools for. - required: false - schema: - type: string - deprecated: false + description: Default Response /v1/tools/{tool_name}: get: + tags: + - V1 + summary: Get Tool + description: Query endpoint for proper schema generation. + operationId: get_tool_v1_tools__tool_name__get + parameters: + - name: tool_name + in: path + required: true + schema: + type: string + title: Tool Name responses: '200': description: A ToolDef. @@ -2266,55 +2526,78 @@ paths: $ref: '#/components/schemas/ToolDef' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - ToolGroups - summary: Get a tool by its name. - description: Get a tool by its name. - parameters: - - name: tool_name - in: path - description: The name of the tool to get. - required: true - schema: - type: string - deprecated: false + description: Default Response /v1/vector-io/insert: post: + tags: + - V1 + summary: Insert Chunks + description: Generic endpoint - this would be replaced with actual implementation. + operationId: insert_chunks_v1_vector_io_insert_post + parameters: + - name: args + in: query + required: true + schema: + title: Args + - name: kwargs + in: query + required: true + schema: + title: Kwargs responses: '200': - description: OK + description: Successful Response + content: + application/json: + schema: {} '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - VectorIO - summary: Insert chunks into a vector database. - description: Insert chunks into a vector database. - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/InsertChunksRequest' - required: true - deprecated: false + description: Default Response /v1/vector-io/query: post: + tags: + - V1 + summary: Query Chunks + description: Query endpoint for proper schema generation. + operationId: query_chunks_v1_vector_io_query_post + parameters: + - name: vector_store_id + in: query + required: false + schema: + type: string + title: Vector Store Id + - name: query + in: query + required: false + schema: + type: string + title: Query + - name: params + in: query + required: false + schema: + type: string + title: Params responses: '200': description: A QueryChunksResponse. @@ -2324,767 +2607,773 @@ paths: $ref: '#/components/schemas/QueryChunksResponse' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - VectorIO - summary: Query chunks from a vector database. - description: Query chunks from a vector database. - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/QueryChunksRequest' - required: true - deprecated: false + description: Default Response /v1/vector_stores: get: + tags: + - V1 + summary: Openai List Vector Stores + description: Query endpoint for proper schema generation. + operationId: openai_list_vector_stores_v1_vector_stores_get + parameters: + - name: limit + in: query + required: false + schema: + type: integer + default: 20 + title: Limit + - name: order + in: query + required: false + schema: + type: string + default: desc + title: Order + - name: after + in: query + required: false + schema: + type: string + title: After + - name: before + in: query + required: false + schema: + type: string + title: Before responses: '200': - description: >- - A VectorStoreListResponse containing the list of vector stores. + description: A VectorStoreListResponse containing the list of vector stores. content: application/json: schema: $ref: '#/components/schemas/VectorStoreListResponse' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - VectorIO - summary: Returns a list of vector stores. - description: Returns a list of vector stores. - parameters: - - name: limit - in: query - description: >- - A limit on the number of objects to be returned. Limit can range between - 1 and 100, and the default is 20. - required: false - schema: - type: integer - - name: order - in: query - description: >- - Sort order by the `created_at` timestamp of the objects. `asc` for ascending - order and `desc` for descending order. - required: false - schema: - type: string - - name: after - in: query - description: >- - A cursor for use in pagination. `after` is an object ID that defines your - place in the list. - required: false - schema: - type: string - - name: before - in: query - description: >- - A cursor for use in pagination. `before` is an object ID that defines - your place in the list. - required: false - schema: - type: string - deprecated: false + description: Default Response post: - responses: - '200': - description: >- - A VectorStoreObject representing the created vector store. - content: - application/json: - schema: - $ref: '#/components/schemas/VectorStoreObject' - '400': - $ref: '#/components/responses/BadRequest400' - '429': - $ref: >- - #/components/responses/TooManyRequests429 - '500': - $ref: >- - #/components/responses/InternalServerError500 - default: - $ref: '#/components/responses/DefaultError' tags: - - VectorIO - summary: Creates a vector store. - description: >- - Creates a vector store. - - Generate an OpenAI-compatible vector store with the given parameters. - parameters: [] + - V1 + summary: Openai Create Vector Store + description: Typed endpoint for proper schema generation. + operationId: openai_create_vector_store_v1_vector_stores_post requestBody: + required: true content: application/json: schema: $ref: '#/components/schemas/OpenAICreateVectorStoreRequestWithExtraBody' - required: true - deprecated: false + responses: + '200': + description: A VectorStoreObject representing the created vector store. + content: + application/json: + schema: + $ref: '#/components/schemas/VectorStoreObject' + '400': + $ref: '#/components/responses/BadRequest400' + description: Bad Request + '429': + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests + '500': + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error + default: + $ref: '#/components/responses/DefaultError' + description: Default Response /v1/vector_stores/{vector_store_id}: - get: - responses: - '200': - description: >- - A VectorStoreObject representing the vector store. - content: - application/json: - schema: - $ref: '#/components/schemas/VectorStoreObject' - '400': - $ref: '#/components/responses/BadRequest400' - '429': - $ref: >- - #/components/responses/TooManyRequests429 - '500': - $ref: >- - #/components/responses/InternalServerError500 - default: - $ref: '#/components/responses/DefaultError' - tags: - - VectorIO - summary: Retrieves a vector store. - description: Retrieves a vector store. - parameters: - - name: vector_store_id - in: path - description: The ID of the vector store to retrieve. - required: true - schema: - type: string - deprecated: false - post: - responses: - '200': - description: >- - A VectorStoreObject representing the updated vector store. - content: - application/json: - schema: - $ref: '#/components/schemas/VectorStoreObject' - '400': - $ref: '#/components/responses/BadRequest400' - '429': - $ref: >- - #/components/responses/TooManyRequests429 - '500': - $ref: >- - #/components/responses/InternalServerError500 - default: - $ref: '#/components/responses/DefaultError' - tags: - - VectorIO - summary: Updates a vector store. - description: Updates a vector store. - parameters: - - name: vector_store_id - in: path - description: The ID of the vector store to update. - required: true - schema: - type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/OpenaiUpdateVectorStoreRequest' - required: true - deprecated: false delete: + tags: + - V1 + summary: Openai Delete Vector Store + description: Query endpoint for proper schema generation. + operationId: openai_delete_vector_store_v1_vector_stores__vector_store_id__delete + parameters: + - name: vector_store_id + in: path + required: true + schema: + type: string + title: Vector Store Id responses: '200': - description: >- - A VectorStoreDeleteResponse indicating the deletion status. + description: A VectorStoreDeleteResponse indicating the deletion status. content: application/json: schema: $ref: '#/components/schemas/VectorStoreDeleteResponse' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' + description: Default Response + get: tags: - - VectorIO - summary: Delete a vector store. - description: Delete a vector store. + - V1 + summary: Openai Retrieve Vector Store + description: Query endpoint for proper schema generation. + operationId: openai_retrieve_vector_store_v1_vector_stores__vector_store_id__get parameters: - - name: vector_store_id - in: path - description: The ID of the vector store to delete. - required: true - schema: - type: string - deprecated: false - /v1/vector_stores/{vector_store_id}/file_batches: - post: + - name: vector_store_id + in: path + required: true + schema: + type: string + title: Vector Store Id responses: '200': - description: >- - A VectorStoreFileBatchObject representing the created file batch. + description: A VectorStoreObject representing the vector store. content: application/json: schema: - $ref: '#/components/schemas/VectorStoreFileBatchObject' + $ref: '#/components/schemas/VectorStoreObject' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' + description: Default Response + post: tags: - - VectorIO - summary: Create a vector store file batch. - description: >- - Create a vector store file batch. - - Generate an OpenAI-compatible vector store file batch for the given vector - store. + - V1 + summary: Openai Update Vector Store + description: Query endpoint for proper schema generation. + operationId: openai_update_vector_store_v1_vector_stores__vector_store_id__post parameters: - - name: vector_store_id - in: path - description: >- - The ID of the vector store to create the file batch for. - required: true - schema: - type: string + - name: vector_store_id + in: path + required: true + schema: + type: string + title: Vector Store Id + - name: name + in: query + required: false + schema: + type: string + title: Name + - name: expires_after + in: query + required: false + schema: + type: string + title: Expires After + - name: metadata + in: query + required: false + schema: + type: string + title: Metadata + responses: + '200': + description: A VectorStoreObject representing the updated vector store. + content: + application/json: + schema: + $ref: '#/components/schemas/VectorStoreObject' + '400': + $ref: '#/components/responses/BadRequest400' + description: Bad Request + '429': + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests + '500': + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error + default: + $ref: '#/components/responses/DefaultError' + description: Default Response + /v1/vector_stores/{vector_store_id}/file_batches: + post: + tags: + - V1 + summary: Openai Create Vector Store File Batch + description: Typed endpoint for proper schema generation. + operationId: openai_create_vector_store_file_batch_v1_vector_stores__vector_store_id__file_batches_post requestBody: content: application/json: schema: $ref: '#/components/schemas/OpenAICreateVectorStoreFileBatchRequestWithExtraBody' required: true - deprecated: false + responses: + '200': + description: A VectorStoreFileBatchObject representing the created file + batch. + content: + application/json: + schema: + $ref: '#/components/schemas/VectorStoreFileBatchObject' + '400': + description: Bad Request + $ref: '#/components/responses/BadRequest400' + '429': + description: Too Many Requests + $ref: '#/components/responses/TooManyRequests429' + '500': + description: Internal Server Error + $ref: '#/components/responses/InternalServerError500' + default: + description: Default Response + $ref: '#/components/responses/DefaultError' /v1/vector_stores/{vector_store_id}/file_batches/{batch_id}: get: + tags: + - V1 + summary: Openai Retrieve Vector Store File Batch + description: Query endpoint for proper schema generation. + operationId: openai_retrieve_vector_store_file_batch_v1_vector_stores__vector_store_id__file_batches__batch_id__get + parameters: + - name: batch_id + in: path + required: true + schema: + type: string + title: Batch Id + - name: vector_store_id + in: path + required: true + schema: + type: string + title: Vector Store Id responses: '200': - description: >- - A VectorStoreFileBatchObject representing the file batch. + description: A VectorStoreFileBatchObject representing the file batch. content: application/json: schema: $ref: '#/components/schemas/VectorStoreFileBatchObject' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - VectorIO - summary: Retrieve a vector store file batch. - description: Retrieve a vector store file batch. - parameters: - - name: batch_id - in: path - description: The ID of the file batch to retrieve. - required: true - schema: - type: string - - name: vector_store_id - in: path - description: >- - The ID of the vector store containing the file batch. - required: true - schema: - type: string - deprecated: false + description: Default Response /v1/vector_stores/{vector_store_id}/file_batches/{batch_id}/cancel: post: + tags: + - V1 + summary: Openai Cancel Vector Store File Batch + description: Query endpoint for proper schema generation. + operationId: openai_cancel_vector_store_file_batch_v1_vector_stores__vector_store_id__file_batches__batch_id__cancel_post + parameters: + - name: batch_id + in: path + required: true + schema: + type: string + title: Batch Id + - name: vector_store_id + in: path + required: true + schema: + type: string + title: Vector Store Id responses: '200': - description: >- - A VectorStoreFileBatchObject representing the cancelled file batch. + description: A VectorStoreFileBatchObject representing the cancelled file + batch. content: application/json: schema: $ref: '#/components/schemas/VectorStoreFileBatchObject' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - VectorIO - summary: Cancels a vector store file batch. - description: Cancels a vector store file batch. - parameters: - - name: batch_id - in: path - description: The ID of the file batch to cancel. - required: true - schema: - type: string - - name: vector_store_id - in: path - description: >- - The ID of the vector store containing the file batch. - required: true - schema: - type: string - deprecated: false + description: Default Response /v1/vector_stores/{vector_store_id}/file_batches/{batch_id}/files: get: + tags: + - V1 + summary: Openai List Files In Vector Store File Batch + description: Query endpoint for proper schema generation. + operationId: openai_list_files_in_vector_store_file_batch_v1_vector_stores__vector_store_id__file_batches__batch_id__files_get + parameters: + - name: batch_id + in: path + required: true + schema: + type: string + title: Batch Id + - name: vector_store_id + in: path + required: true + schema: + type: string + title: Vector Store Id + - name: after + in: query + required: false + schema: + type: string + title: After + - name: before + in: query + required: false + schema: + type: string + title: Before + - name: filter + in: query + required: false + schema: + type: string + title: Filter + - name: limit + in: query + required: false + schema: + type: integer + default: 20 + title: Limit + - name: order + in: query + required: false + schema: + type: string + default: desc + title: Order responses: '200': - description: >- - A VectorStoreFilesListInBatchResponse containing the list of files in - the batch. + description: A VectorStoreFilesListInBatchResponse containing the list of + files in the batch. content: application/json: schema: $ref: '#/components/schemas/VectorStoreFilesListInBatchResponse' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - VectorIO - summary: >- - Returns a list of vector store files in a batch. - description: >- - Returns a list of vector store files in a batch. - parameters: - - name: batch_id - in: path - description: >- - The ID of the file batch to list files from. - required: true - schema: - type: string - - name: vector_store_id - in: path - description: >- - The ID of the vector store containing the file batch. - required: true - schema: - type: string - - name: after - in: query - description: >- - A cursor for use in pagination. `after` is an object ID that defines your - place in the list. - required: false - schema: - type: string - - name: before - in: query - description: >- - A cursor for use in pagination. `before` is an object ID that defines - your place in the list. - required: false - schema: - type: string - - name: filter - in: query - description: >- - Filter by file status. One of in_progress, completed, failed, cancelled. - required: false - schema: - type: string - - name: limit - in: query - description: >- - A limit on the number of objects to be returned. Limit can range between - 1 and 100, and the default is 20. - required: false - schema: - type: integer - - name: order - in: query - description: >- - Sort order by the `created_at` timestamp of the objects. `asc` for ascending - order and `desc` for descending order. - required: false - schema: - type: string - deprecated: false + description: Default Response /v1/vector_stores/{vector_store_id}/files: get: + tags: + - V1 + summary: Openai List Files In Vector Store + description: Query endpoint for proper schema generation. + operationId: openai_list_files_in_vector_store_v1_vector_stores__vector_store_id__files_get + parameters: + - name: vector_store_id + in: path + required: true + schema: + type: string + title: Vector Store Id + - name: limit + in: query + required: false + schema: + type: integer + default: 20 + title: Limit + - name: order + in: query + required: false + schema: + type: string + default: desc + title: Order + - name: after + in: query + required: false + schema: + type: string + title: After + - name: before + in: query + required: false + schema: + type: string + title: Before + - name: filter + in: query + required: false + schema: + type: string + title: Filter responses: '200': - description: >- - A VectorStoreListFilesResponse containing the list of files. + description: A VectorStoreListFilesResponse containing the list of files. content: application/json: schema: $ref: '#/components/schemas/VectorStoreListFilesResponse' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - VectorIO - summary: List files in a vector store. - description: List files in a vector store. - parameters: - - name: vector_store_id - in: path - description: >- - The ID of the vector store to list files from. - required: true - schema: - type: string - - name: limit - in: query - description: >- - (Optional) A limit on the number of objects to be returned. Limit can - range between 1 and 100, and the default is 20. - required: false - schema: - type: integer - - name: order - in: query - description: >- - (Optional) Sort order by the `created_at` timestamp of the objects. `asc` - for ascending order and `desc` for descending order. - required: false - schema: - type: string - - name: after - in: query - description: >- - (Optional) A cursor for use in pagination. `after` is an object ID that - defines your place in the list. - required: false - schema: - type: string - - name: before - in: query - description: >- - (Optional) A cursor for use in pagination. `before` is an object ID that - defines your place in the list. - required: false - schema: - type: string - - name: filter - in: query - description: >- - (Optional) Filter by file status to only return files with the specified - status. - required: false - schema: - $ref: '#/components/schemas/VectorStoreFileStatus' - deprecated: false + description: Default Response post: + tags: + - V1 + summary: Openai Attach File To Vector Store + description: Query endpoint for proper schema generation. + operationId: openai_attach_file_to_vector_store_v1_vector_stores__vector_store_id__files_post + parameters: + - name: vector_store_id + in: path + required: true + schema: + type: string + title: Vector Store Id + - name: file_id + in: query + required: false + schema: + type: string + title: File Id + - name: attributes + in: query + required: false + schema: + type: string + title: Attributes + requestBody: + content: + application/json: + schema: + anyOf: + - $ref: '#/components/schemas/VectorStoreChunkingStrategyAuto' + - $ref: '#/components/schemas/VectorStoreChunkingStrategyStatic' + title: Chunking Strategy responses: '200': - description: >- - A VectorStoreFileObject representing the attached file. + description: A VectorStoreFileObject representing the attached file. content: application/json: schema: $ref: '#/components/schemas/VectorStoreFileObject' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - VectorIO - summary: Attach a file to a vector store. - description: Attach a file to a vector store. - parameters: - - name: vector_store_id - in: path - description: >- - The ID of the vector store to attach the file to. - required: true - schema: - type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/OpenaiAttachFileToVectorStoreRequest' - required: true - deprecated: false + description: Default Response /v1/vector_stores/{vector_store_id}/files/{file_id}: - get: - responses: - '200': - description: >- - A VectorStoreFileObject representing the file. - content: - application/json: - schema: - $ref: '#/components/schemas/VectorStoreFileObject' - '400': - $ref: '#/components/responses/BadRequest400' - '429': - $ref: >- - #/components/responses/TooManyRequests429 - '500': - $ref: >- - #/components/responses/InternalServerError500 - default: - $ref: '#/components/responses/DefaultError' - tags: - - VectorIO - summary: Retrieves a vector store file. - description: Retrieves a vector store file. - parameters: - - name: vector_store_id - in: path - description: >- - The ID of the vector store containing the file to retrieve. - required: true - schema: - type: string - - name: file_id - in: path - description: The ID of the file to retrieve. - required: true - schema: - type: string - deprecated: false - post: - responses: - '200': - description: >- - A VectorStoreFileObject representing the updated file. - content: - application/json: - schema: - $ref: '#/components/schemas/VectorStoreFileObject' - '400': - $ref: '#/components/responses/BadRequest400' - '429': - $ref: >- - #/components/responses/TooManyRequests429 - '500': - $ref: >- - #/components/responses/InternalServerError500 - default: - $ref: '#/components/responses/DefaultError' - tags: - - VectorIO - summary: Updates a vector store file. - description: Updates a vector store file. - parameters: - - name: vector_store_id - in: path - description: >- - The ID of the vector store containing the file to update. - required: true - schema: - type: string - - name: file_id - in: path - description: The ID of the file to update. - required: true - schema: - type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/OpenaiUpdateVectorStoreFileRequest' - required: true - deprecated: false delete: + tags: + - V1 + summary: Openai Delete Vector Store File + description: Query endpoint for proper schema generation. + operationId: openai_delete_vector_store_file_v1_vector_stores__vector_store_id__files__file_id__delete + parameters: + - name: vector_store_id + in: path + required: true + schema: + type: string + title: Vector Store Id + - name: file_id + in: path + required: true + schema: + type: string + title: File Id responses: '200': - description: >- - A VectorStoreFileDeleteResponse indicating the deletion status. + description: A VectorStoreFileDeleteResponse indicating the deletion status. content: application/json: schema: $ref: '#/components/schemas/VectorStoreFileDeleteResponse' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - VectorIO - summary: Delete a vector store file. - description: Delete a vector store file. - parameters: - - name: vector_store_id - in: path - description: >- - The ID of the vector store containing the file to delete. - required: true - schema: - type: string - - name: file_id - in: path - description: The ID of the file to delete. - required: true - schema: - type: string - deprecated: false - /v1/vector_stores/{vector_store_id}/files/{file_id}/content: + description: Default Response get: + tags: + - V1 + summary: Openai Retrieve Vector Store File + description: Query endpoint for proper schema generation. + operationId: openai_retrieve_vector_store_file_v1_vector_stores__vector_store_id__files__file_id__get + parameters: + - name: vector_store_id + in: path + required: true + schema: + type: string + title: Vector Store Id + - name: file_id + in: path + required: true + schema: + type: string + title: File Id responses: '200': - description: >- - A list of InterleavedContent representing the file contents. + description: A VectorStoreFileObject representing the file. + content: + application/json: + schema: + $ref: '#/components/schemas/VectorStoreFileObject' + '400': + $ref: '#/components/responses/BadRequest400' + description: Bad Request + '429': + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests + '500': + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error + default: + $ref: '#/components/responses/DefaultError' + description: Default Response + post: + tags: + - V1 + summary: Openai Update Vector Store File + description: Query endpoint for proper schema generation. + operationId: openai_update_vector_store_file_v1_vector_stores__vector_store_id__files__file_id__post + parameters: + - name: vector_store_id + in: path + required: true + schema: + type: string + title: Vector Store Id + - name: file_id + in: path + required: true + schema: + type: string + title: File Id + - name: attributes + in: query + required: false + schema: + type: string + title: Attributes + responses: + '200': + description: A VectorStoreFileObject representing the updated file. + content: + application/json: + schema: + $ref: '#/components/schemas/VectorStoreFileObject' + '400': + $ref: '#/components/responses/BadRequest400' + description: Bad Request + '429': + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests + '500': + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error + default: + $ref: '#/components/responses/DefaultError' + description: Default Response + /v1/vector_stores/{vector_store_id}/files/{file_id}/content: + get: + tags: + - V1 + summary: Openai Retrieve Vector Store File Contents + description: Query endpoint for proper schema generation. + operationId: openai_retrieve_vector_store_file_contents_v1_vector_stores__vector_store_id__files__file_id__content_get + parameters: + - name: vector_store_id + in: path + required: true + schema: + type: string + title: Vector Store Id + - name: file_id + in: path + required: true + schema: + type: string + title: File Id + responses: + '200': + description: A list of InterleavedContent representing the file contents. content: application/json: schema: $ref: '#/components/schemas/VectorStoreFileContentsResponse' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - VectorIO - summary: >- - Retrieves the contents of a vector store file. - description: >- - Retrieves the contents of a vector store file. - parameters: - - name: vector_store_id - in: path - description: >- - The ID of the vector store containing the file to retrieve. - required: true - schema: - type: string - - name: file_id - in: path - description: The ID of the file to retrieve. - required: true - schema: - type: string - deprecated: false + description: Default Response /v1/vector_stores/{vector_store_id}/search: post: + tags: + - V1 + summary: Openai Search Vector Store + description: Query endpoint for proper schema generation. + operationId: openai_search_vector_store_v1_vector_stores__vector_store_id__search_post + parameters: + - name: vector_store_id + in: path + required: true + schema: + type: string + title: Vector Store Id + - name: query + in: query + required: false + schema: + type: string + title: Query + - name: filters + in: query + required: false + schema: + type: string + title: Filters + - name: max_num_results + in: query + required: false + schema: + type: integer + default: 10 + title: Max Num Results + - name: rewrite_query + in: query + required: false + schema: + type: boolean + default: false + title: Rewrite Query + - name: search_mode + in: query + required: false + schema: + type: string + default: vector + title: Search Mode + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SearchRankingOptions' responses: '200': - description: >- - A VectorStoreSearchResponse containing the search results. + description: A VectorStoreSearchResponse containing the search results. content: application/json: schema: $ref: '#/components/schemas/VectorStoreSearchResponsePage' '400': $ref: '#/components/responses/BadRequest400' + description: Bad Request '429': - $ref: >- - #/components/responses/TooManyRequests429 + $ref: '#/components/responses/TooManyRequests429' + description: Too Many Requests '500': - $ref: >- - #/components/responses/InternalServerError500 + $ref: '#/components/responses/InternalServerError500' + description: Internal Server Error default: $ref: '#/components/responses/DefaultError' - tags: - - VectorIO - summary: Search for chunks in a vector store. - description: >- - Search for chunks in a vector store. - - Searches a vector store for relevant chunks based on a query and optional - file attribute filters. - parameters: - - name: vector_store_id - in: path - description: The ID of the vector store to search. - required: true - schema: - type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/OpenaiSearchVectorStoreRequest' - required: true - deprecated: false + description: Default Response /v1/version: get: + tags: + - V1 + summary: Version + description: Response-only endpoint for proper schema generation. + operationId: version_v1_version_get responses: '200': - description: >- - Version information containing the service version number. + description: Version information containing the service version number. content: application/json: schema: $ref: '#/components/schemas/VersionInfo' '400': + description: Bad Request $ref: '#/components/responses/BadRequest400' '429': - $ref: >- - #/components/responses/TooManyRequests429 + description: Too Many Requests + $ref: '#/components/responses/TooManyRequests429' '500': - $ref: >- - #/components/responses/InternalServerError500 + description: Internal Server Error + $ref: '#/components/responses/InternalServerError500' default: + description: Default Response $ref: '#/components/responses/DefaultError' - tags: - - Inspect - summary: Get version. - description: >- - Get version. - - Get the version of the service. - parameters: [] - deprecated: false -jsonSchemaDialect: >- - https://json-schema.org/draft/2020-12/schema components: schemas: Error: @@ -8138,299 +8427,166 @@ components: title: ViolationLevel description: Severity level of a safety violation. AgentTurnInputType: - type: object properties: type: type: string const: agent_turn_input + title: Type default: agent_turn_input - description: >- - Discriminator type. Always "agent_turn_input" - additionalProperties: false - required: - - type + type: object title: AgentTurnInputType - description: Parameter type for agent turn input. + description: 'Parameter type for agent turn input. + + + :param type: Discriminator type. Always "agent_turn_input"' AggregationFunctionType: type: string enum: - - average - - weighted_average - - median - - categorical_count - - accuracy + - average + - weighted_average + - median + - categorical_count + - accuracy title: AggregationFunctionType - description: >- - Types of aggregation functions for scoring results. - ArrayType: + description: 'Types of aggregation functions for scoring results. + + :cvar average: Calculate the arithmetic mean of scores + + :cvar weighted_average: Calculate a weighted average of scores + + :cvar median: Calculate the median value of scores + + :cvar categorical_count: Count occurrences of categorical values + + :cvar accuracy: Calculate accuracy as the proportion of correct answers' + AllowedToolsFilter: + properties: + tool_names: + anyOf: + - items: + type: string + type: array + - type: 'null' + title: Tool Names type: object + title: AllowedToolsFilter + description: 'Filter configuration for restricting which MCP tools can be used. + + + :param tool_names: (Optional) List of specific tool names that are allowed' + ApprovalFilter: + properties: + always: + anyOf: + - items: + type: string + type: array + - type: 'null' + title: Always + never: + anyOf: + - items: + type: string + type: array + - type: 'null' + title: Never + type: object + title: ApprovalFilter + description: 'Filter configuration for MCP tool approval requirements. + + + :param always: (Optional) List of tool names that always require approval + + :param never: (Optional) List of tool names that never require approval' + ArrayType: properties: type: type: string const: array + title: Type default: array - description: Discriminator type. Always "array" - additionalProperties: false - required: - - type - title: ArrayType - description: Parameter type for array values. - BasicScoringFnParams: type: object + title: ArrayType + description: 'Parameter type for array values. + + + :param type: Discriminator type. Always "array"' + BasicScoringFnParams: properties: type: - $ref: '#/components/schemas/ScoringFnParamsType' + type: string const: basic + title: Type default: basic - description: >- - The type of scoring function parameters, always basic aggregation_functions: - type: array items: $ref: '#/components/schemas/AggregationFunctionType' - description: >- - Aggregation functions to apply to the scores of each row - additionalProperties: false - required: - - type - - aggregation_functions - title: BasicScoringFnParams - description: >- - Parameters for basic scoring function configuration. - BooleanType: + type: array + title: Aggregation Functions + description: Aggregation functions to apply to the scores of each row type: object + title: BasicScoringFnParams + description: 'Parameters for basic scoring function configuration. + + :param type: The type of scoring function parameters, always basic + + :param aggregation_functions: Aggregation functions to apply to the scores + of each row' + Body_create_openai_response_v1_responses_post: + properties: + prompt: + $ref: '#/components/schemas/OpenAIResponsePrompt' + text: + $ref: '#/components/schemas/OpenAIResponseText' + tools: + anyOf: + - $ref: '#/components/schemas/OpenAIResponseInputToolWebSearch' + - $ref: '#/components/schemas/OpenAIResponseInputToolFileSearch' + - $ref: '#/components/schemas/OpenAIResponseInputToolFunction' + - $ref: '#/components/schemas/OpenAIResponseInputToolMCP' + title: Tools + type: object + title: Body_create_openai_response_v1_responses_post + BooleanType: properties: type: type: string const: boolean + title: Type default: boolean - description: Discriminator type. Always "boolean" - additionalProperties: false - required: - - type - title: BooleanType - description: Parameter type for boolean values. - ChatCompletionInputType: type: object + title: BooleanType + description: 'Parameter type for boolean values. + + + :param type: Discriminator type. Always "boolean"' + ChatCompletionInputType: properties: type: type: string const: chat_completion_input + title: Type default: chat_completion_input - description: >- - Discriminator type. Always "chat_completion_input" - additionalProperties: false - required: - - type - title: ChatCompletionInputType - description: >- - Parameter type for chat completion input. - CompletionInputType: type: object + title: ChatCompletionInputType + description: 'Parameter type for chat completion input. + + + :param type: Discriminator type. Always "chat_completion_input"' + CompletionInputType: properties: type: type: string const: completion_input + title: Type default: completion_input - description: >- - Discriminator type. Always "completion_input" - additionalProperties: false - required: - - type + type: object title: CompletionInputType - description: Parameter type for completion input. - JsonType: - type: object - properties: - type: - type: string - const: json - default: json - description: Discriminator type. Always "json" - additionalProperties: false - required: - - type - title: JsonType - description: Parameter type for JSON values. - LLMAsJudgeScoringFnParams: - type: object - properties: - type: - $ref: '#/components/schemas/ScoringFnParamsType' - const: llm_as_judge - default: llm_as_judge - description: >- - The type of scoring function parameters, always llm_as_judge - judge_model: - type: string - description: >- - Identifier of the LLM model to use as a judge for scoring - prompt_template: - type: string - description: >- - (Optional) Custom prompt template for the judge model - judge_score_regexes: - type: array - items: - type: string - description: >- - Regexes to extract the answer from generated response - aggregation_functions: - type: array - items: - $ref: '#/components/schemas/AggregationFunctionType' - description: >- - Aggregation functions to apply to the scores of each row - additionalProperties: false - required: - - type - - judge_model - - judge_score_regexes - - aggregation_functions - title: LLMAsJudgeScoringFnParams - description: >- - Parameters for LLM-as-judge scoring function configuration. - NumberType: - type: object - properties: - type: - type: string - const: number - default: number - description: Discriminator type. Always "number" - additionalProperties: false - required: - - type - title: NumberType - description: Parameter type for numeric values. - ObjectType: - type: object - properties: - type: - type: string - const: object - default: object - description: Discriminator type. Always "object" - additionalProperties: false - required: - - type - title: ObjectType - description: Parameter type for object values. - RegexParserScoringFnParams: - type: object - properties: - type: - $ref: '#/components/schemas/ScoringFnParamsType' - const: regex_parser - default: regex_parser - description: >- - The type of scoring function parameters, always regex_parser - parsing_regexes: - type: array - items: - type: string - description: >- - Regex to extract the answer from generated response - aggregation_functions: - type: array - items: - $ref: '#/components/schemas/AggregationFunctionType' - description: >- - Aggregation functions to apply to the scores of each row - additionalProperties: false - required: - - type - - parsing_regexes - - aggregation_functions - title: RegexParserScoringFnParams - description: >- - Parameters for regex parser scoring function configuration. - ScoringFn: - type: object - properties: - identifier: - type: string - provider_resource_id: - type: string - provider_id: - type: string - type: - type: string - enum: - - model - - shield - - vector_store - - dataset - - scoring_function - - benchmark - - tool - - tool_group - - prompt - const: scoring_function - default: scoring_function - description: >- - The resource type, always scoring_function - description: - type: string - metadata: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - return_type: - oneOf: - - $ref: '#/components/schemas/StringType' - - $ref: '#/components/schemas/NumberType' - - $ref: '#/components/schemas/BooleanType' - - $ref: '#/components/schemas/ArrayType' - - $ref: '#/components/schemas/ObjectType' - - $ref: '#/components/schemas/JsonType' - - $ref: '#/components/schemas/UnionType' - - $ref: '#/components/schemas/ChatCompletionInputType' - - $ref: '#/components/schemas/CompletionInputType' - - $ref: '#/components/schemas/AgentTurnInputType' - discriminator: - propertyName: type - mapping: - string: '#/components/schemas/StringType' - number: '#/components/schemas/NumberType' - boolean: '#/components/schemas/BooleanType' - array: '#/components/schemas/ArrayType' - object: '#/components/schemas/ObjectType' - json: '#/components/schemas/JsonType' - union: '#/components/schemas/UnionType' - chat_completion_input: '#/components/schemas/ChatCompletionInputType' - completion_input: '#/components/schemas/CompletionInputType' - agent_turn_input: '#/components/schemas/AgentTurnInputType' - params: - $ref: '#/components/schemas/ScoringFnParams' - additionalProperties: false - required: - - identifier - - provider_id - - type - - metadata - - return_type - title: ScoringFn - description: >- - A scoring function resource for evaluating model outputs. - ScoringFnParams: - oneOf: - - $ref: '#/components/schemas/LLMAsJudgeScoringFnParams' - - $ref: '#/components/schemas/RegexParserScoringFnParams' - - $ref: '#/components/schemas/BasicScoringFnParams' - discriminator: - propertyName: type - mapping: - llm_as_judge: '#/components/schemas/LLMAsJudgeScoringFnParams' - regex_parser: '#/components/schemas/RegexParserScoringFnParams' - basic: '#/components/schemas/BasicScoringFnParams' - ScoringFnParamsType: + description: 'Parameter type for completion input. + + + :param type: Discriminator type. Always "completion_input"' + ConversationItemInclude: type: string enum: - llm_as_judge @@ -8996,1286 +9152,3543 @@ components: - chunk_size_in_tokens title: InsertRequest DefaultRAGQueryGeneratorConfig: - type: object properties: type: type: string const: default + title: Type default: default - description: >- - Type of query generator, always 'default' separator: type: string + title: Separator default: ' ' - description: >- - String separator used to join query terms - additionalProperties: false - required: - - type - - separator - title: DefaultRAGQueryGeneratorConfig - description: >- - Configuration for the default RAG query generator. - LLMRAGQueryGeneratorConfig: type: object + title: DefaultRAGQueryGeneratorConfig + description: 'Configuration for the default RAG query generator. + + + :param type: Type of query generator, always ''default'' + + :param separator: String separator used to join query terms' + HealthInfo: + properties: + status: + $ref: '#/components/schemas/HealthStatus' + type: object + required: + - status + title: HealthInfo + description: 'Health status information for the service. + + + :param status: Current health status of the service' + HealthStatus: + type: string + enum: + - OK + - Error + - Not Implemented + title: HealthStatus + JsonType: + properties: + type: + type: string + const: json + title: Type + default: json + type: object + title: JsonType + description: 'Parameter type for JSON values. + + + :param type: Discriminator type. Always "json"' + LLMAsJudgeScoringFnParams: + properties: + type: + type: string + const: llm_as_judge + title: Type + default: llm_as_judge + judge_model: + type: string + title: Judge Model + prompt_template: + anyOf: + - type: string + - type: 'null' + title: Prompt Template + judge_score_regexes: + items: + type: string + type: array + title: Judge Score Regexes + description: Regexes to extract the answer from generated response + aggregation_functions: + items: + $ref: '#/components/schemas/AggregationFunctionType' + type: array + title: Aggregation Functions + description: Aggregation functions to apply to the scores of each row + type: object + required: + - judge_model + title: LLMAsJudgeScoringFnParams + description: 'Parameters for LLM-as-judge scoring function configuration. + + :param type: The type of scoring function parameters, always llm_as_judge + + :param judge_model: Identifier of the LLM model to use as a judge for scoring + + :param prompt_template: (Optional) Custom prompt template for the judge model + + :param judge_score_regexes: Regexes to extract the answer from generated response + + :param aggregation_functions: Aggregation functions to apply to the scores + of each row' + LLMRAGQueryGeneratorConfig: properties: type: type: string const: llm + title: Type default: llm - description: Type of query generator, always 'llm' model: type: string - description: >- - Name of the language model to use for query generation + title: Model template: type: string - description: >- - Template string for formatting the query generation prompt - additionalProperties: false - required: - - type - - model - - template - title: LLMRAGQueryGeneratorConfig - description: >- - Configuration for the LLM-based RAG query generator. - RAGQueryConfig: + title: Template type: object + required: + - model + - template + title: LLMRAGQueryGeneratorConfig + description: 'Configuration for the LLM-based RAG query generator. + + + :param type: Type of query generator, always ''llm'' + + :param model: Name of the language model to use for query generation + + :param template: Template string for formatting the query generation prompt' + ListModelsResponse: + properties: + data: + items: + $ref: '#/components/schemas/Model' + type: array + title: Data + type: object + required: + - data + title: ListModelsResponse + ListPromptsResponse: + properties: + data: + items: + $ref: '#/components/schemas/Prompt' + type: array + title: Data + type: object + required: + - data + title: ListPromptsResponse + description: Response model to list prompts. + ListProvidersResponse: + properties: + data: + items: + $ref: '#/components/schemas/ProviderInfo' + type: array + title: Data + type: object + required: + - data + title: ListProvidersResponse + description: 'Response containing a list of all available providers. + + + :param data: List of provider information objects' + ListRoutesResponse: + properties: + data: + items: + $ref: '#/components/schemas/RouteInfo' + type: array + title: Data + type: object + required: + - data + title: ListRoutesResponse + description: 'Response containing a list of all available API routes. + + + :param data: List of available route information objects' + ListScoringFunctionsResponse: + properties: + data: + items: + $ref: '#/components/schemas/ScoringFn-Output' + type: array + title: Data + type: object + required: + - data + title: ListScoringFunctionsResponse + ListShieldsResponse: + properties: + data: + items: + $ref: '#/components/schemas/Shield' + type: array + title: Data + type: object + required: + - data + title: ListShieldsResponse + ListToolGroupsResponse: + properties: + data: + items: + $ref: '#/components/schemas/ToolGroup' + type: array + title: Data + type: object + required: + - data + title: ListToolGroupsResponse + description: 'Response containing a list of tool groups. + + + :param data: List of tool groups' + MCPListToolsTool: + properties: + input_schema: + additionalProperties: true + type: object + title: Input Schema + name: + type: string + title: Name + description: + anyOf: + - type: string + - type: 'null' + title: Description + type: object + required: + - input_schema + - name + title: MCPListToolsTool + description: 'Tool definition returned by MCP list tools operation. + + + :param input_schema: JSON schema defining the tool''s input parameters + + :param name: Name of the tool + + :param description: (Optional) Description of what the tool does' + Model: + properties: + identifier: + type: string + title: Identifier + description: Unique identifier for this resource in llama stack + provider_resource_id: + anyOf: + - type: string + - type: 'null' + title: Provider Resource Id + description: Unique identifier for this resource in the provider + provider_id: + type: string + title: Provider Id + description: ID of the provider that owns this resource + type: + type: string + const: model + title: Type + default: model + metadata: + additionalProperties: true + type: object + title: Metadata + description: Any additional metadata for this model + model_type: + $ref: '#/components/schemas/ModelType' + default: llm + type: object + required: + - identifier + - provider_id + title: Model + description: 'A model resource representing an AI model registered in Llama + Stack. + + + :param type: The resource type, always ''model'' for model resources + + :param model_type: The type of model (LLM or embedding model) + + :param metadata: Any additional metadata for this model + + :param identifier: Unique identifier for this resource in llama stack + + :param provider_resource_id: Unique identifier for this resource in the provider + + :param provider_id: ID of the provider that owns this resource' + ModelType: + type: string + enum: + - llm + - embedding + - rerank + title: ModelType + description: 'Enumeration of supported model types in Llama Stack. + + :cvar llm: Large language model for text generation and completion + + :cvar embedding: Embedding model for converting text to vector representations + + :cvar rerank: Reranking model for reordering documents based on their relevance + to a query' + NumberType: + properties: + type: + type: string + const: number + title: Type + default: number + type: object + title: NumberType + description: 'Parameter type for numeric values. + + + :param type: Discriminator type. Always "number"' + ObjectType: + properties: + type: + type: string + const: object + title: Type + default: object + type: object + title: ObjectType + description: 'Parameter type for object values. + + + :param type: Discriminator type. Always "object"' + OpenAIAssistantMessageParam-Input: + properties: + role: + type: string + const: assistant + title: Role + default: assistant + content: + anyOf: + - type: string + - items: + $ref: '#/components/schemas/OpenAIChatCompletionContentPartTextParam' + type: array + - type: 'null' + title: Content + name: + anyOf: + - type: string + - type: 'null' + title: Name + tool_calls: + anyOf: + - items: + $ref: '#/components/schemas/OpenAIChatCompletionToolCall' + type: array + - type: 'null' + title: Tool Calls + type: object + title: OpenAIAssistantMessageParam + description: 'A message containing the model''s (assistant) response in an OpenAI-compatible + chat completion request. + + + :param role: Must be "assistant" to identify this as the model''s response + + :param content: The content of the model''s response + + :param name: (Optional) The name of the assistant message participant. + + :param tool_calls: List of tool calls. Each tool call is an OpenAIChatCompletionToolCall + object.' + OpenAIAssistantMessageParam-Output: + properties: + role: + type: string + const: assistant + title: Role + default: assistant + content: + anyOf: + - type: string + - items: + $ref: '#/components/schemas/OpenAIChatCompletionContentPartTextParam' + type: array + - type: 'null' + title: Content + name: + anyOf: + - type: string + - type: 'null' + title: Name + tool_calls: + anyOf: + - items: + $ref: '#/components/schemas/OpenAIChatCompletionToolCall' + type: array + - type: 'null' + title: Tool Calls + type: object + title: OpenAIAssistantMessageParam + description: 'A message containing the model''s (assistant) response in an OpenAI-compatible + chat completion request. + + + :param role: Must be "assistant" to identify this as the model''s response + + :param content: The content of the model''s response + + :param name: (Optional) The name of the assistant message participant. + + :param tool_calls: List of tool calls. Each tool call is an OpenAIChatCompletionToolCall + object.' + OpenAIChatCompletion: + properties: + id: + type: string + title: Id + choices: + items: + $ref: '#/components/schemas/OpenAIChoice-Output' + type: array + title: Choices + object: + type: string + const: chat.completion + title: Object + default: chat.completion + created: + type: integer + title: Created + model: + type: string + title: Model + usage: + anyOf: + - $ref: '#/components/schemas/OpenAIChatCompletionUsage' + - type: 'null' + type: object + required: + - id + - choices + - created + - model + title: OpenAIChatCompletion + description: 'Response from an OpenAI-compatible chat completion request. + + + :param id: The ID of the chat completion + + :param choices: List of choices + + :param object: The object type, which will be "chat.completion" + + :param created: The Unix timestamp in seconds when the chat completion was + created + + :param model: The model that was used to generate the chat completion + + :param usage: Token usage information for the completion' + OpenAIChatCompletionContentPartImageParam: + properties: + type: + type: string + const: image_url + title: Type + default: image_url + image_url: + $ref: '#/components/schemas/OpenAIImageURL' + type: object + required: + - image_url + title: OpenAIChatCompletionContentPartImageParam + description: 'Image content part for OpenAI-compatible chat completion messages. + + + :param type: Must be "image_url" to identify this as image content + + :param image_url: Image URL specification and processing details' + OpenAIChatCompletionContentPartTextParam: + properties: + type: + type: string + const: text + title: Type + default: text + text: + type: string + title: Text + type: object + required: + - text + title: OpenAIChatCompletionContentPartTextParam + description: 'Text content part for OpenAI-compatible chat completion messages. + + + :param type: Must be "text" to identify this as text content + + :param text: The text content of the message' + OpenAIChatCompletionRequestWithExtraBody: + properties: + model: + type: string + title: Model + messages: + items: + oneOf: + - $ref: '#/components/schemas/OpenAIUserMessageParam-Input' + - $ref: '#/components/schemas/OpenAISystemMessageParam' + - $ref: '#/components/schemas/OpenAIAssistantMessageParam-Input' + - $ref: '#/components/schemas/OpenAIToolMessageParam' + - $ref: '#/components/schemas/OpenAIDeveloperMessageParam' + discriminator: + propertyName: role + mapping: + assistant: '#/components/schemas/OpenAIAssistantMessageParam-Input' + developer: '#/components/schemas/OpenAIDeveloperMessageParam' + system: '#/components/schemas/OpenAISystemMessageParam' + tool: '#/components/schemas/OpenAIToolMessageParam' + user: '#/components/schemas/OpenAIUserMessageParam-Input' + type: array + minItems: 1 + title: Messages + frequency_penalty: + anyOf: + - type: number + - type: 'null' + title: Frequency Penalty + function_call: + anyOf: + - type: string + - additionalProperties: true + type: object + - type: 'null' + title: Function Call + functions: + anyOf: + - items: + additionalProperties: true + type: object + type: array + - type: 'null' + title: Functions + logit_bias: + anyOf: + - additionalProperties: + type: number + type: object + - type: 'null' + title: Logit Bias + logprobs: + anyOf: + - type: boolean + - type: 'null' + title: Logprobs + max_completion_tokens: + anyOf: + - type: integer + - type: 'null' + title: Max Completion Tokens + max_tokens: + anyOf: + - type: integer + - type: 'null' + title: Max Tokens + n: + anyOf: + - type: integer + - type: 'null' + title: N + parallel_tool_calls: + anyOf: + - type: boolean + - type: 'null' + title: Parallel Tool Calls + presence_penalty: + anyOf: + - type: number + - type: 'null' + title: Presence Penalty + response_format: + anyOf: + - oneOf: + - $ref: '#/components/schemas/OpenAIResponseFormatText' + - $ref: '#/components/schemas/OpenAIResponseFormatJSONSchema' + - $ref: '#/components/schemas/OpenAIResponseFormatJSONObject' + discriminator: + propertyName: type + mapping: + json_object: '#/components/schemas/OpenAIResponseFormatJSONObject' + json_schema: '#/components/schemas/OpenAIResponseFormatJSONSchema' + text: '#/components/schemas/OpenAIResponseFormatText' + - type: 'null' + title: Response Format + seed: + anyOf: + - type: integer + - type: 'null' + title: Seed + stop: + anyOf: + - type: string + - items: + type: string + type: array + - type: 'null' + title: Stop + stream: + anyOf: + - type: boolean + - type: 'null' + title: Stream + stream_options: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Stream Options + temperature: + anyOf: + - type: number + - type: 'null' + title: Temperature + tool_choice: + anyOf: + - type: string + - additionalProperties: true + type: object + - type: 'null' + title: Tool Choice + tools: + anyOf: + - items: + additionalProperties: true + type: object + type: array + - type: 'null' + title: Tools + top_logprobs: + anyOf: + - type: integer + - type: 'null' + title: Top Logprobs + top_p: + anyOf: + - type: number + - type: 'null' + title: Top P + user: + anyOf: + - type: string + - type: 'null' + title: User + additionalProperties: true + type: object + required: + - model + - messages + title: OpenAIChatCompletionRequestWithExtraBody + description: 'Request parameters for OpenAI-compatible chat completion endpoint. + + + :param model: The identifier of the model to use. The model must be registered + with Llama Stack and available via the /models endpoint. + + :param messages: List of messages in the conversation. + + :param frequency_penalty: (Optional) The penalty for repeated tokens. + + :param function_call: (Optional) The function call to use. + + :param functions: (Optional) List of functions to use. + + :param logit_bias: (Optional) The logit bias to use. + + :param logprobs: (Optional) The log probabilities to use. + + :param max_completion_tokens: (Optional) The maximum number of tokens to generate. + + :param max_tokens: (Optional) The maximum number of tokens to generate. + + :param n: (Optional) The number of completions to generate. + + :param parallel_tool_calls: (Optional) Whether to parallelize tool calls. + + :param presence_penalty: (Optional) The penalty for repeated tokens. + + :param response_format: (Optional) The response format to use. + + :param seed: (Optional) The seed to use. + + :param stop: (Optional) The stop tokens to use. + + :param stream: (Optional) Whether to stream the response. + + :param stream_options: (Optional) The stream options to use. + + :param temperature: (Optional) The temperature to use. + + :param tool_choice: (Optional) The tool choice to use. + + :param tools: (Optional) The tools to use. + + :param top_logprobs: (Optional) The top log probabilities to use. + + :param top_p: (Optional) The top p to use. + + :param user: (Optional) The user to use.' + OpenAIChatCompletionToolCall: + properties: + index: + anyOf: + - type: integer + - type: 'null' + title: Index + id: + anyOf: + - type: string + - type: 'null' + title: Id + type: + type: string + const: function + title: Type + default: function + function: + anyOf: + - $ref: '#/components/schemas/OpenAIChatCompletionToolCallFunction' + - type: 'null' + type: object + title: OpenAIChatCompletionToolCall + description: 'Tool call specification for OpenAI-compatible chat completion + responses. + + + :param index: (Optional) Index of the tool call in the list + + :param id: (Optional) Unique identifier for the tool call + + :param type: Must be "function" to identify this as a function call + + :param function: (Optional) Function call details' + OpenAIChatCompletionToolCallFunction: + properties: + name: + anyOf: + - type: string + - type: 'null' + title: Name + arguments: + anyOf: + - type: string + - type: 'null' + title: Arguments + type: object + title: OpenAIChatCompletionToolCallFunction + description: 'Function call details for OpenAI-compatible tool calls. + + + :param name: (Optional) Name of the function to call + + :param arguments: (Optional) Arguments to pass to the function as a JSON string' + OpenAIChatCompletionUsage: + properties: + prompt_tokens: + type: integer + title: Prompt Tokens + completion_tokens: + type: integer + title: Completion Tokens + total_tokens: + type: integer + title: Total Tokens + prompt_tokens_details: + anyOf: + - $ref: '#/components/schemas/OpenAIChatCompletionUsagePromptTokensDetails' + - type: 'null' + completion_tokens_details: + anyOf: + - $ref: '#/components/schemas/OpenAIChatCompletionUsageCompletionTokensDetails' + - type: 'null' + type: object + required: + - prompt_tokens + - completion_tokens + - total_tokens + title: OpenAIChatCompletionUsage + description: 'Usage information for OpenAI chat completion. + + + :param prompt_tokens: Number of tokens in the prompt + + :param completion_tokens: Number of tokens in the completion + + :param total_tokens: Total tokens used (prompt + completion) + + :param input_tokens_details: Detailed breakdown of input token usage + + :param output_tokens_details: Detailed breakdown of output token usage' + OpenAIChatCompletionUsageCompletionTokensDetails: + properties: + reasoning_tokens: + anyOf: + - type: integer + - type: 'null' + title: Reasoning Tokens + type: object + title: OpenAIChatCompletionUsageCompletionTokensDetails + description: 'Token details for output tokens in OpenAI chat completion usage. + + + :param reasoning_tokens: Number of tokens used for reasoning (o1/o3 models)' + OpenAIChatCompletionUsagePromptTokensDetails: + properties: + cached_tokens: + anyOf: + - type: integer + - type: 'null' + title: Cached Tokens + type: object + title: OpenAIChatCompletionUsagePromptTokensDetails + description: 'Token details for prompt tokens in OpenAI chat completion usage. + + + :param cached_tokens: Number of tokens retrieved from cache' + OpenAIChoice-Output: + properties: + message: + oneOf: + - $ref: '#/components/schemas/OpenAIUserMessageParam-Output' + - $ref: '#/components/schemas/OpenAISystemMessageParam' + - $ref: '#/components/schemas/OpenAIAssistantMessageParam-Output' + - $ref: '#/components/schemas/OpenAIToolMessageParam' + - $ref: '#/components/schemas/OpenAIDeveloperMessageParam' + title: Message + discriminator: + propertyName: role + mapping: + assistant: '#/components/schemas/OpenAIAssistantMessageParam-Output' + developer: '#/components/schemas/OpenAIDeveloperMessageParam' + system: '#/components/schemas/OpenAISystemMessageParam' + tool: '#/components/schemas/OpenAIToolMessageParam' + user: '#/components/schemas/OpenAIUserMessageParam-Output' + finish_reason: + type: string + title: Finish Reason + index: + type: integer + title: Index + logprobs: + anyOf: + - $ref: '#/components/schemas/OpenAIChoiceLogprobs-Output' + - type: 'null' + type: object + required: + - message + - finish_reason + - index + title: OpenAIChoice + description: 'A choice from an OpenAI-compatible chat completion response. + + + :param message: The message from the model + + :param finish_reason: The reason the model stopped generating + + :param index: The index of the choice + + :param logprobs: (Optional) The log probabilities for the tokens in the message' + OpenAIChoiceLogprobs-Output: + properties: + content: + anyOf: + - items: + $ref: '#/components/schemas/OpenAITokenLogProb' + type: array + - type: 'null' + title: Content + refusal: + anyOf: + - items: + $ref: '#/components/schemas/OpenAITokenLogProb' + type: array + - type: 'null' + title: Refusal + type: object + title: OpenAIChoiceLogprobs + description: 'The log probabilities for the tokens in the message from an OpenAI-compatible + chat completion response. + + + :param content: (Optional) The log probabilities for the tokens in the message + + :param refusal: (Optional) The log probabilities for the tokens in the message' + OpenAICompletion: + properties: + id: + type: string + title: Id + choices: + items: + $ref: '#/components/schemas/OpenAICompletionChoice-Output' + type: array + title: Choices + created: + type: integer + title: Created + model: + type: string + title: Model + object: + type: string + const: text_completion + title: Object + default: text_completion + type: object + required: + - id + - choices + - created + - model + title: OpenAICompletion + description: 'Response from an OpenAI-compatible completion request. + + + :id: The ID of the completion + + :choices: List of choices + + :created: The Unix timestamp in seconds when the completion was created + + :model: The model that was used to generate the completion + + :object: The object type, which will be "text_completion"' + OpenAICompletionChoice-Output: + properties: + finish_reason: + type: string + title: Finish Reason + text: + type: string + title: Text + index: + type: integer + title: Index + logprobs: + anyOf: + - $ref: '#/components/schemas/OpenAIChoiceLogprobs-Output' + - type: 'null' + type: object + required: + - finish_reason + - text + - index + title: OpenAICompletionChoice + description: 'A choice from an OpenAI-compatible completion response. + + + :finish_reason: The reason the model stopped generating + + :text: The text of the choice + + :index: The index of the choice + + :logprobs: (Optional) The log probabilities for the tokens in the choice' + OpenAICompletionRequestWithExtraBody: + properties: + model: + type: string + title: Model + prompt: + anyOf: + - type: string + - items: + type: string + type: array + - items: + type: integer + type: array + - items: + items: + type: integer + type: array + type: array + title: Prompt + best_of: + anyOf: + - type: integer + - type: 'null' + title: Best Of + echo: + anyOf: + - type: boolean + - type: 'null' + title: Echo + frequency_penalty: + anyOf: + - type: number + - type: 'null' + title: Frequency Penalty + logit_bias: + anyOf: + - additionalProperties: + type: number + type: object + - type: 'null' + title: Logit Bias + logprobs: + anyOf: + - type: boolean + - type: 'null' + title: Logprobs + max_tokens: + anyOf: + - type: integer + - type: 'null' + title: Max Tokens + n: + anyOf: + - type: integer + - type: 'null' + title: N + presence_penalty: + anyOf: + - type: number + - type: 'null' + title: Presence Penalty + seed: + anyOf: + - type: integer + - type: 'null' + title: Seed + stop: + anyOf: + - type: string + - items: + type: string + type: array + - type: 'null' + title: Stop + stream: + anyOf: + - type: boolean + - type: 'null' + title: Stream + stream_options: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Stream Options + temperature: + anyOf: + - type: number + - type: 'null' + title: Temperature + top_p: + anyOf: + - type: number + - type: 'null' + title: Top P + user: + anyOf: + - type: string + - type: 'null' + title: User + suffix: + anyOf: + - type: string + - type: 'null' + title: Suffix + additionalProperties: true + type: object + required: + - model + - prompt + title: OpenAICompletionRequestWithExtraBody + description: 'Request parameters for OpenAI-compatible completion endpoint. + + + :param model: The identifier of the model to use. The model must be registered + with Llama Stack and available via the /models endpoint. + + :param prompt: The prompt to generate a completion for. + + :param best_of: (Optional) The number of completions to generate. + + :param echo: (Optional) Whether to echo the prompt. + + :param frequency_penalty: (Optional) The penalty for repeated tokens. + + :param logit_bias: (Optional) The logit bias to use. + + :param logprobs: (Optional) The log probabilities to use. + + :param max_tokens: (Optional) The maximum number of tokens to generate. + + :param n: (Optional) The number of completions to generate. + + :param presence_penalty: (Optional) The penalty for repeated tokens. + + :param seed: (Optional) The seed to use. + + :param stop: (Optional) The stop tokens to use. + + :param stream: (Optional) Whether to stream the response. + + :param stream_options: (Optional) The stream options to use. + + :param temperature: (Optional) The temperature to use. + + :param top_p: (Optional) The top p to use. + + :param user: (Optional) The user to use. + + :param suffix: (Optional) The suffix that should be appended to the completion.' + OpenAICreateVectorStoreFileBatchRequestWithExtraBody: + properties: + file_ids: + items: + type: string + type: array + title: File Ids + attributes: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Attributes + chunking_strategy: + anyOf: + - oneOf: + - $ref: '#/components/schemas/VectorStoreChunkingStrategyAuto' + - $ref: '#/components/schemas/VectorStoreChunkingStrategyStatic' + discriminator: + propertyName: type + mapping: + auto: '#/components/schemas/VectorStoreChunkingStrategyAuto' + static: '#/components/schemas/VectorStoreChunkingStrategyStatic' + - type: 'null' + title: Chunking Strategy + additionalProperties: true + type: object + required: + - file_ids + title: OpenAICreateVectorStoreFileBatchRequestWithExtraBody + description: 'Request to create a vector store file batch with extra_body support. + + + :param file_ids: A list of File IDs that the vector store should use + + :param attributes: (Optional) Key-value attributes to store with the files + + :param chunking_strategy: (Optional) The chunking strategy used to chunk the + file(s). Defaults to auto' + OpenAICreateVectorStoreRequestWithExtraBody: + properties: + name: + anyOf: + - type: string + - type: 'null' + title: Name + file_ids: + anyOf: + - items: + type: string + type: array + - type: 'null' + title: File Ids + expires_after: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Expires After + chunking_strategy: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Chunking Strategy + metadata: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Metadata + additionalProperties: true + type: object + title: OpenAICreateVectorStoreRequestWithExtraBody + description: 'Request to create a vector store with extra_body support. + + + :param name: (Optional) A name for the vector store + + :param file_ids: List of file IDs to include in the vector store + + :param expires_after: (Optional) Expiration policy for the vector store + + :param chunking_strategy: (Optional) Strategy for splitting files into chunks + + :param metadata: Set of key-value pairs that can be attached to the vector + store' + OpenAIDeveloperMessageParam: + properties: + role: + type: string + const: developer + title: Role + default: developer + content: + anyOf: + - type: string + - items: + $ref: '#/components/schemas/OpenAIChatCompletionContentPartTextParam' + type: array + title: Content + name: + anyOf: + - type: string + - type: 'null' + title: Name + type: object + required: + - content + title: OpenAIDeveloperMessageParam + description: 'A message from the developer in an OpenAI-compatible chat completion + request. + + + :param role: Must be "developer" to identify this as a developer message + + :param content: The content of the developer message + + :param name: (Optional) The name of the developer message participant.' + OpenAIEmbeddingData: + properties: + object: + type: string + const: embedding + title: Object + default: embedding + embedding: + anyOf: + - items: + type: number + type: array + - type: string + title: Embedding + index: + type: integer + title: Index + type: object + required: + - embedding + - index + title: OpenAIEmbeddingData + description: 'A single embedding data object from an OpenAI-compatible embeddings + response. + + + :param object: The object type, which will be "embedding" + + :param embedding: The embedding vector as a list of floats (when encoding_format="float") + or as a base64-encoded string (when encoding_format="base64") + + :param index: The index of the embedding in the input list' + OpenAIEmbeddingUsage: + properties: + prompt_tokens: + type: integer + title: Prompt Tokens + total_tokens: + type: integer + title: Total Tokens + type: object + required: + - prompt_tokens + - total_tokens + title: OpenAIEmbeddingUsage + description: 'Usage information for an OpenAI-compatible embeddings response. + + + :param prompt_tokens: The number of tokens in the input + + :param total_tokens: The total number of tokens used' + OpenAIEmbeddingsRequestWithExtraBody: + properties: + model: + type: string + title: Model + input: + anyOf: + - type: string + - items: + type: string + type: array + title: Input + encoding_format: + anyOf: + - type: string + - type: 'null' + title: Encoding Format + default: float + dimensions: + anyOf: + - type: integer + - type: 'null' + title: Dimensions + user: + anyOf: + - type: string + - type: 'null' + title: User + additionalProperties: true + type: object + required: + - model + - input + title: OpenAIEmbeddingsRequestWithExtraBody + description: 'Request parameters for OpenAI-compatible embeddings endpoint. + + + :param model: The identifier of the model to use. The model must be an embedding + model registered with Llama Stack and available via the /models endpoint. + + :param input: Input text to embed, encoded as a string or array of strings. + To embed multiple inputs in a single request, pass an array of strings. + + :param encoding_format: (Optional) The format to return the embeddings in. + Can be either "float" or "base64". Defaults to "float". + + :param dimensions: (Optional) The number of dimensions the resulting output + embeddings should have. Only supported in text-embedding-3 and later models. + + :param user: (Optional) A unique identifier representing your end-user, which + can help OpenAI to monitor and detect abuse.' + OpenAIEmbeddingsResponse: + properties: + object: + type: string + const: list + title: Object + default: list + data: + items: + $ref: '#/components/schemas/OpenAIEmbeddingData' + type: array + title: Data + model: + type: string + title: Model + usage: + $ref: '#/components/schemas/OpenAIEmbeddingUsage' + type: object + required: + - data + - model + - usage + title: OpenAIEmbeddingsResponse + description: 'Response from an OpenAI-compatible embeddings request. + + + :param object: The object type, which will be "list" + + :param data: List of embedding data objects + + :param model: The model that was used to generate the embeddings + + :param usage: Usage information' + OpenAIFile: + properties: + type: + type: string + const: file + title: Type + default: file + file: + $ref: '#/components/schemas/OpenAIFileFile' + type: object + required: + - file + title: OpenAIFile + OpenAIFileFile: + properties: + file_data: + anyOf: + - type: string + - type: 'null' + title: File Data + file_id: + anyOf: + - type: string + - type: 'null' + title: File Id + filename: + anyOf: + - type: string + - type: 'null' + title: Filename + type: object + title: OpenAIFileFile + OpenAIFileObject: + properties: + object: + type: string + const: file + title: Object + default: file + id: + type: string + title: Id + bytes: + type: integer + title: Bytes + created_at: + type: integer + title: Created At + expires_at: + type: integer + title: Expires At + filename: + type: string + title: Filename + purpose: + $ref: '#/components/schemas/OpenAIFilePurpose' + type: object + required: + - id + - bytes + - created_at + - expires_at + - filename + - purpose + title: OpenAIFileObject + description: 'OpenAI File object as defined in the OpenAI Files API. + + + :param object: The object type, which is always "file" + + :param id: The file identifier, which can be referenced in the API endpoints + + :param bytes: The size of the file, in bytes + + :param created_at: The Unix timestamp (in seconds) for when the file was created + + :param expires_at: The Unix timestamp (in seconds) for when the file expires + + :param filename: The name of the file + + :param purpose: The intended purpose of the file' + OpenAIFilePurpose: + type: string + enum: + - assistants + - batch + title: OpenAIFilePurpose + description: Valid purpose values for OpenAI Files API. + OpenAIImageURL: + properties: + url: + type: string + title: Url + detail: + anyOf: + - type: string + - type: 'null' + title: Detail + type: object + required: + - url + title: OpenAIImageURL + description: 'Image URL specification for OpenAI-compatible chat completion + messages. + + + :param url: URL of the image to include in the message + + :param detail: (Optional) Level of detail for image processing. Can be "low", + "high", or "auto"' + OpenAIJSONSchema: + properties: + name: + type: string + title: Name + description: + anyOf: + - type: string + - type: 'null' + title: Description + strict: + anyOf: + - type: boolean + - type: 'null' + title: Strict + schema: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Schema + type: object + title: OpenAIJSONSchema + description: 'JSON schema specification for OpenAI-compatible structured response + format. + + + :param name: Name of the schema + + :param description: (Optional) Description of the schema + + :param strict: (Optional) Whether to enforce strict adherence to the schema + + :param schema: (Optional) The JSON schema definition' + OpenAIResponseAnnotationCitation: + properties: + type: + type: string + const: url_citation + title: Type + default: url_citation + end_index: + type: integer + title: End Index + start_index: + type: integer + title: Start Index + title: + type: string + title: Title + url: + type: string + title: Url + type: object + required: + - end_index + - start_index + - title + - url + title: OpenAIResponseAnnotationCitation + description: 'URL citation annotation for referencing external web resources. + + + :param type: Annotation type identifier, always "url_citation" + + :param end_index: End position of the citation span in the content + + :param start_index: Start position of the citation span in the content + + :param title: Title of the referenced web resource + + :param url: URL of the referenced web resource' + OpenAIResponseAnnotationContainerFileCitation: + properties: + type: + type: string + const: container_file_citation + title: Type + default: container_file_citation + container_id: + type: string + title: Container Id + end_index: + type: integer + title: End Index + file_id: + type: string + title: File Id + filename: + type: string + title: Filename + start_index: + type: integer + title: Start Index + type: object + required: + - container_id + - end_index + - file_id + - filename + - start_index + title: OpenAIResponseAnnotationContainerFileCitation + OpenAIResponseAnnotationFileCitation: + properties: + type: + type: string + const: file_citation + title: Type + default: file_citation + file_id: + type: string + title: File Id + filename: + type: string + title: Filename + index: + type: integer + title: Index + type: object + required: + - file_id + - filename + - index + title: OpenAIResponseAnnotationFileCitation + description: 'File citation annotation for referencing specific files in response + content. + + + :param type: Annotation type identifier, always "file_citation" + + :param file_id: Unique identifier of the referenced file + + :param filename: Name of the referenced file + + :param index: Position index of the citation within the content' + OpenAIResponseAnnotationFilePath: + properties: + type: + type: string + const: file_path + title: Type + default: file_path + file_id: + type: string + title: File Id + index: + type: integer + title: Index + type: object + required: + - file_id + - index + title: OpenAIResponseAnnotationFilePath + OpenAIResponseContentPartRefusal: + properties: + type: + type: string + const: refusal + title: Type + default: refusal + refusal: + type: string + title: Refusal + type: object + required: + - refusal + title: OpenAIResponseContentPartRefusal + description: 'Refusal content within a streamed response part. + + + :param type: Content part type identifier, always "refusal" + + :param refusal: Refusal text supplied by the model' + OpenAIResponseFormatJSONObject: + properties: + type: + type: string + const: json_object + title: Type + default: json_object + type: object + title: OpenAIResponseFormatJSONObject + description: 'JSON object response format for OpenAI-compatible chat completion + requests. + + + :param type: Must be "json_object" to indicate generic JSON object response + format' + OpenAIResponseFormatJSONSchema: + properties: + type: + type: string + const: json_schema + title: Type + default: json_schema + json_schema: + $ref: '#/components/schemas/OpenAIJSONSchema' + type: object + required: + - json_schema + title: OpenAIResponseFormatJSONSchema + description: 'JSON schema response format for OpenAI-compatible chat completion + requests. + + + :param type: Must be "json_schema" to indicate structured JSON response format + + :param json_schema: The JSON schema specification for the response' + OpenAIResponseFormatText: + properties: + type: + type: string + const: text + title: Type + default: text + type: object + title: OpenAIResponseFormatText + description: 'Text response format for OpenAI-compatible chat completion requests. + + + :param type: Must be "text" to indicate plain text response format' + OpenAIResponseInputFunctionToolCallOutput: + properties: + call_id: + type: string + title: Call Id + output: + type: string + title: Output + type: + type: string + const: function_call_output + title: Type + default: function_call_output + id: + anyOf: + - type: string + - type: 'null' + title: Id + status: + anyOf: + - type: string + - type: 'null' + title: Status + type: object + required: + - call_id + - output + title: OpenAIResponseInputFunctionToolCallOutput + description: This represents the output of a function call that gets passed + back to the model. + OpenAIResponseInputMessageContentFile: + properties: + type: + type: string + const: input_file + title: Type + default: input_file + file_data: + anyOf: + - type: string + - type: 'null' + title: File Data + file_id: + anyOf: + - type: string + - type: 'null' + title: File Id + file_url: + anyOf: + - type: string + - type: 'null' + title: File Url + filename: + anyOf: + - type: string + - type: 'null' + title: Filename + type: object + title: OpenAIResponseInputMessageContentFile + description: 'File content for input messages in OpenAI response format. + + + :param type: The type of the input item. Always `input_file`. + + :param file_data: The data of the file to be sent to the model. + + :param file_id: (Optional) The ID of the file to be sent to the model. + + :param file_url: The URL of the file to be sent to the model. + + :param filename: The name of the file to be sent to the model.' + OpenAIResponseInputMessageContentImage: + properties: + detail: + anyOf: + - type: string + const: low + - type: string + const: high + - type: string + const: auto + title: Detail + default: auto + type: + type: string + const: input_image + title: Type + default: input_image + file_id: + anyOf: + - type: string + - type: 'null' + title: File Id + image_url: + anyOf: + - type: string + - type: 'null' + title: Image Url + type: object + title: OpenAIResponseInputMessageContentImage + description: 'Image content for input messages in OpenAI response format. + + + :param detail: Level of detail for image processing, can be "low", "high", + or "auto" + + :param type: Content type identifier, always "input_image" + + :param file_id: (Optional) The ID of the file to be sent to the model. + + :param image_url: (Optional) URL of the image content' + OpenAIResponseInputMessageContentText: + properties: + text: + type: string + title: Text + type: + type: string + const: input_text + title: Type + default: input_text + type: object + required: + - text + title: OpenAIResponseInputMessageContentText + description: 'Text content for input messages in OpenAI response format. + + + :param text: The text content of the input message + + :param type: Content type identifier, always "input_text"' + OpenAIResponseInputToolFileSearch: + properties: + type: + type: string + const: file_search + title: Type + default: file_search + vector_store_ids: + items: + type: string + type: array + title: Vector Store Ids + filters: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Filters + max_num_results: + anyOf: + - type: integer + maximum: 50.0 + minimum: 1.0 + - type: 'null' + title: Max Num Results + default: 10 + ranking_options: + anyOf: + - $ref: '#/components/schemas/SearchRankingOptions' + - type: 'null' + type: object + required: + - vector_store_ids + title: OpenAIResponseInputToolFileSearch + description: 'File search tool configuration for OpenAI response inputs. + + + :param type: Tool type identifier, always "file_search" + + :param vector_store_ids: List of vector store identifiers to search within + + :param filters: (Optional) Additional filters to apply to the search + + :param max_num_results: (Optional) Maximum number of search results to return + (1-50) + + :param ranking_options: (Optional) Options for ranking and scoring search + results' + OpenAIResponseInputToolFunction: + properties: + type: + type: string + const: function + title: Type + default: function + name: + type: string + title: Name + description: + anyOf: + - type: string + - type: 'null' + title: Description + parameters: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Parameters + strict: + anyOf: + - type: boolean + - type: 'null' + title: Strict + type: object + required: + - name + - parameters + title: OpenAIResponseInputToolFunction + description: 'Function tool configuration for OpenAI response inputs. + + + :param type: Tool type identifier, always "function" + + :param name: Name of the function that can be called + + :param description: (Optional) Description of what the function does + + :param parameters: (Optional) JSON schema defining the function''s parameters + + :param strict: (Optional) Whether to enforce strict parameter validation' + OpenAIResponseInputToolMCP: + properties: + type: + type: string + const: mcp + title: Type + default: mcp + server_label: + type: string + title: Server Label + server_url: + type: string + title: Server Url + headers: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Headers + require_approval: + anyOf: + - type: string + const: always + - type: string + const: never + - $ref: '#/components/schemas/ApprovalFilter' + title: Require Approval + default: never + allowed_tools: + anyOf: + - items: + type: string + type: array + - $ref: '#/components/schemas/AllowedToolsFilter' + - type: 'null' + title: Allowed Tools + type: object + required: + - server_label + - server_url + title: OpenAIResponseInputToolMCP + description: 'Model Context Protocol (MCP) tool configuration for OpenAI response + inputs. + + + :param type: Tool type identifier, always "mcp" + + :param server_label: Label to identify this MCP server + + :param server_url: URL endpoint of the MCP server + + :param headers: (Optional) HTTP headers to include when connecting to the + server + + :param require_approval: Approval requirement for tool calls ("always", "never", + or filter) + + :param allowed_tools: (Optional) Restriction on which tools can be used from + this server' + OpenAIResponseInputToolWebSearch: + properties: + type: + anyOf: + - type: string + const: web_search + - type: string + const: web_search_preview + - type: string + const: web_search_preview_2025_03_11 + title: Type + default: web_search + search_context_size: + anyOf: + - type: string + pattern: ^low|medium|high$ + - type: 'null' + title: Search Context Size + default: medium + type: object + title: OpenAIResponseInputToolWebSearch + description: 'Web search tool configuration for OpenAI response inputs. + + + :param type: Web search tool type variant to use + + :param search_context_size: (Optional) Size of search context, must be "low", + "medium", or "high"' + OpenAIResponseMCPApprovalRequest: + properties: + arguments: + type: string + title: Arguments + id: + type: string + title: Id + name: + type: string + title: Name + server_label: + type: string + title: Server Label + type: + type: string + const: mcp_approval_request + title: Type + default: mcp_approval_request + type: object + required: + - arguments + - id + - name + - server_label + title: OpenAIResponseMCPApprovalRequest + description: A request for human approval of a tool invocation. + OpenAIResponseMCPApprovalResponse: + properties: + approval_request_id: + type: string + title: Approval Request Id + approve: + type: boolean + title: Approve + type: + type: string + const: mcp_approval_response + title: Type + default: mcp_approval_response + id: + anyOf: + - type: string + - type: 'null' + title: Id + reason: + anyOf: + - type: string + - type: 'null' + title: Reason + type: object + required: + - approval_request_id + - approve + title: OpenAIResponseMCPApprovalResponse + description: A response to an MCP approval request. + OpenAIResponseMessage: + properties: + content: + anyOf: + - type: string + - items: + oneOf: + - $ref: '#/components/schemas/OpenAIResponseInputMessageContentText' + - $ref: '#/components/schemas/OpenAIResponseInputMessageContentImage' + - $ref: '#/components/schemas/OpenAIResponseInputMessageContentFile' + discriminator: + propertyName: type + mapping: + input_file: '#/components/schemas/OpenAIResponseInputMessageContentFile' + input_image: '#/components/schemas/OpenAIResponseInputMessageContentImage' + input_text: '#/components/schemas/OpenAIResponseInputMessageContentText' + type: array + - items: + oneOf: + - $ref: '#/components/schemas/OpenAIResponseOutputMessageContentOutputText' + - $ref: '#/components/schemas/OpenAIResponseContentPartRefusal' + discriminator: + propertyName: type + mapping: + output_text: '#/components/schemas/OpenAIResponseOutputMessageContentOutputText' + refusal: '#/components/schemas/OpenAIResponseContentPartRefusal' + type: array + title: Content + role: + anyOf: + - type: string + const: system + - type: string + const: developer + - type: string + const: user + - type: string + const: assistant + title: Role + type: + type: string + const: message + title: Type + default: message + id: + anyOf: + - type: string + - type: 'null' + title: Id + status: + anyOf: + - type: string + - type: 'null' + title: Status + type: object + required: + - content + - role + title: OpenAIResponseMessage + description: 'Corresponds to the various Message types in the Responses API. + + They are all under one type because the Responses API gives them all + + the same "type" value, and there is no way to tell them apart in certain + + scenarios.' + OpenAIResponseOutputMessageContentOutputText: + properties: + text: + type: string + title: Text + type: + type: string + const: output_text + title: Type + default: output_text + annotations: + items: + oneOf: + - $ref: '#/components/schemas/OpenAIResponseAnnotationFileCitation' + - $ref: '#/components/schemas/OpenAIResponseAnnotationCitation' + - $ref: '#/components/schemas/OpenAIResponseAnnotationContainerFileCitation' + - $ref: '#/components/schemas/OpenAIResponseAnnotationFilePath' + discriminator: + propertyName: type + mapping: + container_file_citation: '#/components/schemas/OpenAIResponseAnnotationContainerFileCitation' + file_citation: '#/components/schemas/OpenAIResponseAnnotationFileCitation' + file_path: '#/components/schemas/OpenAIResponseAnnotationFilePath' + url_citation: '#/components/schemas/OpenAIResponseAnnotationCitation' + type: array + title: Annotations + type: object + required: + - text + title: OpenAIResponseOutputMessageContentOutputText + OpenAIResponseOutputMessageFileSearchToolCall: + properties: + id: + type: string + title: Id + queries: + items: + type: string + type: array + title: Queries + status: + type: string + title: Status + type: + type: string + const: file_search_call + title: Type + default: file_search_call + results: + anyOf: + - items: + $ref: '#/components/schemas/OpenAIResponseOutputMessageFileSearchToolCallResults' + type: array + - type: 'null' + title: Results + type: object + required: + - id + - queries + - status + title: OpenAIResponseOutputMessageFileSearchToolCall + description: 'File search tool call output message for OpenAI responses. + + + :param id: Unique identifier for this tool call + + :param queries: List of search queries executed + + :param status: Current status of the file search operation + + :param type: Tool call type identifier, always "file_search_call" + + :param results: (Optional) Search results returned by the file search operation' + OpenAIResponseOutputMessageFileSearchToolCallResults: + properties: + attributes: + additionalProperties: true + type: object + title: Attributes + file_id: + type: string + title: File Id + filename: + type: string + title: Filename + score: + type: number + title: Score + text: + type: string + title: Text + type: object + required: + - attributes + - file_id + - filename + - score + - text + title: OpenAIResponseOutputMessageFileSearchToolCallResults + description: 'Search results returned by the file search operation. + + + :param attributes: (Optional) Key-value attributes associated with the file + + :param file_id: Unique identifier of the file containing the result + + :param filename: Name of the file containing the result + + :param score: Relevance score for this search result (between 0 and 1) + + :param text: Text content of the search result' + OpenAIResponseOutputMessageFunctionToolCall: + properties: + call_id: + type: string + title: Call Id + name: + type: string + title: Name + arguments: + type: string + title: Arguments + type: + type: string + const: function_call + title: Type + default: function_call + id: + anyOf: + - type: string + - type: 'null' + title: Id + status: + anyOf: + - type: string + - type: 'null' + title: Status + type: object + required: + - call_id + - name + - arguments + title: OpenAIResponseOutputMessageFunctionToolCall + description: 'Function tool call output message for OpenAI responses. + + + :param call_id: Unique identifier for the function call + + :param name: Name of the function being called + + :param arguments: JSON string containing the function arguments + + :param type: Tool call type identifier, always "function_call" + + :param id: (Optional) Additional identifier for the tool call + + :param status: (Optional) Current status of the function call execution' + OpenAIResponseOutputMessageMCPCall: + properties: + id: + type: string + title: Id + type: + type: string + const: mcp_call + title: Type + default: mcp_call + arguments: + type: string + title: Arguments + name: + type: string + title: Name + server_label: + type: string + title: Server Label + error: + anyOf: + - type: string + - type: 'null' + title: Error + output: + anyOf: + - type: string + - type: 'null' + title: Output + type: object + required: + - id + - arguments + - name + - server_label + title: OpenAIResponseOutputMessageMCPCall + description: 'Model Context Protocol (MCP) call output message for OpenAI responses. + + + :param id: Unique identifier for this MCP call + + :param type: Tool call type identifier, always "mcp_call" + + :param arguments: JSON string containing the MCP call arguments + + :param name: Name of the MCP method being called + + :param server_label: Label identifying the MCP server handling the call + + :param error: (Optional) Error message if the MCP call failed + + :param output: (Optional) Output result from the successful MCP call' + OpenAIResponseOutputMessageMCPListTools: + properties: + id: + type: string + title: Id + type: + type: string + const: mcp_list_tools + title: Type + default: mcp_list_tools + server_label: + type: string + title: Server Label + tools: + items: + $ref: '#/components/schemas/MCPListToolsTool' + type: array + title: Tools + type: object + required: + - id + - server_label + - tools + title: OpenAIResponseOutputMessageMCPListTools + description: 'MCP list tools output message containing available tools from + an MCP server. + + + :param id: Unique identifier for this MCP list tools operation + + :param type: Tool call type identifier, always "mcp_list_tools" + + :param server_label: Label identifying the MCP server providing the tools + + :param tools: List of available tools provided by the MCP server' + OpenAIResponseOutputMessageWebSearchToolCall: + properties: + id: + type: string + title: Id + status: + type: string + title: Status + type: + type: string + const: web_search_call + title: Type + default: web_search_call + type: object + required: + - id + - status + title: OpenAIResponseOutputMessageWebSearchToolCall + description: 'Web search tool call output message for OpenAI responses. + + + :param id: Unique identifier for this tool call + + :param status: Current status of the web search operation + + :param type: Tool call type identifier, always "web_search_call"' + OpenAIResponsePrompt: + properties: + id: + type: string + title: Id + variables: + anyOf: + - additionalProperties: + oneOf: + - $ref: '#/components/schemas/OpenAIResponseInputMessageContentText' + - $ref: '#/components/schemas/OpenAIResponseInputMessageContentImage' + - $ref: '#/components/schemas/OpenAIResponseInputMessageContentFile' + discriminator: + propertyName: type + mapping: + input_file: '#/components/schemas/OpenAIResponseInputMessageContentFile' + input_image: '#/components/schemas/OpenAIResponseInputMessageContentImage' + input_text: '#/components/schemas/OpenAIResponseInputMessageContentText' + type: object + - type: 'null' + title: Variables + version: + anyOf: + - type: string + - type: 'null' + title: Version + type: object + required: + - id + title: OpenAIResponsePrompt + description: 'OpenAI compatible Prompt object that is used in OpenAI responses. + + + :param id: Unique identifier of the prompt template + + :param variables: Dictionary of variable names to OpenAIResponseInputMessageContent + structure for template substitution. The substitution values can either be + strings, or other Response input types + + like images or files. + + :param version: Version number of the prompt to use (defaults to latest if + not specified)' + OpenAIResponseText: + properties: + format: + anyOf: + - $ref: '#/components/schemas/OpenAIResponseTextFormat' + - type: 'null' + type: object + title: OpenAIResponseText + description: 'Text response configuration for OpenAI responses. + + + :param format: (Optional) Text format configuration specifying output format + requirements' + OpenAIResponseTextFormat: + properties: + type: + anyOf: + - type: string + const: text + - type: string + const: json_schema + - type: string + const: json_object + title: Type + name: + anyOf: + - type: string + - type: 'null' + title: Name + schema: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Schema + description: + anyOf: + - type: string + - type: 'null' + title: Description + strict: + anyOf: + - type: boolean + - type: 'null' + title: Strict + type: object + title: OpenAIResponseTextFormat + description: 'Configuration for Responses API text format. + + + :param type: Must be "text", "json_schema", or "json_object" to identify the + format type + + :param name: The name of the response format. Only used for json_schema. + + :param schema: The JSON schema the response should conform to. In a Python + SDK, this is often a `pydantic` model. Only used for json_schema. + + :param description: (Optional) A description of the response format. Only + used for json_schema. + + :param strict: (Optional) Whether to strictly enforce the JSON schema. If + true, the response must match the schema exactly. Only used for json_schema.' + OpenAISystemMessageParam: + properties: + role: + type: string + const: system + title: Role + default: system + content: + anyOf: + - type: string + - items: + $ref: '#/components/schemas/OpenAIChatCompletionContentPartTextParam' + type: array + title: Content + name: + anyOf: + - type: string + - type: 'null' + title: Name + type: object + required: + - content + title: OpenAISystemMessageParam + description: 'A system message providing instructions or context to the model. + + + :param role: Must be "system" to identify this as a system message + + :param content: The content of the "system prompt". If multiple system messages + are provided, they are concatenated. The underlying Llama Stack code may also + add other system messages (for example, for formatting tool definitions). + + :param name: (Optional) The name of the system message participant.' + OpenAITokenLogProb: + properties: + token: + type: string + title: Token + bytes: + anyOf: + - items: + type: integer + type: array + - type: 'null' + title: Bytes + logprob: + type: number + title: Logprob + top_logprobs: + items: + $ref: '#/components/schemas/OpenAITopLogProb' + type: array + title: Top Logprobs + type: object + required: + - token + - logprob + - top_logprobs + title: OpenAITokenLogProb + description: 'The log probability for a token from an OpenAI-compatible chat + completion response. + + + :token: The token + + :bytes: (Optional) The bytes for the token + + :logprob: The log probability of the token + + :top_logprobs: The top log probabilities for the token' + OpenAIToolMessageParam: + properties: + role: + type: string + const: tool + title: Role + default: tool + tool_call_id: + type: string + title: Tool Call Id + content: + anyOf: + - type: string + - items: + $ref: '#/components/schemas/OpenAIChatCompletionContentPartTextParam' + type: array + title: Content + type: object + required: + - tool_call_id + - content + title: OpenAIToolMessageParam + description: 'A message representing the result of a tool invocation in an OpenAI-compatible + chat completion request. + + + :param role: Must be "tool" to identify this as a tool response + + :param tool_call_id: Unique identifier for the tool call this response is + for + + :param content: The response content from the tool' + OpenAITopLogProb: + properties: + token: + type: string + title: Token + bytes: + anyOf: + - items: + type: integer + type: array + - type: 'null' + title: Bytes + logprob: + type: number + title: Logprob + type: object + required: + - token + - logprob + title: OpenAITopLogProb + description: 'The top log probability for a token from an OpenAI-compatible + chat completion response. + + + :token: The token + + :bytes: (Optional) The bytes for the token + + :logprob: The log probability of the token' + OpenAIUserMessageParam-Input: + properties: + role: + type: string + const: user + title: Role + default: user + content: + anyOf: + - type: string + - items: + oneOf: + - $ref: '#/components/schemas/OpenAIChatCompletionContentPartTextParam' + - $ref: '#/components/schemas/OpenAIChatCompletionContentPartImageParam' + - $ref: '#/components/schemas/OpenAIFile' + discriminator: + propertyName: type + mapping: + file: '#/components/schemas/OpenAIFile' + image_url: '#/components/schemas/OpenAIChatCompletionContentPartImageParam' + text: '#/components/schemas/OpenAIChatCompletionContentPartTextParam' + type: array + title: Content + name: + anyOf: + - type: string + - type: 'null' + title: Name + type: object + required: + - content + title: OpenAIUserMessageParam + description: 'A message from the user in an OpenAI-compatible chat completion + request. + + + :param role: Must be "user" to identify this as a user message + + :param content: The content of the message, which can include text and other + media + + :param name: (Optional) The name of the user message participant.' + OpenAIUserMessageParam-Output: + properties: + role: + type: string + const: user + title: Role + default: user + content: + anyOf: + - type: string + - items: + oneOf: + - $ref: '#/components/schemas/OpenAIChatCompletionContentPartTextParam' + - $ref: '#/components/schemas/OpenAIChatCompletionContentPartImageParam' + - $ref: '#/components/schemas/OpenAIFile' + discriminator: + propertyName: type + mapping: + file: '#/components/schemas/OpenAIFile' + image_url: '#/components/schemas/OpenAIChatCompletionContentPartImageParam' + text: '#/components/schemas/OpenAIChatCompletionContentPartTextParam' + type: array + title: Content + name: + anyOf: + - type: string + - type: 'null' + title: Name + type: object + required: + - content + title: OpenAIUserMessageParam + description: 'A message from the user in an OpenAI-compatible chat completion + request. + + + :param role: Must be "user" to identify this as a user message + + :param content: The content of the message, which can include text and other + media + + :param name: (Optional) The name of the user message participant.' + Order: + type: string + enum: + - asc + - desc + title: Order + description: 'Sort order for paginated responses. + + :cvar asc: Ascending order + + :cvar desc: Descending order' + Prompt: + properties: + prompt: + anyOf: + - type: string + - type: 'null' + title: Prompt + description: The system prompt with variable placeholders + version: + type: integer + minimum: 1.0 + title: Version + description: Version (integer starting at 1, incremented on save) + prompt_id: + type: string + title: Prompt Id + description: Unique identifier in format 'pmpt_<48-digit-hash>' + variables: + items: + type: string + type: array + title: Variables + description: List of variable names that can be used in the prompt template + is_default: + type: boolean + title: Is Default + description: Boolean indicating whether this version is the default version + default: false + type: object + required: + - version + - prompt_id + title: Prompt + description: 'A prompt resource representing a stored OpenAI Compatible prompt + template in Llama Stack. + + + :param prompt: The system prompt text with variable placeholders. Variables + are only supported when using the Responses API. + + :param version: Version (integer starting at 1, incremented on save) + + :param prompt_id: Unique identifier formatted as ''pmpt_<48-digit-hash>'' + + :param variables: List of prompt variable names that can be used in the prompt + template + + :param is_default: Boolean indicating whether this version is the default + version for this prompt' + ProviderInfo: + properties: + api: + type: string + title: Api + provider_id: + type: string + title: Provider Id + provider_type: + type: string + title: Provider Type + config: + additionalProperties: true + type: object + title: Config + health: + additionalProperties: true + type: object + title: Health + type: object + required: + - api + - provider_id + - provider_type + - config + - health + title: ProviderInfo + description: 'Information about a registered provider including its configuration + and health status. + + + :param api: The API name this provider implements + + :param provider_id: Unique identifier for the provider + + :param provider_type: The type of provider implementation + + :param config: Configuration parameters for the provider + + :param health: Current health status of the provider' + RAGQueryConfig: properties: query_generator_config: oneOf: - - $ref: '#/components/schemas/DefaultRAGQueryGeneratorConfig' - - $ref: '#/components/schemas/LLMRAGQueryGeneratorConfig' + - $ref: '#/components/schemas/DefaultRAGQueryGeneratorConfig' + - $ref: '#/components/schemas/LLMRAGQueryGeneratorConfig' + title: Query Generator Config + default: + type: default + separator: ' ' discriminator: propertyName: type mapping: default: '#/components/schemas/DefaultRAGQueryGeneratorConfig' llm: '#/components/schemas/LLMRAGQueryGeneratorConfig' - description: Configuration for the query generator. max_tokens_in_context: type: integer + title: Max Tokens In Context default: 4096 - description: Maximum number of tokens in the context. max_chunks: type: integer + title: Max Chunks default: 5 - description: Maximum number of chunks to retrieve. chunk_template: type: string - default: > - Result {index} + title: Chunk Template + default: 'Result {index} Content: {chunk.content} Metadata: {metadata} - description: >- - Template for formatting each retrieved chunk in the context. Available - placeholders: {index} (1-based chunk ordinal), {chunk.content} (chunk - content string), {metadata} (chunk metadata dict). Default: "Result {index}\nContent: - {chunk.content}\nMetadata: {metadata}\n" + + ' mode: - $ref: '#/components/schemas/RAGSearchMode' + anyOf: + - $ref: '#/components/schemas/RAGSearchMode' + - type: 'null' default: vector - description: >- - Search mode for retrieval—either "vector", "keyword", or "hybrid". Default - "vector". ranker: - $ref: '#/components/schemas/Ranker' - description: >- - Configuration for the ranker to use in hybrid search. Defaults to RRF - ranker. - additionalProperties: false - required: - - query_generator_config - - max_tokens_in_context - - max_chunks - - chunk_template + anyOf: + - oneOf: + - $ref: '#/components/schemas/RRFRanker' + - $ref: '#/components/schemas/WeightedRanker' + discriminator: + propertyName: type + mapping: + rrf: '#/components/schemas/RRFRanker' + weighted: '#/components/schemas/WeightedRanker' + - type: 'null' + title: Ranker + type: object title: RAGQueryConfig - description: >- - Configuration for the RAG query generation. + description: "Configuration for the RAG query generation.\n\n:param query_generator_config:\ + \ Configuration for the query generator.\n:param max_tokens_in_context: Maximum\ + \ number of tokens in the context.\n:param max_chunks: Maximum number of chunks\ + \ to retrieve.\n:param chunk_template: Template for formatting each retrieved\ + \ chunk in the context.\n Available placeholders: {index} (1-based chunk\ + \ ordinal), {chunk.content} (chunk content string), {metadata} (chunk metadata\ + \ dict).\n Default: \"Result {index}\\nContent: {chunk.content}\\nMetadata:\ + \ {metadata}\\n\"\n:param mode: Search mode for retrieval\u2014either \"vector\"\ + , \"keyword\", or \"hybrid\". Default \"vector\".\n:param ranker: Configuration\ + \ for the ranker to use in hybrid search. Defaults to RRF ranker." RAGSearchMode: type: string enum: - - vector - - keyword - - hybrid + - vector + - keyword + - hybrid title: RAGSearchMode - description: >- - Search modes for RAG query retrieval: - VECTOR: Uses vector similarity search - for semantic matching - KEYWORD: Uses keyword-based search for exact matching - - HYBRID: Combines both vector and keyword search for better results + description: 'Search modes for RAG query retrieval: + + - VECTOR: Uses vector similarity search for semantic matching + + - KEYWORD: Uses keyword-based search for exact matching + + - HYBRID: Combines both vector and keyword search for better results' RRFRanker: - type: object properties: type: type: string const: rrf + title: Type default: rrf - description: The type of ranker, always "rrf" impact_factor: type: number + title: Impact Factor default: 60.0 - description: >- - The impact factor for RRF scoring. Higher values give more weight to higher-ranked - results. Must be greater than 0 - additionalProperties: false - required: - - type - - impact_factor - title: RRFRanker - description: >- - Reciprocal Rank Fusion (RRF) ranker configuration. - Ranker: - oneOf: - - $ref: '#/components/schemas/RRFRanker' - - $ref: '#/components/schemas/WeightedRanker' - discriminator: - propertyName: type - mapping: - rrf: '#/components/schemas/RRFRanker' - weighted: '#/components/schemas/WeightedRanker' - WeightedRanker: + minimum: 0.0 type: object + title: RRFRanker + description: "Reciprocal Rank Fusion (RRF) ranker configuration.\n\n:param type:\ + \ The type of ranker, always \"rrf\"\n:param impact_factor: The impact factor\ + \ for RRF scoring. Higher values give more weight to higher-ranked results.\n\ + \ Must be greater than 0" + RegexParserScoringFnParams: properties: type: type: string - const: weighted - default: weighted - description: The type of ranker, always "weighted" - alpha: - type: number - default: 0.5 - description: >- - Weight factor between 0 and 1. 0 means only use keyword scores, 1 means - only use vector scores, values in between blend both scores. - additionalProperties: false - required: - - type - - alpha - title: WeightedRanker - description: >- - Weighted ranker configuration that combines vector and keyword scores. - QueryRequest: - type: object - properties: - content: - $ref: '#/components/schemas/InterleavedContent' - description: >- - The query content to search for in the indexed documents - vector_store_ids: - type: array + const: regex_parser + title: Type + default: regex_parser + parsing_regexes: items: type: string - description: >- - List of vector database IDs to search within - query_config: - $ref: '#/components/schemas/RAGQueryConfig' - description: >- - (Optional) Configuration parameters for the query operation - additionalProperties: false - required: - - content - - vector_store_ids - title: QueryRequest - RAGQueryResult: + type: array + title: Parsing Regexes + description: Regex to extract the answer from generated response + aggregation_functions: + items: + $ref: '#/components/schemas/AggregationFunctionType' + type: array + title: Aggregation Functions + description: Aggregation functions to apply to the scores of each row type: object + title: RegexParserScoringFnParams + description: 'Parameters for regex parser scoring function configuration. + + :param type: The type of scoring function parameters, always regex_parser + + :param parsing_regexes: Regex to extract the answer from generated response + + :param aggregation_functions: Aggregation functions to apply to the scores + of each row' + RouteInfo: properties: - content: - $ref: '#/components/schemas/InterleavedContent' - description: >- - (Optional) The retrieved content from the query - metadata: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - Additional metadata about the query result - additionalProperties: false - required: - - metadata - title: RAGQueryResult - description: >- - Result of a RAG query containing retrieved content and metadata. - ToolGroup: + route: + type: string + title: Route + method: + type: string + title: Method + provider_types: + items: + type: string + type: array + title: Provider Types type: object + required: + - route + - method + - provider_types + title: RouteInfo + description: 'Information about an API route including its path, method, and + implementing providers. + + + :param route: The API endpoint path + + :param method: HTTP method for the route + + :param provider_types: List of provider types that implement this route' + ScoringFn-Output: properties: identifier: type: string + title: Identifier + description: Unique identifier for this resource in llama stack provider_resource_id: - type: string + anyOf: + - type: string + - type: 'null' + title: Provider Resource Id + description: Unique identifier for this resource in the provider provider_id: type: string + title: Provider Id + description: ID of the provider that owns this resource type: type: string - enum: - - model - - shield - - vector_store - - dataset - - scoring_function - - benchmark - - tool - - tool_group - - prompt - const: tool_group - default: tool_group - description: Type of resource, always 'tool_group' - mcp_endpoint: - $ref: '#/components/schemas/URL' - description: >- - (Optional) Model Context Protocol endpoint for remote tools - args: + const: scoring_function + title: Type + default: scoring_function + description: + anyOf: + - type: string + - type: 'null' + title: Description + metadata: + additionalProperties: true type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - (Optional) Additional arguments for the tool group - additionalProperties: false - required: - - identifier - - provider_id - - type - title: ToolGroup - description: >- - A group of related tools managed together. - ListToolGroupsResponse: + title: Metadata + description: Any additional metadata for this definition + return_type: + oneOf: + - $ref: '#/components/schemas/StringType' + - $ref: '#/components/schemas/NumberType' + - $ref: '#/components/schemas/BooleanType' + - $ref: '#/components/schemas/ArrayType' + - $ref: '#/components/schemas/ObjectType' + - $ref: '#/components/schemas/JsonType' + - $ref: '#/components/schemas/UnionType' + - $ref: '#/components/schemas/ChatCompletionInputType' + - $ref: '#/components/schemas/CompletionInputType' + - $ref: '#/components/schemas/AgentTurnInputType' + title: Return Type + description: The return type of the deterministic function + discriminator: + propertyName: type + mapping: + agent_turn_input: '#/components/schemas/AgentTurnInputType' + array: '#/components/schemas/ArrayType' + boolean: '#/components/schemas/BooleanType' + chat_completion_input: '#/components/schemas/ChatCompletionInputType' + completion_input: '#/components/schemas/CompletionInputType' + json: '#/components/schemas/JsonType' + number: '#/components/schemas/NumberType' + object: '#/components/schemas/ObjectType' + string: '#/components/schemas/StringType' + union: '#/components/schemas/UnionType' + params: + anyOf: + - oneOf: + - $ref: '#/components/schemas/LLMAsJudgeScoringFnParams' + - $ref: '#/components/schemas/RegexParserScoringFnParams' + - $ref: '#/components/schemas/BasicScoringFnParams' + discriminator: + propertyName: type + mapping: + basic: '#/components/schemas/BasicScoringFnParams' + llm_as_judge: '#/components/schemas/LLMAsJudgeScoringFnParams' + regex_parser: '#/components/schemas/RegexParserScoringFnParams' + - type: 'null' + title: Params + description: The parameters for the scoring function for benchmark eval, + these can be overridden for app eval type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/ToolGroup' - description: List of tool groups - additionalProperties: false required: - - data - title: ListToolGroupsResponse - description: >- - Response containing a list of tool groups. - RegisterToolGroupRequest: - type: object + - identifier + - provider_id + - return_type + title: ScoringFn + description: 'A scoring function resource for evaluating model outputs. + + :param type: The resource type, always scoring_function' + SearchRankingOptions: properties: - toolgroup_id: + ranker: + anyOf: + - type: string + - type: 'null' + title: Ranker + score_threshold: + anyOf: + - type: number + - type: 'null' + title: Score Threshold + default: 0.0 + type: object + title: SearchRankingOptions + description: 'Options for ranking and filtering search results. + + + :param ranker: (Optional) Name of the ranking algorithm to use + + :param score_threshold: (Optional) Minimum relevance score threshold for results' + Shield: + properties: + identifier: type: string - description: The ID of the tool group to register. + title: Identifier + description: Unique identifier for this resource in llama stack + provider_resource_id: + anyOf: + - type: string + - type: 'null' + title: Provider Resource Id + description: Unique identifier for this resource in the provider provider_id: type: string - description: >- - The ID of the provider to use for the tool group. - mcp_endpoint: - $ref: '#/components/schemas/URL' - description: >- - The MCP endpoint to use for the tool group. - args: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - A dictionary of arguments to pass to the tool group. - additionalProperties: false - required: - - toolgroup_id - - provider_id - title: RegisterToolGroupRequest - Chunk: - type: object - properties: - content: - $ref: '#/components/schemas/InterleavedContent' - description: >- - The content of the chunk, which can be interleaved text, images, or other - types. - chunk_id: + title: Provider Id + description: ID of the provider that owns this resource + type: type: string - description: >- - Unique identifier for the chunk. Must be provided explicitly. - metadata: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - Metadata associated with the chunk that will be used in the model context - during inference. - embedding: - type: array - items: - type: number - description: >- - Optional embedding for the chunk. If not provided, it will be computed - later. - chunk_metadata: - $ref: '#/components/schemas/ChunkMetadata' - description: >- - Metadata for the chunk that will NOT be used in the context during inference. - The `chunk_metadata` is required backend functionality. - additionalProperties: false - required: - - content - - chunk_id - - metadata - title: Chunk - description: >- - A chunk of content that can be inserted into a vector database. - ChunkMetadata: - type: object - properties: - chunk_id: - type: string - description: >- - The ID of the chunk. If not set, it will be generated based on the document - ID and content. - document_id: - type: string - description: >- - The ID of the document this chunk belongs to. - source: - type: string - description: >- - The source of the content, such as a URL, file path, or other identifier. - created_timestamp: - type: integer - description: >- - An optional timestamp indicating when the chunk was created. - updated_timestamp: - type: integer - description: >- - An optional timestamp indicating when the chunk was last updated. - chunk_window: - type: string - description: >- - The window of the chunk, which can be used to group related chunks together. - chunk_tokenizer: - type: string - description: >- - The tokenizer used to create the chunk. Default is Tiktoken. - chunk_embedding_model: - type: string - description: >- - The embedding model used to create the chunk's embedding. - chunk_embedding_dimension: - type: integer - description: >- - The dimension of the embedding vector for the chunk. - content_token_count: - type: integer - description: >- - The number of tokens in the content of the chunk. - metadata_token_count: - type: integer - description: >- - The number of tokens in the metadata of the chunk. - additionalProperties: false - title: ChunkMetadata - description: >- - `ChunkMetadata` is backend metadata for a `Chunk` that is used to store additional - information about the chunk that will not be used in the context during - inference, but is required for backend functionality. The `ChunkMetadata` is - set during chunk creation in `MemoryToolRuntimeImpl().insert()`and is not - expected to change after. Use `Chunk.metadata` for metadata that will - be used in the context during inference. - InsertChunksRequest: - type: object - properties: - vector_store_id: - type: string - description: >- - The identifier of the vector database to insert the chunks into. - chunks: - type: array - items: - $ref: '#/components/schemas/Chunk' - description: >- - The chunks to insert. Each `Chunk` should contain content which can be - interleaved text, images, or other types. `metadata`: `dict[str, Any]` - and `embedding`: `List[float]` are optional. If `metadata` is provided, - you configure how Llama Stack formats the chunk during generation. If - `embedding` is not provided, it will be computed later. - ttl_seconds: - type: integer - description: The time to live of the chunks. - additionalProperties: false - required: - - vector_store_id - - chunks - title: InsertChunksRequest - QueryChunksRequest: - type: object - properties: - vector_store_id: - type: string - description: >- - The identifier of the vector database to query. - query: - $ref: '#/components/schemas/InterleavedContent' - description: The query to search for. + const: shield + title: Type + default: shield params: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: The parameters of the query. - additionalProperties: false - required: - - vector_store_id - - query - title: QueryChunksRequest - QueryChunksResponse: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Params type: object - properties: - chunks: - type: array - items: - $ref: '#/components/schemas/Chunk' - description: >- - List of content chunks returned from the query - scores: - type: array - items: - type: number - description: >- - Relevance scores corresponding to each returned chunk - additionalProperties: false required: - - chunks - - scores - title: QueryChunksResponse - description: >- - Response from querying chunks in a vector database. - VectorStoreFileCounts: - type: object + - identifier + - provider_id + title: Shield + description: 'A safety shield resource that can be used to check content. + + + :param params: (Optional) Configuration parameters for the shield + + :param type: The resource type, always shield' + StringType: properties: - completed: - type: integer - description: >- - Number of files that have been successfully processed - cancelled: - type: integer - description: >- - Number of files that had their processing cancelled - failed: - type: integer - description: Number of files that failed to process - in_progress: - type: integer - description: >- - Number of files currently being processed - total: - type: integer - description: >- - Total number of files in the vector store - additionalProperties: false - required: - - completed - - cancelled - - failed - - in_progress - - total - title: VectorStoreFileCounts - description: >- - File processing status counts for a vector store. - VectorStoreListResponse: + type: + type: string + const: string + title: Type + default: string type: object + title: StringType + description: 'Parameter type for string values. + + + :param type: Discriminator type. Always "string"' + ToolDef: properties: - object: - type: string - default: list - description: Object type identifier, always "list" - data: - type: array - items: - $ref: '#/components/schemas/VectorStoreObject' - description: List of vector store objects - first_id: - type: string - description: >- - (Optional) ID of the first vector store in the list for pagination - last_id: - type: string - description: >- - (Optional) ID of the last vector store in the list for pagination - has_more: - type: boolean - default: false - description: >- - Whether there are more vector stores available beyond this page - additionalProperties: false - required: - - object - - data - - has_more - title: VectorStoreListResponse - description: Response from listing vector stores. - VectorStoreObject: - type: object - properties: - id: - type: string - description: Unique identifier for the vector store - object: - type: string - default: vector_store - description: >- - Object type identifier, always "vector_store" - created_at: - type: integer - description: >- - Timestamp when the vector store was created + toolgroup_id: + anyOf: + - type: string + - type: 'null' + title: Toolgroup Id name: type: string - description: (Optional) Name of the vector store - usage_bytes: - type: integer - default: 0 - description: >- - Storage space used by the vector store in bytes - file_counts: - $ref: '#/components/schemas/VectorStoreFileCounts' - description: >- - File processing status counts for the vector store - status: - type: string - default: completed - description: Current status of the vector store - expires_after: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - (Optional) Expiration policy for the vector store - expires_at: - type: integer - description: >- - (Optional) Timestamp when the vector store will expire - last_active_at: - type: integer - description: >- - (Optional) Timestamp of last activity on the vector store + title: Name + description: + anyOf: + - type: string + - type: 'null' + title: Description + input_schema: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Input Schema + output_schema: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Output Schema metadata: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - Set of key-value pairs that can be attached to the vector store - additionalProperties: false + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Metadata + type: object required: - - id - - object - - created_at - - usage_bytes - - file_counts - - status - - metadata - title: VectorStoreObject - description: OpenAI Vector Store object. - "OpenAICreateVectorStoreRequestWithExtraBody": - type: object + - name + title: ToolDef + description: 'Tool definition used in runtime contexts. + + + :param name: Name of the tool + + :param description: (Optional) Human-readable description of what the tool + does + + :param input_schema: (Optional) JSON Schema for tool inputs (MCP inputSchema) + + :param output_schema: (Optional) JSON Schema for tool outputs (MCP outputSchema) + + :param metadata: (Optional) Additional metadata about the tool + + :param toolgroup_id: (Optional) ID of the tool group this tool belongs to' + ToolGroup: properties: - name: + identifier: type: string - description: (Optional) A name for the vector store - file_ids: - type: array - items: - type: string - description: >- - List of file IDs to include in the vector store - expires_after: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - (Optional) Expiration policy for the vector store - chunking_strategy: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - (Optional) Strategy for splitting files into chunks - metadata: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - Set of key-value pairs that can be attached to the vector store - additionalProperties: false - title: >- - OpenAICreateVectorStoreRequestWithExtraBody - description: >- - Request to create a vector store with extra_body support. - OpenaiUpdateVectorStoreRequest: + title: Identifier + description: Unique identifier for this resource in llama stack + provider_resource_id: + anyOf: + - type: string + - type: 'null' + title: Provider Resource Id + description: Unique identifier for this resource in the provider + provider_id: + type: string + title: Provider Id + description: ID of the provider that owns this resource + type: + type: string + const: tool_group + title: Type + default: tool_group + mcp_endpoint: + anyOf: + - $ref: '#/components/schemas/URL' + - type: 'null' + args: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Args type: object - properties: - name: - type: string - description: The name of the vector store. - expires_after: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - The expiration policy for a vector store. - metadata: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - Set of 16 key-value pairs that can be attached to an object. - additionalProperties: false - title: OpenaiUpdateVectorStoreRequest - VectorStoreDeleteResponse: - type: object - properties: - id: - type: string - description: >- - Unique identifier of the deleted vector store - object: - type: string - default: vector_store.deleted - description: >- - Object type identifier for the deletion response - deleted: - type: boolean - default: true - description: >- - Whether the deletion operation was successful - additionalProperties: false required: - - id - - object - - deleted - title: VectorStoreDeleteResponse - description: Response from deleting a vector store. - VectorStoreChunkingStrategy: - oneOf: - - $ref: '#/components/schemas/VectorStoreChunkingStrategyAuto' - - $ref: '#/components/schemas/VectorStoreChunkingStrategyStatic' - discriminator: - propertyName: type - mapping: - auto: '#/components/schemas/VectorStoreChunkingStrategyAuto' - static: '#/components/schemas/VectorStoreChunkingStrategyStatic' + - identifier + - provider_id + title: ToolGroup + description: 'A group of related tools managed together. + + + :param type: Type of resource, always ''tool_group'' + + :param mcp_endpoint: (Optional) Model Context Protocol endpoint for remote + tools + + :param args: (Optional) Additional arguments for the tool group' + URL: + properties: + uri: + type: string + title: Uri + type: object + required: + - uri + title: URL + description: 'A URL reference to external content. + + + :param uri: The URL string pointing to the resource' + UnionType: + properties: + type: + type: string + const: union + title: Type + default: union + type: object + title: UnionType + description: 'Parameter type for union values. + + + :param type: Discriminator type. Always "union"' VectorStoreChunkingStrategyAuto: - type: object properties: type: type: string const: auto + title: Type default: auto - description: >- - Strategy type, always "auto" for automatic chunking - additionalProperties: false - required: - - type - title: VectorStoreChunkingStrategyAuto - description: >- - Automatic chunking strategy for vector store files. - VectorStoreChunkingStrategyStatic: type: object + title: VectorStoreChunkingStrategyAuto + description: 'Automatic chunking strategy for vector store files. + + + :param type: Strategy type, always "auto" for automatic chunking' + VectorStoreChunkingStrategyStatic: properties: type: type: string const: static + title: Type default: static - description: >- - Strategy type, always "static" for static chunking static: $ref: '#/components/schemas/VectorStoreChunkingStrategyStaticConfig' - description: >- - Configuration parameters for the static chunking strategy - additionalProperties: false - required: - - type - - static - title: VectorStoreChunkingStrategyStatic - description: >- - Static chunking strategy with configurable parameters. - VectorStoreChunkingStrategyStaticConfig: type: object + required: + - static + title: VectorStoreChunkingStrategyStatic + description: 'Static chunking strategy with configurable parameters. + + + :param type: Strategy type, always "static" for static chunking + + :param static: Configuration parameters for the static chunking strategy' + VectorStoreChunkingStrategyStaticConfig: properties: chunk_overlap_tokens: type: integer + title: Chunk Overlap Tokens default: 400 - description: >- - Number of tokens to overlap between adjacent chunks max_chunk_size_tokens: type: integer + maximum: 4096.0 + minimum: 100.0 + title: Max Chunk Size Tokens default: 800 - description: >- - Maximum number of tokens per chunk, must be between 100 and 4096 - additionalProperties: false - required: - - chunk_overlap_tokens - - max_chunk_size_tokens + type: object title: VectorStoreChunkingStrategyStaticConfig - description: >- - Configuration for static chunking strategy. - "OpenAICreateVectorStoreFileBatchRequestWithExtraBody": - type: object - properties: - file_ids: - type: array - items: - type: string - description: >- - A list of File IDs that the vector store should use - attributes: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - (Optional) Key-value attributes to store with the files - chunking_strategy: - $ref: '#/components/schemas/VectorStoreChunkingStrategy' - description: >- - (Optional) The chunking strategy used to chunk the file(s). Defaults to - auto - additionalProperties: false - required: - - file_ids - title: >- - OpenAICreateVectorStoreFileBatchRequestWithExtraBody - description: >- - Request to create a vector store file batch with extra_body support. + description: 'Configuration for static chunking strategy. + + + :param chunk_overlap_tokens: Number of tokens to overlap between adjacent + chunks + + :param max_chunk_size_tokens: Maximum number of tokens per chunk, must be + between 100 and 4096' VectorStoreFileBatchObject: - type: object properties: id: type: string - description: Unique identifier for the file batch + title: Id object: type: string + title: Object default: vector_store.file_batch - description: >- - Object type identifier, always "vector_store.file_batch" created_at: type: integer - description: >- - Timestamp when the file batch was created + title: Created At vector_store_id: type: string - description: >- - ID of the vector store containing the file batch + title: Vector Store Id status: - $ref: '#/components/schemas/VectorStoreFileStatus' - description: >- - Current processing status of the file batch + anyOf: + - type: string + const: completed + - type: string + const: in_progress + - type: string + const: cancelled + - type: string + const: failed + title: Status file_counts: $ref: '#/components/schemas/VectorStoreFileCounts' - description: >- - File processing status counts for the batch - additionalProperties: false + type: object required: - - id - - object - - created_at - - vector_store_id - - status - - file_counts + - id + - created_at + - vector_store_id + - status + - file_counts title: VectorStoreFileBatchObject - description: OpenAI Vector Store File Batch object. - VectorStoreFileStatus: - oneOf: - - type: string - const: completed - - type: string - const: in_progress - - type: string - const: cancelled - - type: string - const: failed - VectorStoreFileLastError: - type: object + description: 'OpenAI Vector Store File Batch object. + + + :param id: Unique identifier for the file batch + + :param object: Object type identifier, always "vector_store.file_batch" + + :param created_at: Timestamp when the file batch was created + + :param vector_store_id: ID of the vector store containing the file batch + + :param status: Current processing status of the file batch + + :param file_counts: File processing status counts for the batch' + VectorStoreFileCounts: properties: - code: - oneOf: - - type: string - const: server_error - - type: string - const: rate_limit_exceeded - description: >- - Error code indicating the type of failure - message: - type: string - description: >- - Human-readable error message describing the failure - additionalProperties: false - required: - - code - - message - title: VectorStoreFileLastError - description: >- - Error information for failed vector store file processing. - VectorStoreFileObject: + completed: + type: integer + title: Completed + cancelled: + type: integer + title: Cancelled + failed: + type: integer + title: Failed + in_progress: + type: integer + title: In Progress + total: + type: integer + title: Total type: object + required: + - completed + - cancelled + - failed + - in_progress + - total + title: VectorStoreFileCounts + description: 'File processing status counts for a vector store. + + + :param completed: Number of files that have been successfully processed + + :param cancelled: Number of files that had their processing cancelled + + :param failed: Number of files that failed to process + + :param in_progress: Number of files currently being processed + + :param total: Total number of files in the vector store' + VectorStoreObject: properties: id: type: string - description: Unique identifier for the file + title: Id object: type: string - default: vector_store.file - description: >- - Object type identifier, always "vector_store.file" - attributes: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - Key-value attributes associated with the file - chunking_strategy: - oneOf: - - $ref: '#/components/schemas/VectorStoreChunkingStrategyAuto' - - $ref: '#/components/schemas/VectorStoreChunkingStrategyStatic' - discriminator: - propertyName: type - mapping: - auto: '#/components/schemas/VectorStoreChunkingStrategyAuto' - static: '#/components/schemas/VectorStoreChunkingStrategyStatic' - description: >- - Strategy used for splitting the file into chunks + title: Object + default: vector_store created_at: type: integer - description: >- - Timestamp when the file was added to the vector store - last_error: - $ref: '#/components/schemas/VectorStoreFileLastError' - description: >- - (Optional) Error information if file processing failed - status: - $ref: '#/components/schemas/VectorStoreFileStatus' - description: Current processing status of the file + title: Created At + name: + anyOf: + - type: string + - type: 'null' + title: Name usage_bytes: type: integer + title: Usage Bytes default: 0 - description: Storage space used by this file in bytes - vector_store_id: + file_counts: + $ref: '#/components/schemas/VectorStoreFileCounts' + status: type: string - description: >- - ID of the vector store containing this file - additionalProperties: false - required: - - id - - object - - attributes - - chunking_strategy - - created_at - - status - - usage_bytes - - vector_store_id - title: VectorStoreFileObject - description: OpenAI Vector Store File object. - VectorStoreFilesListInBatchResponse: - type: object - properties: - object: - type: string - default: list - description: Object type identifier, always "list" - data: - type: array - items: - $ref: '#/components/schemas/VectorStoreFileObject' - description: >- - List of vector store file objects in the batch - first_id: - type: string - description: >- - (Optional) ID of the first file in the list for pagination - last_id: - type: string - description: >- - (Optional) ID of the last file in the list for pagination - has_more: - type: boolean - default: false - description: >- - Whether there are more files available beyond this page - additionalProperties: false - required: - - object - - data - - has_more - title: VectorStoreFilesListInBatchResponse - description: >- - Response from listing files in a vector store file batch. - VectorStoreListFilesResponse: - type: object - properties: - object: - type: string - default: list - description: Object type identifier, always "list" - data: - type: array - items: - $ref: '#/components/schemas/VectorStoreFileObject' - description: List of vector store file objects - first_id: - type: string - description: >- - (Optional) ID of the first file in the list for pagination - last_id: - type: string - description: >- - (Optional) ID of the last file in the list for pagination - has_more: - type: boolean - default: false - description: >- - Whether there are more files available beyond this page - additionalProperties: false - required: - - object - - data - - has_more - title: VectorStoreListFilesResponse - description: >- - Response from listing files in a vector store. - OpenaiAttachFileToVectorStoreRequest: - type: object - properties: - file_id: - type: string - description: >- - The ID of the file to attach to the vector store. - attributes: + title: Status + default: completed + expires_after: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Expires After + expires_at: + anyOf: + - type: integer + - type: 'null' + title: Expires At + last_active_at: + anyOf: + - type: integer + - type: 'null' + title: Last Active At + metadata: + additionalProperties: true type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - The key-value attributes stored with the file, which can be used for filtering. - chunking_strategy: - $ref: '#/components/schemas/VectorStoreChunkingStrategy' - description: >- - The chunking strategy to use for the file. - additionalProperties: false - required: - - file_id - title: OpenaiAttachFileToVectorStoreRequest - OpenaiUpdateVectorStoreFileRequest: + title: Metadata type: object - properties: - attributes: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - The updated key-value attributes to store with the file. - additionalProperties: false required: - - attributes - title: OpenaiUpdateVectorStoreFileRequest - VectorStoreFileDeleteResponse: - type: object - properties: - id: - type: string - description: Unique identifier of the deleted file - object: - type: string - default: vector_store.file.deleted - description: >- - Object type identifier for the deletion response - deleted: - type: boolean - default: true - description: >- - Whether the deletion operation was successful - additionalProperties: false - required: - - id - - object - - deleted - title: VectorStoreFileDeleteResponse - description: >- - Response from deleting a vector store file. - VectorStoreContent: - type: object - properties: - type: - type: string - const: text - description: >- - Content type, currently only "text" is supported - text: - type: string - description: The actual text content - additionalProperties: false - required: - - type - - text - title: VectorStoreContent - description: >- - Content item from a vector store file or search result. - VectorStoreFileContentsResponse: - type: object - properties: - file_id: - type: string - description: Unique identifier for the file - filename: - type: string - description: Name of the file - attributes: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - Key-value attributes associated with the file - content: - type: array - items: - $ref: '#/components/schemas/VectorStoreContent' - description: List of content items from the file - additionalProperties: false - required: - - file_id - - filename - - attributes - - content - title: VectorStoreFileContentsResponse - description: >- - Response from retrieving the contents of a vector store file. - OpenaiSearchVectorStoreRequest: - type: object - properties: - query: - oneOf: - - type: string - - type: array - items: - type: string - description: >- - The query string or array for performing the search. - filters: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - Filters based on file attributes to narrow the search results. - max_num_results: - type: integer - description: >- - Maximum number of results to return (1 to 50 inclusive, default 10). - ranking_options: - type: object - properties: - ranker: - type: string - description: >- - (Optional) Name of the ranking algorithm to use - score_threshold: - type: number - default: 0.0 - description: >- - (Optional) Minimum relevance score threshold for results - additionalProperties: false - description: >- - Ranking options for fine-tuning the search results. - rewrite_query: - type: boolean - description: >- - Whether to rewrite the natural language query for vector search (default - false) - search_mode: - type: string - description: >- - The search mode to use - "keyword", "vector", or "hybrid" (default "vector") - additionalProperties: false - required: - - query - title: OpenaiSearchVectorStoreRequest - VectorStoreSearchResponse: - type: object - properties: - file_id: - type: string - description: >- - Unique identifier of the file containing the result - filename: - type: string - description: Name of the file containing the result - score: - type: number - description: Relevance score for this search result - attributes: - type: object - additionalProperties: - oneOf: - - type: string - - type: number - - type: boolean - description: >- - (Optional) Key-value attributes associated with the file - content: - type: array - items: - $ref: '#/components/schemas/VectorStoreContent' - description: >- - List of content items matching the search query - additionalProperties: false - required: - - file_id - - filename - - score - - content - title: VectorStoreSearchResponse - description: Response from searching a vector store. - VectorStoreSearchResponsePage: - type: object - properties: - object: - type: string - default: vector_store.search_results.page - description: >- - Object type identifier for the search results page - search_query: - type: string - description: >- - The original search query that was executed - data: - type: array - items: - $ref: '#/components/schemas/VectorStoreSearchResponse' - description: List of search result objects - has_more: - type: boolean - default: false - description: >- - Whether there are more results available beyond this page - next_page: - type: string - description: >- - (Optional) Token for retrieving the next page of results - additionalProperties: false - required: - - object - - search_query - - data - - has_more - title: VectorStoreSearchResponsePage - description: >- - Paginated response from searching a vector store. + - id + - created_at + - file_counts + title: VectorStoreObject + description: 'OpenAI Vector Store object. + + + :param id: Unique identifier for the vector store + + :param object: Object type identifier, always "vector_store" + + :param created_at: Timestamp when the vector store was created + + :param name: (Optional) Name of the vector store + + :param usage_bytes: Storage space used by the vector store in bytes + + :param file_counts: File processing status counts for the vector store + + :param status: Current status of the vector store + + :param expires_after: (Optional) Expiration policy for the vector store + + :param expires_at: (Optional) Timestamp when the vector store will expire + + :param last_active_at: (Optional) Timestamp of last activity on the vector + store + + :param metadata: Set of key-value pairs that can be attached to the vector + store' VersionInfo: - type: object properties: version: type: string - description: Version number of the service - additionalProperties: false + title: Version + type: object required: - - version + - version title: VersionInfo - description: Version information for the service. + description: 'Version information for the service. + + + :param version: Version number of the service' + WeightedRanker: + properties: + type: + type: string + const: weighted + title: Type + default: weighted + alpha: + type: number + maximum: 1.0 + minimum: 0.0 + title: Alpha + description: Weight factor between 0 and 1. 0 means only keyword scores, + 1 means only vector scores. + default: 0.5 + type: object + title: WeightedRanker + description: "Weighted ranker configuration that combines vector and keyword\ + \ scores.\n\n:param type: The type of ranker, always \"weighted\"\n:param\ + \ alpha: Weight factor between 0 and 1.\n 0 means only use keyword\ + \ scores,\n 1 means only use vector scores,\n values\ + \ in between blend both scores." + Error: + description: 'Error response from the API. Roughly follows RFC 7807. + + + :param status: HTTP status code + + :param title: Error title, a short summary of the error which is invariant + for an error type + + :param detail: Error detail, a longer human-readable description of the error + + :param instance: (Optional) A URL which can be used to retrieve more information + about the specific occurrence of the error' + properties: + status: + title: Status + type: integer + title: + title: Title + type: string + detail: + title: Detail + type: string + instance: + anyOf: + - type: string + - type: 'null' + default: null + title: Instance + required: + - status + - title + - detail + title: Error + type: object responses: BadRequest400: description: The request was invalid or malformed @@ -10288,8 +12701,7 @@ components: title: Bad Request detail: The request was invalid or malformed TooManyRequests429: - description: >- - The client has sent too many requests in a given amount of time + description: The client has sent too many requests in a given amount of time content: application/json: schema: @@ -10297,11 +12709,9 @@ components: example: status: 429 title: Too Many Requests - detail: >- - You have exceeded the rate limit. Please try again later. + detail: You have exceeded the rate limit. Please try again later. InternalServerError500: - description: >- - The server encountered an unexpected error + description: The server encountered an unexpected error content: application/json: schema: @@ -10309,10 +12719,9 @@ components: example: status: 500 title: Internal Server Error - detail: >- - An unexpected error occurred. Our team has been notified. + detail: An unexpected error occurred DefaultError: - description: An unexpected error occurred + description: An error occurred content: application/json: schema: diff --git a/docs/static/stainless-llama-stack-spec.yaml b/docs/static/stainless-llama-stack-spec.yaml index f6699aef2..496fdbdf6 100644 --- a/docs/static/stainless-llama-stack-spec.yaml +++ b/docs/static/stainless-llama-stack-spec.yaml @@ -172,36 +172,44 @@ paths: tags: - Inference summary: List chat completions. - description: List chat completions. + description: >- + List chat completions. + + :param after: The ID of the last chat completion to return. + :param limit: The maximum number of chat completions to return. + :param model: The model to filter by. + :param order: The order to sort the chat completions by: "asc" or + "desc". Defaults to "desc". + :returns: A ListOpenAIChatCompletionResponse. parameters: - name: after - in: query description: >- The ID of the last chat completion to return. required: false schema: type: string - - name: limit in: query + - name: limit description: >- The maximum number of chat completions to return. required: false schema: type: integer - - name: model in: query + - name: model description: The model to filter by. required: false schema: type: string - - name: order in: query + - name: order description: >- The order to sort the chat completions by: "asc" or "desc". Defaults to "desc". required: false schema: $ref: '#/components/schemas/Order' + in: query deprecated: false post: responses: @@ -210,9 +218,8 @@ paths: content: application/json: schema: - oneOf: - - $ref: '#/components/schemas/OpenAIChatCompletion' - - $ref: '#/components/schemas/OpenAIChatCompletionChunk' + $ref: '#/components/schemas/llama_stack.apis.inference.inference.OpenAIChatCompletion + | collections.abc.AsyncIterator[llama_stack.apis.inference.inference.OpenAIChatCompletionChunk]' '400': $ref: '#/components/responses/BadRequest400' '429': @@ -231,12 +238,13 @@ paths: Generate an OpenAI-compatible chat completion for the given messages using the specified model. + :returns: An OpenAIChatCompletion. parameters: [] requestBody: content: application/json: schema: - $ref: '#/components/schemas/OpenAIChatCompletionRequestWithExtraBody' + id: Annotated required: true deprecated: false /v1/chat/completions/{completion_id}: @@ -265,13 +273,16 @@ paths: Get chat completion. Describe a chat completion by its ID. + + :param completion_id: ID of the chat completion. + :returns: A OpenAICompletionWithInputMessages. parameters: - name: completion_id - in: path description: ID of the chat completion. required: true schema: type: string + in: path deprecated: false /v1/completions: post: @@ -300,12 +311,13 @@ paths: Generate an OpenAI-compatible completion for the given prompt using the specified model. + :returns: An OpenAICompletion. parameters: [] requestBody: content: application/json: schema: - $ref: '#/components/schemas/OpenAICompletionRequestWithExtraBody' + id: Annotated required: true deprecated: false /v1/conversations: @@ -334,6 +346,11 @@ paths: Create a conversation. Create a conversation. + + :param items: Initial items to include in the conversation context. + :param metadata: Set of key-value pairs that can be attached to an + object. + :returns: The created conversation object. parameters: [] requestBody: content: @@ -368,13 +385,16 @@ paths: Retrieve a conversation. Get a conversation with the given ID. + + :param conversation_id: The conversation identifier. + :returns: The conversation object. parameters: - name: conversation_id - in: path description: The conversation identifier. required: true schema: type: string + in: path deprecated: false post: responses: @@ -401,13 +421,18 @@ paths: Update a conversation. Update a conversation's metadata with the given ID. + + :param conversation_id: The conversation identifier. + :param metadata: Set of key-value pairs that can be attached to an + object. + :returns: The updated conversation object. parameters: - name: conversation_id - in: path description: The conversation identifier. required: true schema: type: string + in: path requestBody: content: application/json: @@ -440,13 +465,16 @@ paths: Delete a conversation. Delete a conversation with the given ID. + + :param conversation_id: The conversation identifier. + :returns: The deleted conversation resource. parameters: - name: conversation_id - in: path description: The conversation identifier. required: true schema: type: string + in: path deprecated: false /v1/conversations/{conversation_id}/items: get: @@ -474,57 +502,49 @@ paths: List items. List items in the conversation. + + :param conversation_id: The conversation identifier. + :param after: An item ID to list items after, used in pagination. + :param include: Specify additional output data to include in the response. + :param limit: A limit on the number of objects to be returned (1-100, + default 20). + :param order: The order to return items in (asc or desc, default desc). + :returns: List of conversation items. parameters: - name: conversation_id - in: path description: The conversation identifier. required: true schema: type: string + in: path - name: after - in: query description: >- An item ID to list items after, used in pagination. required: false schema: type: string - - name: include in: query + - name: include description: >- Specify additional output data to include in the response. required: false schema: - type: array - items: - type: string - enum: - - web_search_call.action.sources - - code_interpreter_call.outputs - - computer_call_output.output.image_url - - file_search_call.results - - message.input_image.image_url - - message.output_text.logprobs - - reasoning.encrypted_content - title: ConversationItemInclude - description: >- - Specify additional output data to include in the model response. - - name: limit + $ref: '#/components/schemas/list' in: query + - name: limit description: >- A limit on the number of objects to be returned (1-100, default 20). required: false schema: type: integer - - name: order in: query + - name: order description: >- The order to return items in (asc or desc, default desc). required: false schema: - type: string - enum: - - asc - - desc + $ref: '#/components/schemas/Literal' + in: query deprecated: false post: responses: @@ -551,13 +571,17 @@ paths: Create items. Create items in the conversation. + + :param conversation_id: The conversation identifier. + :param items: Items to include in the conversation context. + :returns: List of created items. parameters: - name: conversation_id - in: path description: The conversation identifier. required: true schema: type: string + in: path requestBody: content: application/json: @@ -573,7 +597,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ConversationItem' + id: Annotated '400': $ref: '#/components/responses/BadRequest400' '429': @@ -591,19 +615,23 @@ paths: Retrieve an item. Retrieve a conversation item. + + :param conversation_id: The conversation identifier. + :param item_id: The item identifier. + :returns: The conversation item. parameters: - name: conversation_id - in: path description: The conversation identifier. required: true schema: type: string - - name: item_id in: path + - name: item_id description: The item identifier. required: true schema: type: string + in: path deprecated: false delete: responses: @@ -630,19 +658,23 @@ paths: Delete an item. Delete a conversation item. + + :param conversation_id: The conversation identifier. + :param item_id: The item identifier. + :returns: The deleted item resource. parameters: - name: conversation_id - in: path description: The conversation identifier. required: true schema: type: string - - name: item_id in: path + - name: item_id description: The item identifier. required: true schema: type: string + in: path deprecated: false /v1/embeddings: post: @@ -672,12 +704,13 @@ paths: Generate OpenAI-compatible embeddings for the given input using the specified model. + :returns: An OpenAIEmbeddingsResponse containing the embeddings. parameters: [] requestBody: content: application/json: schema: - $ref: '#/components/schemas/OpenAIEmbeddingsRequestWithExtraBody' + id: Annotated required: true deprecated: false /v1/files: @@ -707,9 +740,19 @@ paths: List files. Returns a list of files that belong to the user's organization. + + :param after: A cursor for use in pagination. `after` is an object + ID that defines your place in the list. For instance, if you make a list request + and receive 100 objects, ending with obj_foo, your subsequent call can include + after=obj_foo in order to fetch the next page of the list. + :param limit: A limit on the number of objects to be returned. Limit + can range between 1 and 10,000, and the default is 10,000. + :param order: Sort order by the `created_at` timestamp of the objects. + `asc` for ascending order and `desc` for descending order. + :param purpose: Only return files with the given purpose. + :returns: An ListOpenAIFileResponse containing the list of files. parameters: - name: after - in: query description: >- A cursor for use in pagination. `after` is an object ID that defines your place in the list. For instance, if you make a list request and receive @@ -718,29 +761,30 @@ paths: required: false schema: type: string - - name: limit in: query + - name: limit description: >- A limit on the number of objects to be returned. Limit can range between 1 and 10,000, and the default is 10,000. required: false schema: type: integer - - name: order in: query + - name: order description: >- Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and `desc` for descending order. required: false schema: $ref: '#/components/schemas/Order' - - name: purpose in: query + - name: purpose description: >- Only return files with the given purpose. required: false schema: $ref: '#/components/schemas/OpenAIFilePurpose' + in: query deprecated: false post: responses: @@ -769,14 +813,19 @@ paths: Upload a file that can be used across various endpoints. + The file upload should be a multipart form request with: + - file: The File object (not file name) to be uploaded. + - purpose: The intended purpose of the uploaded file. + - expires_after: Optional form values describing expiration for the + file. - The file upload should be a multipart form request with: - - - file: The File object (not file name) to be uploaded. - - - purpose: The intended purpose of the uploaded file. - - - expires_after: Optional form values describing expiration for the file. + :param file: The uploaded file object containing content and metadata + (filename, content_type, etc.). + :param purpose: The intended purpose of the uploaded file (e.g., "assistants", + "fine-tune"). + :param expires_after: Optional form values describing expiration for + the file. + :returns: An OpenAIFileObject representing the uploaded file. parameters: [] requestBody: content: @@ -823,14 +872,17 @@ paths: Retrieve file. Returns information about a specific file. + + :param file_id: The ID of the file to use for this request. + :returns: An OpenAIFileObject containing file information. parameters: - name: file_id - in: path description: >- The ID of the file to use for this request. required: true schema: type: string + in: path deprecated: false delete: responses: @@ -854,15 +906,19 @@ paths: tags: - Files summary: Delete file. - description: Delete file. + description: >- + Delete file. + + :param file_id: The ID of the file to use for this request. + :returns: An OpenAIFileDeleteResponse indicating successful deletion. parameters: - name: file_id - in: path description: >- The ID of the file to use for this request. required: true schema: type: string + in: path deprecated: false /v1/files/{file_id}/content: get: @@ -891,14 +947,17 @@ paths: Retrieve file content. Returns the contents of the specified file. + + :param file_id: The ID of the file to use for this request. + :returns: The raw file content as a binary response. parameters: - name: file_id - in: path description: >- The ID of the file to use for this request. required: true schema: type: string + in: path deprecated: false /v1/health: get: @@ -927,6 +986,8 @@ paths: Get health status. Get the current health status of the service. + + :returns: Health information indicating if the service is operational. parameters: [] deprecated: false /v1/inspect/routes: @@ -1023,6 +1084,13 @@ paths: Register model. Register a model. + + :param model_id: The identifier of the model to register. + :param provider_model_id: The identifier of the model in the provider. + :param provider_id: The identifier of the provider. + :param metadata: Any additional metadata for this model. + :param model_type: The type of model to register. + :returns: A Model. parameters: [] requestBody: content: @@ -1057,13 +1125,16 @@ paths: Get model. Get a model by its identifier. + + :param model_id: The identifier of the model to get. + :returns: A Model. parameters: - name: model_id - in: path description: The identifier of the model to get. required: true schema: type: string + in: path deprecated: false delete: responses: @@ -1086,14 +1157,16 @@ paths: Unregister model. Unregister a model. + + :param model_id: The identifier of the model to unregister. parameters: - name: model_id - in: path description: >- The identifier of the model to unregister. required: true schema: type: string + in: path deprecated: false /v1/moderations: post: @@ -1121,6 +1194,12 @@ paths: Create moderation. Classifies if text and/or image inputs are potentially harmful. + :param input: Input (or inputs) to classify. + Can be a single string, an array of strings, or an array of multi-modal + input objects similar to other models. + :param model: (Optional) The content moderation model you would like + to use. + :returns: A moderation object. parameters: [] requestBody: content: @@ -1152,7 +1231,10 @@ paths: tags: - Prompts summary: List all prompts. - description: List all prompts. + description: >- + List all prompts. + + :returns: A ListPromptsResponse containing all prompts. parameters: [] deprecated: false post: @@ -1180,6 +1262,11 @@ paths: Create prompt. Create a new prompt. + + :param prompt: The prompt text content with variable placeholders. + :param variables: List of variable names that can be used in the prompt + template. + :returns: The created Prompt resource. parameters: [] requestBody: content: @@ -1214,20 +1301,24 @@ paths: Get prompt. Get a prompt by its identifier and optional version. + + :param prompt_id: The identifier of the prompt to get. + :param version: The version of the prompt to get (defaults to latest). + :returns: A Prompt resource. parameters: - name: prompt_id - in: path description: The identifier of the prompt to get. required: true schema: type: string + in: path - name: version - in: query description: >- The version of the prompt to get (defaults to latest). required: false schema: type: integer + in: query deprecated: false post: responses: @@ -1255,13 +1346,21 @@ paths: Update prompt. Update an existing prompt (increments version). + + :param prompt_id: The identifier of the prompt to update. + :param prompt: The updated prompt text content. + :param version: The current version of the prompt being updated. + :param variables: Updated list of variable names that can be used + in the prompt template. + :param set_as_default: Set the new version as the default (default=True). + :returns: The updated Prompt resource with incremented version. parameters: - name: prompt_id - in: path description: The identifier of the prompt to update. required: true schema: type: string + in: path requestBody: content: application/json: @@ -1290,13 +1389,15 @@ paths: Delete prompt. Delete a prompt. + + :param prompt_id: The identifier of the prompt to delete. parameters: - name: prompt_id - in: path description: The identifier of the prompt to delete. required: true schema: type: string + in: path deprecated: false /v1/prompts/{prompt_id}/set-default-version: post: @@ -1325,13 +1426,17 @@ paths: Set prompt version. Set which version of a prompt should be the default in get_prompt (latest). + + :param prompt_id: The identifier of the prompt. + :param version: The version to set as default. + :returns: The prompt with the specified version now set as default. parameters: - name: prompt_id - in: path description: The identifier of the prompt. required: true schema: type: string + in: path requestBody: content: application/json: @@ -1366,14 +1471,17 @@ paths: List prompt versions. List all versions of a specific prompt. + + :param prompt_id: The identifier of the prompt to list versions for. + :returns: A ListPromptsResponse containing all versions of the prompt. parameters: - name: prompt_id - in: path description: >- The identifier of the prompt to list versions for. required: true schema: type: string + in: path deprecated: false /v1/providers: get: @@ -1402,6 +1510,9 @@ paths: List providers. List all available providers. + + :returns: A ListProvidersResponse containing information about all + providers. parameters: [] deprecated: false /v1/providers/{provider_id}: @@ -1431,13 +1542,16 @@ paths: Get provider. Get detailed information about a specific provider. + + :param provider_id: The ID of the provider to inspect. + :returns: A ProviderInfo object containing the provider's details. parameters: - name: provider_id - in: path description: The ID of the provider to inspect. required: true schema: type: string + in: path deprecated: false /v1/responses: get: @@ -1461,33 +1575,41 @@ paths: tags: - Agents summary: List all responses. - description: List all responses. + description: >- + List all responses. + + :param after: The ID of the last response to return. + :param limit: The number of responses to return. + :param model: The model to filter responses by. + :param order: The order to sort responses by when sorted by created_at + ('asc' or 'desc'). + :returns: A ListOpenAIResponseObject. parameters: - name: after - in: query description: The ID of the last response to return. required: false schema: type: string - - name: limit in: query + - name: limit description: The number of responses to return. required: false schema: type: integer - - name: model in: query + - name: model description: The model to filter responses by. required: false schema: type: string - - name: order in: query + - name: order description: >- The order to sort responses by when sorted by created_at ('asc' or 'desc'). required: false schema: $ref: '#/components/schemas/Order' + in: query deprecated: false post: responses: @@ -1499,7 +1621,7 @@ paths: $ref: '#/components/schemas/OpenAIResponseObject' text/event-stream: schema: - $ref: '#/components/schemas/OpenAIResponseObjectStream' + $ref: '#/components/schemas/AsyncIterator' '400': $ref: '#/components/responses/BadRequest400' '429': @@ -1513,7 +1635,21 @@ paths: tags: - Agents summary: Create a model response. - description: Create a model response. + description: >- + Create a model response. + + :param input: Input message(s) to create the response. + :param model: The underlying LLM used for completions. + :param previous_response_id: (Optional) if specified, the new response + will be a continuation of the previous response. This can be used to easily + fork-off new responses from existing responses. + :param conversation: (Optional) The ID of a conversation to add the + response to. Must begin with 'conv_'. Input and output messages will be automatically + added to the conversation. + :param include: (Optional) Additional fields to include in the response. + :param guardrails: (Optional) List of guardrails to apply during response + generation. Can be guardrail IDs (strings) or guardrail specifications. + :returns: An OpenAIResponseObject. parameters: [] requestBody: content: @@ -1525,15 +1661,11 @@ paths: x-llama-stack-extra-body-params: - name: guardrails schema: - type: array - items: - oneOf: - - type: string - - $ref: '#/components/schemas/ResponseGuardrailSpec' + id: Annotated description: >- List of guardrails to apply during response generation. Guardrails provide safety and content moderation. - required: false + required: true /v1/responses/{response_id}: get: responses: @@ -1556,15 +1688,19 @@ paths: tags: - Agents summary: Get a model response. - description: Get a model response. + description: >- + Get a model response. + + :param response_id: The ID of the OpenAI response to retrieve. + :returns: An OpenAIResponseObject. parameters: - name: response_id - in: path description: >- The ID of the OpenAI response to retrieve. required: true schema: type: string + in: path deprecated: false delete: responses: @@ -1587,14 +1723,18 @@ paths: tags: - Agents summary: Delete a response. - description: Delete a response. + description: >- + Delete a response. + + :param response_id: The ID of the OpenAI response to delete. + :returns: An OpenAIDeleteResponseObject parameters: - name: response_id - in: path description: The ID of the OpenAI response to delete. required: true schema: type: string + in: path deprecated: false /v1/responses/{response_id}/input_items: get: @@ -1618,53 +1758,61 @@ paths: tags: - Agents summary: List input items. - description: List input items. + description: >- + List input items. + + :param response_id: The ID of the response to retrieve input items for. + :param after: An item ID to list items after, used for pagination. + :param before: An item ID to list items before, used for pagination. + :param include: Additional fields to include in the response. + :param limit: A limit on the number of objects to be returned. Limit + can range between 1 and 100, and the default is 20. + :param order: The order to return the input items in. Default is desc. + :returns: An ListOpenAIResponseInputItem. parameters: - name: response_id - in: path description: >- The ID of the response to retrieve input items for. required: true schema: type: string + in: path - name: after - in: query description: >- An item ID to list items after, used for pagination. required: false schema: type: string - - name: before in: query + - name: before description: >- An item ID to list items before, used for pagination. required: false schema: type: string - - name: include in: query + - name: include description: >- Additional fields to include in the response. required: false schema: - type: array - items: - type: string - - name: limit + $ref: '#/components/schemas/list' in: query + - name: limit description: >- A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 20. required: false schema: type: integer - - name: order in: query + - name: order description: >- The order to return the input items in. Default is desc. required: false schema: $ref: '#/components/schemas/Order' + in: query deprecated: false /v1/safety/run-shield: post: @@ -1692,6 +1840,11 @@ paths: Run shield. Run a shield. + + :param shield_id: The identifier of the shield to run. + :param messages: The messages to run the shield on. + :param params: The parameters of the shield. + :returns: A RunShieldResponse. parameters: [] requestBody: content: @@ -1722,7 +1875,10 @@ paths: tags: - ScoringFunctions summary: List all scoring functions. - description: List all scoring functions. + description: >- + List all scoring functions. + + :returns: A ListScoringFunctionsResponse. parameters: [] deprecated: false post: @@ -1742,7 +1898,18 @@ paths: tags: - ScoringFunctions summary: Register a scoring function. - description: Register a scoring function. + description: >- + Register a scoring function. + + :param scoring_fn_id: The ID of the scoring function to register. + :param description: The description of the scoring function. + :param return_type: The return type of the scoring function. + :param provider_scoring_fn_id: The ID of the provider scoring function + to use for the scoring function. + :param provider_id: The ID of the provider to use for the scoring + function. + :param params: The parameters for the scoring function for benchmark + eval, these can be overridden for app eval. parameters: [] requestBody: content: @@ -1773,14 +1940,18 @@ paths: tags: - ScoringFunctions summary: Get a scoring function by its ID. - description: Get a scoring function by its ID. + description: >- + Get a scoring function by its ID. + + :param scoring_fn_id: The ID of the scoring function to get. + :returns: A ScoringFn. parameters: - name: scoring_fn_id - in: path description: The ID of the scoring function to get. required: true schema: type: string + in: path deprecated: false delete: responses: @@ -1799,15 +1970,18 @@ paths: tags: - ScoringFunctions summary: Unregister a scoring function. - description: Unregister a scoring function. + description: >- + Unregister a scoring function. + + :param scoring_fn_id: The ID of the scoring function to unregister. parameters: - name: scoring_fn_id - in: path description: >- The ID of the scoring function to unregister. required: true schema: type: string + in: path deprecated: false /v1/scoring/score: post: @@ -1832,7 +2006,12 @@ paths: tags: - Scoring summary: Score a list of rows. - description: Score a list of rows. + description: >- + Score a list of rows. + + :param input_rows: The rows to score. + :param scoring_functions: The scoring functions to use for the scoring. + :returns: A ScoreResponse object containing rows and aggregated results. parameters: [] requestBody: content: @@ -1863,7 +2042,13 @@ paths: tags: - Scoring summary: Score a batch of rows. - description: Score a batch of rows. + description: >- + Score a batch of rows. + + :param dataset_id: The ID of the dataset to score. + :param scoring_functions: The scoring functions to use for the scoring. + :param save_results_dataset: Whether to save the results to a dataset. + :returns: A ScoreBatchResponse. parameters: [] requestBody: content: @@ -1894,7 +2079,10 @@ paths: tags: - Shields summary: List all shields. - description: List all shields. + description: >- + List all shields. + + :returns: A ListShieldsResponse. parameters: [] deprecated: false post: @@ -1918,7 +2106,14 @@ paths: tags: - Shields summary: Register a shield. - description: Register a shield. + description: >- + Register a shield. + + :param shield_id: The identifier of the shield to register. + :param provider_shield_id: The identifier of the shield in the provider. + :param provider_id: The identifier of the provider. + :param params: The parameters of the shield. + :returns: A Shield. parameters: [] requestBody: content: @@ -1949,14 +2144,18 @@ paths: tags: - Shields summary: Get a shield by its identifier. - description: Get a shield by its identifier. + description: >- + Get a shield by its identifier. + + :param identifier: The identifier of the shield to get. + :returns: A Shield. parameters: - name: identifier - in: path description: The identifier of the shield to get. required: true schema: type: string + in: path deprecated: false delete: responses: @@ -1975,16 +2174,65 @@ paths: tags: - Shields summary: Unregister a shield. - description: Unregister a shield. + description: >- + Unregister a shield. + + :param identifier: The identifier of the shield to unregister. parameters: - name: identifier - in: path description: >- The identifier of the shield to unregister. required: true schema: type: string + in: path deprecated: false +<<<<<<< HEAD +======= + /v1/synthetic-data-generation/generate: + post: + responses: + '200': + description: >- + Response containing filtered synthetic data samples and optional statistics + content: + application/json: + schema: + $ref: '#/components/schemas/SyntheticDataGenerationResponse' + '400': + $ref: '#/components/responses/BadRequest400' + '429': + $ref: >- + #/components/responses/TooManyRequests429 + '500': + $ref: >- + #/components/responses/InternalServerError500 + default: + $ref: '#/components/responses/DefaultError' + tags: + - SyntheticDataGeneration (Coming Soon) + summary: >- + Generate synthetic data based on input dialogs and apply filtering. + description: >- + Generate synthetic data based on input dialogs and apply filtering. + + :param dialogs: List of conversation messages to use as input for synthetic + data generation + :param filtering_function: Type of filtering to apply to generated + synthetic data samples + :param model: (Optional) The identifier of the model to use. The model + must be registered with Llama Stack and available via the /models endpoint + :returns: Response containing filtered synthetic data samples and + optional statistics + parameters: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SyntheticDataGenerateRequest' + required: true + deprecated: false +>>>>>>> 0e623067d (chore: use Pydantic to generate OpenAPI schema) /v1/tool-runtime/invoke: post: responses: @@ -2007,7 +2255,12 @@ paths: tags: - ToolRuntime summary: Run a tool with the given arguments. - description: Run a tool with the given arguments. + description: >- + Run a tool with the given arguments. + + :param tool_name: The name of the tool to invoke. + :param kwargs: A dictionary of arguments to pass to the tool. + :returns: A ToolInvocationResult. parameters: [] requestBody: content: @@ -2038,22 +2291,27 @@ paths: tags: - ToolRuntime summary: List all tools in the runtime. - description: List all tools in the runtime. + description: >- + List all tools in the runtime. + + :param tool_group_id: The ID of the tool group to list tools for. + :param mcp_endpoint: The MCP endpoint to use for the tool group. + :returns: A ListToolDefsResponse. parameters: - name: tool_group_id - in: query description: >- The ID of the tool group to list tools for. required: false schema: type: string - - name: mcp_endpoint in: query + - name: mcp_endpoint description: >- The MCP endpoint to use for the tool group. required: false schema: $ref: '#/components/schemas/URL' + in: query deprecated: false /v1/tool-runtime/rag-tool/insert: post: @@ -2076,6 +2334,12 @@ paths: Index documents so they can be used by the RAG system. description: >- Index documents so they can be used by the RAG system. + + :param documents: List of documents to index in the RAG system + :param vector_store_id: ID of the vector database to store the document + embeddings + :param chunk_size_in_tokens: (Optional) Size in tokens for document + chunking during indexing parameters: [] requestBody: content: @@ -2110,6 +2374,12 @@ paths: Query the RAG system for context; typically invoked by the agent. description: >- Query the RAG system for context; typically invoked by the agent. + + :param content: The query content to search for in the indexed documents + :param vector_store_ids: List of vector database IDs to search within + :param query_config: (Optional) Configuration parameters for the query + operation + :returns: RAGQueryResult containing the retrieved content and metadata parameters: [] requestBody: content: @@ -2140,7 +2410,10 @@ paths: tags: - ToolGroups summary: List tool groups with optional provider. - description: List tool groups with optional provider. + description: >- + List tool groups with optional provider. + + :returns: A ListToolGroupsResponse. parameters: [] deprecated: false post: @@ -2160,7 +2433,13 @@ paths: tags: - ToolGroups summary: Register a tool group. - description: Register a tool group. + description: >- + Register a tool group. + + :param toolgroup_id: The ID of the tool group to register. + :param provider_id: The ID of the provider to use for the tool group. + :param mcp_endpoint: The MCP endpoint to use for the tool group. + :param args: A dictionary of arguments to pass to the tool group. parameters: [] requestBody: content: @@ -2191,14 +2470,18 @@ paths: tags: - ToolGroups summary: Get a tool group by its ID. - description: Get a tool group by its ID. + description: >- + Get a tool group by its ID. + + :param toolgroup_id: The ID of the tool group to get. + :returns: A ToolGroup. parameters: - name: toolgroup_id - in: path description: The ID of the tool group to get. required: true schema: type: string + in: path deprecated: false delete: responses: @@ -2217,14 +2500,17 @@ paths: tags: - ToolGroups summary: Unregister a tool group. - description: Unregister a tool group. + description: >- + Unregister a tool group. + + :param toolgroup_id: The ID of the tool group to unregister. parameters: - name: toolgroup_id - in: path description: The ID of the tool group to unregister. required: true schema: type: string + in: path deprecated: false /v1/tools: get: @@ -2248,15 +2534,19 @@ paths: tags: - ToolGroups summary: List tools with optional tool group. - description: List tools with optional tool group. + description: >- + List tools with optional tool group. + + :param toolgroup_id: The ID of the tool group to list tools for. + :returns: A ListToolDefsResponse. parameters: - name: toolgroup_id - in: query description: >- The ID of the tool group to list tools for. required: false schema: type: string + in: query deprecated: false /v1/tools/{tool_name}: get: @@ -2280,14 +2570,18 @@ paths: tags: - ToolGroups summary: Get a tool by its name. - description: Get a tool by its name. + description: >- + Get a tool by its name. + + :param tool_name: The name of the tool to get. + :returns: A ToolDef. parameters: - name: tool_name - in: path description: The name of the tool to get. required: true schema: type: string + in: path deprecated: false /v1/vector-io/insert: post: @@ -2307,7 +2601,19 @@ paths: tags: - VectorIO summary: Insert chunks into a vector database. - description: Insert chunks into a vector database. + description: >- + Insert chunks into a vector database. + + :param vector_store_id: The identifier of the vector database to insert the + chunks into. + :param chunks: The chunks to insert. Each `Chunk` should contain content + which can be interleaved text, images, or other types. + `metadata`: `dict[str, Any]` and `embedding`: `List[float]` are + optional. + If `metadata` is provided, you configure how Llama Stack formats + the chunk during generation. + If `embedding` is not provided, it will be computed later. + :param ttl_seconds: The time to live of the chunks. parameters: [] requestBody: content: @@ -2338,7 +2644,13 @@ paths: tags: - VectorIO summary: Query chunks from a vector database. - description: Query chunks from a vector database. + description: >- + Query chunks from a vector database. + + :param vector_store_id: The identifier of the vector database to query. + :param query: The query to search for. + :param params: The parameters of the query. + :returns: A QueryChunksResponse. parameters: [] requestBody: content: @@ -2370,40 +2682,52 @@ paths: tags: - VectorIO summary: Returns a list of vector stores. - description: Returns a list of vector stores. + description: >- + Returns a list of vector stores. + + :param limit: A limit on the number of objects to be returned. Limit can range + between 1 and 100, and the default is 20. + :param order: Sort order by the `created_at` timestamp of the objects. + `asc` for ascending order and `desc` for descending order. + :param after: A cursor for use in pagination. `after` is an object + ID that defines your place in the list. + :param before: A cursor for use in pagination. `before` is an object + ID that defines your place in the list. + :returns: A VectorStoreListResponse containing the list of vector + stores. parameters: - name: limit - in: query description: >- A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 20. required: false schema: type: integer - - name: order in: query + - name: order description: >- Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and `desc` for descending order. required: false schema: type: string - - name: after in: query + - name: after description: >- A cursor for use in pagination. `after` is an object ID that defines your place in the list. required: false schema: type: string - - name: before in: query + - name: before description: >- A cursor for use in pagination. `before` is an object ID that defines your place in the list. required: false schema: type: string + in: query deprecated: false post: responses: @@ -2431,12 +2755,13 @@ paths: Creates a vector store. Generate an OpenAI-compatible vector store with the given parameters. + :returns: A VectorStoreObject representing the created vector store. parameters: [] requestBody: content: application/json: schema: - $ref: '#/components/schemas/OpenAICreateVectorStoreRequestWithExtraBody' + id: Annotated required: true deprecated: false /v1/vector_stores/{vector_store_id}: @@ -2462,14 +2787,18 @@ paths: tags: - VectorIO summary: Retrieves a vector store. - description: Retrieves a vector store. + description: >- + Retrieves a vector store. + + :param vector_store_id: The ID of the vector store to retrieve. + :returns: A VectorStoreObject representing the vector store. parameters: - name: vector_store_id - in: path description: The ID of the vector store to retrieve. required: true schema: type: string + in: path deprecated: false post: responses: @@ -2493,14 +2822,22 @@ paths: tags: - VectorIO summary: Updates a vector store. - description: Updates a vector store. + description: >- + Updates a vector store. + + :param vector_store_id: The ID of the vector store to update. + :param name: The name of the vector store. + :param expires_after: The expiration policy for a vector store. + :param metadata: Set of 16 key-value pairs that can be attached to + an object. + :returns: A VectorStoreObject representing the updated vector store. parameters: - name: vector_store_id - in: path description: The ID of the vector store to update. required: true schema: type: string + in: path requestBody: content: application/json: @@ -2530,14 +2867,18 @@ paths: tags: - VectorIO summary: Delete a vector store. - description: Delete a vector store. + description: >- + Delete a vector store. + + :param vector_store_id: The ID of the vector store to delete. + :returns: A VectorStoreDeleteResponse indicating the deletion status. parameters: - name: vector_store_id - in: path description: The ID of the vector store to delete. required: true schema: type: string + in: path deprecated: false /v1/vector_stores/{vector_store_id}/file_batches: post: @@ -2567,19 +2908,23 @@ paths: Generate an OpenAI-compatible vector store file batch for the given vector store. + :param vector_store_id: The ID of the vector store to create the file + batch for. + :returns: A VectorStoreFileBatchObject representing the created file + batch. parameters: - name: vector_store_id - in: path description: >- The ID of the vector store to create the file batch for. required: true schema: type: string + in: path requestBody: content: application/json: schema: - $ref: '#/components/schemas/OpenAICreateVectorStoreFileBatchRequestWithExtraBody' + id: Annotated required: true deprecated: false /v1/vector_stores/{vector_store_id}/file_batches/{batch_id}: @@ -2605,21 +2950,27 @@ paths: tags: - VectorIO summary: Retrieve a vector store file batch. - description: Retrieve a vector store file batch. + description: >- + Retrieve a vector store file batch. + + :param batch_id: The ID of the file batch to retrieve. + :param vector_store_id: The ID of the vector store containing the + file batch. + :returns: A VectorStoreFileBatchObject representing the file batch. parameters: - name: batch_id - in: path description: The ID of the file batch to retrieve. required: true schema: type: string - - name: vector_store_id in: path + - name: vector_store_id description: >- The ID of the vector store containing the file batch. required: true schema: type: string + in: path deprecated: false /v1/vector_stores/{vector_store_id}/file_batches/{batch_id}/cancel: post: @@ -2644,21 +2995,28 @@ paths: tags: - VectorIO summary: Cancels a vector store file batch. - description: Cancels a vector store file batch. + description: >- + Cancels a vector store file batch. + + :param batch_id: The ID of the file batch to cancel. + :param vector_store_id: The ID of the vector store containing the + file batch. + :returns: A VectorStoreFileBatchObject representing the cancelled + file batch. parameters: - name: batch_id - in: path description: The ID of the file batch to cancel. required: true schema: type: string - - name: vector_store_id in: path + - name: vector_store_id description: >- The ID of the vector store containing the file batch. required: true schema: type: string + in: path deprecated: false /v1/vector_stores/{vector_store_id}/file_batches/{batch_id}/files: get: @@ -2687,60 +3045,76 @@ paths: Returns a list of vector store files in a batch. description: >- Returns a list of vector store files in a batch. + + :param batch_id: The ID of the file batch to list files from. + :param vector_store_id: The ID of the vector store containing the + file batch. + :param after: A cursor for use in pagination. `after` is an object + ID that defines your place in the list. + :param before: A cursor for use in pagination. `before` is an object + ID that defines your place in the list. + :param filter: Filter by file status. One of in_progress, completed, + failed, cancelled. + :param limit: A limit on the number of objects to be returned. Limit + can range between 1 and 100, and the default is 20. + :param order: Sort order by the `created_at` timestamp of the objects. + `asc` for ascending order and `desc` for descending order. + :returns: A VectorStoreFilesListInBatchResponse containing the list + of files in the batch. parameters: - name: batch_id - in: path description: >- The ID of the file batch to list files from. required: true schema: type: string - - name: vector_store_id in: path + - name: vector_store_id description: >- The ID of the vector store containing the file batch. required: true schema: type: string + in: path - name: after - in: query description: >- A cursor for use in pagination. `after` is an object ID that defines your place in the list. required: false schema: type: string - - name: before in: query + - name: before description: >- A cursor for use in pagination. `before` is an object ID that defines your place in the list. required: false schema: type: string - - name: filter in: query + - name: filter description: >- Filter by file status. One of in_progress, completed, failed, cancelled. required: false schema: type: string - - name: limit in: query + - name: limit description: >- A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 20. required: false schema: type: integer - - name: order in: query + - name: order description: >- Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and `desc` for descending order. required: false schema: type: string + in: query deprecated: false /v1/vector_stores/{vector_store_id}/files: get: @@ -2765,55 +3139,69 @@ paths: tags: - VectorIO summary: List files in a vector store. - description: List files in a vector store. + description: >- + List files in a vector store. + + :param vector_store_id: The ID of the vector store to list files from. + :param limit: (Optional) A limit on the number of objects to be returned. + Limit can range between 1 and 100, and the default is 20. + :param order: (Optional) Sort order by the `created_at` timestamp + of the objects. `asc` for ascending order and `desc` for descending order. + :param after: (Optional) A cursor for use in pagination. `after` is + an object ID that defines your place in the list. + :param before: (Optional) A cursor for use in pagination. `before` + is an object ID that defines your place in the list. + :param filter: (Optional) Filter by file status to only return files + with the specified status. + :returns: A VectorStoreListFilesResponse containing the list of files. parameters: - name: vector_store_id - in: path description: >- The ID of the vector store to list files from. required: true schema: type: string + in: path - name: limit - in: query description: >- (Optional) A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 20. required: false schema: type: integer - - name: order in: query + - name: order description: >- (Optional) Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and `desc` for descending order. required: false schema: type: string - - name: after in: query + - name: after description: >- (Optional) A cursor for use in pagination. `after` is an object ID that defines your place in the list. required: false schema: type: string - - name: before in: query + - name: before description: >- (Optional) A cursor for use in pagination. `before` is an object ID that defines your place in the list. required: false schema: type: string - - name: filter in: query + - name: filter description: >- (Optional) Filter by file status to only return files with the specified status. required: false schema: - $ref: '#/components/schemas/VectorStoreFileStatus' + id: Union + in: query deprecated: false post: responses: @@ -2837,15 +3225,23 @@ paths: tags: - VectorIO summary: Attach a file to a vector store. - description: Attach a file to a vector store. + description: >- + Attach a file to a vector store. + + :param vector_store_id: The ID of the vector store to attach the file to. + :param file_id: The ID of the file to attach to the vector store. + :param attributes: The key-value attributes stored with the file, + which can be used for filtering. + :param chunking_strategy: The chunking strategy to use for the file. + :returns: A VectorStoreFileObject representing the attached file. parameters: - name: vector_store_id - in: path description: >- The ID of the vector store to attach the file to. required: true schema: type: string + in: path requestBody: content: application/json: @@ -2876,21 +3272,27 @@ paths: tags: - VectorIO summary: Retrieves a vector store file. - description: Retrieves a vector store file. + description: >- + Retrieves a vector store file. + + :param vector_store_id: The ID of the vector store containing the file to + retrieve. + :param file_id: The ID of the file to retrieve. + :returns: A VectorStoreFileObject representing the file. parameters: - name: vector_store_id - in: path description: >- The ID of the vector store containing the file to retrieve. required: true schema: type: string - - name: file_id in: path + - name: file_id description: The ID of the file to retrieve. required: true schema: type: string + in: path deprecated: false post: responses: @@ -2914,21 +3316,29 @@ paths: tags: - VectorIO summary: Updates a vector store file. - description: Updates a vector store file. + description: >- + Updates a vector store file. + + :param vector_store_id: The ID of the vector store containing the file to + update. + :param file_id: The ID of the file to update. + :param attributes: The updated key-value attributes to store with + the file. + :returns: A VectorStoreFileObject representing the updated file. parameters: - name: vector_store_id - in: path description: >- The ID of the vector store containing the file to update. required: true schema: type: string - - name: file_id in: path + - name: file_id description: The ID of the file to update. required: true schema: type: string + in: path requestBody: content: application/json: @@ -2958,21 +3368,28 @@ paths: tags: - VectorIO summary: Delete a vector store file. - description: Delete a vector store file. + description: >- + Delete a vector store file. + + :param vector_store_id: The ID of the vector store containing the file to + delete. + :param file_id: The ID of the file to delete. + :returns: A VectorStoreFileDeleteResponse indicating the deletion + status. parameters: - name: vector_store_id - in: path description: >- The ID of the vector store containing the file to delete. required: true schema: type: string - - name: file_id in: path + - name: file_id description: The ID of the file to delete. required: true schema: type: string + in: path deprecated: false /v1/vector_stores/{vector_store_id}/files/{file_id}/content: get: @@ -3000,20 +3417,25 @@ paths: Retrieves the contents of a vector store file. description: >- Retrieves the contents of a vector store file. + + :param vector_store_id: The ID of the vector store containing the file to + retrieve. + :param file_id: The ID of the file to retrieve. + :returns: A list of InterleavedContent representing the file contents. parameters: - name: vector_store_id - in: path description: >- The ID of the vector store containing the file to retrieve. required: true schema: type: string - - name: file_id in: path + - name: file_id description: The ID of the file to retrieve. required: true schema: type: string + in: path deprecated: false /v1/vector_stores/{vector_store_id}/search: post: @@ -3043,13 +3465,27 @@ paths: Searches a vector store for relevant chunks based on a query and optional file attribute filters. + + :param vector_store_id: The ID of the vector store to search. + :param query: The query string or array for performing the search. + :param filters: Filters based on file attributes to narrow the search + results. + :param max_num_results: Maximum number of results to return (1 to + 50 inclusive, default 10). + :param ranking_options: Ranking options for fine-tuning the search + results. + :param rewrite_query: Whether to rewrite the natural language query + for vector search (default false) + :param search_mode: The search mode to use - "keyword", "vector", + or "hybrid" (default "vector") + :returns: A VectorStoreSearchResponse containing the search results. parameters: - name: vector_store_id - in: path description: The ID of the vector store to search. required: true schema: type: string + in: path requestBody: content: application/json: @@ -3084,6 +3520,8 @@ paths: Get version. Get the version of the service. + + :returns: Version information containing the service version number. parameters: [] deprecated: false /v1beta/datasetio/append-rows/{dataset_id}: @@ -3104,15 +3542,19 @@ paths: tags: - DatasetIO summary: Append rows to a dataset. - description: Append rows to a dataset. + description: >- + Append rows to a dataset. + + :param dataset_id: The ID of the dataset to append the rows to. + :param rows: The rows to append to the dataset. parameters: - name: dataset_id - in: path description: >- The ID of the dataset to append the rows to. required: true schema: type: string + in: path requestBody: content: application/json: @@ -3147,38 +3589,40 @@ paths: Get a paginated list of rows from a dataset. Uses offset-based pagination where: + - start_index: The starting index (0-based). If None, starts from + beginning. + - limit: Number of items to return. If None or -1, returns all items. - - start_index: The starting index (0-based). If None, starts from beginning. + The response includes: + - data: List of items for the current page. + - has_more: Whether there are more items available after this set. - - limit: Number of items to return. If None or -1, returns all items. - - - The response includes: - - - data: List of items for the current page. - - - has_more: Whether there are more items available after this set. + :param dataset_id: The ID of the dataset to get the rows from. + :param start_index: Index into dataset for the first row to get. Get + all rows if None. + :param limit: The number of rows to get. + :returns: A PaginatedResponse. parameters: - name: dataset_id - in: path description: >- The ID of the dataset to get the rows from. required: true schema: type: string + in: path - name: start_index - in: query description: >- Index into dataset for the first row to get. Get all rows if None. required: false schema: type: integer - - name: limit in: query + - name: limit description: The number of rows to get. required: false schema: type: integer + in: query deprecated: false /v1beta/datasets: get: @@ -3202,7 +3646,10 @@ paths: tags: - Datasets summary: List all datasets. - description: List all datasets. + description: >- + List all datasets. + + :returns: A ListDatasetsResponse. parameters: [] deprecated: false post: @@ -3226,7 +3673,71 @@ paths: tags: - Datasets summary: Register a new dataset. - description: Register a new dataset. + description: >- + Register a new dataset. + + :param purpose: The purpose of the dataset. + One of: + - "post-training/messages": The dataset contains a messages column + with list of messages for post-training. + { + "messages": [ + {"role": "user", "content": "Hello, world!"}, + {"role": "assistant", "content": "Hello, world!"}, + ] + } + - "eval/question-answer": The dataset contains a question column + and an answer column for evaluation. + { + "question": "What is the capital of France?", + "answer": "Paris" + } + - "eval/messages-answer": The dataset contains a messages column + with list of messages and an answer column for evaluation. + { + "messages": [ + {"role": "user", "content": "Hello, my name is John + Doe."}, + {"role": "assistant", "content": "Hello, John Doe. + How can I help you today?"}, + {"role": "user", "content": "What's my name?"}, + ], + "answer": "John Doe" + } + :param source: The data source of the dataset. Ensure that the data + source schema is compatible with the purpose of the dataset. Examples: + - { + "type": "uri", + "uri": "https://mywebsite.com/mydata.jsonl" + } + - { + "type": "uri", + "uri": "lsfs://mydata.jsonl" + } + - { + "type": "uri", + "uri": "data:csv;base64,{base64_content}" + } + - { + "type": "uri", + "uri": "huggingface://llamastack/simpleqa?split=train" + } + - { + "type": "rows", + "rows": [ + { + "messages": [ + {"role": "user", "content": "Hello, world!"}, + {"role": "assistant", "content": "Hello, world!"}, + ] + } + ] + } + :param metadata: The metadata for the dataset. + - E.g. {"description": "My dataset"}. + :param dataset_id: The ID of the dataset. If not provided, an ID will + be generated. + :returns: A Dataset. parameters: [] requestBody: content: @@ -3257,14 +3768,18 @@ paths: tags: - Datasets summary: Get a dataset by its ID. - description: Get a dataset by its ID. + description: >- + Get a dataset by its ID. + + :param dataset_id: The ID of the dataset to get. + :returns: A Dataset. parameters: - name: dataset_id - in: path description: The ID of the dataset to get. required: true schema: type: string + in: path deprecated: false delete: responses: @@ -3283,14 +3798,17 @@ paths: tags: - Datasets summary: Unregister a dataset by its ID. - description: Unregister a dataset by its ID. + description: >- + Unregister a dataset by its ID. + + :param dataset_id: The ID of the dataset to unregister. parameters: - name: dataset_id - in: path description: The ID of the dataset to unregister. required: true schema: type: string + in: path deprecated: false /v1alpha/agents: get: @@ -3314,20 +3832,25 @@ paths: tags: - Agents summary: List all agents. - description: List all agents. + description: >- + List all agents. + + :param start_index: The index to start the pagination from. + :param limit: The number of agents to return. + :returns: A PaginatedResponse. parameters: - name: start_index - in: query description: The index to start the pagination from. required: false schema: type: integer - - name: limit in: query + - name: limit description: The number of agents to return. required: false schema: type: integer + in: query deprecated: false post: responses: @@ -3354,6 +3877,9 @@ paths: Create an agent with the given configuration. description: >- Create an agent with the given configuration. + + :param agent_config: The configuration for the agent. + :returns: An AgentCreateResponse with the agent ID. parameters: [] requestBody: content: @@ -3384,14 +3910,18 @@ paths: tags: - Agents summary: Describe an agent by its ID. - description: Describe an agent by its ID. + description: >- + Describe an agent by its ID. + + :param agent_id: ID of the agent. + :returns: An Agent of the agent. parameters: - name: agent_id - in: path description: ID of the agent. required: true schema: type: string + in: path deprecated: false delete: responses: @@ -3413,13 +3943,15 @@ paths: Delete an agent by its ID and its associated sessions and turns. description: >- Delete an agent by its ID and its associated sessions and turns. + + :param agent_id: The ID of the agent to delete. parameters: - name: agent_id - in: path description: The ID of the agent to delete. required: true schema: type: string + in: path deprecated: false /v1alpha/agents/{agent_id}/session: post: @@ -3443,15 +3975,20 @@ paths: tags: - Agents summary: Create a new session for an agent. - description: Create a new session for an agent. + description: >- + Create a new session for an agent. + + :param agent_id: The ID of the agent to create the session for. + :param session_name: The name of the session to create. + :returns: An AgentSessionCreateResponse. parameters: - name: agent_id - in: path description: >- The ID of the agent to create the session for. required: true schema: type: string + in: path requestBody: content: application/json: @@ -3481,30 +4018,35 @@ paths: tags: - Agents summary: Retrieve an agent session by its ID. - description: Retrieve an agent session by its ID. + description: >- + Retrieve an agent session by its ID. + + :param session_id: The ID of the session to get. + :param agent_id: The ID of the agent to get the session for. + :param turn_ids: (Optional) List of turn IDs to filter the session + by. + :returns: A Session. parameters: - name: session_id - in: path description: The ID of the session to get. required: true schema: type: string - - name: agent_id in: path + - name: agent_id description: >- The ID of the agent to get the session for. required: true schema: type: string + in: path - name: turn_ids - in: query description: >- (Optional) List of turn IDs to filter the session by. required: false schema: - type: array - items: - type: string + $ref: '#/components/schemas/list' + in: query deprecated: false delete: responses: @@ -3526,35 +4068,36 @@ paths: Delete an agent session by its ID and its associated turns. description: >- Delete an agent session by its ID and its associated turns. + + :param session_id: The ID of the session to delete. + :param agent_id: The ID of the agent to delete the session for. parameters: - name: session_id - in: path description: The ID of the session to delete. required: true schema: type: string - - name: agent_id in: path + - name: agent_id description: >- The ID of the agent to delete the session for. required: true schema: type: string + in: path deprecated: false /v1alpha/agents/{agent_id}/session/{session_id}/turn: post: responses: '200': - description: >- - If stream=False, returns a Turn object. If stream=True, returns an SSE - event stream of AgentTurnResponseStreamChunk. + description: If stream=False, returns a Turn object. content: application/json: schema: $ref: '#/components/schemas/Turn' text/event-stream: schema: - $ref: '#/components/schemas/AgentTurnResponseStreamChunk' + $ref: '#/components/schemas/AsyncIterator' '400': $ref: '#/components/responses/BadRequest400' '429': @@ -3568,22 +4111,37 @@ paths: tags: - Agents summary: Create a new turn for an agent. - description: Create a new turn for an agent. + description: >- + Create a new turn for an agent. + + :param agent_id: The ID of the agent to create the turn for. + :param session_id: The ID of the session to create the turn for. + :param messages: List of messages to start the turn with. + :param stream: (Optional) If True, generate an SSE event stream of + the response. Defaults to False. + :param documents: (Optional) List of documents to create the turn + with. + :param toolgroups: (Optional) List of toolgroups to create the turn + with, will be used in addition to the agent's config toolgroups for the request. + :param tool_config: (Optional) The tool configuration to create the + turn with, will be used to override the agent's tool_config. + :returns: If stream=False, returns a Turn object. + If stream=True, returns an SSE event stream of AgentTurnResponseStreamChunk. parameters: - name: agent_id - in: path description: >- The ID of the agent to create the turn for. required: true schema: type: string - - name: session_id in: path + - name: session_id description: >- The ID of the session to create the turn for. required: true schema: type: string + in: path requestBody: content: application/json: @@ -3613,27 +4171,33 @@ paths: tags: - Agents summary: Retrieve an agent turn by its ID. - description: Retrieve an agent turn by its ID. + description: >- + Retrieve an agent turn by its ID. + + :param agent_id: The ID of the agent to get the turn for. + :param session_id: The ID of the session to get the turn for. + :param turn_id: The ID of the turn to get. + :returns: A Turn. parameters: - name: agent_id - in: path description: The ID of the agent to get the turn for. required: true schema: type: string - - name: session_id in: path + - name: session_id description: >- The ID of the session to get the turn for. required: true schema: type: string - - name: turn_id in: path + - name: turn_id description: The ID of the turn to get. required: true schema: type: string + in: path deprecated: false /v1alpha/agents/{agent_id}/session/{session_id}/turn/{turn_id}/resume: post: @@ -3648,7 +4212,7 @@ paths: $ref: '#/components/schemas/Turn' text/event-stream: schema: - $ref: '#/components/schemas/AgentTurnResponseStreamChunk' + $ref: '#/components/schemas/AsyncIterator' '400': $ref: '#/components/responses/BadRequest400' '429': @@ -3669,25 +4233,34 @@ paths: When a Turn has the status `awaiting_input` due to pending input from client side tool calls, this endpoint can be used to submit the outputs from the tool calls once they are ready. + + :param agent_id: The ID of the agent to resume. + :param session_id: The ID of the session to resume. + :param turn_id: The ID of the turn to resume. + :param tool_responses: The tool call responses to resume the turn + with. + :param stream: Whether to stream the response. + :returns: A Turn object if stream is False, otherwise an AsyncIterator + of AgentTurnResponseStreamChunk objects. parameters: - name: agent_id - in: path description: The ID of the agent to resume. required: true schema: type: string - - name: session_id in: path + - name: session_id description: The ID of the session to resume. required: true schema: type: string - - name: turn_id in: path + - name: turn_id description: The ID of the turn to resume. required: true schema: type: string + in: path requestBody: content: application/json: @@ -3717,33 +4290,40 @@ paths: tags: - Agents summary: Retrieve an agent step by its ID. - description: Retrieve an agent step by its ID. + description: >- + Retrieve an agent step by its ID. + + :param agent_id: The ID of the agent to get the step for. + :param session_id: The ID of the session to get the step for. + :param turn_id: The ID of the turn to get the step for. + :param step_id: The ID of the step to get. + :returns: An AgentStepResponse. parameters: - name: agent_id - in: path description: The ID of the agent to get the step for. required: true schema: type: string - - name: session_id in: path + - name: session_id description: >- The ID of the session to get the step for. required: true schema: type: string - - name: turn_id in: path + - name: turn_id description: The ID of the turn to get the step for. required: true schema: type: string - - name: step_id in: path + - name: step_id description: The ID of the step to get. required: true schema: type: string + in: path deprecated: false /v1alpha/agents/{agent_id}/sessions: get: @@ -3767,27 +4347,33 @@ paths: tags: - Agents summary: List all session(s) of a given agent. - description: List all session(s) of a given agent. + description: >- + List all session(s) of a given agent. + + :param agent_id: The ID of the agent to list sessions for. + :param start_index: The index to start the pagination from. + :param limit: The number of sessions to return. + :returns: A PaginatedResponse. parameters: - name: agent_id - in: path description: >- The ID of the agent to list sessions for. required: true schema: type: string + in: path - name: start_index - in: query description: The index to start the pagination from. required: false schema: type: integer - - name: limit in: query + - name: limit description: The number of sessions to return. required: false schema: type: integer + in: query deprecated: false /v1alpha/eval/benchmarks: get: @@ -3811,7 +4397,10 @@ paths: tags: - Benchmarks summary: List all benchmarks. - description: List all benchmarks. + description: >- + List all benchmarks. + + :returns: A ListBenchmarksResponse. parameters: [] deprecated: false post: @@ -3831,7 +4420,16 @@ paths: tags: - Benchmarks summary: Register a benchmark. - description: Register a benchmark. + description: >- + Register a benchmark. + + :param benchmark_id: The ID of the benchmark to register. + :param dataset_id: The ID of the dataset to use for the benchmark. + :param scoring_functions: The scoring functions to use for the benchmark. + :param provider_benchmark_id: The ID of the provider benchmark to + use for the benchmark. + :param provider_id: The ID of the provider to use for the benchmark. + :param metadata: The metadata to use for the benchmark. parameters: [] requestBody: content: @@ -3862,14 +4460,18 @@ paths: tags: - Benchmarks summary: Get a benchmark by its ID. - description: Get a benchmark by its ID. + description: >- + Get a benchmark by its ID. + + :param benchmark_id: The ID of the benchmark to get. + :returns: A Benchmark. parameters: - name: benchmark_id - in: path description: The ID of the benchmark to get. required: true schema: type: string + in: path deprecated: false delete: responses: @@ -3888,14 +4490,17 @@ paths: tags: - Benchmarks summary: Unregister a benchmark. - description: Unregister a benchmark. + description: >- + Unregister a benchmark. + + :param benchmark_id: The ID of the benchmark to unregister. parameters: - name: benchmark_id - in: path description: The ID of the benchmark to unregister. required: true schema: type: string + in: path deprecated: false /v1alpha/eval/benchmarks/{benchmark_id}/evaluations: post: @@ -3920,15 +4525,22 @@ paths: tags: - Eval summary: Evaluate a list of rows on a benchmark. - description: Evaluate a list of rows on a benchmark. + description: >- + Evaluate a list of rows on a benchmark. + + :param benchmark_id: The ID of the benchmark to run the evaluation on. + :param input_rows: The rows to evaluate. + :param scoring_functions: The scoring functions to use for the evaluation. + :param benchmark_config: The configuration for the benchmark. + :returns: EvaluateResponse object containing generations and scores. parameters: - name: benchmark_id - in: path description: >- The ID of the benchmark to run the evaluation on. required: true schema: type: string + in: path requestBody: content: application/json: @@ -3959,15 +4571,20 @@ paths: tags: - Eval summary: Run an evaluation on a benchmark. - description: Run an evaluation on a benchmark. + description: >- + Run an evaluation on a benchmark. + + :param benchmark_id: The ID of the benchmark to run the evaluation on. + :param benchmark_config: The configuration for the benchmark. + :returns: The job that was created to run the evaluation. parameters: - name: benchmark_id - in: path description: >- The ID of the benchmark to run the evaluation on. required: true schema: type: string + in: path requestBody: content: application/json: @@ -3997,21 +4614,26 @@ paths: tags: - Eval summary: Get the status of a job. - description: Get the status of a job. + description: >- + Get the status of a job. + + :param benchmark_id: The ID of the benchmark to run the evaluation on. + :param job_id: The ID of the job to get the status of. + :returns: The status of the evaluation job. parameters: - name: benchmark_id - in: path description: >- The ID of the benchmark to run the evaluation on. required: true schema: type: string - - name: job_id in: path + - name: job_id description: The ID of the job to get the status of. required: true schema: type: string + in: path deprecated: false delete: responses: @@ -4030,21 +4652,25 @@ paths: tags: - Eval summary: Cancel a job. - description: Cancel a job. + description: >- + Cancel a job. + + :param benchmark_id: The ID of the benchmark to run the evaluation on. + :param job_id: The ID of the job to cancel. parameters: - name: benchmark_id - in: path description: >- The ID of the benchmark to run the evaluation on. required: true schema: type: string - - name: job_id in: path + - name: job_id description: The ID of the job to cancel. required: true schema: type: string + in: path deprecated: false /v1alpha/eval/benchmarks/{benchmark_id}/jobs/{job_id}/result: get: @@ -4068,21 +4694,26 @@ paths: tags: - Eval summary: Get the result of a job. - description: Get the result of a job. + description: >- + Get the result of a job. + + :param benchmark_id: The ID of the benchmark to run the evaluation on. + :param job_id: The ID of the job to get the result of. + :returns: The result of the job. parameters: - name: benchmark_id - in: path description: >- The ID of the benchmark to run the evaluation on. required: true schema: type: string - - name: job_id in: path + - name: job_id description: The ID of the job to get the result of. required: true schema: type: string + in: path deprecated: false /v1alpha/inference/rerank: post: @@ -4110,6 +4741,17 @@ paths: Rerank a list of documents based on their relevance to a query. description: >- Rerank a list of documents based on their relevance to a query. + + :param model: The identifier of the reranking model to use. + :param query: The search query to rank items against. Can be a string, + text content part, or image content part. The input must not exceed the model's + max input token length. + :param items: List of items to rerank. Each item can be a string, + text content part, or image content part. Each input must not exceed the model's + max input token length. + :param max_num_results: (Optional) Maximum number of results to return. + Default: returns all. + :returns: RerankResponse with indices sorted by relevance score (descending). parameters: [] requestBody: content: @@ -4140,15 +4782,19 @@ paths: tags: - PostTraining (Coming Soon) summary: Get the artifacts of a training job. - description: Get the artifacts of a training job. + description: >- + Get the artifacts of a training job. + + :param job_uuid: The UUID of the job to get the artifacts of. + :returns: A PostTrainingJobArtifactsResponse. parameters: - name: job_uuid - in: query description: >- The UUID of the job to get the artifacts of. required: true schema: type: string + in: query deprecated: false /v1alpha/post-training/job/cancel: post: @@ -4168,7 +4814,10 @@ paths: tags: - PostTraining (Coming Soon) summary: Cancel a training job. - description: Cancel a training job. + description: >- + Cancel a training job. + + :param job_uuid: The UUID of the job to cancel. parameters: [] requestBody: content: @@ -4199,15 +4848,19 @@ paths: tags: - PostTraining (Coming Soon) summary: Get the status of a training job. - description: Get the status of a training job. + description: >- + Get the status of a training job. + + :param job_uuid: The UUID of the job to get the status of. + :returns: A PostTrainingJobStatusResponse. parameters: - name: job_uuid - in: query description: >- The UUID of the job to get the status of. required: true schema: type: string + in: query deprecated: false /v1alpha/post-training/jobs: get: @@ -4231,7 +4884,10 @@ paths: tags: - PostTraining (Coming Soon) summary: Get all training jobs. - description: Get all training jobs. + description: >- + Get all training jobs. + + :returns: A ListPostTrainingJobsResponse. parameters: [] deprecated: false /v1alpha/post-training/preference-optimize: @@ -4256,7 +4912,16 @@ paths: tags: - PostTraining (Coming Soon) summary: Run preference optimization of a model. - description: Run preference optimization of a model. + description: >- + Run preference optimization of a model. + + :param job_uuid: The UUID of the job to create. + :param finetuned_model: The model to fine-tune. + :param algorithm_config: The algorithm configuration. + :param training_config: The training configuration. + :param hyperparam_search_config: The hyperparam search configuration. + :param logger_config: The logger configuration. + :returns: A PostTrainingJob. parameters: [] requestBody: content: @@ -4287,7 +4952,17 @@ paths: tags: - PostTraining (Coming Soon) summary: Run supervised fine-tuning of a model. - description: Run supervised fine-tuning of a model. + description: >- + Run supervised fine-tuning of a model. + + :param job_uuid: The UUID of the job to create. + :param training_config: The training configuration. + :param hyperparam_search_config: The hyperparam search configuration. + :param logger_config: The logger configuration. + :param model: The model to fine-tune. + :param checkpoint_dir: The directory to save checkpoint(s) to. + :param algorithm_config: The algorithm configuration. + :returns: A PostTrainingJob. parameters: [] requestBody: content: @@ -4301,26 +4976,34 @@ jsonSchemaDialect: >- components: schemas: Error: - type: object + description: >- + Error response from the API. Roughly follows RFC 7807. + + + :param status: HTTP status code + + :param title: Error title, a short summary of the error which is invariant + for an error type + + :param detail: Error detail, a longer human-readable description of the error + + :param instance: (Optional) A URL which can be used to retrieve more information + about the specific occurrence of the error properties: status: + title: Status type: integer - description: HTTP status code title: + title: Title type: string - description: >- - Error title, a short summary of the error which is invariant for an error - type detail: + title: Detail type: string - description: >- - Error detail, a longer human-readable description of the error instance: - type: string - description: >- - (Optional) A URL which can be used to retrieve more information about - the specific occurrence of the error - additionalProperties: false + anyOf: + - type: string + - type: 'null' + title: Instance required: - status - title @@ -4662,1052 +5345,1443 @@ components: description: Sort order for paginated responses. ListOpenAIChatCompletionResponse: type: object + Order: + type: object + ListOpenAIChatCompletionResponse: + $defs: + OpenAIAssistantMessageParam: + description: >- + A message containing the model's (assistant) response in an OpenAI-compatible + chat completion request. + + + :param role: Must be "assistant" to identify this as the model's response + + :param content: The content of the model's response + + :param name: (Optional) The name of the assistant message participant. + + :param tool_calls: List of tool calls. Each tool call is an OpenAIChatCompletionToolCall + object. + properties: + role: + const: assistant + default: assistant + title: Role + type: string + content: + anyOf: + - type: string + - items: + $ref: >- + #/$defs/OpenAIChatCompletionContentPartTextParam + type: array + - type: 'null' + title: Content + name: + anyOf: + - type: string + - type: 'null' + title: Name + tool_calls: + anyOf: + - items: + $ref: '#/$defs/OpenAIChatCompletionToolCall' + type: array + - type: 'null' + title: Tool Calls + title: OpenAIAssistantMessageParam + type: object + "OpenAIChatCompletionContentPartImageParam": + description: >- + Image content part for OpenAI-compatible chat completion messages. + + + :param type: Must be "image_url" to identify this as image content + + :param image_url: Image URL specification and processing details + properties: + type: + const: image_url + default: image_url + title: Type + type: string + image_url: + $ref: '#/$defs/OpenAIImageURL' + required: + - image_url + title: >- + OpenAIChatCompletionContentPartImageParam + type: object + OpenAIChatCompletionContentPartTextParam: + description: >- + Text content part for OpenAI-compatible chat completion messages. + + + :param type: Must be "text" to identify this as text content + + :param text: The text content of the message + properties: + type: + const: text + default: text + title: Type + type: string + text: + title: Text + type: string + required: + - text + title: OpenAIChatCompletionContentPartTextParam + type: object + OpenAIChatCompletionToolCall: + description: >- + Tool call specification for OpenAI-compatible chat completion responses. + + + :param index: (Optional) Index of the tool call in the list + + :param id: (Optional) Unique identifier for the tool call + + :param type: Must be "function" to identify this as a function call + + :param function: (Optional) Function call details + properties: + index: + anyOf: + - type: integer + - type: 'null' + title: Index + id: + anyOf: + - type: string + - type: 'null' + title: Id + type: + const: function + default: function + title: Type + type: string + function: + anyOf: + - $ref: >- + #/$defs/OpenAIChatCompletionToolCallFunction + - type: 'null' + title: OpenAIChatCompletionToolCall + type: object + OpenAIChatCompletionToolCallFunction: + description: >- + Function call details for OpenAI-compatible tool calls. + + + :param name: (Optional) Name of the function to call + + :param arguments: (Optional) Arguments to pass to the function as a JSON + string + properties: + name: + anyOf: + - type: string + - type: 'null' + title: Name + arguments: + anyOf: + - type: string + - type: 'null' + title: Arguments + title: OpenAIChatCompletionToolCallFunction + type: object + OpenAIChatCompletionUsage: + description: >- + Usage information for OpenAI chat completion. + + + :param prompt_tokens: Number of tokens in the prompt + + :param completion_tokens: Number of tokens in the completion + + :param total_tokens: Total tokens used (prompt + completion) + + :param input_tokens_details: Detailed breakdown of input token usage + + :param output_tokens_details: Detailed breakdown of output token usage + properties: + prompt_tokens: + title: Prompt Tokens + type: integer + completion_tokens: + title: Completion Tokens + type: integer + total_tokens: + title: Total Tokens + type: integer + prompt_tokens_details: + anyOf: + - $ref: >- + #/$defs/OpenAIChatCompletionUsagePromptTokensDetails + - type: 'null' + completion_tokens_details: + anyOf: + - $ref: >- + #/$defs/OpenAIChatCompletionUsageCompletionTokensDetails + - type: 'null' + required: + - prompt_tokens + - completion_tokens + - total_tokens + title: OpenAIChatCompletionUsage + type: object + "OpenAIChatCompletionUsageCompletionTokensDetails": + description: >- + Token details for output tokens in OpenAI chat completion usage. + + + :param reasoning_tokens: Number of tokens used for reasoning (o1/o3 models) + properties: + reasoning_tokens: + anyOf: + - type: integer + - type: 'null' + title: Reasoning Tokens + title: >- + OpenAIChatCompletionUsageCompletionTokensDetails + type: object + "OpenAIChatCompletionUsagePromptTokensDetails": + description: >- + Token details for prompt tokens in OpenAI chat completion usage. + + + :param cached_tokens: Number of tokens retrieved from cache + properties: + cached_tokens: + anyOf: + - type: integer + - type: 'null' + title: Cached Tokens + title: >- + OpenAIChatCompletionUsagePromptTokensDetails + type: object + OpenAIChoice: + description: >- + A choice from an OpenAI-compatible chat completion response. + + + :param message: The message from the model + + :param finish_reason: The reason the model stopped generating + + :param index: The index of the choice + + :param logprobs: (Optional) The log probabilities for the tokens in the + message + properties: + message: + discriminator: + mapping: + assistant: '#/$defs/OpenAIAssistantMessageParam' + developer: '#/$defs/OpenAIDeveloperMessageParam' + system: '#/$defs/OpenAISystemMessageParam' + tool: '#/$defs/OpenAIToolMessageParam' + user: '#/$defs/OpenAIUserMessageParam' + propertyName: role + oneOf: + - $ref: '#/$defs/OpenAIUserMessageParam' + - $ref: '#/$defs/OpenAISystemMessageParam' + - $ref: '#/$defs/OpenAIAssistantMessageParam' + - $ref: '#/$defs/OpenAIToolMessageParam' + - $ref: '#/$defs/OpenAIDeveloperMessageParam' + title: Message + finish_reason: + title: Finish Reason + type: string + index: + title: Index + type: integer + logprobs: + anyOf: + - $ref: '#/$defs/OpenAIChoiceLogprobs' + - type: 'null' + required: + - message + - finish_reason + - index + title: OpenAIChoice + type: object + OpenAIChoiceLogprobs: + description: >- + The log probabilities for the tokens in the message from an OpenAI-compatible + chat completion response. + + + :param content: (Optional) The log probabilities for the tokens in the + message + + :param refusal: (Optional) The log probabilities for the tokens in the + message + properties: + content: + anyOf: + - items: + $ref: '#/$defs/OpenAITokenLogProb' + type: array + - type: 'null' + title: Content + refusal: + anyOf: + - items: + $ref: '#/$defs/OpenAITokenLogProb' + type: array + - type: 'null' + title: Refusal + title: OpenAIChoiceLogprobs + type: object + OpenAICompletionWithInputMessages: + properties: + id: + title: Id + type: string + choices: + items: + $ref: '#/$defs/OpenAIChoice' + title: Choices + type: array + object: + const: chat.completion + default: chat.completion + title: Object + type: string + created: + title: Created + type: integer + model: + title: Model + type: string + usage: + anyOf: + - $ref: '#/$defs/OpenAIChatCompletionUsage' + - type: 'null' + input_messages: + items: + discriminator: + mapping: + assistant: '#/$defs/OpenAIAssistantMessageParam' + developer: '#/$defs/OpenAIDeveloperMessageParam' + system: '#/$defs/OpenAISystemMessageParam' + tool: '#/$defs/OpenAIToolMessageParam' + user: '#/$defs/OpenAIUserMessageParam' + propertyName: role + oneOf: + - $ref: '#/$defs/OpenAIUserMessageParam' + - $ref: '#/$defs/OpenAISystemMessageParam' + - $ref: '#/$defs/OpenAIAssistantMessageParam' + - $ref: '#/$defs/OpenAIToolMessageParam' + - $ref: '#/$defs/OpenAIDeveloperMessageParam' + title: Input Messages + type: array + required: + - id + - choices + - created + - model + - input_messages + title: OpenAICompletionWithInputMessages + type: object + OpenAIDeveloperMessageParam: + description: >- + A message from the developer in an OpenAI-compatible chat completion request. + + + :param role: Must be "developer" to identify this as a developer message + + :param content: The content of the developer message + + :param name: (Optional) The name of the developer message participant. + properties: + role: + const: developer + default: developer + title: Role + type: string + content: + anyOf: + - type: string + - items: + $ref: >- + #/$defs/OpenAIChatCompletionContentPartTextParam + type: array + title: Content + name: + anyOf: + - type: string + - type: 'null' + title: Name + required: + - content + title: OpenAIDeveloperMessageParam + type: object + OpenAIFile: + properties: + type: + const: file + default: file + title: Type + type: string + file: + $ref: '#/$defs/OpenAIFileFile' + required: + - file + title: OpenAIFile + type: object + OpenAIFileFile: + properties: + file_data: + anyOf: + - type: string + - type: 'null' + title: File Data + file_id: + anyOf: + - type: string + - type: 'null' + title: File Id + filename: + anyOf: + - type: string + - type: 'null' + title: Filename + title: OpenAIFileFile + type: object + OpenAIImageURL: + description: >- + Image URL specification for OpenAI-compatible chat completion messages. + + + :param url: URL of the image to include in the message + + :param detail: (Optional) Level of detail for image processing. Can be + "low", "high", or "auto" + properties: + url: + title: Url + type: string + detail: + anyOf: + - type: string + - type: 'null' + title: Detail + required: + - url + title: OpenAIImageURL + type: object + OpenAISystemMessageParam: + description: >- + A system message providing instructions or context to the model. + + + :param role: Must be "system" to identify this as a system message + + :param content: The content of the "system prompt". If multiple system + messages are provided, they are concatenated. The underlying Llama Stack + code may also add other system messages (for example, for formatting tool + definitions). + + :param name: (Optional) The name of the system message participant. + properties: + role: + const: system + default: system + title: Role + type: string + content: + anyOf: + - type: string + - items: + $ref: >- + #/$defs/OpenAIChatCompletionContentPartTextParam + type: array + title: Content + name: + anyOf: + - type: string + - type: 'null' + title: Name + required: + - content + title: OpenAISystemMessageParam + type: object + OpenAITokenLogProb: + description: >- + The log probability for a token from an OpenAI-compatible chat completion + response. + + + :token: The token + + :bytes: (Optional) The bytes for the token + + :logprob: The log probability of the token + + :top_logprobs: The top log probabilities for the token + properties: + token: + title: Token + type: string + bytes: + anyOf: + - items: + type: integer + type: array + - type: 'null' + title: Bytes + logprob: + title: Logprob + type: number + top_logprobs: + items: + $ref: '#/$defs/OpenAITopLogProb' + title: Top Logprobs + type: array + required: + - token + - logprob + - top_logprobs + title: OpenAITokenLogProb + type: object + OpenAIToolMessageParam: + description: >- + A message representing the result of a tool invocation in an OpenAI-compatible + chat completion request. + + + :param role: Must be "tool" to identify this as a tool response + + :param tool_call_id: Unique identifier for the tool call this response + is for + + :param content: The response content from the tool + properties: + role: + const: tool + default: tool + title: Role + type: string + tool_call_id: + title: Tool Call Id + type: string + content: + anyOf: + - type: string + - items: + $ref: >- + #/$defs/OpenAIChatCompletionContentPartTextParam + type: array + title: Content + required: + - tool_call_id + - content + title: OpenAIToolMessageParam + type: object + OpenAITopLogProb: + description: >- + The top log probability for a token from an OpenAI-compatible chat completion + response. + + + :token: The token + + :bytes: (Optional) The bytes for the token + + :logprob: The log probability of the token + properties: + token: + title: Token + type: string + bytes: + anyOf: + - items: + type: integer + type: array + - type: 'null' + title: Bytes + logprob: + title: Logprob + type: number + required: + - token + - logprob + title: OpenAITopLogProb + type: object + OpenAIUserMessageParam: + description: >- + A message from the user in an OpenAI-compatible chat completion request. + + + :param role: Must be "user" to identify this as a user message + + :param content: The content of the message, which can include text and + other media + + :param name: (Optional) The name of the user message participant. + properties: + role: + const: user + default: user + title: Role + type: string + content: + anyOf: + - type: string + - items: + discriminator: + mapping: + file: '#/$defs/OpenAIFile' + image_url: >- + #/$defs/OpenAIChatCompletionContentPartImageParam + text: >- + #/$defs/OpenAIChatCompletionContentPartTextParam + propertyName: type + oneOf: + - $ref: >- + #/$defs/OpenAIChatCompletionContentPartTextParam + - $ref: >- + #/$defs/OpenAIChatCompletionContentPartImageParam + - $ref: '#/$defs/OpenAIFile' + type: array + title: Content + name: + anyOf: + - type: string + - type: 'null' + title: Name + required: + - content + title: OpenAIUserMessageParam + type: object + description: >- + Response from listing OpenAI-compatible chat completions. + + + :param data: List of chat completion objects with their input messages + + :param has_more: Whether there are more completions available beyond this + list + + :param first_id: ID of the first completion in this list + + :param last_id: ID of the last completion in this list + + :param object: Must be "list" to identify this as a list response properties: data: - type: array items: - type: object - properties: - id: - type: string - description: The ID of the chat completion - choices: - type: array - items: - $ref: '#/components/schemas/OpenAIChoice' - description: List of choices - object: - type: string - const: chat.completion - default: chat.completion - description: >- - The object type, which will be "chat.completion" - created: - type: integer - description: >- - The Unix timestamp in seconds when the chat completion was created - model: - type: string - description: >- - The model that was used to generate the chat completion - usage: - $ref: '#/components/schemas/OpenAIChatCompletionUsage' - description: >- - Token usage information for the completion - input_messages: - type: array - items: - $ref: '#/components/schemas/OpenAIMessageParam' - additionalProperties: false - required: - - id - - choices - - object - - created - - model - - input_messages - title: OpenAICompletionWithInputMessages - description: >- - List of chat completion objects with their input messages + $ref: >- + #/$defs/OpenAICompletionWithInputMessages + title: Data + type: array has_more: + title: Has More type: boolean - description: >- - Whether there are more completions available beyond this list first_id: + title: First Id type: string - description: ID of the first completion in this list last_id: + title: Last Id type: string - description: ID of the last completion in this list object: - type: string const: list default: list - description: >- - Must be "list" to identify this as a list response - additionalProperties: false + title: Object + type: string required: - data - has_more - first_id - last_id - - object title: ListOpenAIChatCompletionResponse - description: >- - Response from listing OpenAI-compatible chat completions. - OpenAIAssistantMessageParam: type: object - properties: - role: - type: string - const: assistant - default: assistant + Annotated: + type: object + ? >- + llama_stack.apis.inference.inference.OpenAIChatCompletion | collections.abc.AsyncIterator[llama_stack.apis.inference.inference.OpenAIChatCompletionChunk] + : type: object + OpenAICompletionWithInputMessages: + $defs: + OpenAIAssistantMessageParam: description: >- - Must be "assistant" to identify this as the model's response - content: - oneOf: - - type: string - - type: array - items: - $ref: '#/components/schemas/OpenAIChatCompletionContentPartTextParam' - description: The content of the model's response - name: - type: string - description: >- - (Optional) The name of the assistant message participant. - tool_calls: - type: array - items: - $ref: '#/components/schemas/OpenAIChatCompletionToolCall' - description: >- - List of tool calls. Each tool call is an OpenAIChatCompletionToolCall + A message containing the model's (assistant) response in an OpenAI-compatible + chat completion request. + + + :param role: Must be "assistant" to identify this as the model's response + + :param content: The content of the model's response + + :param name: (Optional) The name of the assistant message participant. + + :param tool_calls: List of tool calls. Each tool call is an OpenAIChatCompletionToolCall object. - additionalProperties: false - required: - - role - title: OpenAIAssistantMessageParam - description: >- - A message containing the model's (assistant) response in an OpenAI-compatible - chat completion request. - "OpenAIChatCompletionContentPartImageParam": - type: object - properties: - type: - type: string - const: image_url - default: image_url - description: >- - Must be "image_url" to identify this as image content - image_url: - $ref: '#/components/schemas/OpenAIImageURL' - description: >- - Image URL specification and processing details - additionalProperties: false - required: - - type - - image_url - title: >- - OpenAIChatCompletionContentPartImageParam - description: >- - Image content part for OpenAI-compatible chat completion messages. - OpenAIChatCompletionContentPartParam: - oneOf: - - $ref: '#/components/schemas/OpenAIChatCompletionContentPartTextParam' - - $ref: '#/components/schemas/OpenAIChatCompletionContentPartImageParam' - - $ref: '#/components/schemas/OpenAIFile' - discriminator: - propertyName: type - mapping: - text: '#/components/schemas/OpenAIChatCompletionContentPartTextParam' - image_url: '#/components/schemas/OpenAIChatCompletionContentPartImageParam' - file: '#/components/schemas/OpenAIFile' - OpenAIChatCompletionContentPartTextParam: - type: object - properties: - type: - type: string - const: text - default: text - description: >- - Must be "text" to identify this as text content - text: - type: string - description: The text content of the message - additionalProperties: false - required: - - type - - text - title: OpenAIChatCompletionContentPartTextParam - description: >- - Text content part for OpenAI-compatible chat completion messages. - OpenAIChatCompletionToolCall: - type: object - properties: - index: - type: integer - description: >- - (Optional) Index of the tool call in the list - id: - type: string - description: >- - (Optional) Unique identifier for the tool call - type: - type: string - const: function - default: function - description: >- - Must be "function" to identify this as a function call - function: - $ref: '#/components/schemas/OpenAIChatCompletionToolCallFunction' - description: (Optional) Function call details - additionalProperties: false - required: - - type - title: OpenAIChatCompletionToolCall - description: >- - Tool call specification for OpenAI-compatible chat completion responses. - OpenAIChatCompletionToolCallFunction: - type: object - properties: - name: - type: string - description: (Optional) Name of the function to call - arguments: - type: string - description: >- - (Optional) Arguments to pass to the function as a JSON string - additionalProperties: false - title: OpenAIChatCompletionToolCallFunction - description: >- - Function call details for OpenAI-compatible tool calls. - OpenAIChatCompletionUsage: - type: object - properties: - prompt_tokens: - type: integer - description: Number of tokens in the prompt - completion_tokens: - type: integer - description: Number of tokens in the completion - total_tokens: - type: integer - description: Total tokens used (prompt + completion) - prompt_tokens_details: - type: object properties: - cached_tokens: - type: integer - description: Number of tokens retrieved from cache - additionalProperties: false - title: >- - OpenAIChatCompletionUsagePromptTokensDetails - description: >- - Token details for prompt tokens in OpenAI chat completion usage. - completion_tokens_details: + role: + const: assistant + default: assistant + title: Role + type: string + content: + anyOf: + - type: string + - items: + $ref: >- + #/$defs/OpenAIChatCompletionContentPartTextParam + type: array + - type: 'null' + title: Content + name: + anyOf: + - type: string + - type: 'null' + title: Name + tool_calls: + anyOf: + - items: + $ref: '#/$defs/OpenAIChatCompletionToolCall' + type: array + - type: 'null' + title: Tool Calls + title: OpenAIAssistantMessageParam type: object + "OpenAIChatCompletionContentPartImageParam": + description: >- + Image content part for OpenAI-compatible chat completion messages. + + + :param type: Must be "image_url" to identify this as image content + + :param image_url: Image URL specification and processing details properties: - reasoning_tokens: - type: integer - description: >- - Number of tokens used for reasoning (o1/o3 models) - additionalProperties: false + type: + const: image_url + default: image_url + title: Type + type: string + image_url: + $ref: '#/$defs/OpenAIImageURL' + required: + - image_url title: >- - OpenAIChatCompletionUsageCompletionTokensDetails + OpenAIChatCompletionContentPartImageParam + type: object + OpenAIChatCompletionContentPartTextParam: + description: >- + Text content part for OpenAI-compatible chat completion messages. + + + :param type: Must be "text" to identify this as text content + + :param text: The text content of the message + properties: + type: + const: text + default: text + title: Type + type: string + text: + title: Text + type: string + required: + - text + title: OpenAIChatCompletionContentPartTextParam + type: object + OpenAIChatCompletionToolCall: + description: >- + Tool call specification for OpenAI-compatible chat completion responses. + + + :param index: (Optional) Index of the tool call in the list + + :param id: (Optional) Unique identifier for the tool call + + :param type: Must be "function" to identify this as a function call + + :param function: (Optional) Function call details + properties: + index: + anyOf: + - type: integer + - type: 'null' + title: Index + id: + anyOf: + - type: string + - type: 'null' + title: Id + type: + const: function + default: function + title: Type + type: string + function: + anyOf: + - $ref: >- + #/$defs/OpenAIChatCompletionToolCallFunction + - type: 'null' + title: OpenAIChatCompletionToolCall + type: object + OpenAIChatCompletionToolCallFunction: + description: >- + Function call details for OpenAI-compatible tool calls. + + + :param name: (Optional) Name of the function to call + + :param arguments: (Optional) Arguments to pass to the function as a JSON + string + properties: + name: + anyOf: + - type: string + - type: 'null' + title: Name + arguments: + anyOf: + - type: string + - type: 'null' + title: Arguments + title: OpenAIChatCompletionToolCallFunction + type: object + OpenAIChatCompletionUsage: + description: >- + Usage information for OpenAI chat completion. + + + :param prompt_tokens: Number of tokens in the prompt + + :param completion_tokens: Number of tokens in the completion + + :param total_tokens: Total tokens used (prompt + completion) + + :param input_tokens_details: Detailed breakdown of input token usage + + :param output_tokens_details: Detailed breakdown of output token usage + properties: + prompt_tokens: + title: Prompt Tokens + type: integer + completion_tokens: + title: Completion Tokens + type: integer + total_tokens: + title: Total Tokens + type: integer + prompt_tokens_details: + anyOf: + - $ref: >- + #/$defs/OpenAIChatCompletionUsagePromptTokensDetails + - type: 'null' + completion_tokens_details: + anyOf: + - $ref: >- + #/$defs/OpenAIChatCompletionUsageCompletionTokensDetails + - type: 'null' + required: + - prompt_tokens + - completion_tokens + - total_tokens + title: OpenAIChatCompletionUsage + type: object + "OpenAIChatCompletionUsageCompletionTokensDetails": description: >- Token details for output tokens in OpenAI chat completion usage. - additionalProperties: false - required: - - prompt_tokens - - completion_tokens - - total_tokens - title: OpenAIChatCompletionUsage - description: >- - Usage information for OpenAI chat completion. - OpenAIChoice: - type: object - properties: - message: - oneOf: - - $ref: '#/components/schemas/OpenAIUserMessageParam' - - $ref: '#/components/schemas/OpenAISystemMessageParam' - - $ref: '#/components/schemas/OpenAIAssistantMessageParam' - - $ref: '#/components/schemas/OpenAIToolMessageParam' - - $ref: '#/components/schemas/OpenAIDeveloperMessageParam' - discriminator: - propertyName: role - mapping: - user: '#/components/schemas/OpenAIUserMessageParam' - system: '#/components/schemas/OpenAISystemMessageParam' - assistant: '#/components/schemas/OpenAIAssistantMessageParam' - tool: '#/components/schemas/OpenAIToolMessageParam' - developer: '#/components/schemas/OpenAIDeveloperMessageParam' - description: The message from the model - finish_reason: - type: string - description: The reason the model stopped generating - index: - type: integer - description: The index of the choice - logprobs: - $ref: '#/components/schemas/OpenAIChoiceLogprobs' - description: >- - (Optional) The log probabilities for the tokens in the message - additionalProperties: false - required: - - message - - finish_reason - - index - title: OpenAIChoice - description: >- - A choice from an OpenAI-compatible chat completion response. - OpenAIChoiceLogprobs: - type: object - properties: - content: - type: array - items: - $ref: '#/components/schemas/OpenAITokenLogProb' - description: >- - (Optional) The log probabilities for the tokens in the message - refusal: - type: array - items: - $ref: '#/components/schemas/OpenAITokenLogProb' - description: >- - (Optional) The log probabilities for the tokens in the message - additionalProperties: false - title: OpenAIChoiceLogprobs - description: >- - The log probabilities for the tokens in the message from an OpenAI-compatible - chat completion response. - OpenAIDeveloperMessageParam: - type: object - properties: - role: - type: string - const: developer - default: developer - description: >- - Must be "developer" to identify this as a developer message - content: - oneOf: - - type: string - - type: array - items: - $ref: '#/components/schemas/OpenAIChatCompletionContentPartTextParam' - description: The content of the developer message - name: - type: string - description: >- - (Optional) The name of the developer message participant. - additionalProperties: false - required: - - role - - content - title: OpenAIDeveloperMessageParam - description: >- - A message from the developer in an OpenAI-compatible chat completion request. - OpenAIFile: - type: object - properties: - type: - type: string - const: file - default: file - file: - $ref: '#/components/schemas/OpenAIFileFile' - additionalProperties: false - required: - - type - - file - title: OpenAIFile - OpenAIFileFile: - type: object - properties: - file_data: - type: string - file_id: - type: string - filename: - type: string - additionalProperties: false - title: OpenAIFileFile - OpenAIImageURL: - type: object - properties: - url: - type: string - description: >- - URL of the image to include in the message - detail: - type: string - description: >- - (Optional) Level of detail for image processing. Can be "low", "high", - or "auto" - additionalProperties: false - required: - - url - title: OpenAIImageURL - description: >- - Image URL specification for OpenAI-compatible chat completion messages. - OpenAIMessageParam: - oneOf: - - $ref: '#/components/schemas/OpenAIUserMessageParam' - - $ref: '#/components/schemas/OpenAISystemMessageParam' - - $ref: '#/components/schemas/OpenAIAssistantMessageParam' - - $ref: '#/components/schemas/OpenAIToolMessageParam' - - $ref: '#/components/schemas/OpenAIDeveloperMessageParam' - discriminator: - propertyName: role - mapping: - user: '#/components/schemas/OpenAIUserMessageParam' - system: '#/components/schemas/OpenAISystemMessageParam' - assistant: '#/components/schemas/OpenAIAssistantMessageParam' - tool: '#/components/schemas/OpenAIToolMessageParam' - developer: '#/components/schemas/OpenAIDeveloperMessageParam' - OpenAISystemMessageParam: - type: object - properties: - role: - type: string - const: system - default: system - description: >- - Must be "system" to identify this as a system message - content: - oneOf: - - type: string - - type: array - items: - $ref: '#/components/schemas/OpenAIChatCompletionContentPartTextParam' - description: >- - The content of the "system prompt". If multiple system messages are provided, - they are concatenated. The underlying Llama Stack code may also add other - system messages (for example, for formatting tool definitions). - name: - type: string - description: >- - (Optional) The name of the system message participant. - additionalProperties: false - required: - - role - - content - title: OpenAISystemMessageParam - description: >- - A system message providing instructions or context to the model. - OpenAITokenLogProb: - type: object - properties: - token: - type: string - bytes: - type: array - items: - type: integer - logprob: - type: number - top_logprobs: - type: array - items: - $ref: '#/components/schemas/OpenAITopLogProb' - additionalProperties: false - required: - - token - - logprob - - top_logprobs - title: OpenAITokenLogProb - description: >- - The log probability for a token from an OpenAI-compatible chat completion - response. - OpenAIToolMessageParam: - type: object - properties: - role: - type: string - const: tool - default: tool - description: >- - Must be "tool" to identify this as a tool response - tool_call_id: - type: string - description: >- - Unique identifier for the tool call this response is for - content: - oneOf: - - type: string - - type: array - items: - $ref: '#/components/schemas/OpenAIChatCompletionContentPartTextParam' - description: The response content from the tool - additionalProperties: false - required: - - role - - tool_call_id - - content - title: OpenAIToolMessageParam - description: >- - A message representing the result of a tool invocation in an OpenAI-compatible - chat completion request. - OpenAITopLogProb: - type: object - properties: - token: - type: string - bytes: - type: array - items: - type: integer - logprob: - type: number - additionalProperties: false - required: - - token - - logprob - title: OpenAITopLogProb - description: >- - The top log probability for a token from an OpenAI-compatible chat completion - response. - OpenAIUserMessageParam: - type: object - properties: - role: - type: string - const: user - default: user - description: >- - Must be "user" to identify this as a user message - content: - oneOf: - - type: string - - type: array - items: - $ref: '#/components/schemas/OpenAIChatCompletionContentPartParam' - description: >- - The content of the message, which can include text and other media - name: - type: string - description: >- - (Optional) The name of the user message participant. - additionalProperties: false - required: - - role - - content - title: OpenAIUserMessageParam - description: >- - A message from the user in an OpenAI-compatible chat completion request. - OpenAIJSONSchema: - type: object - properties: - name: - type: string - description: Name of the schema - description: - type: string - description: (Optional) Description of the schema - strict: - type: boolean - description: >- - (Optional) Whether to enforce strict adherence to the schema - schema: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: (Optional) The JSON schema definition - additionalProperties: false - required: - - name - title: OpenAIJSONSchema - description: >- - JSON schema specification for OpenAI-compatible structured response format. - OpenAIResponseFormatJSONObject: - type: object - properties: - type: - type: string - const: json_object - default: json_object - description: >- - Must be "json_object" to indicate generic JSON object response format - additionalProperties: false - required: - - type - title: OpenAIResponseFormatJSONObject - description: >- - JSON object response format for OpenAI-compatible chat completion requests. - OpenAIResponseFormatJSONSchema: - type: object - properties: - type: - type: string - const: json_schema - default: json_schema - description: >- - Must be "json_schema" to indicate structured JSON response format - json_schema: - $ref: '#/components/schemas/OpenAIJSONSchema' - description: >- - The JSON schema specification for the response - additionalProperties: false - required: - - type - - json_schema - title: OpenAIResponseFormatJSONSchema - description: >- - JSON schema response format for OpenAI-compatible chat completion requests. - OpenAIResponseFormatParam: - oneOf: - - $ref: '#/components/schemas/OpenAIResponseFormatText' - - $ref: '#/components/schemas/OpenAIResponseFormatJSONSchema' - - $ref: '#/components/schemas/OpenAIResponseFormatJSONObject' - discriminator: - propertyName: type - mapping: - text: '#/components/schemas/OpenAIResponseFormatText' - json_schema: '#/components/schemas/OpenAIResponseFormatJSONSchema' - json_object: '#/components/schemas/OpenAIResponseFormatJSONObject' - OpenAIResponseFormatText: - type: object - properties: - type: - type: string - const: text - default: text - description: >- - Must be "text" to indicate plain text response format - additionalProperties: false - required: - - type - title: OpenAIResponseFormatText - description: >- - Text response format for OpenAI-compatible chat completion requests. - OpenAIChatCompletionRequestWithExtraBody: - type: object - properties: - model: - type: string - description: >- - The identifier of the model to use. The model must be registered with - Llama Stack and available via the /models endpoint. - messages: - type: array - items: - $ref: '#/components/schemas/OpenAIMessageParam' - description: List of messages in the conversation. - frequency_penalty: - type: number - description: >- - (Optional) The penalty for repeated tokens. - function_call: - oneOf: - - type: string - - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: (Optional) The function call to use. - functions: - type: array - items: - type: object - additionalProperties: - oneOf: + + + :param reasoning_tokens: Number of tokens used for reasoning (o1/o3 models) + properties: + reasoning_tokens: + anyOf: + - type: integer - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: (Optional) List of functions to use. - logit_bias: + title: Reasoning Tokens + title: >- + OpenAIChatCompletionUsageCompletionTokensDetails type: object - additionalProperties: - type: number - description: (Optional) The logit bias to use. - logprobs: - type: boolean - description: (Optional) The log probabilities to use. - max_completion_tokens: - type: integer + "OpenAIChatCompletionUsagePromptTokensDetails": description: >- - (Optional) The maximum number of tokens to generate. - max_tokens: - type: integer - description: >- - (Optional) The maximum number of tokens to generate. - n: - type: integer - description: >- - (Optional) The number of completions to generate. - parallel_tool_calls: - type: boolean - description: >- - (Optional) Whether to parallelize tool calls. - presence_penalty: - type: number - description: >- - (Optional) The penalty for repeated tokens. - response_format: - $ref: '#/components/schemas/OpenAIResponseFormatParam' - description: (Optional) The response format to use. - seed: - type: integer - description: (Optional) The seed to use. - stop: - oneOf: - - type: string - - type: array - items: - type: string - description: (Optional) The stop tokens to use. - stream: - type: boolean - description: >- - (Optional) Whether to stream the response. - stream_options: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: (Optional) The stream options to use. - temperature: - type: number - description: (Optional) The temperature to use. - tool_choice: - oneOf: - - type: string - - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: (Optional) The tool choice to use. - tools: - type: array - items: - type: object - additionalProperties: - oneOf: + Token details for prompt tokens in OpenAI chat completion usage. + + + :param cached_tokens: Number of tokens retrieved from cache + properties: + cached_tokens: + anyOf: + - type: integer - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: (Optional) The tools to use. - top_logprobs: - type: integer + title: Cached Tokens + title: >- + OpenAIChatCompletionUsagePromptTokensDetails + type: object + OpenAIChoice: description: >- - (Optional) The top log probabilities to use. - top_p: - type: number - description: (Optional) The top p to use. - user: - type: string - description: (Optional) The user to use. - additionalProperties: false - required: - - model - - messages - title: OpenAIChatCompletionRequestWithExtraBody - description: >- - Request parameters for OpenAI-compatible chat completion endpoint. - OpenAIChatCompletion: - type: object + A choice from an OpenAI-compatible chat completion response. + + + :param message: The message from the model + + :param finish_reason: The reason the model stopped generating + + :param index: The index of the choice + + :param logprobs: (Optional) The log probabilities for the tokens in the + message + properties: + message: + discriminator: + mapping: + assistant: '#/$defs/OpenAIAssistantMessageParam' + developer: '#/$defs/OpenAIDeveloperMessageParam' + system: '#/$defs/OpenAISystemMessageParam' + tool: '#/$defs/OpenAIToolMessageParam' + user: '#/$defs/OpenAIUserMessageParam' + propertyName: role + oneOf: + - $ref: '#/$defs/OpenAIUserMessageParam' + - $ref: '#/$defs/OpenAISystemMessageParam' + - $ref: '#/$defs/OpenAIAssistantMessageParam' + - $ref: '#/$defs/OpenAIToolMessageParam' + - $ref: '#/$defs/OpenAIDeveloperMessageParam' + title: Message + finish_reason: + title: Finish Reason + type: string + index: + title: Index + type: integer + logprobs: + anyOf: + - $ref: '#/$defs/OpenAIChoiceLogprobs' + - type: 'null' + required: + - message + - finish_reason + - index + title: OpenAIChoice + type: object + OpenAIChoiceLogprobs: + description: >- + The log probabilities for the tokens in the message from an OpenAI-compatible + chat completion response. + + + :param content: (Optional) The log probabilities for the tokens in the + message + + :param refusal: (Optional) The log probabilities for the tokens in the + message + properties: + content: + anyOf: + - items: + $ref: '#/$defs/OpenAITokenLogProb' + type: array + - type: 'null' + title: Content + refusal: + anyOf: + - items: + $ref: '#/$defs/OpenAITokenLogProb' + type: array + - type: 'null' + title: Refusal + title: OpenAIChoiceLogprobs + type: object + OpenAIDeveloperMessageParam: + description: >- + A message from the developer in an OpenAI-compatible chat completion request. + + + :param role: Must be "developer" to identify this as a developer message + + :param content: The content of the developer message + + :param name: (Optional) The name of the developer message participant. + properties: + role: + const: developer + default: developer + title: Role + type: string + content: + anyOf: + - type: string + - items: + $ref: >- + #/$defs/OpenAIChatCompletionContentPartTextParam + type: array + title: Content + name: + anyOf: + - type: string + - type: 'null' + title: Name + required: + - content + title: OpenAIDeveloperMessageParam + type: object + OpenAIFile: + properties: + type: + const: file + default: file + title: Type + type: string + file: + $ref: '#/$defs/OpenAIFileFile' + required: + - file + title: OpenAIFile + type: object + OpenAIFileFile: + properties: + file_data: + anyOf: + - type: string + - type: 'null' + title: File Data + file_id: + anyOf: + - type: string + - type: 'null' + title: File Id + filename: + anyOf: + - type: string + - type: 'null' + title: Filename + title: OpenAIFileFile + type: object + OpenAIImageURL: + description: >- + Image URL specification for OpenAI-compatible chat completion messages. + + + :param url: URL of the image to include in the message + + :param detail: (Optional) Level of detail for image processing. Can be + "low", "high", or "auto" + properties: + url: + title: Url + type: string + detail: + anyOf: + - type: string + - type: 'null' + title: Detail + required: + - url + title: OpenAIImageURL + type: object + OpenAISystemMessageParam: + description: >- + A system message providing instructions or context to the model. + + + :param role: Must be "system" to identify this as a system message + + :param content: The content of the "system prompt". If multiple system + messages are provided, they are concatenated. The underlying Llama Stack + code may also add other system messages (for example, for formatting tool + definitions). + + :param name: (Optional) The name of the system message participant. + properties: + role: + const: system + default: system + title: Role + type: string + content: + anyOf: + - type: string + - items: + $ref: >- + #/$defs/OpenAIChatCompletionContentPartTextParam + type: array + title: Content + name: + anyOf: + - type: string + - type: 'null' + title: Name + required: + - content + title: OpenAISystemMessageParam + type: object + OpenAITokenLogProb: + description: >- + The log probability for a token from an OpenAI-compatible chat completion + response. + + + :token: The token + + :bytes: (Optional) The bytes for the token + + :logprob: The log probability of the token + + :top_logprobs: The top log probabilities for the token + properties: + token: + title: Token + type: string + bytes: + anyOf: + - items: + type: integer + type: array + - type: 'null' + title: Bytes + logprob: + title: Logprob + type: number + top_logprobs: + items: + $ref: '#/$defs/OpenAITopLogProb' + title: Top Logprobs + type: array + required: + - token + - logprob + - top_logprobs + title: OpenAITokenLogProb + type: object + OpenAIToolMessageParam: + description: >- + A message representing the result of a tool invocation in an OpenAI-compatible + chat completion request. + + + :param role: Must be "tool" to identify this as a tool response + + :param tool_call_id: Unique identifier for the tool call this response + is for + + :param content: The response content from the tool + properties: + role: + const: tool + default: tool + title: Role + type: string + tool_call_id: + title: Tool Call Id + type: string + content: + anyOf: + - type: string + - items: + $ref: >- + #/$defs/OpenAIChatCompletionContentPartTextParam + type: array + title: Content + required: + - tool_call_id + - content + title: OpenAIToolMessageParam + type: object + OpenAITopLogProb: + description: >- + The top log probability for a token from an OpenAI-compatible chat completion + response. + + + :token: The token + + :bytes: (Optional) The bytes for the token + + :logprob: The log probability of the token + properties: + token: + title: Token + type: string + bytes: + anyOf: + - items: + type: integer + type: array + - type: 'null' + title: Bytes + logprob: + title: Logprob + type: number + required: + - token + - logprob + title: OpenAITopLogProb + type: object + OpenAIUserMessageParam: + description: >- + A message from the user in an OpenAI-compatible chat completion request. + + + :param role: Must be "user" to identify this as a user message + + :param content: The content of the message, which can include text and + other media + + :param name: (Optional) The name of the user message participant. + properties: + role: + const: user + default: user + title: Role + type: string + content: + anyOf: + - type: string + - items: + discriminator: + mapping: + file: '#/$defs/OpenAIFile' + image_url: >- + #/$defs/OpenAIChatCompletionContentPartImageParam + text: >- + #/$defs/OpenAIChatCompletionContentPartTextParam + propertyName: type + oneOf: + - $ref: >- + #/$defs/OpenAIChatCompletionContentPartTextParam + - $ref: >- + #/$defs/OpenAIChatCompletionContentPartImageParam + - $ref: '#/$defs/OpenAIFile' + type: array + title: Content + name: + anyOf: + - type: string + - type: 'null' + title: Name + required: + - content + title: OpenAIUserMessageParam + type: object properties: id: + title: Id type: string - description: The ID of the chat completion choices: - type: array items: - $ref: '#/components/schemas/OpenAIChoice' - description: List of choices + $ref: '#/$defs/OpenAIChoice' + title: Choices + type: array object: - type: string const: chat.completion default: chat.completion - description: >- - The object type, which will be "chat.completion" + title: Object + type: string created: + title: Created type: integer - description: >- - The Unix timestamp in seconds when the chat completion was created model: + title: Model type: string - description: >- - The model that was used to generate the chat completion usage: - $ref: '#/components/schemas/OpenAIChatCompletionUsage' - description: >- - Token usage information for the completion - additionalProperties: false - required: - - id - - choices - - object - - created - - model - title: OpenAIChatCompletion - description: >- - Response from an OpenAI-compatible chat completion request. - OpenAIChatCompletionChunk: - type: object - properties: - id: - type: string - description: The ID of the chat completion - choices: - type: array - items: - $ref: '#/components/schemas/OpenAIChunkChoice' - description: List of choices - object: - type: string - const: chat.completion.chunk - default: chat.completion.chunk - description: >- - The object type, which will be "chat.completion.chunk" - created: - type: integer - description: >- - The Unix timestamp in seconds when the chat completion was created - model: - type: string - description: >- - The model that was used to generate the chat completion - usage: - $ref: '#/components/schemas/OpenAIChatCompletionUsage' - description: >- - Token usage information (typically included in final chunk with stream_options) - additionalProperties: false - required: - - id - - choices - - object - - created - - model - title: OpenAIChatCompletionChunk - description: >- - Chunk from a streaming response to an OpenAI-compatible chat completion request. - OpenAIChoiceDelta: - type: object - properties: - content: - type: string - description: (Optional) The content of the delta - refusal: - type: string - description: (Optional) The refusal of the delta - role: - type: string - description: (Optional) The role of the delta - tool_calls: - type: array - items: - $ref: '#/components/schemas/OpenAIChatCompletionToolCall' - description: (Optional) The tool calls of the delta - reasoning_content: - type: string - description: >- - (Optional) The reasoning content from the model (non-standard, for o1/o3 - models) - additionalProperties: false - title: OpenAIChoiceDelta - description: >- - A delta from an OpenAI-compatible chat completion streaming response. - OpenAIChunkChoice: - type: object - properties: - delta: - $ref: '#/components/schemas/OpenAIChoiceDelta' - description: The delta from the chunk - finish_reason: - type: string - description: The reason the model stopped generating - index: - type: integer - description: The index of the choice - logprobs: - $ref: '#/components/schemas/OpenAIChoiceLogprobs' - description: >- - (Optional) The log probabilities for the tokens in the message - additionalProperties: false - required: - - delta - - finish_reason - - index - title: OpenAIChunkChoice - description: >- - A chunk choice from an OpenAI-compatible chat completion streaming response. - OpenAICompletionWithInputMessages: - type: object - properties: - id: - type: string - description: The ID of the chat completion - choices: - type: array - items: - $ref: '#/components/schemas/OpenAIChoice' - description: List of choices - object: - type: string - const: chat.completion - default: chat.completion - description: >- - The object type, which will be "chat.completion" - created: - type: integer - description: >- - The Unix timestamp in seconds when the chat completion was created - model: - type: string - description: >- - The model that was used to generate the chat completion - usage: - $ref: '#/components/schemas/OpenAIChatCompletionUsage' - description: >- - Token usage information for the completion + anyOf: + - $ref: '#/$defs/OpenAIChatCompletionUsage' + - type: 'null' input_messages: - type: array items: - $ref: '#/components/schemas/OpenAIMessageParam' - additionalProperties: false + discriminator: + mapping: + assistant: '#/$defs/OpenAIAssistantMessageParam' + developer: '#/$defs/OpenAIDeveloperMessageParam' + system: '#/$defs/OpenAISystemMessageParam' + tool: '#/$defs/OpenAIToolMessageParam' + user: '#/$defs/OpenAIUserMessageParam' + propertyName: role + oneOf: + - $ref: '#/$defs/OpenAIUserMessageParam' + - $ref: '#/$defs/OpenAISystemMessageParam' + - $ref: '#/$defs/OpenAIAssistantMessageParam' + - $ref: '#/$defs/OpenAIToolMessageParam' + - $ref: '#/$defs/OpenAIDeveloperMessageParam' + title: Input Messages + type: array required: - id - choices - - object - created - model - input_messages title: OpenAICompletionWithInputMessages - OpenAICompletionRequestWithExtraBody: type: object - properties: - model: - type: string - description: >- - The identifier of the model to use. The model must be registered with - Llama Stack and available via the /models endpoint. - prompt: - oneOf: - - type: string - - type: array - items: - type: string - - type: array - items: - type: integer - - type: array - items: - type: array - items: - type: integer - description: The prompt to generate a completion for. - best_of: - type: integer - description: >- - (Optional) The number of completions to generate. - echo: - type: boolean - description: (Optional) Whether to echo the prompt. - frequency_penalty: - type: number - description: >- - (Optional) The penalty for repeated tokens. - logit_bias: - type: object - additionalProperties: - type: number - description: (Optional) The logit bias to use. - logprobs: - type: boolean - description: (Optional) The log probabilities to use. - max_tokens: - type: integer - description: >- - (Optional) The maximum number of tokens to generate. - n: - type: integer - description: >- - (Optional) The number of completions to generate. - presence_penalty: - type: number - description: >- - (Optional) The penalty for repeated tokens. - seed: - type: integer - description: (Optional) The seed to use. - stop: - oneOf: - - type: string - - type: array - items: - type: string - description: (Optional) The stop tokens to use. - stream: - type: boolean - description: >- - (Optional) Whether to stream the response. - stream_options: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: (Optional) The stream options to use. - temperature: - type: number - description: (Optional) The temperature to use. - top_p: - type: number - description: (Optional) The top p to use. - user: - type: string - description: (Optional) The user to use. - suffix: - type: string - description: >- - (Optional) The suffix that should be appended to the completion. - additionalProperties: false - required: - - model - - prompt - title: OpenAICompletionRequestWithExtraBody - description: >- - Request parameters for OpenAI-compatible completion endpoint. OpenAICompletion: - type: object + $defs: + OpenAIChoiceLogprobs: + description: >- + The log probabilities for the tokens in the message from an OpenAI-compatible + chat completion response. + + + :param content: (Optional) The log probabilities for the tokens in the + message + + :param refusal: (Optional) The log probabilities for the tokens in the + message + properties: + content: + anyOf: + - items: + $ref: '#/$defs/OpenAITokenLogProb' + type: array + - type: 'null' + title: Content + refusal: + anyOf: + - items: + $ref: '#/$defs/OpenAITokenLogProb' + type: array + - type: 'null' + title: Refusal + title: OpenAIChoiceLogprobs + type: object + OpenAICompletionChoice: + description: >- + A choice from an OpenAI-compatible completion response. + + + :finish_reason: The reason the model stopped generating + + :text: The text of the choice + + :index: The index of the choice + + :logprobs: (Optional) The log probabilities for the tokens in the choice + properties: + finish_reason: + title: Finish Reason + type: string + text: + title: Text + type: string + index: + title: Index + type: integer + logprobs: + anyOf: + - $ref: '#/$defs/OpenAIChoiceLogprobs' + - type: 'null' + required: + - finish_reason + - text + - index + title: OpenAICompletionChoice + type: object + OpenAITokenLogProb: + description: >- + The log probability for a token from an OpenAI-compatible chat completion + response. + + + :token: The token + + :bytes: (Optional) The bytes for the token + + :logprob: The log probability of the token + + :top_logprobs: The top log probabilities for the token + properties: + token: + title: Token + type: string + bytes: + anyOf: + - items: + type: integer + type: array + - type: 'null' + title: Bytes + logprob: + title: Logprob + type: number + top_logprobs: + items: + $ref: '#/$defs/OpenAITopLogProb' + title: Top Logprobs + type: array + required: + - token + - logprob + - top_logprobs + title: OpenAITokenLogProb + type: object + OpenAITopLogProb: + description: >- + The top log probability for a token from an OpenAI-compatible chat completion + response. + + + :token: The token + + :bytes: (Optional) The bytes for the token + + :logprob: The log probability of the token + properties: + token: + title: Token + type: string + bytes: + anyOf: + - items: + type: integer + type: array + - type: 'null' + title: Bytes + logprob: + title: Logprob + type: number + required: + - token + - logprob + title: OpenAITopLogProb + type: object + description: >- + Response from an OpenAI-compatible completion request. + + + :id: The ID of the completion + + :choices: List of choices + + :created: The Unix timestamp in seconds when the completion was created + + :model: The model that was used to generate the completion + + :object: The object type, which will be "text_completion" properties: id: + title: Id type: string choices: - type: array items: - $ref: '#/components/schemas/OpenAICompletionChoice' + $ref: '#/$defs/OpenAICompletionChoice' + title: Choices + type: array created: + title: Created type: integer model: + title: Model type: string object: - type: string const: text_completion default: text_completion - additionalProperties: false + title: Object + type: string required: - id - choices - created - model - - object title: OpenAICompletion - description: >- - Response from an OpenAI-compatible completion request. - OpenAICompletionChoice: type: object properties: finish_reason: @@ -6361,334 +7435,1111 @@ components: Web search tool call output message for OpenAI responses. CreateConversationRequest: type: object - properties: - items: - type: array - items: - $ref: '#/components/schemas/ConversationItem' - description: >- - Initial items to include in the conversation context. - metadata: - type: object - additionalProperties: - type: string - description: >- - Set of key-value pairs that can be attached to an object. - additionalProperties: false - title: CreateConversationRequest Conversation: - type: object + description: OpenAI-compatible conversation object. properties: id: + description: The unique ID of the conversation. + title: Id type: string object: - type: string const: conversation default: conversation + description: >- + The object type, which is always conversation. + title: Object + type: string created_at: + description: >- + The time at which the conversation was created, measured in seconds since + the Unix epoch. + title: Created At type: integer metadata: - type: object - additionalProperties: - type: string + anyOf: + - additionalProperties: + type: string + type: object + - type: 'null' + description: >- + Set of 16 key-value pairs that can be attached to an object. This can + be useful for storing additional information about the object in a structured + format, and querying for objects via API or the dashboard. + title: Metadata items: - type: array - items: - type: object - title: dict - description: >- - dict() -> new empty dictionary dict(mapping) -> new dictionary initialized - from a mapping object's (key, value) pairs dict(iterable) -> new - dictionary initialized as if via: d = {} for k, v in iterable: d[k] - = v dict(**kwargs) -> new dictionary initialized with the name=value - pairs in the keyword argument list. For example: dict(one=1, two=2) - additionalProperties: false + anyOf: + - items: + additionalProperties: true + type: object + type: array + - type: 'null' + description: >- + Initial items to include in the conversation context. You may add up to + 20 items at a time. + title: Items required: - id - - object - created_at title: Conversation - description: OpenAI-compatible conversation object. + type: object UpdateConversationRequest: type: object - properties: - metadata: - type: object - additionalProperties: - type: string - description: >- - Set of key-value pairs that can be attached to an object. - additionalProperties: false - required: - - metadata - title: UpdateConversationRequest ConversationDeletedResource: - type: object - properties: - id: - type: string - object: - type: string - default: conversation.deleted - deleted: - type: boolean - default: true - additionalProperties: false - required: - - id - - object - - deleted - title: ConversationDeletedResource description: Response for deleted conversation. - ConversationItemList: - type: object - properties: - object: - type: string - default: list - data: - type: array - items: - $ref: '#/components/schemas/ConversationItem' - first_id: - type: string - last_id: - type: string - has_more: - type: boolean - default: false - additionalProperties: false - required: - - object - - data - - has_more - title: ConversationItemList - description: >- - List of conversation items with pagination. - AddItemsRequest: - type: object - properties: - items: - type: array - items: - $ref: '#/components/schemas/ConversationItem' - description: >- - Items to include in the conversation context. - additionalProperties: false - required: - - items - title: AddItemsRequest - ConversationItemDeletedResource: - type: object properties: id: + description: The deleted conversation identifier + title: Id type: string object: + default: conversation.deleted + description: Object type + title: Object type: string - default: conversation.item.deleted deleted: - type: boolean default: true - additionalProperties: false + description: Whether the object was deleted + title: Deleted + type: boolean required: - id - - object - - deleted - title: ConversationItemDeletedResource - description: Response for deleted conversation item. - OpenAIEmbeddingsRequestWithExtraBody: + title: ConversationDeletedResource type: object - properties: - model: - type: string + list: + type: object + Literal: + type: object + ConversationItemList: + $defs: + MCPListToolsTool: description: >- - The identifier of the model to use. The model must be an embedding model - registered with Llama Stack and available via the /models endpoint. - input: - oneOf: - - type: string - - type: array + Tool definition returned by MCP list tools operation. + + + :param input_schema: JSON schema defining the tool's input parameters + + :param name: Name of the tool + + :param description: (Optional) Description of what the tool does + properties: + input_schema: + additionalProperties: true + title: Input Schema + type: object + name: + title: Name + type: string + description: + anyOf: + - type: string + - type: 'null' + title: Description + required: + - input_schema + - name + title: MCPListToolsTool + type: object + OpenAIResponseAnnotationCitation: + description: >- + URL citation annotation for referencing external web resources. + + + :param type: Annotation type identifier, always "url_citation" + + :param end_index: End position of the citation span in the content + + :param start_index: Start position of the citation span in the content + + :param title: Title of the referenced web resource + + :param url: URL of the referenced web resource + properties: + type: + const: url_citation + default: url_citation + title: Type + type: string + end_index: + title: End Index + type: integer + start_index: + title: Start Index + type: integer + title: + title: Title + type: string + url: + title: Url + type: string + required: + - end_index + - start_index + - title + - url + title: OpenAIResponseAnnotationCitation + type: object + "OpenAIResponseAnnotationContainerFileCitation": + properties: + type: + const: container_file_citation + default: container_file_citation + title: Type + type: string + container_id: + title: Container Id + type: string + end_index: + title: End Index + type: integer + file_id: + title: File Id + type: string + filename: + title: Filename + type: string + start_index: + title: Start Index + type: integer + required: + - container_id + - end_index + - file_id + - filename + - start_index + title: >- + OpenAIResponseAnnotationContainerFileCitation + type: object + OpenAIResponseAnnotationFileCitation: + description: >- + File citation annotation for referencing specific files in response content. + + + :param type: Annotation type identifier, always "file_citation" + + :param file_id: Unique identifier of the referenced file + + :param filename: Name of the referenced file + + :param index: Position index of the citation within the content + properties: + type: + const: file_citation + default: file_citation + title: Type + type: string + file_id: + title: File Id + type: string + filename: + title: Filename + type: string + index: + title: Index + type: integer + required: + - file_id + - filename + - index + title: OpenAIResponseAnnotationFileCitation + type: object + OpenAIResponseAnnotationFilePath: + properties: + type: + const: file_path + default: file_path + title: Type + type: string + file_id: + title: File Id + type: string + index: + title: Index + type: integer + required: + - file_id + - index + title: OpenAIResponseAnnotationFilePath + type: object + OpenAIResponseContentPartRefusal: + description: >- + Refusal content within a streamed response part. + + + :param type: Content part type identifier, always "refusal" + + :param refusal: Refusal text supplied by the model + properties: + type: + const: refusal + default: refusal + title: Type + type: string + refusal: + title: Refusal + type: string + required: + - refusal + title: OpenAIResponseContentPartRefusal + type: object + "OpenAIResponseInputFunctionToolCallOutput": + description: >- + This represents the output of a function call that gets passed back to + the model. + properties: + call_id: + title: Call Id + type: string + output: + title: Output + type: string + type: + const: function_call_output + default: function_call_output + title: Type + type: string + id: + anyOf: + - type: string + - type: 'null' + title: Id + status: + anyOf: + - type: string + - type: 'null' + title: Status + required: + - call_id + - output + title: >- + OpenAIResponseInputFunctionToolCallOutput + type: object + OpenAIResponseInputMessageContentImage: + description: >- + Image content for input messages in OpenAI response format. + + + :param detail: Level of detail for image processing, can be "low", "high", + or "auto" + + :param type: Content type identifier, always "input_image" + + :param image_url: (Optional) URL of the image content + properties: + detail: + anyOf: + - const: low + type: string + - const: high + type: string + - const: auto + type: string + default: auto + title: Detail + type: + const: input_image + default: input_image + title: Type + type: string + image_url: + anyOf: + - type: string + - type: 'null' + title: Image Url + title: OpenAIResponseInputMessageContentImage + type: object + OpenAIResponseInputMessageContentText: + description: >- + Text content for input messages in OpenAI response format. + + + :param text: The text content of the input message + + :param type: Content type identifier, always "input_text" + properties: + text: + title: Text + type: string + type: + const: input_text + default: input_text + title: Type + type: string + required: + - text + title: OpenAIResponseInputMessageContentText + type: object + OpenAIResponseMCPApprovalRequest: + description: >- + A request for human approval of a tool invocation. + properties: + arguments: + title: Arguments + type: string + id: + title: Id + type: string + name: + title: Name + type: string + server_label: + title: Server Label + type: string + type: + const: mcp_approval_request + default: mcp_approval_request + title: Type + type: string + required: + - arguments + - id + - name + - server_label + title: OpenAIResponseMCPApprovalRequest + type: object + OpenAIResponseMCPApprovalResponse: + description: A response to an MCP approval request. + properties: + approval_request_id: + title: Approval Request Id + type: string + approve: + title: Approve + type: boolean + type: + const: mcp_approval_response + default: mcp_approval_response + title: Type + type: string + id: + anyOf: + - type: string + - type: 'null' + title: Id + reason: + anyOf: + - type: string + - type: 'null' + title: Reason + required: + - approval_request_id + - approve + title: OpenAIResponseMCPApprovalResponse + type: object + OpenAIResponseMessage: + description: >- + Corresponds to the various Message types in the Responses API. + + They are all under one type because the Responses API gives them all + + the same "type" value, and there is no way to tell them apart in certain + + scenarios. + properties: + content: + anyOf: + - type: string + - items: + discriminator: + mapping: + input_image: >- + #/$defs/OpenAIResponseInputMessageContentImage + input_text: >- + #/$defs/OpenAIResponseInputMessageContentText + propertyName: type + oneOf: + - $ref: >- + #/$defs/OpenAIResponseInputMessageContentText + - $ref: >- + #/$defs/OpenAIResponseInputMessageContentImage + type: array + - items: + discriminator: + mapping: + output_text: >- + #/$defs/OpenAIResponseOutputMessageContentOutputText + refusal: '#/$defs/OpenAIResponseContentPartRefusal' + propertyName: type + oneOf: + - $ref: >- + #/$defs/OpenAIResponseOutputMessageContentOutputText + - $ref: '#/$defs/OpenAIResponseContentPartRefusal' + type: array + title: Content + role: + anyOf: + - const: system + type: string + - const: developer + type: string + - const: user + type: string + - const: assistant + type: string + title: Role + type: + const: message + default: message + title: Type + type: string + id: + anyOf: + - type: string + - type: 'null' + title: Id + status: + anyOf: + - type: string + - type: 'null' + title: Status + required: + - content + - role + title: OpenAIResponseMessage + type: object + "OpenAIResponseOutputMessageContentOutputText": + properties: + text: + title: Text + type: string + type: + const: output_text + default: output_text + title: Type + type: string + annotations: + items: + discriminator: + mapping: + container_file_citation: >- + #/$defs/OpenAIResponseAnnotationContainerFileCitation + file_citation: >- + #/$defs/OpenAIResponseAnnotationFileCitation + file_path: '#/$defs/OpenAIResponseAnnotationFilePath' + url_citation: '#/$defs/OpenAIResponseAnnotationCitation' + propertyName: type + oneOf: + - $ref: >- + #/$defs/OpenAIResponseAnnotationFileCitation + - $ref: '#/$defs/OpenAIResponseAnnotationCitation' + - $ref: >- + #/$defs/OpenAIResponseAnnotationContainerFileCitation + - $ref: '#/$defs/OpenAIResponseAnnotationFilePath' + title: Annotations + type: array + required: + - text + title: >- + OpenAIResponseOutputMessageContentOutputText + type: object + "OpenAIResponseOutputMessageFileSearchToolCall": + description: >- + File search tool call output message for OpenAI responses. + + + :param id: Unique identifier for this tool call + + :param queries: List of search queries executed + + :param status: Current status of the file search operation + + :param type: Tool call type identifier, always "file_search_call" + + :param results: (Optional) Search results returned by the file search + operation + properties: + id: + title: Id + type: string + queries: items: type: string + title: Queries + type: array + status: + title: Status + type: string + type: + const: file_search_call + default: file_search_call + title: Type + type: string + results: + anyOf: + - items: + $ref: >- + #/$defs/OpenAIResponseOutputMessageFileSearchToolCallResults + type: array + - type: 'null' + title: Results + required: + - id + - queries + - status + title: >- + OpenAIResponseOutputMessageFileSearchToolCall + type: object + "OpenAIResponseOutputMessageFileSearchToolCallResults": description: >- - Input text to embed, encoded as a string or array of strings. To embed - multiple inputs in a single request, pass an array of strings. - encoding_format: - type: string - default: float + Search results returned by the file search operation. + + + :param attributes: (Optional) Key-value attributes associated with the + file + + :param file_id: Unique identifier of the file containing the result + + :param filename: Name of the file containing the result + + :param score: Relevance score for this search result (between 0 and 1) + + :param text: Text content of the search result + properties: + attributes: + additionalProperties: true + title: Attributes + type: object + file_id: + title: File Id + type: string + filename: + title: Filename + type: string + score: + title: Score + type: number + text: + title: Text + type: string + required: + - attributes + - file_id + - filename + - score + - text + title: >- + OpenAIResponseOutputMessageFileSearchToolCallResults + type: object + "OpenAIResponseOutputMessageFunctionToolCall": description: >- - (Optional) The format to return the embeddings in. Can be either "float" - or "base64". Defaults to "float". - dimensions: - type: integer + Function tool call output message for OpenAI responses. + + + :param call_id: Unique identifier for the function call + + :param name: Name of the function being called + + :param arguments: JSON string containing the function arguments + + :param type: Tool call type identifier, always "function_call" + + :param id: (Optional) Additional identifier for the tool call + + :param status: (Optional) Current status of the function call execution + properties: + call_id: + title: Call Id + type: string + name: + title: Name + type: string + arguments: + title: Arguments + type: string + type: + const: function_call + default: function_call + title: Type + type: string + id: + anyOf: + - type: string + - type: 'null' + title: Id + status: + anyOf: + - type: string + - type: 'null' + title: Status + required: + - call_id + - name + - arguments + title: >- + OpenAIResponseOutputMessageFunctionToolCall + type: object + OpenAIResponseOutputMessageMCPCall: description: >- - (Optional) The number of dimensions the resulting output embeddings should - have. Only supported in text-embedding-3 and later models. - user: - type: string + Model Context Protocol (MCP) call output message for OpenAI responses. + + + :param id: Unique identifier for this MCP call + + :param type: Tool call type identifier, always "mcp_call" + + :param arguments: JSON string containing the MCP call arguments + + :param name: Name of the MCP method being called + + :param server_label: Label identifying the MCP server handling the call + + :param error: (Optional) Error message if the MCP call failed + + :param output: (Optional) Output result from the successful MCP call + properties: + id: + title: Id + type: string + type: + const: mcp_call + default: mcp_call + title: Type + type: string + arguments: + title: Arguments + type: string + name: + title: Name + type: string + server_label: + title: Server Label + type: string + error: + anyOf: + - type: string + - type: 'null' + title: Error + output: + anyOf: + - type: string + - type: 'null' + title: Output + required: + - id + - arguments + - name + - server_label + title: OpenAIResponseOutputMessageMCPCall + type: object + OpenAIResponseOutputMessageMCPListTools: description: >- - (Optional) A unique identifier representing your end-user, which can help - OpenAI to monitor and detect abuse. - additionalProperties: false - required: - - model - - input - title: OpenAIEmbeddingsRequestWithExtraBody - description: >- - Request parameters for OpenAI-compatible embeddings endpoint. - OpenAIEmbeddingData: - type: object - properties: - object: - type: string - const: embedding - default: embedding - description: >- - The object type, which will be "embedding" - embedding: - oneOf: - - type: array + MCP list tools output message containing available tools from an MCP server. + + + :param id: Unique identifier for this MCP list tools operation + + :param type: Tool call type identifier, always "mcp_list_tools" + + :param server_label: Label identifying the MCP server providing the tools + + :param tools: List of available tools provided by the MCP server + properties: + id: + title: Id + type: string + type: + const: mcp_list_tools + default: mcp_list_tools + title: Type + type: string + server_label: + title: Server Label + type: string + tools: items: - type: number - - type: string + $ref: '#/$defs/MCPListToolsTool' + title: Tools + type: array + required: + - id + - server_label + - tools + title: OpenAIResponseOutputMessageMCPListTools + type: object + "OpenAIResponseOutputMessageWebSearchToolCall": description: >- - The embedding vector as a list of floats (when encoding_format="float") - or as a base64-encoded string (when encoding_format="base64") - index: - type: integer - description: >- - The index of the embedding in the input list - additionalProperties: false - required: - - object - - embedding - - index - title: OpenAIEmbeddingData + Web search tool call output message for OpenAI responses. + + + :param id: Unique identifier for this tool call + + :param status: Current status of the web search operation + + :param type: Tool call type identifier, always "web_search_call" + properties: + id: + title: Id + type: string + status: + title: Status + type: string + type: + const: web_search_call + default: web_search_call + title: Type + type: string + required: + - id + - status + title: >- + OpenAIResponseOutputMessageWebSearchToolCall + type: object description: >- - A single embedding data object from an OpenAI-compatible embeddings response. - OpenAIEmbeddingUsage: - type: object - properties: - prompt_tokens: - type: integer - description: The number of tokens in the input - total_tokens: - type: integer - description: The total number of tokens used - additionalProperties: false - required: - - prompt_tokens - - total_tokens - title: OpenAIEmbeddingUsage - description: >- - Usage information for an OpenAI-compatible embeddings response. - OpenAIEmbeddingsResponse: - type: object + List of conversation items with pagination. properties: object: + default: list + description: Object type + title: Object type: string + data: + description: List of conversation items + items: + discriminator: + mapping: + file_search_call: >- + #/$defs/OpenAIResponseOutputMessageFileSearchToolCall + function_call: >- + #/$defs/OpenAIResponseOutputMessageFunctionToolCall + function_call_output: >- + #/$defs/OpenAIResponseInputFunctionToolCallOutput + mcp_approval_request: '#/$defs/OpenAIResponseMCPApprovalRequest' + mcp_approval_response: >- + #/$defs/OpenAIResponseMCPApprovalResponse + mcp_call: >- + #/$defs/OpenAIResponseOutputMessageMCPCall + mcp_list_tools: >- + #/$defs/OpenAIResponseOutputMessageMCPListTools + message: '#/$defs/OpenAIResponseMessage' + web_search_call: >- + #/$defs/OpenAIResponseOutputMessageWebSearchToolCall + propertyName: type + oneOf: + - $ref: '#/$defs/OpenAIResponseMessage' + - $ref: >- + #/$defs/OpenAIResponseOutputMessageWebSearchToolCall + - $ref: >- + #/$defs/OpenAIResponseOutputMessageFileSearchToolCall + - $ref: >- + #/$defs/OpenAIResponseOutputMessageFunctionToolCall + - $ref: >- + #/$defs/OpenAIResponseInputFunctionToolCallOutput + - $ref: '#/$defs/OpenAIResponseMCPApprovalRequest' + - $ref: >- + #/$defs/OpenAIResponseMCPApprovalResponse + - $ref: >- + #/$defs/OpenAIResponseOutputMessageMCPCall + - $ref: >- + #/$defs/OpenAIResponseOutputMessageMCPListTools + title: Data + type: array + first_id: + anyOf: + - type: string + - type: 'null' + description: The ID of the first item in the list + title: First Id + last_id: + anyOf: + - type: string + - type: 'null' + description: The ID of the last item in the list + title: Last Id + has_more: + default: false + description: Whether there are more items available + title: Has More + type: boolean + required: + - data + title: ConversationItemList + type: object + AddItemsRequest: + type: object + ConversationItemDeletedResource: + description: Response for deleted conversation item. + properties: + id: + description: The deleted item identifier + title: Id + type: string + object: + default: conversation.item.deleted + description: Object type + title: Object + type: string + deleted: + default: true + description: Whether the object was deleted + title: Deleted + type: boolean + required: + - id + title: ConversationItemDeletedResource + type: object + OpenAIEmbeddingsResponse: + $defs: + OpenAIEmbeddingData: + description: >- + A single embedding data object from an OpenAI-compatible embeddings response. + + + :param object: The object type, which will be "embedding" + + :param embedding: The embedding vector as a list of floats (when encoding_format="float") + or as a base64-encoded string (when encoding_format="base64") + + :param index: The index of the embedding in the input list + properties: + object: + const: embedding + default: embedding + title: Object + type: string + embedding: + anyOf: + - items: + type: number + type: array + - type: string + title: Embedding + index: + title: Index + type: integer + required: + - embedding + - index + title: OpenAIEmbeddingData + type: object + OpenAIEmbeddingUsage: + description: >- + Usage information for an OpenAI-compatible embeddings response. + + + :param prompt_tokens: The number of tokens in the input + + :param total_tokens: The total number of tokens used + properties: + prompt_tokens: + title: Prompt Tokens + type: integer + total_tokens: + title: Total Tokens + type: integer + required: + - prompt_tokens + - total_tokens + title: OpenAIEmbeddingUsage + type: object + description: >- + Response from an OpenAI-compatible embeddings request. + + + :param object: The object type, which will be "list" + + :param data: List of embedding data objects + + :param model: The model that was used to generate the embeddings + + :param usage: Usage information + properties: + object: const: list default: list - description: The object type, which will be "list" - data: - type: array - items: - $ref: '#/components/schemas/OpenAIEmbeddingData' - description: List of embedding data objects - model: + title: Object + type: string + data: + items: + $ref: '#/$defs/OpenAIEmbeddingData' + title: Data + type: array + model: + title: Model type: string - description: >- - The model that was used to generate the embeddings usage: - $ref: '#/components/schemas/OpenAIEmbeddingUsage' - description: Usage information - additionalProperties: false + $ref: '#/$defs/OpenAIEmbeddingUsage' required: - - object - data - model - usage title: OpenAIEmbeddingsResponse - description: >- - Response from an OpenAI-compatible embeddings request. - OpenAIFilePurpose: - type: string - enum: - - assistants - - batch - title: OpenAIFilePurpose - description: >- - Valid purpose values for OpenAI Files API. - ListOpenAIFileResponse: type: object + OpenAIFilePurpose: + type: object + ListOpenAIFileResponse: + $defs: + OpenAIFileObject: + description: >- + OpenAI File object as defined in the OpenAI Files API. + + + :param object: The object type, which is always "file" + + :param id: The file identifier, which can be referenced in the API endpoints + + :param bytes: The size of the file, in bytes + + :param created_at: The Unix timestamp (in seconds) for when the file was + created + + :param expires_at: The Unix timestamp (in seconds) for when the file expires + + :param filename: The name of the file + + :param purpose: The intended purpose of the file + properties: + object: + const: file + default: file + title: Object + type: string + id: + title: Id + type: string + bytes: + title: Bytes + type: integer + created_at: + title: Created At + type: integer + expires_at: + title: Expires At + type: integer + filename: + title: Filename + type: string + purpose: + $ref: '#/$defs/OpenAIFilePurpose' + required: + - id + - bytes + - created_at + - expires_at + - filename + - purpose + title: OpenAIFileObject + type: object + OpenAIFilePurpose: + description: >- + Valid purpose values for OpenAI Files API. + enum: + - assistants + - batch + title: OpenAIFilePurpose + type: string + description: >- + Response for listing files in OpenAI Files API. + + + :param data: List of file objects + + :param has_more: Whether there are more files available beyond this page + + :param first_id: ID of the first file in the list for pagination + + :param last_id: ID of the last file in the list for pagination + + :param object: The object type, which is always "list" properties: data: - type: array items: - $ref: '#/components/schemas/OpenAIFileObject' - description: List of file objects + $ref: '#/$defs/OpenAIFileObject' + title: Data + type: array has_more: + title: Has More type: boolean - description: >- - Whether there are more files available beyond this page first_id: + title: First Id type: string - description: >- - ID of the first file in the list for pagination last_id: + title: Last Id type: string - description: >- - ID of the last file in the list for pagination object: - type: string const: list default: list - description: The object type, which is always "list" - additionalProperties: false + title: Object + type: string required: - data - has_more - first_id - last_id - - object title: ListOpenAIFileResponse - description: >- - Response for listing files in OpenAI Files API. - OpenAIFileObject: type: object + ExpiresAfter: + description: >- + Control expiration of uploaded files. + + + Params: + - anchor, must be "created_at" + - seconds, must be int between 3600 and 2592000 (1 hour to 30 days) properties: - object: + anchor: + const: created_at + title: Anchor type: string - const: file - default: file - description: The object type, which is always "file" - id: - type: string - description: >- - The file identifier, which can be referenced in the API endpoints - bytes: - type: integer - description: The size of the file, in bytes - created_at: + seconds: + maximum: 2592000 + minimum: 3600 + title: Seconds type: integer + required: + - anchor + - seconds + title: ExpiresAfter + type: object + OpenAIFileObject: + $defs: + OpenAIFilePurpose: description: >- - The Unix timestamp (in seconds) for when the file was created - expires_at: - type: integer - description: >- - The Unix timestamp (in seconds) for when the file expires - filename: - type: string - description: The name of the file - purpose: - type: string + Valid purpose values for OpenAI Files API. enum: - assistants - batch - description: The intended purpose of the file - additionalProperties: false + title: OpenAIFilePurpose + type: string + description: >- + OpenAI File object as defined in the OpenAI Files API. + + + :param object: The object type, which is always "file" + + :param id: The file identifier, which can be referenced in the API endpoints + + :param bytes: The size of the file, in bytes + + :param created_at: The Unix timestamp (in seconds) for when the file was created + + :param expires_at: The Unix timestamp (in seconds) for when the file expires + + :param filename: The name of the file + + :param purpose: The intended purpose of the file + properties: + object: + const: file + default: file + title: Object + type: string + id: + title: Id + type: string + bytes: + title: Bytes + type: integer + created_at: + title: Created At + type: integer + expires_at: + title: Expires At + type: integer + filename: + title: Filename + type: string + purpose: + $ref: '#/$defs/OpenAIFilePurpose' required: - - object - id - bytes - created_at @@ -6696,103 +8547,99 @@ components: - filename - purpose title: OpenAIFileObject - description: >- - OpenAI File object as defined in the OpenAI Files API. - ExpiresAfter: type: object - properties: - anchor: - type: string - const: created_at - seconds: - type: integer - additionalProperties: false - required: - - anchor - - seconds - title: ExpiresAfter - description: >- - Control expiration of uploaded files. - - Params: - - anchor, must be "created_at" - - seconds, must be int between 3600 and 2592000 (1 hour to 30 days) OpenAIFileDeleteResponse: - type: object - properties: - id: - type: string - description: The file identifier that was deleted - object: - type: string - const: file - default: file - description: The object type, which is always "file" - deleted: - type: boolean - description: >- - Whether the file was successfully deleted - additionalProperties: false - required: - - id - - object - - deleted - title: OpenAIFileDeleteResponse description: >- Response for deleting a file in OpenAI Files API. + + + :param id: The file identifier that was deleted + + :param object: The object type, which is always "file" + + :param deleted: Whether the file was successfully deleted + properties: + id: + title: Id + type: string + object: + const: file + default: file + title: Object + type: string + deleted: + title: Deleted + type: boolean + required: + - id + - deleted + title: OpenAIFileDeleteResponse + type: object Response: type: object - title: Response HealthInfo: - type: object - properties: - status: - type: string + $defs: + HealthStatus: enum: - OK - Error - Not Implemented - description: Current health status of the service - additionalProperties: false + title: HealthStatus + type: string + description: >- + Health status information for the service. + + + :param status: Current health status of the service + properties: + status: + $ref: '#/$defs/HealthStatus' required: - status title: HealthInfo - description: >- - Health status information for the service. - RouteInfo: type: object - properties: - route: - type: string - description: The API endpoint path - method: - type: string - description: HTTP method for the route - provider_types: - type: array - items: - type: string - description: >- - List of provider types that implement this route - additionalProperties: false - required: - - route - - method - - provider_types - title: RouteInfo - description: >- - Information about an API route including its path, method, and implementing - providers. ListRoutesResponse: - type: object + $defs: + RouteInfo: + description: >- + Information about an API route including its path, method, and implementing + providers. + + + :param route: The API endpoint path + + :param method: HTTP method for the route + + :param provider_types: List of provider types that implement this route + properties: + route: + title: Route + type: string + method: + title: Method + type: string + provider_types: + items: + type: string + title: Provider Types + type: array + required: + - route + - method + - provider_types + title: RouteInfo + type: object + description: >- + Response containing a list of all available API routes. + + + :param data: List of available route information objects properties: data: - type: array items: - $ref: '#/components/schemas/RouteInfo' - description: >- - List of available route information objects - additionalProperties: false + $ref: '#/$defs/RouteInfo' + title: Data + type: array required: - data title: ListRoutesResponse @@ -6939,232 +8786,308 @@ components: A model resource representing an AI model registered in Llama Stack. RunModerationRequest: type: object - properties: - input: - oneOf: - - type: string - - type: array - items: - type: string - description: >- - Input (or inputs) to classify. Can be a single string, an array of strings, - or an array of multi-modal input objects similar to other models. - model: - type: string - description: >- - (Optional) The content moderation model you would like to use. - additionalProperties: false - required: - - input - title: RunModerationRequest ModerationObject: - type: object + $defs: + ModerationObjectResults: + description: >- + A moderation object. + + :param flagged: Whether any of the below categories are flagged. + + :param categories: A list of the categories, and whether they are flagged + or not. + + :param category_applied_input_types: A list of the categories along with + the input type(s) that the score applies to. + + :param category_scores: A list of the categories along with their scores + as predicted by model. + properties: + flagged: + title: Flagged + type: boolean + categories: + anyOf: + - additionalProperties: + type: boolean + type: object + - type: 'null' + title: Categories + category_applied_input_types: + anyOf: + - additionalProperties: + items: + type: string + type: array + type: object + - type: 'null' + title: Category Applied Input Types + category_scores: + anyOf: + - additionalProperties: + type: number + type: object + - type: 'null' + title: Category Scores + user_message: + anyOf: + - type: string + - type: 'null' + title: User Message + metadata: + additionalProperties: true + title: Metadata + type: object + required: + - flagged + title: ModerationObjectResults + type: object + description: >- + A moderation object. + + :param id: The unique identifier for the moderation request. + + :param model: The model used to generate the moderation results. + + :param results: A list of moderation objects properties: id: + title: Id type: string - description: >- - The unique identifier for the moderation request. model: + title: Model type: string - description: >- - The model used to generate the moderation results. results: - type: array items: - $ref: '#/components/schemas/ModerationObjectResults' - description: A list of moderation objects - additionalProperties: false + $ref: '#/$defs/ModerationObjectResults' + title: Results + type: array required: - id - model - results title: ModerationObject - description: A moderation object. - ModerationObjectResults: type: object - properties: - flagged: - type: boolean - description: >- - Whether any of the below categories are flagged. - categories: - type: object - additionalProperties: - type: boolean - description: >- - A list of the categories, and whether they are flagged or not. - category_applied_input_types: - type: object - additionalProperties: - type: array - items: - type: string - description: >- - A list of the categories along with the input type(s) that the score applies - to. - category_scores: - type: object - additionalProperties: - type: number - description: >- - A list of the categories along with their scores as predicted by model. - user_message: - type: string - metadata: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - additionalProperties: false - required: - - flagged - - metadata - title: ModerationObjectResults - description: A moderation object. - Prompt: - type: object - properties: - prompt: - type: string - description: >- - The system prompt text with variable placeholders. Variables are only - supported when using the Responses API. - version: - type: integer - description: >- - Version (integer starting at 1, incremented on save) - prompt_id: - type: string - description: >- - Unique identifier formatted as 'pmpt_<48-digit-hash>' - variables: - type: array - items: - type: string - description: >- - List of prompt variable names that can be used in the prompt template - is_default: - type: boolean - default: false - description: >- - Boolean indicating whether this version is the default version for this - prompt - additionalProperties: false - required: - - version - - prompt_id - - variables - - is_default - title: Prompt - description: >- - A prompt resource representing a stored OpenAI Compatible prompt template - in Llama Stack. ListPromptsResponse: - type: object + $defs: + Prompt: + description: >- + A prompt resource representing a stored OpenAI Compatible prompt template + in Llama Stack. + + + :param prompt: The system prompt text with variable placeholders. Variables + are only supported when using the Responses API. + + :param version: Version (integer starting at 1, incremented on save) + + :param prompt_id: Unique identifier formatted as 'pmpt_<48-digit-hash>' + + :param variables: List of prompt variable names that can be used in the + prompt template + + :param is_default: Boolean indicating whether this version is the default + version for this prompt + properties: + prompt: + anyOf: + - type: string + - type: 'null' + description: >- + The system prompt with variable placeholders + title: Prompt + version: + description: >- + Version (integer starting at 1, incremented on save) + minimum: 1 + title: Version + type: integer + prompt_id: + description: >- + Unique identifier in format 'pmpt_<48-digit-hash>' + title: Prompt Id + type: string + variables: + description: >- + List of variable names that can be used in the prompt template + items: + type: string + title: Variables + type: array + is_default: + default: false + description: >- + Boolean indicating whether this version is the default version + title: Is Default + type: boolean + required: + - version + - prompt_id + title: Prompt + type: object + description: Response model to list prompts. properties: data: - type: array items: - $ref: '#/components/schemas/Prompt' - additionalProperties: false + $ref: '#/$defs/Prompt' + title: Data + type: array required: - data title: ListPromptsResponse - description: Response model to list prompts. + type: object CreatePromptRequest: type: object + Prompt: + description: >- + A prompt resource representing a stored OpenAI Compatible prompt template + in Llama Stack. + + + :param prompt: The system prompt text with variable placeholders. Variables + are only supported when using the Responses API. + + :param version: Version (integer starting at 1, incremented on save) + + :param prompt_id: Unique identifier formatted as 'pmpt_<48-digit-hash>' + + :param variables: List of prompt variable names that can be used in the prompt + template + + :param is_default: Boolean indicating whether this version is the default + version for this prompt properties: prompt: - type: string + anyOf: + - type: string + - type: 'null' description: >- - The prompt text content with variable placeholders. + The system prompt with variable placeholders + title: Prompt + version: + description: >- + Version (integer starting at 1, incremented on save) + minimum: 1 + title: Version + type: integer + prompt_id: + description: >- + Unique identifier in format 'pmpt_<48-digit-hash>' + title: Prompt Id + type: string variables: - type: array + description: >- + List of variable names that can be used in the prompt template items: type: string + title: Variables + type: array + is_default: + default: false description: >- - List of variable names that can be used in the prompt template. - additionalProperties: false + Boolean indicating whether this version is the default version + title: Is Default + type: boolean required: - - prompt - title: CreatePromptRequest + - version + - prompt_id + title: Prompt + type: object UpdatePromptRequest: type: object - properties: - prompt: - type: string - description: The updated prompt text content. - version: - type: integer - description: >- - The current version of the prompt being updated. - variables: - type: array - items: - type: string - description: >- - Updated list of variable names that can be used in the prompt template. - set_as_default: - type: boolean - description: >- - Set the new version as the default (default=True). - additionalProperties: false - required: - - prompt - - version - - set_as_default - title: UpdatePromptRequest SetDefaultVersionRequest: type: object + ListProvidersResponse: + $defs: + ProviderInfo: + description: >- + Information about a registered provider including its configuration and + health status. + + + :param api: The API name this provider implements + + :param provider_id: Unique identifier for the provider + + :param provider_type: The type of provider implementation + + :param config: Configuration parameters for the provider + + :param health: Current health status of the provider + properties: + api: + title: Api + type: string + provider_id: + title: Provider Id + type: string + provider_type: + title: Provider Type + type: string + config: + additionalProperties: true + title: Config + type: object + health: + additionalProperties: true + title: Health + type: object + required: + - api + - provider_id + - provider_type + - config + - health + title: ProviderInfo + type: object + description: >- + Response containing a list of all available providers. + + + :param data: List of provider information objects properties: - version: - type: integer - description: The version to set as default. - additionalProperties: false + data: + items: + $ref: '#/$defs/ProviderInfo' + title: Data + type: array required: - - version - title: SetDefaultVersionRequest - ProviderInfo: + - data + title: ListProvidersResponse type: object + ProviderInfo: + description: >- + Information about a registered provider including its configuration and health + status. + + + :param api: The API name this provider implements + + :param provider_id: Unique identifier for the provider + + :param provider_type: The type of provider implementation + + :param config: Configuration parameters for the provider + + :param health: Current health status of the provider properties: api: + title: Api type: string - description: The API name this provider implements provider_id: + title: Provider Id type: string - description: Unique identifier for the provider provider_type: + title: Provider Type type: string - description: The type of provider implementation config: + additionalProperties: true + title: Config type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - Configuration parameters for the provider health: + additionalProperties: true + title: Health type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: Current health status of the provider - additionalProperties: false required: - api - provider_id @@ -7172,59 +9095,1233 @@ components: - config - health title: ProviderInfo - description: >- - Information about a registered provider including its configuration and health - status. - ListProvidersResponse: type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/ProviderInfo' - description: List of provider information objects - additionalProperties: false - required: - - data - title: ListProvidersResponse - description: >- - Response containing a list of all available providers. ListOpenAIResponseObject: - type: object + $defs: + AllowedToolsFilter: + description: >- + Filter configuration for restricting which MCP tools can be used. + + + :param tool_names: (Optional) List of specific tool names that are allowed + properties: + tool_names: + anyOf: + - items: + type: string + type: array + - type: 'null' + title: Tool Names + title: AllowedToolsFilter + type: object + MCPListToolsTool: + description: >- + Tool definition returned by MCP list tools operation. + + + :param input_schema: JSON schema defining the tool's input parameters + + :param name: Name of the tool + + :param description: (Optional) Description of what the tool does + properties: + input_schema: + additionalProperties: true + title: Input Schema + type: object + name: + title: Name + type: string + description: + anyOf: + - type: string + - type: 'null' + title: Description + required: + - input_schema + - name + title: MCPListToolsTool + type: object + OpenAIResponseAnnotationCitation: + description: >- + URL citation annotation for referencing external web resources. + + + :param type: Annotation type identifier, always "url_citation" + + :param end_index: End position of the citation span in the content + + :param start_index: Start position of the citation span in the content + + :param title: Title of the referenced web resource + + :param url: URL of the referenced web resource + properties: + type: + const: url_citation + default: url_citation + title: Type + type: string + end_index: + title: End Index + type: integer + start_index: + title: Start Index + type: integer + title: + title: Title + type: string + url: + title: Url + type: string + required: + - end_index + - start_index + - title + - url + title: OpenAIResponseAnnotationCitation + type: object + "OpenAIResponseAnnotationContainerFileCitation": + properties: + type: + const: container_file_citation + default: container_file_citation + title: Type + type: string + container_id: + title: Container Id + type: string + end_index: + title: End Index + type: integer + file_id: + title: File Id + type: string + filename: + title: Filename + type: string + start_index: + title: Start Index + type: integer + required: + - container_id + - end_index + - file_id + - filename + - start_index + title: >- + OpenAIResponseAnnotationContainerFileCitation + type: object + OpenAIResponseAnnotationFileCitation: + description: >- + File citation annotation for referencing specific files in response content. + + + :param type: Annotation type identifier, always "file_citation" + + :param file_id: Unique identifier of the referenced file + + :param filename: Name of the referenced file + + :param index: Position index of the citation within the content + properties: + type: + const: file_citation + default: file_citation + title: Type + type: string + file_id: + title: File Id + type: string + filename: + title: Filename + type: string + index: + title: Index + type: integer + required: + - file_id + - filename + - index + title: OpenAIResponseAnnotationFileCitation + type: object + OpenAIResponseAnnotationFilePath: + properties: + type: + const: file_path + default: file_path + title: Type + type: string + file_id: + title: File Id + type: string + index: + title: Index + type: integer + required: + - file_id + - index + title: OpenAIResponseAnnotationFilePath + type: object + OpenAIResponseContentPartRefusal: + description: >- + Refusal content within a streamed response part. + + + :param type: Content part type identifier, always "refusal" + + :param refusal: Refusal text supplied by the model + properties: + type: + const: refusal + default: refusal + title: Type + type: string + refusal: + title: Refusal + type: string + required: + - refusal + title: OpenAIResponseContentPartRefusal + type: object + OpenAIResponseError: + description: >- + Error details for failed OpenAI response requests. + + + :param code: Error code identifying the type of failure + + :param message: Human-readable error message describing the failure + properties: + code: + title: Code + type: string + message: + title: Message + type: string + required: + - code + - message + title: OpenAIResponseError + type: object + "OpenAIResponseInputFunctionToolCallOutput": + description: >- + This represents the output of a function call that gets passed back to + the model. + properties: + call_id: + title: Call Id + type: string + output: + title: Output + type: string + type: + const: function_call_output + default: function_call_output + title: Type + type: string + id: + anyOf: + - type: string + - type: 'null' + title: Id + status: + anyOf: + - type: string + - type: 'null' + title: Status + required: + - call_id + - output + title: >- + OpenAIResponseInputFunctionToolCallOutput + type: object + OpenAIResponseInputMessageContentImage: + description: >- + Image content for input messages in OpenAI response format. + + + :param detail: Level of detail for image processing, can be "low", "high", + or "auto" + + :param type: Content type identifier, always "input_image" + + :param image_url: (Optional) URL of the image content + properties: + detail: + anyOf: + - const: low + type: string + - const: high + type: string + - const: auto + type: string + default: auto + title: Detail + type: + const: input_image + default: input_image + title: Type + type: string + image_url: + anyOf: + - type: string + - type: 'null' + title: Image Url + title: OpenAIResponseInputMessageContentImage + type: object + OpenAIResponseInputMessageContentText: + description: >- + Text content for input messages in OpenAI response format. + + + :param text: The text content of the input message + + :param type: Content type identifier, always "input_text" + properties: + text: + title: Text + type: string + type: + const: input_text + default: input_text + title: Type + type: string + required: + - text + title: OpenAIResponseInputMessageContentText + type: object + OpenAIResponseInputToolFileSearch: + description: >- + File search tool configuration for OpenAI response inputs. + + + :param type: Tool type identifier, always "file_search" + + :param vector_store_ids: List of vector store identifiers to search within + + :param filters: (Optional) Additional filters to apply to the search + + :param max_num_results: (Optional) Maximum number of search results to + return (1-50) + + :param ranking_options: (Optional) Options for ranking and scoring search + results + properties: + type: + const: file_search + default: file_search + title: Type + type: string + vector_store_ids: + items: + type: string + title: Vector Store Ids + type: array + filters: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Filters + max_num_results: + anyOf: + - maximum: 50 + minimum: 1 + type: integer + - type: 'null' + default: 10 + title: Max Num Results + ranking_options: + anyOf: + - $ref: '#/$defs/SearchRankingOptions' + - type: 'null' + required: + - vector_store_ids + title: OpenAIResponseInputToolFileSearch + type: object + OpenAIResponseInputToolFunction: + description: >- + Function tool configuration for OpenAI response inputs. + + + :param type: Tool type identifier, always "function" + + :param name: Name of the function that can be called + + :param description: (Optional) Description of what the function does + + :param parameters: (Optional) JSON schema defining the function's parameters + + :param strict: (Optional) Whether to enforce strict parameter validation + properties: + type: + const: function + default: function + title: Type + type: string + name: + title: Name + type: string + description: + anyOf: + - type: string + - type: 'null' + title: Description + parameters: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Parameters + strict: + anyOf: + - type: boolean + - type: 'null' + title: Strict + required: + - name + - parameters + title: OpenAIResponseInputToolFunction + type: object + OpenAIResponseInputToolWebSearch: + description: >- + Web search tool configuration for OpenAI response inputs. + + + :param type: Web search tool type variant to use + + :param search_context_size: (Optional) Size of search context, must be + "low", "medium", or "high" + properties: + type: + anyOf: + - const: web_search + type: string + - const: web_search_preview + type: string + - const: web_search_preview_2025_03_11 + type: string + default: web_search + title: Type + search_context_size: + anyOf: + - pattern: ^low|medium|high$ + type: string + - type: 'null' + default: medium + title: Search Context Size + title: OpenAIResponseInputToolWebSearch + type: object + OpenAIResponseMCPApprovalRequest: + description: >- + A request for human approval of a tool invocation. + properties: + arguments: + title: Arguments + type: string + id: + title: Id + type: string + name: + title: Name + type: string + server_label: + title: Server Label + type: string + type: + const: mcp_approval_request + default: mcp_approval_request + title: Type + type: string + required: + - arguments + - id + - name + - server_label + title: OpenAIResponseMCPApprovalRequest + type: object + OpenAIResponseMCPApprovalResponse: + description: A response to an MCP approval request. + properties: + approval_request_id: + title: Approval Request Id + type: string + approve: + title: Approve + type: boolean + type: + const: mcp_approval_response + default: mcp_approval_response + title: Type + type: string + id: + anyOf: + - type: string + - type: 'null' + title: Id + reason: + anyOf: + - type: string + - type: 'null' + title: Reason + required: + - approval_request_id + - approve + title: OpenAIResponseMCPApprovalResponse + type: object + OpenAIResponseMessage: + description: >- + Corresponds to the various Message types in the Responses API. + + They are all under one type because the Responses API gives them all + + the same "type" value, and there is no way to tell them apart in certain + + scenarios. + properties: + content: + anyOf: + - type: string + - items: + discriminator: + mapping: + input_image: >- + #/$defs/OpenAIResponseInputMessageContentImage + input_text: >- + #/$defs/OpenAIResponseInputMessageContentText + propertyName: type + oneOf: + - $ref: >- + #/$defs/OpenAIResponseInputMessageContentText + - $ref: >- + #/$defs/OpenAIResponseInputMessageContentImage + type: array + - items: + discriminator: + mapping: + output_text: >- + #/$defs/OpenAIResponseOutputMessageContentOutputText + refusal: '#/$defs/OpenAIResponseContentPartRefusal' + propertyName: type + oneOf: + - $ref: >- + #/$defs/OpenAIResponseOutputMessageContentOutputText + - $ref: '#/$defs/OpenAIResponseContentPartRefusal' + type: array + title: Content + role: + anyOf: + - const: system + type: string + - const: developer + type: string + - const: user + type: string + - const: assistant + type: string + title: Role + type: + const: message + default: message + title: Type + type: string + id: + anyOf: + - type: string + - type: 'null' + title: Id + status: + anyOf: + - type: string + - type: 'null' + title: Status + required: + - content + - role + title: OpenAIResponseMessage + type: object + OpenAIResponseObjectWithInput: + description: >- + OpenAI response object extended with input context information. + + + :param input: List of input items that led to this response + properties: + created_at: + title: Created At + type: integer + error: + anyOf: + - $ref: '#/$defs/OpenAIResponseError' + - type: 'null' + id: + title: Id + type: string + model: + title: Model + type: string + object: + const: response + default: response + title: Object + type: string + output: + items: + discriminator: + mapping: + file_search_call: >- + #/$defs/OpenAIResponseOutputMessageFileSearchToolCall + function_call: >- + #/$defs/OpenAIResponseOutputMessageFunctionToolCall + mcp_approval_request: '#/$defs/OpenAIResponseMCPApprovalRequest' + mcp_call: >- + #/$defs/OpenAIResponseOutputMessageMCPCall + mcp_list_tools: >- + #/$defs/OpenAIResponseOutputMessageMCPListTools + message: '#/$defs/OpenAIResponseMessage' + web_search_call: >- + #/$defs/OpenAIResponseOutputMessageWebSearchToolCall + propertyName: type + oneOf: + - $ref: '#/$defs/OpenAIResponseMessage' + - $ref: >- + #/$defs/OpenAIResponseOutputMessageWebSearchToolCall + - $ref: >- + #/$defs/OpenAIResponseOutputMessageFileSearchToolCall + - $ref: >- + #/$defs/OpenAIResponseOutputMessageFunctionToolCall + - $ref: >- + #/$defs/OpenAIResponseOutputMessageMCPCall + - $ref: >- + #/$defs/OpenAIResponseOutputMessageMCPListTools + - $ref: '#/$defs/OpenAIResponseMCPApprovalRequest' + title: Output + type: array + parallel_tool_calls: + default: false + title: Parallel Tool Calls + type: boolean + previous_response_id: + anyOf: + - type: string + - type: 'null' + title: Previous Response Id + status: + title: Status + type: string + temperature: + anyOf: + - type: number + - type: 'null' + title: Temperature + text: + $ref: '#/$defs/OpenAIResponseText' + default: + format: + type: text + top_p: + anyOf: + - type: number + - type: 'null' + title: Top P + tools: + anyOf: + - items: + discriminator: + mapping: + file_search: >- + #/$defs/OpenAIResponseInputToolFileSearch + function: '#/$defs/OpenAIResponseInputToolFunction' + mcp: '#/$defs/OpenAIResponseToolMCP' + web_search: '#/$defs/OpenAIResponseInputToolWebSearch' + web_search_preview: '#/$defs/OpenAIResponseInputToolWebSearch' + web_search_preview_2025_03_11: '#/$defs/OpenAIResponseInputToolWebSearch' + propertyName: type + oneOf: + - $ref: '#/$defs/OpenAIResponseInputToolWebSearch' + - $ref: >- + #/$defs/OpenAIResponseInputToolFileSearch + - $ref: '#/$defs/OpenAIResponseInputToolFunction' + - $ref: '#/$defs/OpenAIResponseToolMCP' + type: array + - type: 'null' + title: Tools + truncation: + anyOf: + - type: string + - type: 'null' + title: Truncation + usage: + anyOf: + - $ref: '#/$defs/OpenAIResponseUsage' + - type: 'null' + instructions: + anyOf: + - type: string + - type: 'null' + title: Instructions + input: + items: + anyOf: + - discriminator: + mapping: + file_search_call: >- + #/$defs/OpenAIResponseOutputMessageFileSearchToolCall + function_call: >- + #/$defs/OpenAIResponseOutputMessageFunctionToolCall + mcp_approval_request: '#/$defs/OpenAIResponseMCPApprovalRequest' + mcp_call: >- + #/$defs/OpenAIResponseOutputMessageMCPCall + mcp_list_tools: >- + #/$defs/OpenAIResponseOutputMessageMCPListTools + message: '#/$defs/OpenAIResponseMessage' + web_search_call: >- + #/$defs/OpenAIResponseOutputMessageWebSearchToolCall + propertyName: type + oneOf: + - $ref: '#/$defs/OpenAIResponseMessage' + - $ref: >- + #/$defs/OpenAIResponseOutputMessageWebSearchToolCall + - $ref: >- + #/$defs/OpenAIResponseOutputMessageFileSearchToolCall + - $ref: >- + #/$defs/OpenAIResponseOutputMessageFunctionToolCall + - $ref: >- + #/$defs/OpenAIResponseOutputMessageMCPCall + - $ref: >- + #/$defs/OpenAIResponseOutputMessageMCPListTools + - $ref: '#/$defs/OpenAIResponseMCPApprovalRequest' + - $ref: >- + #/$defs/OpenAIResponseInputFunctionToolCallOutput + - $ref: >- + #/$defs/OpenAIResponseMCPApprovalResponse + - $ref: '#/$defs/OpenAIResponseMessage' + title: Input + type: array + required: + - created_at + - id + - model + - output + - status + - input + title: OpenAIResponseObjectWithInput + type: object + "OpenAIResponseOutputMessageContentOutputText": + properties: + text: + title: Text + type: string + type: + const: output_text + default: output_text + title: Type + type: string + annotations: + items: + discriminator: + mapping: + container_file_citation: >- + #/$defs/OpenAIResponseAnnotationContainerFileCitation + file_citation: >- + #/$defs/OpenAIResponseAnnotationFileCitation + file_path: '#/$defs/OpenAIResponseAnnotationFilePath' + url_citation: '#/$defs/OpenAIResponseAnnotationCitation' + propertyName: type + oneOf: + - $ref: >- + #/$defs/OpenAIResponseAnnotationFileCitation + - $ref: '#/$defs/OpenAIResponseAnnotationCitation' + - $ref: >- + #/$defs/OpenAIResponseAnnotationContainerFileCitation + - $ref: '#/$defs/OpenAIResponseAnnotationFilePath' + title: Annotations + type: array + required: + - text + title: >- + OpenAIResponseOutputMessageContentOutputText + type: object + "OpenAIResponseOutputMessageFileSearchToolCall": + description: >- + File search tool call output message for OpenAI responses. + + + :param id: Unique identifier for this tool call + + :param queries: List of search queries executed + + :param status: Current status of the file search operation + + :param type: Tool call type identifier, always "file_search_call" + + :param results: (Optional) Search results returned by the file search + operation + properties: + id: + title: Id + type: string + queries: + items: + type: string + title: Queries + type: array + status: + title: Status + type: string + type: + const: file_search_call + default: file_search_call + title: Type + type: string + results: + anyOf: + - items: + $ref: >- + #/$defs/OpenAIResponseOutputMessageFileSearchToolCallResults + type: array + - type: 'null' + title: Results + required: + - id + - queries + - status + title: >- + OpenAIResponseOutputMessageFileSearchToolCall + type: object + "OpenAIResponseOutputMessageFileSearchToolCallResults": + description: >- + Search results returned by the file search operation. + + + :param attributes: (Optional) Key-value attributes associated with the + file + + :param file_id: Unique identifier of the file containing the result + + :param filename: Name of the file containing the result + + :param score: Relevance score for this search result (between 0 and 1) + + :param text: Text content of the search result + properties: + attributes: + additionalProperties: true + title: Attributes + type: object + file_id: + title: File Id + type: string + filename: + title: Filename + type: string + score: + title: Score + type: number + text: + title: Text + type: string + required: + - attributes + - file_id + - filename + - score + - text + title: >- + OpenAIResponseOutputMessageFileSearchToolCallResults + type: object + "OpenAIResponseOutputMessageFunctionToolCall": + description: >- + Function tool call output message for OpenAI responses. + + + :param call_id: Unique identifier for the function call + + :param name: Name of the function being called + + :param arguments: JSON string containing the function arguments + + :param type: Tool call type identifier, always "function_call" + + :param id: (Optional) Additional identifier for the tool call + + :param status: (Optional) Current status of the function call execution + properties: + call_id: + title: Call Id + type: string + name: + title: Name + type: string + arguments: + title: Arguments + type: string + type: + const: function_call + default: function_call + title: Type + type: string + id: + anyOf: + - type: string + - type: 'null' + title: Id + status: + anyOf: + - type: string + - type: 'null' + title: Status + required: + - call_id + - name + - arguments + title: >- + OpenAIResponseOutputMessageFunctionToolCall + type: object + OpenAIResponseOutputMessageMCPCall: + description: >- + Model Context Protocol (MCP) call output message for OpenAI responses. + + + :param id: Unique identifier for this MCP call + + :param type: Tool call type identifier, always "mcp_call" + + :param arguments: JSON string containing the MCP call arguments + + :param name: Name of the MCP method being called + + :param server_label: Label identifying the MCP server handling the call + + :param error: (Optional) Error message if the MCP call failed + + :param output: (Optional) Output result from the successful MCP call + properties: + id: + title: Id + type: string + type: + const: mcp_call + default: mcp_call + title: Type + type: string + arguments: + title: Arguments + type: string + name: + title: Name + type: string + server_label: + title: Server Label + type: string + error: + anyOf: + - type: string + - type: 'null' + title: Error + output: + anyOf: + - type: string + - type: 'null' + title: Output + required: + - id + - arguments + - name + - server_label + title: OpenAIResponseOutputMessageMCPCall + type: object + OpenAIResponseOutputMessageMCPListTools: + description: >- + MCP list tools output message containing available tools from an MCP server. + + + :param id: Unique identifier for this MCP list tools operation + + :param type: Tool call type identifier, always "mcp_list_tools" + + :param server_label: Label identifying the MCP server providing the tools + + :param tools: List of available tools provided by the MCP server + properties: + id: + title: Id + type: string + type: + const: mcp_list_tools + default: mcp_list_tools + title: Type + type: string + server_label: + title: Server Label + type: string + tools: + items: + $ref: '#/$defs/MCPListToolsTool' + title: Tools + type: array + required: + - id + - server_label + - tools + title: OpenAIResponseOutputMessageMCPListTools + type: object + "OpenAIResponseOutputMessageWebSearchToolCall": + description: >- + Web search tool call output message for OpenAI responses. + + + :param id: Unique identifier for this tool call + + :param status: Current status of the web search operation + + :param type: Tool call type identifier, always "web_search_call" + properties: + id: + title: Id + type: string + status: + title: Status + type: string + type: + const: web_search_call + default: web_search_call + title: Type + type: string + required: + - id + - status + title: >- + OpenAIResponseOutputMessageWebSearchToolCall + type: object + OpenAIResponseText: + description: >- + Text response configuration for OpenAI responses. + + + :param format: (Optional) Text format configuration specifying output + format requirements + properties: + format: + anyOf: + - $ref: '#/$defs/OpenAIResponseTextFormat' + - type: 'null' + title: OpenAIResponseText + type: object + OpenAIResponseTextFormat: + description: >- + Configuration for Responses API text format. + + + :param type: Must be "text", "json_schema", or "json_object" to identify + the format type + + :param name: The name of the response format. Only used for json_schema. + + :param schema: The JSON schema the response should conform to. In a Python + SDK, this is often a `pydantic` model. Only used for json_schema. + + :param description: (Optional) A description of the response format. Only + used for json_schema. + + :param strict: (Optional) Whether to strictly enforce the JSON schema. + If true, the response must match the schema exactly. Only used for json_schema. + properties: + type: + anyOf: + - const: text + type: string + - const: json_schema + type: string + - const: json_object + type: string + title: Type + name: + anyOf: + - type: string + - type: 'null' + title: Name + schema: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Schema + description: + anyOf: + - type: string + - type: 'null' + title: Description + strict: + anyOf: + - type: boolean + - type: 'null' + title: Strict + title: OpenAIResponseTextFormat + type: object + OpenAIResponseToolMCP: + description: >- + Model Context Protocol (MCP) tool configuration for OpenAI response object. + + + :param type: Tool type identifier, always "mcp" + + :param server_label: Label to identify this MCP server + + :param allowed_tools: (Optional) Restriction on which tools can be used + from this server + properties: + type: + const: mcp + default: mcp + title: Type + type: string + server_label: + title: Server Label + type: string + allowed_tools: + anyOf: + - items: + type: string + type: array + - $ref: '#/$defs/AllowedToolsFilter' + - type: 'null' + title: Allowed Tools + required: + - server_label + title: OpenAIResponseToolMCP + type: object + OpenAIResponseUsage: + description: >- + Usage information for OpenAI response. + + + :param input_tokens: Number of tokens in the input + + :param output_tokens: Number of tokens in the output + + :param total_tokens: Total tokens used (input + output) + + :param input_tokens_details: Detailed breakdown of input token usage + + :param output_tokens_details: Detailed breakdown of output token usage + properties: + input_tokens: + title: Input Tokens + type: integer + output_tokens: + title: Output Tokens + type: integer + total_tokens: + title: Total Tokens + type: integer + input_tokens_details: + anyOf: + - $ref: >- + #/$defs/OpenAIResponseUsageInputTokensDetails + - type: 'null' + output_tokens_details: + anyOf: + - $ref: >- + #/$defs/OpenAIResponseUsageOutputTokensDetails + - type: 'null' + required: + - input_tokens + - output_tokens + - total_tokens + title: OpenAIResponseUsage + type: object + OpenAIResponseUsageInputTokensDetails: + description: >- + Token details for input tokens in OpenAI response usage. + + + :param cached_tokens: Number of tokens retrieved from cache + properties: + cached_tokens: + anyOf: + - type: integer + - type: 'null' + title: Cached Tokens + title: OpenAIResponseUsageInputTokensDetails + type: object + OpenAIResponseUsageOutputTokensDetails: + description: >- + Token details for output tokens in OpenAI response usage. + + + :param reasoning_tokens: Number of tokens used for reasoning (o1/o3 models) + properties: + reasoning_tokens: + anyOf: + - type: integer + - type: 'null' + title: Reasoning Tokens + title: OpenAIResponseUsageOutputTokensDetails + type: object + SearchRankingOptions: + description: >- + Options for ranking and filtering search results. + + + :param ranker: (Optional) Name of the ranking algorithm to use + + :param score_threshold: (Optional) Minimum relevance score threshold for + results + properties: + ranker: + anyOf: + - type: string + - type: 'null' + title: Ranker + score_threshold: + anyOf: + - type: number + - type: 'null' + default: 0.0 + title: Score Threshold + title: SearchRankingOptions + type: object + description: >- + Paginated list of OpenAI response objects with navigation metadata. + + + :param data: List of response objects with their input context + + :param has_more: Whether there are more results available beyond this page + + :param first_id: Identifier of the first item in this page + + :param last_id: Identifier of the last item in this page + + :param object: Object type identifier, always "list" properties: data: - type: array items: - $ref: '#/components/schemas/OpenAIResponseObjectWithInput' - description: >- - List of response objects with their input context + $ref: '#/$defs/OpenAIResponseObjectWithInput' + title: Data + type: array has_more: + title: Has More type: boolean - description: >- - Whether there are more results available beyond this page first_id: + title: First Id type: string - description: >- - Identifier of the first item in this page last_id: + title: Last Id type: string - description: Identifier of the last item in this page object: - type: string const: list default: list - description: Object type identifier, always "list" - additionalProperties: false + title: Object + type: string required: - data - has_more - first_id - last_id - - object title: ListOpenAIResponseObject - description: >- - Paginated list of OpenAI response objects with navigation metadata. - OpenAIResponseError: type: object properties: code: @@ -7804,39 +10901,1055 @@ components: - model title: CreateOpenaiResponseRequest OpenAIResponseObject: - type: object + $defs: + AllowedToolsFilter: + description: >- + Filter configuration for restricting which MCP tools can be used. + + + :param tool_names: (Optional) List of specific tool names that are allowed + properties: + tool_names: + anyOf: + - items: + type: string + type: array + - type: 'null' + title: Tool Names + title: AllowedToolsFilter + type: object + MCPListToolsTool: + description: >- + Tool definition returned by MCP list tools operation. + + + :param input_schema: JSON schema defining the tool's input parameters + + :param name: Name of the tool + + :param description: (Optional) Description of what the tool does + properties: + input_schema: + additionalProperties: true + title: Input Schema + type: object + name: + title: Name + type: string + description: + anyOf: + - type: string + - type: 'null' + title: Description + required: + - input_schema + - name + title: MCPListToolsTool + type: object + OpenAIResponseAnnotationCitation: + description: >- + URL citation annotation for referencing external web resources. + + + :param type: Annotation type identifier, always "url_citation" + + :param end_index: End position of the citation span in the content + + :param start_index: Start position of the citation span in the content + + :param title: Title of the referenced web resource + + :param url: URL of the referenced web resource + properties: + type: + const: url_citation + default: url_citation + title: Type + type: string + end_index: + title: End Index + type: integer + start_index: + title: Start Index + type: integer + title: + title: Title + type: string + url: + title: Url + type: string + required: + - end_index + - start_index + - title + - url + title: OpenAIResponseAnnotationCitation + type: object + "OpenAIResponseAnnotationContainerFileCitation": + properties: + type: + const: container_file_citation + default: container_file_citation + title: Type + type: string + container_id: + title: Container Id + type: string + end_index: + title: End Index + type: integer + file_id: + title: File Id + type: string + filename: + title: Filename + type: string + start_index: + title: Start Index + type: integer + required: + - container_id + - end_index + - file_id + - filename + - start_index + title: >- + OpenAIResponseAnnotationContainerFileCitation + type: object + OpenAIResponseAnnotationFileCitation: + description: >- + File citation annotation for referencing specific files in response content. + + + :param type: Annotation type identifier, always "file_citation" + + :param file_id: Unique identifier of the referenced file + + :param filename: Name of the referenced file + + :param index: Position index of the citation within the content + properties: + type: + const: file_citation + default: file_citation + title: Type + type: string + file_id: + title: File Id + type: string + filename: + title: Filename + type: string + index: + title: Index + type: integer + required: + - file_id + - filename + - index + title: OpenAIResponseAnnotationFileCitation + type: object + OpenAIResponseAnnotationFilePath: + properties: + type: + const: file_path + default: file_path + title: Type + type: string + file_id: + title: File Id + type: string + index: + title: Index + type: integer + required: + - file_id + - index + title: OpenAIResponseAnnotationFilePath + type: object + OpenAIResponseContentPartRefusal: + description: >- + Refusal content within a streamed response part. + + + :param type: Content part type identifier, always "refusal" + + :param refusal: Refusal text supplied by the model + properties: + type: + const: refusal + default: refusal + title: Type + type: string + refusal: + title: Refusal + type: string + required: + - refusal + title: OpenAIResponseContentPartRefusal + type: object + OpenAIResponseError: + description: >- + Error details for failed OpenAI response requests. + + + :param code: Error code identifying the type of failure + + :param message: Human-readable error message describing the failure + properties: + code: + title: Code + type: string + message: + title: Message + type: string + required: + - code + - message + title: OpenAIResponseError + type: object + OpenAIResponseInputMessageContentImage: + description: >- + Image content for input messages in OpenAI response format. + + + :param detail: Level of detail for image processing, can be "low", "high", + or "auto" + + :param type: Content type identifier, always "input_image" + + :param image_url: (Optional) URL of the image content + properties: + detail: + anyOf: + - const: low + type: string + - const: high + type: string + - const: auto + type: string + default: auto + title: Detail + type: + const: input_image + default: input_image + title: Type + type: string + image_url: + anyOf: + - type: string + - type: 'null' + title: Image Url + title: OpenAIResponseInputMessageContentImage + type: object + OpenAIResponseInputMessageContentText: + description: >- + Text content for input messages in OpenAI response format. + + + :param text: The text content of the input message + + :param type: Content type identifier, always "input_text" + properties: + text: + title: Text + type: string + type: + const: input_text + default: input_text + title: Type + type: string + required: + - text + title: OpenAIResponseInputMessageContentText + type: object + OpenAIResponseInputToolFileSearch: + description: >- + File search tool configuration for OpenAI response inputs. + + + :param type: Tool type identifier, always "file_search" + + :param vector_store_ids: List of vector store identifiers to search within + + :param filters: (Optional) Additional filters to apply to the search + + :param max_num_results: (Optional) Maximum number of search results to + return (1-50) + + :param ranking_options: (Optional) Options for ranking and scoring search + results + properties: + type: + const: file_search + default: file_search + title: Type + type: string + vector_store_ids: + items: + type: string + title: Vector Store Ids + type: array + filters: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Filters + max_num_results: + anyOf: + - maximum: 50 + minimum: 1 + type: integer + - type: 'null' + default: 10 + title: Max Num Results + ranking_options: + anyOf: + - $ref: '#/$defs/SearchRankingOptions' + - type: 'null' + required: + - vector_store_ids + title: OpenAIResponseInputToolFileSearch + type: object + OpenAIResponseInputToolFunction: + description: >- + Function tool configuration for OpenAI response inputs. + + + :param type: Tool type identifier, always "function" + + :param name: Name of the function that can be called + + :param description: (Optional) Description of what the function does + + :param parameters: (Optional) JSON schema defining the function's parameters + + :param strict: (Optional) Whether to enforce strict parameter validation + properties: + type: + const: function + default: function + title: Type + type: string + name: + title: Name + type: string + description: + anyOf: + - type: string + - type: 'null' + title: Description + parameters: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Parameters + strict: + anyOf: + - type: boolean + - type: 'null' + title: Strict + required: + - name + - parameters + title: OpenAIResponseInputToolFunction + type: object + OpenAIResponseInputToolWebSearch: + description: >- + Web search tool configuration for OpenAI response inputs. + + + :param type: Web search tool type variant to use + + :param search_context_size: (Optional) Size of search context, must be + "low", "medium", or "high" + properties: + type: + anyOf: + - const: web_search + type: string + - const: web_search_preview + type: string + - const: web_search_preview_2025_03_11 + type: string + default: web_search + title: Type + search_context_size: + anyOf: + - pattern: ^low|medium|high$ + type: string + - type: 'null' + default: medium + title: Search Context Size + title: OpenAIResponseInputToolWebSearch + type: object + OpenAIResponseMCPApprovalRequest: + description: >- + A request for human approval of a tool invocation. + properties: + arguments: + title: Arguments + type: string + id: + title: Id + type: string + name: + title: Name + type: string + server_label: + title: Server Label + type: string + type: + const: mcp_approval_request + default: mcp_approval_request + title: Type + type: string + required: + - arguments + - id + - name + - server_label + title: OpenAIResponseMCPApprovalRequest + type: object + OpenAIResponseMessage: + description: >- + Corresponds to the various Message types in the Responses API. + + They are all under one type because the Responses API gives them all + + the same "type" value, and there is no way to tell them apart in certain + + scenarios. + properties: + content: + anyOf: + - type: string + - items: + discriminator: + mapping: + input_image: >- + #/$defs/OpenAIResponseInputMessageContentImage + input_text: >- + #/$defs/OpenAIResponseInputMessageContentText + propertyName: type + oneOf: + - $ref: >- + #/$defs/OpenAIResponseInputMessageContentText + - $ref: >- + #/$defs/OpenAIResponseInputMessageContentImage + type: array + - items: + discriminator: + mapping: + output_text: >- + #/$defs/OpenAIResponseOutputMessageContentOutputText + refusal: '#/$defs/OpenAIResponseContentPartRefusal' + propertyName: type + oneOf: + - $ref: >- + #/$defs/OpenAIResponseOutputMessageContentOutputText + - $ref: '#/$defs/OpenAIResponseContentPartRefusal' + type: array + title: Content + role: + anyOf: + - const: system + type: string + - const: developer + type: string + - const: user + type: string + - const: assistant + type: string + title: Role + type: + const: message + default: message + title: Type + type: string + id: + anyOf: + - type: string + - type: 'null' + title: Id + status: + anyOf: + - type: string + - type: 'null' + title: Status + required: + - content + - role + title: OpenAIResponseMessage + type: object + "OpenAIResponseOutputMessageContentOutputText": + properties: + text: + title: Text + type: string + type: + const: output_text + default: output_text + title: Type + type: string + annotations: + items: + discriminator: + mapping: + container_file_citation: >- + #/$defs/OpenAIResponseAnnotationContainerFileCitation + file_citation: >- + #/$defs/OpenAIResponseAnnotationFileCitation + file_path: '#/$defs/OpenAIResponseAnnotationFilePath' + url_citation: '#/$defs/OpenAIResponseAnnotationCitation' + propertyName: type + oneOf: + - $ref: >- + #/$defs/OpenAIResponseAnnotationFileCitation + - $ref: '#/$defs/OpenAIResponseAnnotationCitation' + - $ref: >- + #/$defs/OpenAIResponseAnnotationContainerFileCitation + - $ref: '#/$defs/OpenAIResponseAnnotationFilePath' + title: Annotations + type: array + required: + - text + title: >- + OpenAIResponseOutputMessageContentOutputText + type: object + "OpenAIResponseOutputMessageFileSearchToolCall": + description: >- + File search tool call output message for OpenAI responses. + + + :param id: Unique identifier for this tool call + + :param queries: List of search queries executed + + :param status: Current status of the file search operation + + :param type: Tool call type identifier, always "file_search_call" + + :param results: (Optional) Search results returned by the file search + operation + properties: + id: + title: Id + type: string + queries: + items: + type: string + title: Queries + type: array + status: + title: Status + type: string + type: + const: file_search_call + default: file_search_call + title: Type + type: string + results: + anyOf: + - items: + $ref: >- + #/$defs/OpenAIResponseOutputMessageFileSearchToolCallResults + type: array + - type: 'null' + title: Results + required: + - id + - queries + - status + title: >- + OpenAIResponseOutputMessageFileSearchToolCall + type: object + "OpenAIResponseOutputMessageFileSearchToolCallResults": + description: >- + Search results returned by the file search operation. + + + :param attributes: (Optional) Key-value attributes associated with the + file + + :param file_id: Unique identifier of the file containing the result + + :param filename: Name of the file containing the result + + :param score: Relevance score for this search result (between 0 and 1) + + :param text: Text content of the search result + properties: + attributes: + additionalProperties: true + title: Attributes + type: object + file_id: + title: File Id + type: string + filename: + title: Filename + type: string + score: + title: Score + type: number + text: + title: Text + type: string + required: + - attributes + - file_id + - filename + - score + - text + title: >- + OpenAIResponseOutputMessageFileSearchToolCallResults + type: object + "OpenAIResponseOutputMessageFunctionToolCall": + description: >- + Function tool call output message for OpenAI responses. + + + :param call_id: Unique identifier for the function call + + :param name: Name of the function being called + + :param arguments: JSON string containing the function arguments + + :param type: Tool call type identifier, always "function_call" + + :param id: (Optional) Additional identifier for the tool call + + :param status: (Optional) Current status of the function call execution + properties: + call_id: + title: Call Id + type: string + name: + title: Name + type: string + arguments: + title: Arguments + type: string + type: + const: function_call + default: function_call + title: Type + type: string + id: + anyOf: + - type: string + - type: 'null' + title: Id + status: + anyOf: + - type: string + - type: 'null' + title: Status + required: + - call_id + - name + - arguments + title: >- + OpenAIResponseOutputMessageFunctionToolCall + type: object + OpenAIResponseOutputMessageMCPCall: + description: >- + Model Context Protocol (MCP) call output message for OpenAI responses. + + + :param id: Unique identifier for this MCP call + + :param type: Tool call type identifier, always "mcp_call" + + :param arguments: JSON string containing the MCP call arguments + + :param name: Name of the MCP method being called + + :param server_label: Label identifying the MCP server handling the call + + :param error: (Optional) Error message if the MCP call failed + + :param output: (Optional) Output result from the successful MCP call + properties: + id: + title: Id + type: string + type: + const: mcp_call + default: mcp_call + title: Type + type: string + arguments: + title: Arguments + type: string + name: + title: Name + type: string + server_label: + title: Server Label + type: string + error: + anyOf: + - type: string + - type: 'null' + title: Error + output: + anyOf: + - type: string + - type: 'null' + title: Output + required: + - id + - arguments + - name + - server_label + title: OpenAIResponseOutputMessageMCPCall + type: object + OpenAIResponseOutputMessageMCPListTools: + description: >- + MCP list tools output message containing available tools from an MCP server. + + + :param id: Unique identifier for this MCP list tools operation + + :param type: Tool call type identifier, always "mcp_list_tools" + + :param server_label: Label identifying the MCP server providing the tools + + :param tools: List of available tools provided by the MCP server + properties: + id: + title: Id + type: string + type: + const: mcp_list_tools + default: mcp_list_tools + title: Type + type: string + server_label: + title: Server Label + type: string + tools: + items: + $ref: '#/$defs/MCPListToolsTool' + title: Tools + type: array + required: + - id + - server_label + - tools + title: OpenAIResponseOutputMessageMCPListTools + type: object + "OpenAIResponseOutputMessageWebSearchToolCall": + description: >- + Web search tool call output message for OpenAI responses. + + + :param id: Unique identifier for this tool call + + :param status: Current status of the web search operation + + :param type: Tool call type identifier, always "web_search_call" + properties: + id: + title: Id + type: string + status: + title: Status + type: string + type: + const: web_search_call + default: web_search_call + title: Type + type: string + required: + - id + - status + title: >- + OpenAIResponseOutputMessageWebSearchToolCall + type: object + OpenAIResponseText: + description: >- + Text response configuration for OpenAI responses. + + + :param format: (Optional) Text format configuration specifying output + format requirements + properties: + format: + anyOf: + - $ref: '#/$defs/OpenAIResponseTextFormat' + - type: 'null' + title: OpenAIResponseText + type: object + OpenAIResponseTextFormat: + description: >- + Configuration for Responses API text format. + + + :param type: Must be "text", "json_schema", or "json_object" to identify + the format type + + :param name: The name of the response format. Only used for json_schema. + + :param schema: The JSON schema the response should conform to. In a Python + SDK, this is often a `pydantic` model. Only used for json_schema. + + :param description: (Optional) A description of the response format. Only + used for json_schema. + + :param strict: (Optional) Whether to strictly enforce the JSON schema. + If true, the response must match the schema exactly. Only used for json_schema. + properties: + type: + anyOf: + - const: text + type: string + - const: json_schema + type: string + - const: json_object + type: string + title: Type + name: + anyOf: + - type: string + - type: 'null' + title: Name + schema: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Schema + description: + anyOf: + - type: string + - type: 'null' + title: Description + strict: + anyOf: + - type: boolean + - type: 'null' + title: Strict + title: OpenAIResponseTextFormat + type: object + OpenAIResponseToolMCP: + description: >- + Model Context Protocol (MCP) tool configuration for OpenAI response object. + + + :param type: Tool type identifier, always "mcp" + + :param server_label: Label to identify this MCP server + + :param allowed_tools: (Optional) Restriction on which tools can be used + from this server + properties: + type: + const: mcp + default: mcp + title: Type + type: string + server_label: + title: Server Label + type: string + allowed_tools: + anyOf: + - items: + type: string + type: array + - $ref: '#/$defs/AllowedToolsFilter' + - type: 'null' + title: Allowed Tools + required: + - server_label + title: OpenAIResponseToolMCP + type: object + OpenAIResponseUsage: + description: >- + Usage information for OpenAI response. + + + :param input_tokens: Number of tokens in the input + + :param output_tokens: Number of tokens in the output + + :param total_tokens: Total tokens used (input + output) + + :param input_tokens_details: Detailed breakdown of input token usage + + :param output_tokens_details: Detailed breakdown of output token usage + properties: + input_tokens: + title: Input Tokens + type: integer + output_tokens: + title: Output Tokens + type: integer + total_tokens: + title: Total Tokens + type: integer + input_tokens_details: + anyOf: + - $ref: >- + #/$defs/OpenAIResponseUsageInputTokensDetails + - type: 'null' + output_tokens_details: + anyOf: + - $ref: >- + #/$defs/OpenAIResponseUsageOutputTokensDetails + - type: 'null' + required: + - input_tokens + - output_tokens + - total_tokens + title: OpenAIResponseUsage + type: object + OpenAIResponseUsageInputTokensDetails: + description: >- + Token details for input tokens in OpenAI response usage. + + + :param cached_tokens: Number of tokens retrieved from cache + properties: + cached_tokens: + anyOf: + - type: integer + - type: 'null' + title: Cached Tokens + title: OpenAIResponseUsageInputTokensDetails + type: object + OpenAIResponseUsageOutputTokensDetails: + description: >- + Token details for output tokens in OpenAI response usage. + + + :param reasoning_tokens: Number of tokens used for reasoning (o1/o3 models) + properties: + reasoning_tokens: + anyOf: + - type: integer + - type: 'null' + title: Reasoning Tokens + title: OpenAIResponseUsageOutputTokensDetails + type: object + SearchRankingOptions: + description: >- + Options for ranking and filtering search results. + + + :param ranker: (Optional) Name of the ranking algorithm to use + + :param score_threshold: (Optional) Minimum relevance score threshold for + results + properties: + ranker: + anyOf: + - type: string + - type: 'null' + title: Ranker + score_threshold: + anyOf: + - type: number + - type: 'null' + default: 0.0 + title: Score Threshold + title: SearchRankingOptions + type: object + description: >- + Complete OpenAI response object containing generation results and metadata. + + + :param created_at: Unix timestamp when the response was created + + :param error: (Optional) Error details if the response generation failed + + :param id: Unique identifier for this response + + :param model: Model identifier used for generation + + :param object: Object type identifier, always "response" + + :param output: List of generated output items (messages, tool calls, etc.) + + :param parallel_tool_calls: Whether tool calls can be executed in parallel + + :param previous_response_id: (Optional) ID of the previous response in a conversation + + :param status: Current status of the response generation + + :param temperature: (Optional) Sampling temperature used for generation + + :param text: Text formatting configuration for the response + + :param top_p: (Optional) Nucleus sampling parameter used for generation + + :param tools: (Optional) An array of tools the model may call while generating + a response. + + :param truncation: (Optional) Truncation strategy applied to the response + + :param usage: (Optional) Token usage information for the response + + :param instructions: (Optional) System message inserted into the model's context properties: created_at: + title: Created At type: integer - description: >- - Unix timestamp when the response was created error: - $ref: '#/components/schemas/OpenAIResponseError' - description: >- - (Optional) Error details if the response generation failed + anyOf: + - $ref: '#/$defs/OpenAIResponseError' + - type: 'null' id: + title: Id type: string - description: Unique identifier for this response model: + title: Model type: string - description: Model identifier used for generation object: - type: string const: response default: response - description: >- - Object type identifier, always "response" + title: Object + type: string output: - type: array items: - $ref: '#/components/schemas/OpenAIResponseOutput' - description: >- - List of generated output items (messages, tool calls, etc.) + discriminator: + mapping: + file_search_call: >- + #/$defs/OpenAIResponseOutputMessageFileSearchToolCall + function_call: >- + #/$defs/OpenAIResponseOutputMessageFunctionToolCall + mcp_approval_request: '#/$defs/OpenAIResponseMCPApprovalRequest' + mcp_call: >- + #/$defs/OpenAIResponseOutputMessageMCPCall + mcp_list_tools: >- + #/$defs/OpenAIResponseOutputMessageMCPListTools + message: '#/$defs/OpenAIResponseMessage' + web_search_call: >- + #/$defs/OpenAIResponseOutputMessageWebSearchToolCall + propertyName: type + oneOf: + - $ref: '#/$defs/OpenAIResponseMessage' + - $ref: >- + #/$defs/OpenAIResponseOutputMessageWebSearchToolCall + - $ref: >- + #/$defs/OpenAIResponseOutputMessageFileSearchToolCall + - $ref: >- + #/$defs/OpenAIResponseOutputMessageFunctionToolCall + - $ref: >- + #/$defs/OpenAIResponseOutputMessageMCPCall + - $ref: >- + #/$defs/OpenAIResponseOutputMessageMCPListTools + - $ref: '#/$defs/OpenAIResponseMCPApprovalRequest' + title: Output + type: array parallel_tool_calls: - type: boolean default: false - description: >- - Whether tool calls can be executed in parallel + title: Parallel Tool Calls + type: boolean previous_response_id: type: string description: >- @@ -7846,2081 +11959,1759 @@ components: description: >- (Optional) Reference to a prompt template and its variables. status: + title: Status type: string - description: >- - Current status of the response generation temperature: - type: number - description: >- - (Optional) Sampling temperature used for generation + anyOf: + - type: number + - type: 'null' + title: Temperature text: - $ref: '#/components/schemas/OpenAIResponseText' - description: >- - Text formatting configuration for the response + $ref: '#/$defs/OpenAIResponseText' + default: + format: + type: text top_p: - type: number - description: >- - (Optional) Nucleus sampling parameter used for generation + anyOf: + - type: number + - type: 'null' + title: Top P tools: - type: array - items: - $ref: '#/components/schemas/OpenAIResponseTool' - description: >- - (Optional) An array of tools the model may call while generating a response. + anyOf: + - items: + discriminator: + mapping: + file_search: >- + #/$defs/OpenAIResponseInputToolFileSearch + function: '#/$defs/OpenAIResponseInputToolFunction' + mcp: '#/$defs/OpenAIResponseToolMCP' + web_search: '#/$defs/OpenAIResponseInputToolWebSearch' + web_search_preview: '#/$defs/OpenAIResponseInputToolWebSearch' + web_search_preview_2025_03_11: '#/$defs/OpenAIResponseInputToolWebSearch' + propertyName: type + oneOf: + - $ref: '#/$defs/OpenAIResponseInputToolWebSearch' + - $ref: >- + #/$defs/OpenAIResponseInputToolFileSearch + - $ref: '#/$defs/OpenAIResponseInputToolFunction' + - $ref: '#/$defs/OpenAIResponseToolMCP' + type: array + - type: 'null' + title: Tools truncation: - type: string - description: >- - (Optional) Truncation strategy applied to the response + anyOf: + - type: string + - type: 'null' + title: Truncation usage: - $ref: '#/components/schemas/OpenAIResponseUsage' - description: >- - (Optional) Token usage information for the response + anyOf: + - $ref: '#/$defs/OpenAIResponseUsage' + - type: 'null' instructions: - type: string - description: >- - (Optional) System message inserted into the model's context - additionalProperties: false + anyOf: + - type: string + - type: 'null' + title: Instructions required: - created_at - id - model - - object - output - - parallel_tool_calls - status - - text title: OpenAIResponseObject - description: >- - Complete OpenAI response object containing generation results and metadata. - OpenAIResponseContentPartOutputText: type: object - properties: - type: - type: string - const: output_text - default: output_text - description: >- - Content part type identifier, always "output_text" - text: - type: string - description: Text emitted for this content part - annotations: - type: array - items: - $ref: '#/components/schemas/OpenAIResponseAnnotations' - description: >- - Structured annotations associated with the text - logprobs: - type: array - items: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: (Optional) Token log probability details - additionalProperties: false - required: - - type - - text - - annotations - title: OpenAIResponseContentPartOutputText - description: >- - Text content within a streamed response part. - "OpenAIResponseContentPartReasoningSummary": + AsyncIterator: type: object - properties: - type: - type: string - const: summary_text - default: summary_text - description: >- - Content part type identifier, always "summary_text" - text: - type: string - description: Summary text - additionalProperties: false - required: - - type - - text - title: >- - OpenAIResponseContentPartReasoningSummary - description: >- - Reasoning summary part in a streamed response. - OpenAIResponseContentPartReasoningText: - type: object - properties: - type: - type: string - const: reasoning_text - default: reasoning_text - description: >- - Content part type identifier, always "reasoning_text" - text: - type: string - description: Reasoning text supplied by the model - additionalProperties: false - required: - - type - - text - title: OpenAIResponseContentPartReasoningText - description: >- - Reasoning text emitted as part of a streamed response. - OpenAIResponseObjectStream: - oneOf: - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseCreated' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseInProgress' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseOutputItemAdded' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseOutputItemDone' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseOutputTextDelta' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseOutputTextDone' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseFunctionCallArgumentsDelta' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseFunctionCallArgumentsDone' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseWebSearchCallInProgress' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseWebSearchCallSearching' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseWebSearchCallCompleted' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseMcpListToolsInProgress' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseMcpListToolsFailed' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseMcpListToolsCompleted' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseMcpCallArgumentsDelta' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseMcpCallArgumentsDone' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseMcpCallInProgress' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseMcpCallFailed' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseMcpCallCompleted' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseContentPartAdded' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseContentPartDone' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseReasoningTextDelta' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseReasoningTextDone' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseReasoningSummaryPartAdded' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseReasoningSummaryPartDone' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseReasoningSummaryTextDelta' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseReasoningSummaryTextDone' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseRefusalDelta' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseRefusalDone' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseOutputTextAnnotationAdded' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseFileSearchCallInProgress' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseFileSearchCallSearching' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseFileSearchCallCompleted' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseIncomplete' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseFailed' - - $ref: '#/components/schemas/OpenAIResponseObjectStreamResponseCompleted' - discriminator: - propertyName: type - mapping: - response.created: '#/components/schemas/OpenAIResponseObjectStreamResponseCreated' - response.in_progress: '#/components/schemas/OpenAIResponseObjectStreamResponseInProgress' - response.output_item.added: '#/components/schemas/OpenAIResponseObjectStreamResponseOutputItemAdded' - response.output_item.done: '#/components/schemas/OpenAIResponseObjectStreamResponseOutputItemDone' - response.output_text.delta: '#/components/schemas/OpenAIResponseObjectStreamResponseOutputTextDelta' - response.output_text.done: '#/components/schemas/OpenAIResponseObjectStreamResponseOutputTextDone' - response.function_call_arguments.delta: '#/components/schemas/OpenAIResponseObjectStreamResponseFunctionCallArgumentsDelta' - response.function_call_arguments.done: '#/components/schemas/OpenAIResponseObjectStreamResponseFunctionCallArgumentsDone' - response.web_search_call.in_progress: '#/components/schemas/OpenAIResponseObjectStreamResponseWebSearchCallInProgress' - response.web_search_call.searching: '#/components/schemas/OpenAIResponseObjectStreamResponseWebSearchCallSearching' - response.web_search_call.completed: '#/components/schemas/OpenAIResponseObjectStreamResponseWebSearchCallCompleted' - response.mcp_list_tools.in_progress: '#/components/schemas/OpenAIResponseObjectStreamResponseMcpListToolsInProgress' - response.mcp_list_tools.failed: '#/components/schemas/OpenAIResponseObjectStreamResponseMcpListToolsFailed' - response.mcp_list_tools.completed: '#/components/schemas/OpenAIResponseObjectStreamResponseMcpListToolsCompleted' - response.mcp_call.arguments.delta: '#/components/schemas/OpenAIResponseObjectStreamResponseMcpCallArgumentsDelta' - response.mcp_call.arguments.done: '#/components/schemas/OpenAIResponseObjectStreamResponseMcpCallArgumentsDone' - response.mcp_call.in_progress: '#/components/schemas/OpenAIResponseObjectStreamResponseMcpCallInProgress' - response.mcp_call.failed: '#/components/schemas/OpenAIResponseObjectStreamResponseMcpCallFailed' - response.mcp_call.completed: '#/components/schemas/OpenAIResponseObjectStreamResponseMcpCallCompleted' - response.content_part.added: '#/components/schemas/OpenAIResponseObjectStreamResponseContentPartAdded' - response.content_part.done: '#/components/schemas/OpenAIResponseObjectStreamResponseContentPartDone' - response.reasoning_text.delta: '#/components/schemas/OpenAIResponseObjectStreamResponseReasoningTextDelta' - response.reasoning_text.done: '#/components/schemas/OpenAIResponseObjectStreamResponseReasoningTextDone' - response.reasoning_summary_part.added: '#/components/schemas/OpenAIResponseObjectStreamResponseReasoningSummaryPartAdded' - response.reasoning_summary_part.done: '#/components/schemas/OpenAIResponseObjectStreamResponseReasoningSummaryPartDone' - response.reasoning_summary_text.delta: '#/components/schemas/OpenAIResponseObjectStreamResponseReasoningSummaryTextDelta' - response.reasoning_summary_text.done: '#/components/schemas/OpenAIResponseObjectStreamResponseReasoningSummaryTextDone' - response.refusal.delta: '#/components/schemas/OpenAIResponseObjectStreamResponseRefusalDelta' - response.refusal.done: '#/components/schemas/OpenAIResponseObjectStreamResponseRefusalDone' - response.output_text.annotation.added: '#/components/schemas/OpenAIResponseObjectStreamResponseOutputTextAnnotationAdded' - response.file_search_call.in_progress: '#/components/schemas/OpenAIResponseObjectStreamResponseFileSearchCallInProgress' - response.file_search_call.searching: '#/components/schemas/OpenAIResponseObjectStreamResponseFileSearchCallSearching' - response.file_search_call.completed: '#/components/schemas/OpenAIResponseObjectStreamResponseFileSearchCallCompleted' - response.incomplete: '#/components/schemas/OpenAIResponseObjectStreamResponseIncomplete' - response.failed: '#/components/schemas/OpenAIResponseObjectStreamResponseFailed' - response.completed: '#/components/schemas/OpenAIResponseObjectStreamResponseCompleted' - "OpenAIResponseObjectStreamResponseCompleted": - type: object - properties: - response: - $ref: '#/components/schemas/OpenAIResponseObject' - description: Completed response object - type: - type: string - const: response.completed - default: response.completed - description: >- - Event type identifier, always "response.completed" - additionalProperties: false - required: - - response - - type - title: >- - OpenAIResponseObjectStreamResponseCompleted - description: >- - Streaming event indicating a response has been completed. - "OpenAIResponseObjectStreamResponseContentPartAdded": - type: object - properties: - content_index: - type: integer - description: >- - Index position of the part within the content array - response_id: - type: string - description: >- - Unique identifier of the response containing this content - item_id: - type: string - description: >- - Unique identifier of the output item containing this content part - output_index: - type: integer - description: >- - Index position of the output item in the response - part: - oneOf: - - $ref: '#/components/schemas/OpenAIResponseContentPartOutputText' - - $ref: '#/components/schemas/OpenAIResponseContentPartRefusal' - - $ref: '#/components/schemas/OpenAIResponseContentPartReasoningText' - discriminator: - propertyName: type - mapping: - output_text: '#/components/schemas/OpenAIResponseContentPartOutputText' - refusal: '#/components/schemas/OpenAIResponseContentPartRefusal' - reasoning_text: '#/components/schemas/OpenAIResponseContentPartReasoningText' - description: The content part that was added - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.content_part.added - default: response.content_part.added - description: >- - Event type identifier, always "response.content_part.added" - additionalProperties: false - required: - - content_index - - response_id - - item_id - - output_index - - part - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseContentPartAdded - description: >- - Streaming event for when a new content part is added to a response item. - "OpenAIResponseObjectStreamResponseContentPartDone": - type: object - properties: - content_index: - type: integer - description: >- - Index position of the part within the content array - response_id: - type: string - description: >- - Unique identifier of the response containing this content - item_id: - type: string - description: >- - Unique identifier of the output item containing this content part - output_index: - type: integer - description: >- - Index position of the output item in the response - part: - oneOf: - - $ref: '#/components/schemas/OpenAIResponseContentPartOutputText' - - $ref: '#/components/schemas/OpenAIResponseContentPartRefusal' - - $ref: '#/components/schemas/OpenAIResponseContentPartReasoningText' - discriminator: - propertyName: type - mapping: - output_text: '#/components/schemas/OpenAIResponseContentPartOutputText' - refusal: '#/components/schemas/OpenAIResponseContentPartRefusal' - reasoning_text: '#/components/schemas/OpenAIResponseContentPartReasoningText' - description: The completed content part - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.content_part.done - default: response.content_part.done - description: >- - Event type identifier, always "response.content_part.done" - additionalProperties: false - required: - - content_index - - response_id - - item_id - - output_index - - part - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseContentPartDone - description: >- - Streaming event for when a content part is completed. - "OpenAIResponseObjectStreamResponseCreated": - type: object - properties: - response: - $ref: '#/components/schemas/OpenAIResponseObject' - description: The response object that was created - type: - type: string - const: response.created - default: response.created - description: >- - Event type identifier, always "response.created" - additionalProperties: false - required: - - response - - type - title: >- - OpenAIResponseObjectStreamResponseCreated - description: >- - Streaming event indicating a new response has been created. - OpenAIResponseObjectStreamResponseFailed: - type: object - properties: - response: - $ref: '#/components/schemas/OpenAIResponseObject' - description: Response object describing the failure - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.failed - default: response.failed - description: >- - Event type identifier, always "response.failed" - additionalProperties: false - required: - - response - - sequence_number - - type - title: OpenAIResponseObjectStreamResponseFailed - description: >- - Streaming event emitted when a response fails. - "OpenAIResponseObjectStreamResponseFileSearchCallCompleted": - type: object - properties: - item_id: - type: string - description: >- - Unique identifier of the completed file search call - output_index: - type: integer - description: >- - Index position of the item in the output list - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.file_search_call.completed - default: response.file_search_call.completed - description: >- - Event type identifier, always "response.file_search_call.completed" - additionalProperties: false - required: - - item_id - - output_index - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseFileSearchCallCompleted - description: >- - Streaming event for completed file search calls. - "OpenAIResponseObjectStreamResponseFileSearchCallInProgress": - type: object - properties: - item_id: - type: string - description: >- - Unique identifier of the file search call - output_index: - type: integer - description: >- - Index position of the item in the output list - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.file_search_call.in_progress - default: response.file_search_call.in_progress - description: >- - Event type identifier, always "response.file_search_call.in_progress" - additionalProperties: false - required: - - item_id - - output_index - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseFileSearchCallInProgress - description: >- - Streaming event for file search calls in progress. - "OpenAIResponseObjectStreamResponseFileSearchCallSearching": - type: object - properties: - item_id: - type: string - description: >- - Unique identifier of the file search call - output_index: - type: integer - description: >- - Index position of the item in the output list - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.file_search_call.searching - default: response.file_search_call.searching - description: >- - Event type identifier, always "response.file_search_call.searching" - additionalProperties: false - required: - - item_id - - output_index - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseFileSearchCallSearching - description: >- - Streaming event for file search currently searching. - "OpenAIResponseObjectStreamResponseFunctionCallArgumentsDelta": - type: object - properties: - delta: - type: string - description: >- - Incremental function call arguments being added - item_id: - type: string - description: >- - Unique identifier of the function call being updated - output_index: - type: integer - description: >- - Index position of the item in the output list - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.function_call_arguments.delta - default: response.function_call_arguments.delta - description: >- - Event type identifier, always "response.function_call_arguments.delta" - additionalProperties: false - required: - - delta - - item_id - - output_index - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseFunctionCallArgumentsDelta - description: >- - Streaming event for incremental function call argument updates. - "OpenAIResponseObjectStreamResponseFunctionCallArgumentsDone": - type: object - properties: - arguments: - type: string - description: >- - Final complete arguments JSON string for the function call - item_id: - type: string - description: >- - Unique identifier of the completed function call - output_index: - type: integer - description: >- - Index position of the item in the output list - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.function_call_arguments.done - default: response.function_call_arguments.done - description: >- - Event type identifier, always "response.function_call_arguments.done" - additionalProperties: false - required: - - arguments - - item_id - - output_index - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseFunctionCallArgumentsDone - description: >- - Streaming event for when function call arguments are completed. - "OpenAIResponseObjectStreamResponseInProgress": - type: object - properties: - response: - $ref: '#/components/schemas/OpenAIResponseObject' - description: Current response state while in progress - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.in_progress - default: response.in_progress - description: >- - Event type identifier, always "response.in_progress" - additionalProperties: false - required: - - response - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseInProgress - description: >- - Streaming event indicating the response remains in progress. - "OpenAIResponseObjectStreamResponseIncomplete": - type: object - properties: - response: - $ref: '#/components/schemas/OpenAIResponseObject' - description: >- - Response object describing the incomplete state - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.incomplete - default: response.incomplete - description: >- - Event type identifier, always "response.incomplete" - additionalProperties: false - required: - - response - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseIncomplete - description: >- - Streaming event emitted when a response ends in an incomplete state. - "OpenAIResponseObjectStreamResponseMcpCallArgumentsDelta": - type: object - properties: - delta: - type: string - item_id: - type: string - output_index: - type: integer - sequence_number: - type: integer - type: - type: string - const: response.mcp_call.arguments.delta - default: response.mcp_call.arguments.delta - additionalProperties: false - required: - - delta - - item_id - - output_index - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseMcpCallArgumentsDelta - "OpenAIResponseObjectStreamResponseMcpCallArgumentsDone": - type: object - properties: - arguments: - type: string - item_id: - type: string - output_index: - type: integer - sequence_number: - type: integer - type: - type: string - const: response.mcp_call.arguments.done - default: response.mcp_call.arguments.done - additionalProperties: false - required: - - arguments - - item_id - - output_index - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseMcpCallArgumentsDone - "OpenAIResponseObjectStreamResponseMcpCallCompleted": - type: object - properties: - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.mcp_call.completed - default: response.mcp_call.completed - description: >- - Event type identifier, always "response.mcp_call.completed" - additionalProperties: false - required: - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseMcpCallCompleted - description: Streaming event for completed MCP calls. - "OpenAIResponseObjectStreamResponseMcpCallFailed": - type: object - properties: - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.mcp_call.failed - default: response.mcp_call.failed - description: >- - Event type identifier, always "response.mcp_call.failed" - additionalProperties: false - required: - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseMcpCallFailed - description: Streaming event for failed MCP calls. - "OpenAIResponseObjectStreamResponseMcpCallInProgress": - type: object - properties: - item_id: - type: string - description: Unique identifier of the MCP call - output_index: - type: integer - description: >- - Index position of the item in the output list - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.mcp_call.in_progress - default: response.mcp_call.in_progress - description: >- - Event type identifier, always "response.mcp_call.in_progress" - additionalProperties: false - required: - - item_id - - output_index - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseMcpCallInProgress - description: >- - Streaming event for MCP calls in progress. - "OpenAIResponseObjectStreamResponseMcpListToolsCompleted": - type: object - properties: - sequence_number: - type: integer - type: - type: string - const: response.mcp_list_tools.completed - default: response.mcp_list_tools.completed - additionalProperties: false - required: - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseMcpListToolsCompleted - "OpenAIResponseObjectStreamResponseMcpListToolsFailed": - type: object - properties: - sequence_number: - type: integer - type: - type: string - const: response.mcp_list_tools.failed - default: response.mcp_list_tools.failed - additionalProperties: false - required: - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseMcpListToolsFailed - "OpenAIResponseObjectStreamResponseMcpListToolsInProgress": - type: object - properties: - sequence_number: - type: integer - type: - type: string - const: response.mcp_list_tools.in_progress - default: response.mcp_list_tools.in_progress - additionalProperties: false - required: - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseMcpListToolsInProgress - "OpenAIResponseObjectStreamResponseOutputItemAdded": - type: object - properties: - response_id: - type: string - description: >- - Unique identifier of the response containing this output - item: - oneOf: - - $ref: '#/components/schemas/OpenAIResponseMessage' - - $ref: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' - - $ref: '#/components/schemas/OpenAIResponseOutputMessageFileSearchToolCall' - - $ref: '#/components/schemas/OpenAIResponseOutputMessageFunctionToolCall' - - $ref: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' - - $ref: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' - - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' - discriminator: - propertyName: type - mapping: - message: '#/components/schemas/OpenAIResponseMessage' - web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' - file_search_call: '#/components/schemas/OpenAIResponseOutputMessageFileSearchToolCall' - function_call: '#/components/schemas/OpenAIResponseOutputMessageFunctionToolCall' - mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' - mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' - mcp_approval_request: '#/components/schemas/OpenAIResponseMCPApprovalRequest' - description: >- - The output item that was added (message, tool call, etc.) - output_index: - type: integer - description: >- - Index position of this item in the output list - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.output_item.added - default: response.output_item.added - description: >- - Event type identifier, always "response.output_item.added" - additionalProperties: false - required: - - response_id - - item - - output_index - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseOutputItemAdded - description: >- - Streaming event for when a new output item is added to the response. - "OpenAIResponseObjectStreamResponseOutputItemDone": - type: object - properties: - response_id: - type: string - description: >- - Unique identifier of the response containing this output - item: - oneOf: - - $ref: '#/components/schemas/OpenAIResponseMessage' - - $ref: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' - - $ref: '#/components/schemas/OpenAIResponseOutputMessageFileSearchToolCall' - - $ref: '#/components/schemas/OpenAIResponseOutputMessageFunctionToolCall' - - $ref: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' - - $ref: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' - - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' - discriminator: - propertyName: type - mapping: - message: '#/components/schemas/OpenAIResponseMessage' - web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' - file_search_call: '#/components/schemas/OpenAIResponseOutputMessageFileSearchToolCall' - function_call: '#/components/schemas/OpenAIResponseOutputMessageFunctionToolCall' - mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' - mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' - mcp_approval_request: '#/components/schemas/OpenAIResponseMCPApprovalRequest' - description: >- - The completed output item (message, tool call, etc.) - output_index: - type: integer - description: >- - Index position of this item in the output list - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.output_item.done - default: response.output_item.done - description: >- - Event type identifier, always "response.output_item.done" - additionalProperties: false - required: - - response_id - - item - - output_index - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseOutputItemDone - description: >- - Streaming event for when an output item is completed. - "OpenAIResponseObjectStreamResponseOutputTextAnnotationAdded": - type: object - properties: - item_id: - type: string - description: >- - Unique identifier of the item to which the annotation is being added - output_index: - type: integer - description: >- - Index position of the output item in the response's output array - content_index: - type: integer - description: >- - Index position of the content part within the output item - annotation_index: - type: integer - description: >- - Index of the annotation within the content part - annotation: - oneOf: - - $ref: '#/components/schemas/OpenAIResponseAnnotationFileCitation' - - $ref: '#/components/schemas/OpenAIResponseAnnotationCitation' - - $ref: '#/components/schemas/OpenAIResponseAnnotationContainerFileCitation' - - $ref: '#/components/schemas/OpenAIResponseAnnotationFilePath' - discriminator: - propertyName: type - mapping: - file_citation: '#/components/schemas/OpenAIResponseAnnotationFileCitation' - url_citation: '#/components/schemas/OpenAIResponseAnnotationCitation' - container_file_citation: '#/components/schemas/OpenAIResponseAnnotationContainerFileCitation' - file_path: '#/components/schemas/OpenAIResponseAnnotationFilePath' - description: The annotation object being added - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.output_text.annotation.added - default: response.output_text.annotation.added - description: >- - Event type identifier, always "response.output_text.annotation.added" - additionalProperties: false - required: - - item_id - - output_index - - content_index - - annotation_index - - annotation - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseOutputTextAnnotationAdded - description: >- - Streaming event for when an annotation is added to output text. - "OpenAIResponseObjectStreamResponseOutputTextDelta": - type: object - properties: - content_index: - type: integer - description: Index position within the text content - delta: - type: string - description: Incremental text content being added - item_id: - type: string - description: >- - Unique identifier of the output item being updated - output_index: - type: integer - description: >- - Index position of the item in the output list - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.output_text.delta - default: response.output_text.delta - description: >- - Event type identifier, always "response.output_text.delta" - additionalProperties: false - required: - - content_index - - delta - - item_id - - output_index - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseOutputTextDelta - description: >- - Streaming event for incremental text content updates. - "OpenAIResponseObjectStreamResponseOutputTextDone": - type: object - properties: - content_index: - type: integer - description: Index position within the text content - text: - type: string - description: >- - Final complete text content of the output item - item_id: - type: string - description: >- - Unique identifier of the completed output item - output_index: - type: integer - description: >- - Index position of the item in the output list - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.output_text.done - default: response.output_text.done - description: >- - Event type identifier, always "response.output_text.done" - additionalProperties: false - required: - - content_index - - text - - item_id - - output_index - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseOutputTextDone - description: >- - Streaming event for when text output is completed. - "OpenAIResponseObjectStreamResponseReasoningSummaryPartAdded": - type: object - properties: - item_id: - type: string - description: Unique identifier of the output item - output_index: - type: integer - description: Index position of the output item - part: - $ref: '#/components/schemas/OpenAIResponseContentPartReasoningSummary' - description: The summary part that was added - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - summary_index: - type: integer - description: >- - Index of the summary part within the reasoning summary - type: - type: string - const: response.reasoning_summary_part.added - default: response.reasoning_summary_part.added - description: >- - Event type identifier, always "response.reasoning_summary_part.added" - additionalProperties: false - required: - - item_id - - output_index - - part - - sequence_number - - summary_index - - type - title: >- - OpenAIResponseObjectStreamResponseReasoningSummaryPartAdded - description: >- - Streaming event for when a new reasoning summary part is added. - "OpenAIResponseObjectStreamResponseReasoningSummaryPartDone": - type: object - properties: - item_id: - type: string - description: Unique identifier of the output item - output_index: - type: integer - description: Index position of the output item - part: - $ref: '#/components/schemas/OpenAIResponseContentPartReasoningSummary' - description: The completed summary part - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - summary_index: - type: integer - description: >- - Index of the summary part within the reasoning summary - type: - type: string - const: response.reasoning_summary_part.done - default: response.reasoning_summary_part.done - description: >- - Event type identifier, always "response.reasoning_summary_part.done" - additionalProperties: false - required: - - item_id - - output_index - - part - - sequence_number - - summary_index - - type - title: >- - OpenAIResponseObjectStreamResponseReasoningSummaryPartDone - description: >- - Streaming event for when a reasoning summary part is completed. - "OpenAIResponseObjectStreamResponseReasoningSummaryTextDelta": - type: object - properties: - delta: - type: string - description: Incremental summary text being added - item_id: - type: string - description: Unique identifier of the output item - output_index: - type: integer - description: Index position of the output item - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - summary_index: - type: integer - description: >- - Index of the summary part within the reasoning summary - type: - type: string - const: response.reasoning_summary_text.delta - default: response.reasoning_summary_text.delta - description: >- - Event type identifier, always "response.reasoning_summary_text.delta" - additionalProperties: false - required: - - delta - - item_id - - output_index - - sequence_number - - summary_index - - type - title: >- - OpenAIResponseObjectStreamResponseReasoningSummaryTextDelta - description: >- - Streaming event for incremental reasoning summary text updates. - "OpenAIResponseObjectStreamResponseReasoningSummaryTextDone": - type: object - properties: - text: - type: string - description: Final complete summary text - item_id: - type: string - description: Unique identifier of the output item - output_index: - type: integer - description: Index position of the output item - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - summary_index: - type: integer - description: >- - Index of the summary part within the reasoning summary - type: - type: string - const: response.reasoning_summary_text.done - default: response.reasoning_summary_text.done - description: >- - Event type identifier, always "response.reasoning_summary_text.done" - additionalProperties: false - required: - - text - - item_id - - output_index - - sequence_number - - summary_index - - type - title: >- - OpenAIResponseObjectStreamResponseReasoningSummaryTextDone - description: >- - Streaming event for when reasoning summary text is completed. - "OpenAIResponseObjectStreamResponseReasoningTextDelta": - type: object - properties: - content_index: - type: integer - description: >- - Index position of the reasoning content part - delta: - type: string - description: Incremental reasoning text being added - item_id: - type: string - description: >- - Unique identifier of the output item being updated - output_index: - type: integer - description: >- - Index position of the item in the output list - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.reasoning_text.delta - default: response.reasoning_text.delta - description: >- - Event type identifier, always "response.reasoning_text.delta" - additionalProperties: false - required: - - content_index - - delta - - item_id - - output_index - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseReasoningTextDelta - description: >- - Streaming event for incremental reasoning text updates. - "OpenAIResponseObjectStreamResponseReasoningTextDone": - type: object - properties: - content_index: - type: integer - description: >- - Index position of the reasoning content part - text: - type: string - description: Final complete reasoning text - item_id: - type: string - description: >- - Unique identifier of the completed output item - output_index: - type: integer - description: >- - Index position of the item in the output list - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.reasoning_text.done - default: response.reasoning_text.done - description: >- - Event type identifier, always "response.reasoning_text.done" - additionalProperties: false - required: - - content_index - - text - - item_id - - output_index - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseReasoningTextDone - description: >- - Streaming event for when reasoning text is completed. - "OpenAIResponseObjectStreamResponseRefusalDelta": - type: object - properties: - content_index: - type: integer - description: Index position of the content part - delta: - type: string - description: Incremental refusal text being added - item_id: - type: string - description: Unique identifier of the output item - output_index: - type: integer - description: >- - Index position of the item in the output list - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.refusal.delta - default: response.refusal.delta - description: >- - Event type identifier, always "response.refusal.delta" - additionalProperties: false - required: - - content_index - - delta - - item_id - - output_index - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseRefusalDelta - description: >- - Streaming event for incremental refusal text updates. - "OpenAIResponseObjectStreamResponseRefusalDone": - type: object - properties: - content_index: - type: integer - description: Index position of the content part - refusal: - type: string - description: Final complete refusal text - item_id: - type: string - description: Unique identifier of the output item - output_index: - type: integer - description: >- - Index position of the item in the output list - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.refusal.done - default: response.refusal.done - description: >- - Event type identifier, always "response.refusal.done" - additionalProperties: false - required: - - content_index - - refusal - - item_id - - output_index - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseRefusalDone - description: >- - Streaming event for when refusal text is completed. - "OpenAIResponseObjectStreamResponseWebSearchCallCompleted": - type: object - properties: - item_id: - type: string - description: >- - Unique identifier of the completed web search call - output_index: - type: integer - description: >- - Index position of the item in the output list - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.web_search_call.completed - default: response.web_search_call.completed - description: >- - Event type identifier, always "response.web_search_call.completed" - additionalProperties: false - required: - - item_id - - output_index - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseWebSearchCallCompleted - description: >- - Streaming event for completed web search calls. - "OpenAIResponseObjectStreamResponseWebSearchCallInProgress": - type: object - properties: - item_id: - type: string - description: Unique identifier of the web search call - output_index: - type: integer - description: >- - Index position of the item in the output list - sequence_number: - type: integer - description: >- - Sequential number for ordering streaming events - type: - type: string - const: response.web_search_call.in_progress - default: response.web_search_call.in_progress - description: >- - Event type identifier, always "response.web_search_call.in_progress" - additionalProperties: false - required: - - item_id - - output_index - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseWebSearchCallInProgress - description: >- - Streaming event for web search calls in progress. - "OpenAIResponseObjectStreamResponseWebSearchCallSearching": - type: object - properties: - item_id: - type: string - output_index: - type: integer - sequence_number: - type: integer - type: - type: string - const: response.web_search_call.searching - default: response.web_search_call.searching - additionalProperties: false - required: - - item_id - - output_index - - sequence_number - - type - title: >- - OpenAIResponseObjectStreamResponseWebSearchCallSearching OpenAIDeleteResponseObject: - type: object - properties: - id: - type: string - description: >- - Unique identifier of the deleted response - object: - type: string - const: response - default: response - description: >- - Object type identifier, always "response" - deleted: - type: boolean - default: true - description: Deletion confirmation flag, always True - additionalProperties: false - required: - - id - - object - - deleted - title: OpenAIDeleteResponseObject description: >- Response object confirming deletion of an OpenAI response. - ListOpenAIResponseInputItem: - type: object + + + :param id: Unique identifier of the deleted response + + :param object: Object type identifier, always "response" + + :param deleted: Deletion confirmation flag, always True properties: - data: - type: array - items: - $ref: '#/components/schemas/OpenAIResponseInput' - description: List of input items - object: + id: + title: Id type: string - const: list - default: list - description: Object type identifier, always "list" - additionalProperties: false + object: + const: response + default: response + title: Object + type: string + deleted: + default: true + title: Deleted + type: boolean required: - - data - - object - title: ListOpenAIResponseInputItem + - id + title: OpenAIDeleteResponseObject + type: object + ListOpenAIResponseInputItem: + $defs: + MCPListToolsTool: + description: >- + Tool definition returned by MCP list tools operation. + + + :param input_schema: JSON schema defining the tool's input parameters + + :param name: Name of the tool + + :param description: (Optional) Description of what the tool does + properties: + input_schema: + additionalProperties: true + title: Input Schema + type: object + name: + title: Name + type: string + description: + anyOf: + - type: string + - type: 'null' + title: Description + required: + - input_schema + - name + title: MCPListToolsTool + type: object + OpenAIResponseAnnotationCitation: + description: >- + URL citation annotation for referencing external web resources. + + + :param type: Annotation type identifier, always "url_citation" + + :param end_index: End position of the citation span in the content + + :param start_index: Start position of the citation span in the content + + :param title: Title of the referenced web resource + + :param url: URL of the referenced web resource + properties: + type: + const: url_citation + default: url_citation + title: Type + type: string + end_index: + title: End Index + type: integer + start_index: + title: Start Index + type: integer + title: + title: Title + type: string + url: + title: Url + type: string + required: + - end_index + - start_index + - title + - url + title: OpenAIResponseAnnotationCitation + type: object + "OpenAIResponseAnnotationContainerFileCitation": + properties: + type: + const: container_file_citation + default: container_file_citation + title: Type + type: string + container_id: + title: Container Id + type: string + end_index: + title: End Index + type: integer + file_id: + title: File Id + type: string + filename: + title: Filename + type: string + start_index: + title: Start Index + type: integer + required: + - container_id + - end_index + - file_id + - filename + - start_index + title: >- + OpenAIResponseAnnotationContainerFileCitation + type: object + OpenAIResponseAnnotationFileCitation: + description: >- + File citation annotation for referencing specific files in response content. + + + :param type: Annotation type identifier, always "file_citation" + + :param file_id: Unique identifier of the referenced file + + :param filename: Name of the referenced file + + :param index: Position index of the citation within the content + properties: + type: + const: file_citation + default: file_citation + title: Type + type: string + file_id: + title: File Id + type: string + filename: + title: Filename + type: string + index: + title: Index + type: integer + required: + - file_id + - filename + - index + title: OpenAIResponseAnnotationFileCitation + type: object + OpenAIResponseAnnotationFilePath: + properties: + type: + const: file_path + default: file_path + title: Type + type: string + file_id: + title: File Id + type: string + index: + title: Index + type: integer + required: + - file_id + - index + title: OpenAIResponseAnnotationFilePath + type: object + OpenAIResponseContentPartRefusal: + description: >- + Refusal content within a streamed response part. + + + :param type: Content part type identifier, always "refusal" + + :param refusal: Refusal text supplied by the model + properties: + type: + const: refusal + default: refusal + title: Type + type: string + refusal: + title: Refusal + type: string + required: + - refusal + title: OpenAIResponseContentPartRefusal + type: object + "OpenAIResponseInputFunctionToolCallOutput": + description: >- + This represents the output of a function call that gets passed back to + the model. + properties: + call_id: + title: Call Id + type: string + output: + title: Output + type: string + type: + const: function_call_output + default: function_call_output + title: Type + type: string + id: + anyOf: + - type: string + - type: 'null' + title: Id + status: + anyOf: + - type: string + - type: 'null' + title: Status + required: + - call_id + - output + title: >- + OpenAIResponseInputFunctionToolCallOutput + type: object + OpenAIResponseInputMessageContentImage: + description: >- + Image content for input messages in OpenAI response format. + + + :param detail: Level of detail for image processing, can be "low", "high", + or "auto" + + :param type: Content type identifier, always "input_image" + + :param image_url: (Optional) URL of the image content + properties: + detail: + anyOf: + - const: low + type: string + - const: high + type: string + - const: auto + type: string + default: auto + title: Detail + type: + const: input_image + default: input_image + title: Type + type: string + image_url: + anyOf: + - type: string + - type: 'null' + title: Image Url + title: OpenAIResponseInputMessageContentImage + type: object + OpenAIResponseInputMessageContentText: + description: >- + Text content for input messages in OpenAI response format. + + + :param text: The text content of the input message + + :param type: Content type identifier, always "input_text" + properties: + text: + title: Text + type: string + type: + const: input_text + default: input_text + title: Type + type: string + required: + - text + title: OpenAIResponseInputMessageContentText + type: object + OpenAIResponseMCPApprovalRequest: + description: >- + A request for human approval of a tool invocation. + properties: + arguments: + title: Arguments + type: string + id: + title: Id + type: string + name: + title: Name + type: string + server_label: + title: Server Label + type: string + type: + const: mcp_approval_request + default: mcp_approval_request + title: Type + type: string + required: + - arguments + - id + - name + - server_label + title: OpenAIResponseMCPApprovalRequest + type: object + OpenAIResponseMCPApprovalResponse: + description: A response to an MCP approval request. + properties: + approval_request_id: + title: Approval Request Id + type: string + approve: + title: Approve + type: boolean + type: + const: mcp_approval_response + default: mcp_approval_response + title: Type + type: string + id: + anyOf: + - type: string + - type: 'null' + title: Id + reason: + anyOf: + - type: string + - type: 'null' + title: Reason + required: + - approval_request_id + - approve + title: OpenAIResponseMCPApprovalResponse + type: object + OpenAIResponseMessage: + description: >- + Corresponds to the various Message types in the Responses API. + + They are all under one type because the Responses API gives them all + + the same "type" value, and there is no way to tell them apart in certain + + scenarios. + properties: + content: + anyOf: + - type: string + - items: + discriminator: + mapping: + input_image: >- + #/$defs/OpenAIResponseInputMessageContentImage + input_text: >- + #/$defs/OpenAIResponseInputMessageContentText + propertyName: type + oneOf: + - $ref: >- + #/$defs/OpenAIResponseInputMessageContentText + - $ref: >- + #/$defs/OpenAIResponseInputMessageContentImage + type: array + - items: + discriminator: + mapping: + output_text: >- + #/$defs/OpenAIResponseOutputMessageContentOutputText + refusal: '#/$defs/OpenAIResponseContentPartRefusal' + propertyName: type + oneOf: + - $ref: >- + #/$defs/OpenAIResponseOutputMessageContentOutputText + - $ref: '#/$defs/OpenAIResponseContentPartRefusal' + type: array + title: Content + role: + anyOf: + - const: system + type: string + - const: developer + type: string + - const: user + type: string + - const: assistant + type: string + title: Role + type: + const: message + default: message + title: Type + type: string + id: + anyOf: + - type: string + - type: 'null' + title: Id + status: + anyOf: + - type: string + - type: 'null' + title: Status + required: + - content + - role + title: OpenAIResponseMessage + type: object + "OpenAIResponseOutputMessageContentOutputText": + properties: + text: + title: Text + type: string + type: + const: output_text + default: output_text + title: Type + type: string + annotations: + items: + discriminator: + mapping: + container_file_citation: >- + #/$defs/OpenAIResponseAnnotationContainerFileCitation + file_citation: >- + #/$defs/OpenAIResponseAnnotationFileCitation + file_path: '#/$defs/OpenAIResponseAnnotationFilePath' + url_citation: '#/$defs/OpenAIResponseAnnotationCitation' + propertyName: type + oneOf: + - $ref: >- + #/$defs/OpenAIResponseAnnotationFileCitation + - $ref: '#/$defs/OpenAIResponseAnnotationCitation' + - $ref: >- + #/$defs/OpenAIResponseAnnotationContainerFileCitation + - $ref: '#/$defs/OpenAIResponseAnnotationFilePath' + title: Annotations + type: array + required: + - text + title: >- + OpenAIResponseOutputMessageContentOutputText + type: object + "OpenAIResponseOutputMessageFileSearchToolCall": + description: >- + File search tool call output message for OpenAI responses. + + + :param id: Unique identifier for this tool call + + :param queries: List of search queries executed + + :param status: Current status of the file search operation + + :param type: Tool call type identifier, always "file_search_call" + + :param results: (Optional) Search results returned by the file search + operation + properties: + id: + title: Id + type: string + queries: + items: + type: string + title: Queries + type: array + status: + title: Status + type: string + type: + const: file_search_call + default: file_search_call + title: Type + type: string + results: + anyOf: + - items: + $ref: >- + #/$defs/OpenAIResponseOutputMessageFileSearchToolCallResults + type: array + - type: 'null' + title: Results + required: + - id + - queries + - status + title: >- + OpenAIResponseOutputMessageFileSearchToolCall + type: object + "OpenAIResponseOutputMessageFileSearchToolCallResults": + description: >- + Search results returned by the file search operation. + + + :param attributes: (Optional) Key-value attributes associated with the + file + + :param file_id: Unique identifier of the file containing the result + + :param filename: Name of the file containing the result + + :param score: Relevance score for this search result (between 0 and 1) + + :param text: Text content of the search result + properties: + attributes: + additionalProperties: true + title: Attributes + type: object + file_id: + title: File Id + type: string + filename: + title: Filename + type: string + score: + title: Score + type: number + text: + title: Text + type: string + required: + - attributes + - file_id + - filename + - score + - text + title: >- + OpenAIResponseOutputMessageFileSearchToolCallResults + type: object + "OpenAIResponseOutputMessageFunctionToolCall": + description: >- + Function tool call output message for OpenAI responses. + + + :param call_id: Unique identifier for the function call + + :param name: Name of the function being called + + :param arguments: JSON string containing the function arguments + + :param type: Tool call type identifier, always "function_call" + + :param id: (Optional) Additional identifier for the tool call + + :param status: (Optional) Current status of the function call execution + properties: + call_id: + title: Call Id + type: string + name: + title: Name + type: string + arguments: + title: Arguments + type: string + type: + const: function_call + default: function_call + title: Type + type: string + id: + anyOf: + - type: string + - type: 'null' + title: Id + status: + anyOf: + - type: string + - type: 'null' + title: Status + required: + - call_id + - name + - arguments + title: >- + OpenAIResponseOutputMessageFunctionToolCall + type: object + OpenAIResponseOutputMessageMCPCall: + description: >- + Model Context Protocol (MCP) call output message for OpenAI responses. + + + :param id: Unique identifier for this MCP call + + :param type: Tool call type identifier, always "mcp_call" + + :param arguments: JSON string containing the MCP call arguments + + :param name: Name of the MCP method being called + + :param server_label: Label identifying the MCP server handling the call + + :param error: (Optional) Error message if the MCP call failed + + :param output: (Optional) Output result from the successful MCP call + properties: + id: + title: Id + type: string + type: + const: mcp_call + default: mcp_call + title: Type + type: string + arguments: + title: Arguments + type: string + name: + title: Name + type: string + server_label: + title: Server Label + type: string + error: + anyOf: + - type: string + - type: 'null' + title: Error + output: + anyOf: + - type: string + - type: 'null' + title: Output + required: + - id + - arguments + - name + - server_label + title: OpenAIResponseOutputMessageMCPCall + type: object + OpenAIResponseOutputMessageMCPListTools: + description: >- + MCP list tools output message containing available tools from an MCP server. + + + :param id: Unique identifier for this MCP list tools operation + + :param type: Tool call type identifier, always "mcp_list_tools" + + :param server_label: Label identifying the MCP server providing the tools + + :param tools: List of available tools provided by the MCP server + properties: + id: + title: Id + type: string + type: + const: mcp_list_tools + default: mcp_list_tools + title: Type + type: string + server_label: + title: Server Label + type: string + tools: + items: + $ref: '#/$defs/MCPListToolsTool' + title: Tools + type: array + required: + - id + - server_label + - tools + title: OpenAIResponseOutputMessageMCPListTools + type: object + "OpenAIResponseOutputMessageWebSearchToolCall": + description: >- + Web search tool call output message for OpenAI responses. + + + :param id: Unique identifier for this tool call + + :param status: Current status of the web search operation + + :param type: Tool call type identifier, always "web_search_call" + properties: + id: + title: Id + type: string + status: + title: Status + type: string + type: + const: web_search_call + default: web_search_call + title: Type + type: string + required: + - id + - status + title: >- + OpenAIResponseOutputMessageWebSearchToolCall + type: object description: >- List container for OpenAI response input items. - RunShieldRequest: - type: object - properties: - shield_id: - type: string - description: The identifier of the shield to run. - messages: - type: array - items: - $ref: '#/components/schemas/OpenAIMessageParam' - description: The messages to run the shield on. - params: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: The parameters of the shield. - additionalProperties: false - required: - - shield_id - - messages - - params - title: RunShieldRequest - RunShieldResponse: - type: object - properties: - violation: - $ref: '#/components/schemas/SafetyViolation' - description: >- - (Optional) Safety violation detected by the shield, if any - additionalProperties: false - title: RunShieldResponse - description: Response from running a safety shield. - SafetyViolation: - type: object - properties: - violation_level: - $ref: '#/components/schemas/ViolationLevel' - description: Severity level of the violation - user_message: - type: string - description: >- - (Optional) Message to convey to the user about the violation - metadata: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - Additional metadata including specific violation codes for debugging and - telemetry - additionalProperties: false - required: - - violation_level - - metadata - title: SafetyViolation - description: >- - Details of a safety violation detected by content moderation. - ViolationLevel: - type: string - enum: - - info - - warn - - error - title: ViolationLevel - description: Severity level of a safety violation. - AgentTurnInputType: - type: object - properties: - type: - type: string - const: agent_turn_input - default: agent_turn_input - description: >- - Discriminator type. Always "agent_turn_input" - additionalProperties: false - required: - - type - title: AgentTurnInputType - description: Parameter type for agent turn input. - AggregationFunctionType: - type: string - enum: - - average - - weighted_average - - median - - categorical_count - - accuracy - title: AggregationFunctionType - description: >- - Types of aggregation functions for scoring results. - ArrayType: - type: object - properties: - type: - type: string - const: array - default: array - description: Discriminator type. Always "array" - additionalProperties: false - required: - - type - title: ArrayType - description: Parameter type for array values. - BasicScoringFnParams: - type: object - properties: - type: - $ref: '#/components/schemas/ScoringFnParamsType' - const: basic - default: basic - description: >- - The type of scoring function parameters, always basic - aggregation_functions: - type: array - items: - $ref: '#/components/schemas/AggregationFunctionType' - description: >- - Aggregation functions to apply to the scores of each row - additionalProperties: false - required: - - type - - aggregation_functions - title: BasicScoringFnParams - description: >- - Parameters for basic scoring function configuration. - BooleanType: - type: object - properties: - type: - type: string - const: boolean - default: boolean - description: Discriminator type. Always "boolean" - additionalProperties: false - required: - - type - title: BooleanType - description: Parameter type for boolean values. - ChatCompletionInputType: - type: object - properties: - type: - type: string - const: chat_completion_input - default: chat_completion_input - description: >- - Discriminator type. Always "chat_completion_input" - additionalProperties: false - required: - - type - title: ChatCompletionInputType - description: >- - Parameter type for chat completion input. - CompletionInputType: - type: object - properties: - type: - type: string - const: completion_input - default: completion_input - description: >- - Discriminator type. Always "completion_input" - additionalProperties: false - required: - - type - title: CompletionInputType - description: Parameter type for completion input. - JsonType: - type: object - properties: - type: - type: string - const: json - default: json - description: Discriminator type. Always "json" - additionalProperties: false - required: - - type - title: JsonType - description: Parameter type for JSON values. - LLMAsJudgeScoringFnParams: - type: object - properties: - type: - $ref: '#/components/schemas/ScoringFnParamsType' - const: llm_as_judge - default: llm_as_judge - description: >- - The type of scoring function parameters, always llm_as_judge - judge_model: - type: string - description: >- - Identifier of the LLM model to use as a judge for scoring - prompt_template: - type: string - description: >- - (Optional) Custom prompt template for the judge model - judge_score_regexes: - type: array - items: - type: string - description: >- - Regexes to extract the answer from generated response - aggregation_functions: - type: array - items: - $ref: '#/components/schemas/AggregationFunctionType' - description: >- - Aggregation functions to apply to the scores of each row - additionalProperties: false - required: - - type - - judge_model - - judge_score_regexes - - aggregation_functions - title: LLMAsJudgeScoringFnParams - description: >- - Parameters for LLM-as-judge scoring function configuration. - NumberType: - type: object - properties: - type: - type: string - const: number - default: number - description: Discriminator type. Always "number" - additionalProperties: false - required: - - type - title: NumberType - description: Parameter type for numeric values. - ObjectType: - type: object - properties: - type: - type: string - const: object - default: object - description: Discriminator type. Always "object" - additionalProperties: false - required: - - type - title: ObjectType - description: Parameter type for object values. - RegexParserScoringFnParams: - type: object - properties: - type: - $ref: '#/components/schemas/ScoringFnParamsType' - const: regex_parser - default: regex_parser - description: >- - The type of scoring function parameters, always regex_parser - parsing_regexes: - type: array - items: - type: string - description: >- - Regex to extract the answer from generated response - aggregation_functions: - type: array - items: - $ref: '#/components/schemas/AggregationFunctionType' - description: >- - Aggregation functions to apply to the scores of each row - additionalProperties: false - required: - - type - - parsing_regexes - - aggregation_functions - title: RegexParserScoringFnParams - description: >- - Parameters for regex parser scoring function configuration. - ScoringFn: - type: object - properties: - identifier: - type: string - provider_resource_id: - type: string - provider_id: - type: string - type: - type: string - enum: - - model - - shield - - vector_store - - dataset - - scoring_function - - benchmark - - tool - - tool_group - - prompt - const: scoring_function - default: scoring_function - description: >- - The resource type, always scoring_function - description: - type: string - metadata: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - return_type: - oneOf: - - $ref: '#/components/schemas/StringType' - - $ref: '#/components/schemas/NumberType' - - $ref: '#/components/schemas/BooleanType' - - $ref: '#/components/schemas/ArrayType' - - $ref: '#/components/schemas/ObjectType' - - $ref: '#/components/schemas/JsonType' - - $ref: '#/components/schemas/UnionType' - - $ref: '#/components/schemas/ChatCompletionInputType' - - $ref: '#/components/schemas/CompletionInputType' - - $ref: '#/components/schemas/AgentTurnInputType' - discriminator: - propertyName: type - mapping: - string: '#/components/schemas/StringType' - number: '#/components/schemas/NumberType' - boolean: '#/components/schemas/BooleanType' - array: '#/components/schemas/ArrayType' - object: '#/components/schemas/ObjectType' - json: '#/components/schemas/JsonType' - union: '#/components/schemas/UnionType' - chat_completion_input: '#/components/schemas/ChatCompletionInputType' - completion_input: '#/components/schemas/CompletionInputType' - agent_turn_input: '#/components/schemas/AgentTurnInputType' - params: - $ref: '#/components/schemas/ScoringFnParams' - additionalProperties: false - required: - - identifier - - provider_id - - type - - metadata - - return_type - title: ScoringFn - description: >- - A scoring function resource for evaluating model outputs. - ScoringFnParams: - oneOf: - - $ref: '#/components/schemas/LLMAsJudgeScoringFnParams' - - $ref: '#/components/schemas/RegexParserScoringFnParams' - - $ref: '#/components/schemas/BasicScoringFnParams' - discriminator: - propertyName: type - mapping: - llm_as_judge: '#/components/schemas/LLMAsJudgeScoringFnParams' - regex_parser: '#/components/schemas/RegexParserScoringFnParams' - basic: '#/components/schemas/BasicScoringFnParams' - ScoringFnParamsType: - type: string - enum: - - llm_as_judge - - regex_parser - - basic - title: ScoringFnParamsType - description: >- - Types of scoring function parameter configurations. - StringType: - type: object - properties: - type: - type: string - const: string - default: string - description: Discriminator type. Always "string" - additionalProperties: false - required: - - type - title: StringType - description: Parameter type for string values. - UnionType: - type: object - properties: - type: - type: string - const: union - default: union - description: Discriminator type. Always "union" - additionalProperties: false - required: - - type - title: UnionType - description: Parameter type for union values. - ListScoringFunctionsResponse: - type: object + + + :param data: List of input items + + :param object: Object type identifier, always "list" properties: data: - type: array items: - $ref: '#/components/schemas/ScoringFn' - additionalProperties: false + anyOf: + - discriminator: + mapping: + file_search_call: >- + #/$defs/OpenAIResponseOutputMessageFileSearchToolCall + function_call: >- + #/$defs/OpenAIResponseOutputMessageFunctionToolCall + mcp_approval_request: '#/$defs/OpenAIResponseMCPApprovalRequest' + mcp_call: >- + #/$defs/OpenAIResponseOutputMessageMCPCall + mcp_list_tools: >- + #/$defs/OpenAIResponseOutputMessageMCPListTools + message: '#/$defs/OpenAIResponseMessage' + web_search_call: >- + #/$defs/OpenAIResponseOutputMessageWebSearchToolCall + propertyName: type + oneOf: + - $ref: '#/$defs/OpenAIResponseMessage' + - $ref: >- + #/$defs/OpenAIResponseOutputMessageWebSearchToolCall + - $ref: >- + #/$defs/OpenAIResponseOutputMessageFileSearchToolCall + - $ref: >- + #/$defs/OpenAIResponseOutputMessageFunctionToolCall + - $ref: >- + #/$defs/OpenAIResponseOutputMessageMCPCall + - $ref: >- + #/$defs/OpenAIResponseOutputMessageMCPListTools + - $ref: '#/$defs/OpenAIResponseMCPApprovalRequest' + - $ref: >- + #/$defs/OpenAIResponseInputFunctionToolCallOutput + - $ref: >- + #/$defs/OpenAIResponseMCPApprovalResponse + - $ref: '#/$defs/OpenAIResponseMessage' + title: Data + type: array + object: + const: list + default: list + title: Object + type: string + required: + - data + title: ListOpenAIResponseInputItem + type: object + RunShieldRequest: + type: object + RunShieldResponse: + $defs: + SafetyViolation: + description: >- + Details of a safety violation detected by content moderation. + + + :param violation_level: Severity level of the violation + + :param user_message: (Optional) Message to convey to the user about the + violation + + :param metadata: Additional metadata including specific violation codes + for debugging and telemetry + properties: + violation_level: + $ref: '#/$defs/ViolationLevel' + user_message: + anyOf: + - type: string + - type: 'null' + title: User Message + metadata: + additionalProperties: true + title: Metadata + type: object + required: + - violation_level + title: SafetyViolation + type: object + ViolationLevel: + description: >- + Severity level of a safety violation. + + + :cvar INFO: Informational level violation that does not require action + + :cvar WARN: Warning level violation that suggests caution but allows continuation + + :cvar ERROR: Error level violation that requires blocking or intervention + enum: + - info + - warn + - error + title: ViolationLevel + type: string + description: >- + Response from running a safety shield. + + + :param violation: (Optional) Safety violation detected by the shield, if any + properties: + violation: + anyOf: + - $ref: '#/$defs/SafetyViolation' + - type: 'null' + title: RunShieldResponse + type: object + ListScoringFunctionsResponse: + $defs: + AgentTurnInputType: + description: >- + Parameter type for agent turn input. + + + :param type: Discriminator type. Always "agent_turn_input" + properties: + type: + const: agent_turn_input + default: agent_turn_input + title: Type + type: string + title: AgentTurnInputType + type: object + AggregationFunctionType: + description: >- + Types of aggregation functions for scoring results. + + :cvar average: Calculate the arithmetic mean of scores + + :cvar weighted_average: Calculate a weighted average of scores + + :cvar median: Calculate the median value of scores + + :cvar categorical_count: Count occurrences of categorical values + + :cvar accuracy: Calculate accuracy as the proportion of correct answers + enum: + - average + - weighted_average + - median + - categorical_count + - accuracy + title: AggregationFunctionType + type: string + ArrayType: + description: >- + Parameter type for array values. + + + :param type: Discriminator type. Always "array" + properties: + type: + const: array + default: array + title: Type + type: string + title: ArrayType + type: object + BasicScoringFnParams: + description: >- + Parameters for basic scoring function configuration. + + :param type: The type of scoring function parameters, always basic + + :param aggregation_functions: Aggregation functions to apply to the scores + of each row + properties: + type: + const: basic + default: basic + title: Type + type: string + aggregation_functions: + description: >- + Aggregation functions to apply to the scores of each row + items: + $ref: '#/$defs/AggregationFunctionType' + title: Aggregation Functions + type: array + title: BasicScoringFnParams + type: object + BooleanType: + description: >- + Parameter type for boolean values. + + + :param type: Discriminator type. Always "boolean" + properties: + type: + const: boolean + default: boolean + title: Type + type: string + title: BooleanType + type: object + ChatCompletionInputType: + description: >- + Parameter type for chat completion input. + + + :param type: Discriminator type. Always "chat_completion_input" + properties: + type: + const: chat_completion_input + default: chat_completion_input + title: Type + type: string + title: ChatCompletionInputType + type: object + CompletionInputType: + description: >- + Parameter type for completion input. + + + :param type: Discriminator type. Always "completion_input" + properties: + type: + const: completion_input + default: completion_input + title: Type + type: string + title: CompletionInputType + type: object + JsonType: + description: >- + Parameter type for JSON values. + + + :param type: Discriminator type. Always "json" + properties: + type: + const: json + default: json + title: Type + type: string + title: JsonType + type: object + LLMAsJudgeScoringFnParams: + description: >- + Parameters for LLM-as-judge scoring function configuration. + + :param type: The type of scoring function parameters, always llm_as_judge + + :param judge_model: Identifier of the LLM model to use as a judge for + scoring + + :param prompt_template: (Optional) Custom prompt template for the judge + model + + :param judge_score_regexes: Regexes to extract the answer from generated + response + + :param aggregation_functions: Aggregation functions to apply to the scores + of each row + properties: + type: + const: llm_as_judge + default: llm_as_judge + title: Type + type: string + judge_model: + title: Judge Model + type: string + prompt_template: + anyOf: + - type: string + - type: 'null' + title: Prompt Template + judge_score_regexes: + description: >- + Regexes to extract the answer from generated response + items: + type: string + title: Judge Score Regexes + type: array + aggregation_functions: + description: >- + Aggregation functions to apply to the scores of each row + items: + $ref: '#/$defs/AggregationFunctionType' + title: Aggregation Functions + type: array + required: + - judge_model + title: LLMAsJudgeScoringFnParams + type: object + NumberType: + description: >- + Parameter type for numeric values. + + + :param type: Discriminator type. Always "number" + properties: + type: + const: number + default: number + title: Type + type: string + title: NumberType + type: object + ObjectType: + description: >- + Parameter type for object values. + + + :param type: Discriminator type. Always "object" + properties: + type: + const: object + default: object + title: Type + type: string + title: ObjectType + type: object + RegexParserScoringFnParams: + description: >- + Parameters for regex parser scoring function configuration. + + :param type: The type of scoring function parameters, always regex_parser + + :param parsing_regexes: Regex to extract the answer from generated response + + :param aggregation_functions: Aggregation functions to apply to the scores + of each row + properties: + type: + const: regex_parser + default: regex_parser + title: Type + type: string + parsing_regexes: + description: >- + Regex to extract the answer from generated response + items: + type: string + title: Parsing Regexes + type: array + aggregation_functions: + description: >- + Aggregation functions to apply to the scores of each row + items: + $ref: '#/$defs/AggregationFunctionType' + title: Aggregation Functions + type: array + title: RegexParserScoringFnParams + type: object + ScoringFn: + description: >- + A scoring function resource for evaluating model outputs. + + :param type: The resource type, always scoring_function + properties: + identifier: + description: >- + Unique identifier for this resource in llama stack + title: Identifier + type: string + provider_resource_id: + anyOf: + - type: string + - type: 'null' + description: >- + Unique identifier for this resource in the provider + title: Provider Resource Id + provider_id: + description: >- + ID of the provider that owns this resource + title: Provider Id + type: string + type: + const: scoring_function + default: scoring_function + title: Type + type: string + description: + anyOf: + - type: string + - type: 'null' + title: Description + metadata: + additionalProperties: true + description: >- + Any additional metadata for this definition + title: Metadata + type: object + return_type: + description: >- + The return type of the deterministic function + discriminator: + mapping: + agent_turn_input: '#/$defs/AgentTurnInputType' + array: '#/$defs/ArrayType' + boolean: '#/$defs/BooleanType' + chat_completion_input: '#/$defs/ChatCompletionInputType' + completion_input: '#/$defs/CompletionInputType' + json: '#/$defs/JsonType' + number: '#/$defs/NumberType' + object: '#/$defs/ObjectType' + string: '#/$defs/StringType' + union: '#/$defs/UnionType' + propertyName: type + oneOf: + - $ref: '#/$defs/StringType' + - $ref: '#/$defs/NumberType' + - $ref: '#/$defs/BooleanType' + - $ref: '#/$defs/ArrayType' + - $ref: '#/$defs/ObjectType' + - $ref: '#/$defs/JsonType' + - $ref: '#/$defs/UnionType' + - $ref: '#/$defs/ChatCompletionInputType' + - $ref: '#/$defs/CompletionInputType' + - $ref: '#/$defs/AgentTurnInputType' + title: Return Type + params: + anyOf: + - discriminator: + mapping: + basic: '#/$defs/BasicScoringFnParams' + llm_as_judge: '#/$defs/LLMAsJudgeScoringFnParams' + regex_parser: '#/$defs/RegexParserScoringFnParams' + propertyName: type + oneOf: + - $ref: '#/$defs/LLMAsJudgeScoringFnParams' + - $ref: '#/$defs/RegexParserScoringFnParams' + - $ref: '#/$defs/BasicScoringFnParams' + - type: 'null' + description: >- + The parameters for the scoring function for benchmark eval, these + can be overridden for app eval + title: Params + required: + - identifier + - provider_id + - return_type + title: ScoringFn + type: object + StringType: + description: >- + Parameter type for string values. + + + :param type: Discriminator type. Always "string" + properties: + type: + const: string + default: string + title: Type + type: string + title: StringType + type: object + UnionType: + description: >- + Parameter type for union values. + + + :param type: Discriminator type. Always "union" + properties: + type: + const: union + default: union + title: Type + type: string + title: UnionType + type: object + properties: + data: + items: + $ref: '#/$defs/ScoringFn' + title: Data + type: array required: - data title: ListScoringFunctionsResponse - ParamType: - oneOf: - - $ref: '#/components/schemas/StringType' - - $ref: '#/components/schemas/NumberType' - - $ref: '#/components/schemas/BooleanType' - - $ref: '#/components/schemas/ArrayType' - - $ref: '#/components/schemas/ObjectType' - - $ref: '#/components/schemas/JsonType' - - $ref: '#/components/schemas/UnionType' - - $ref: '#/components/schemas/ChatCompletionInputType' - - $ref: '#/components/schemas/CompletionInputType' - - $ref: '#/components/schemas/AgentTurnInputType' - discriminator: - propertyName: type - mapping: - string: '#/components/schemas/StringType' - number: '#/components/schemas/NumberType' - boolean: '#/components/schemas/BooleanType' - array: '#/components/schemas/ArrayType' - object: '#/components/schemas/ObjectType' - json: '#/components/schemas/JsonType' - union: '#/components/schemas/UnionType' - chat_completion_input: '#/components/schemas/ChatCompletionInputType' - completion_input: '#/components/schemas/CompletionInputType' - agent_turn_input: '#/components/schemas/AgentTurnInputType' + type: object RegisterScoringFunctionRequest: type: object - properties: - scoring_fn_id: - type: string + ScoringFn: + $defs: + AgentTurnInputType: description: >- - The ID of the scoring function to register. - description: - type: string - description: The description of the scoring function. - return_type: - $ref: '#/components/schemas/ParamType' - description: The return type of the scoring function. - provider_scoring_fn_id: - type: string + Parameter type for agent turn input. + + + :param type: Discriminator type. Always "agent_turn_input" + properties: + type: + const: agent_turn_input + default: agent_turn_input + title: Type + type: string + title: AgentTurnInputType + type: object + AggregationFunctionType: description: >- - The ID of the provider scoring function to use for the scoring function. - provider_id: + Types of aggregation functions for scoring results. + + :cvar average: Calculate the arithmetic mean of scores + + :cvar weighted_average: Calculate a weighted average of scores + + :cvar median: Calculate the median value of scores + + :cvar categorical_count: Count occurrences of categorical values + + :cvar accuracy: Calculate accuracy as the proportion of correct answers + enum: + - average + - weighted_average + - median + - categorical_count + - accuracy + title: AggregationFunctionType type: string + ArrayType: description: >- - The ID of the provider to use for the scoring function. - params: - $ref: '#/components/schemas/ScoringFnParams' + Parameter type for array values. + + + :param type: Discriminator type. Always "array" + properties: + type: + const: array + default: array + title: Type + type: string + title: ArrayType + type: object + BasicScoringFnParams: description: >- - The parameters for the scoring function for benchmark eval, these can - be overridden for app eval. - additionalProperties: false - required: - - scoring_fn_id - - description - - return_type - title: RegisterScoringFunctionRequest - ScoreRequest: - type: object - properties: - input_rows: - type: array - items: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number + Parameters for basic scoring function configuration. + + :param type: The type of scoring function parameters, always basic + + :param aggregation_functions: Aggregation functions to apply to the scores + of each row + properties: + type: + const: basic + default: basic + title: Type + type: string + aggregation_functions: + description: >- + Aggregation functions to apply to the scores of each row + items: + $ref: '#/$defs/AggregationFunctionType' + title: Aggregation Functions + type: array + title: BasicScoringFnParams + type: object + BooleanType: + description: >- + Parameter type for boolean values. + + + :param type: Discriminator type. Always "boolean" + properties: + type: + const: boolean + default: boolean + title: Type + type: string + title: BooleanType + type: object + ChatCompletionInputType: + description: >- + Parameter type for chat completion input. + + + :param type: Discriminator type. Always "chat_completion_input" + properties: + type: + const: chat_completion_input + default: chat_completion_input + title: Type + type: string + title: ChatCompletionInputType + type: object + CompletionInputType: + description: >- + Parameter type for completion input. + + + :param type: Discriminator type. Always "completion_input" + properties: + type: + const: completion_input + default: completion_input + title: Type + type: string + title: CompletionInputType + type: object + JsonType: + description: >- + Parameter type for JSON values. + + + :param type: Discriminator type. Always "json" + properties: + type: + const: json + default: json + title: Type + type: string + title: JsonType + type: object + LLMAsJudgeScoringFnParams: + description: >- + Parameters for LLM-as-judge scoring function configuration. + + :param type: The type of scoring function parameters, always llm_as_judge + + :param judge_model: Identifier of the LLM model to use as a judge for + scoring + + :param prompt_template: (Optional) Custom prompt template for the judge + model + + :param judge_score_regexes: Regexes to extract the answer from generated + response + + :param aggregation_functions: Aggregation functions to apply to the scores + of each row + properties: + type: + const: llm_as_judge + default: llm_as_judge + title: Type + type: string + judge_model: + title: Judge Model + type: string + prompt_template: + anyOf: - type: string - - type: array - - type: object - description: The rows to score. - scoring_functions: - type: object - additionalProperties: - oneOf: - - $ref: '#/components/schemas/ScoringFnParams' - - type: 'null' - description: >- - The scoring functions to use for the scoring. - additionalProperties: false - required: - - input_rows - - scoring_functions - title: ScoreRequest - ScoreResponse: - type: object - properties: - results: - type: object - additionalProperties: - $ref: '#/components/schemas/ScoringResult' - description: >- - A map of scoring function name to ScoringResult. - additionalProperties: false - required: - - results - title: ScoreResponse - description: The response from scoring. - ScoringResult: - type: object - properties: - score_rows: - type: array - items: - type: object - additionalProperties: - oneOf: - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - The scoring result for each row. Each row is a map of column name to value. - aggregated_results: + title: Prompt Template + judge_score_regexes: + description: >- + Regexes to extract the answer from generated response + items: + type: string + title: Judge Score Regexes + type: array + aggregation_functions: + description: >- + Aggregation functions to apply to the scores of each row + items: + $ref: '#/$defs/AggregationFunctionType' + title: Aggregation Functions + type: array + required: + - judge_model + title: LLMAsJudgeScoringFnParams type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: Map of metric name to aggregated value - additionalProperties: false - required: - - score_rows - - aggregated_results - title: ScoringResult - description: A scoring result for a single row. - ScoreBatchRequest: - type: object - properties: - dataset_id: - type: string - description: The ID of the dataset to score. - scoring_functions: + NumberType: + description: >- + Parameter type for numeric values. + + + :param type: Discriminator type. Always "number" + properties: + type: + const: number + default: number + title: Type + type: string + title: NumberType type: object - additionalProperties: - oneOf: - - $ref: '#/components/schemas/ScoringFnParams' - - type: 'null' + ObjectType: description: >- - The scoring functions to use for the scoring. - save_results_dataset: - type: boolean - description: >- - Whether to save the results to a dataset. - additionalProperties: false - required: - - dataset_id - - scoring_functions - - save_results_dataset - title: ScoreBatchRequest - ScoreBatchResponse: - type: object - properties: - dataset_id: - type: string - description: >- - (Optional) The identifier of the dataset that was scored - results: + Parameter type for object values. + + + :param type: Discriminator type. Always "object" + properties: + type: + const: object + default: object + title: Type + type: string + title: ObjectType type: object - additionalProperties: - $ref: '#/components/schemas/ScoringResult' + RegexParserScoringFnParams: description: >- - A map of scoring function name to ScoringResult - additionalProperties: false - required: - - results - title: ScoreBatchResponse + Parameters for regex parser scoring function configuration. + + :param type: The type of scoring function parameters, always regex_parser + + :param parsing_regexes: Regex to extract the answer from generated response + + :param aggregation_functions: Aggregation functions to apply to the scores + of each row + properties: + type: + const: regex_parser + default: regex_parser + title: Type + type: string + parsing_regexes: + description: >- + Regex to extract the answer from generated response + items: + type: string + title: Parsing Regexes + type: array + aggregation_functions: + description: >- + Aggregation functions to apply to the scores of each row + items: + $ref: '#/$defs/AggregationFunctionType' + title: Aggregation Functions + type: array + title: RegexParserScoringFnParams + type: object + StringType: + description: >- + Parameter type for string values. + + + :param type: Discriminator type. Always "string" + properties: + type: + const: string + default: string + title: Type + type: string + title: StringType + type: object + UnionType: + description: >- + Parameter type for union values. + + + :param type: Discriminator type. Always "union" + properties: + type: + const: union + default: union + title: Type + type: string + title: UnionType + type: object description: >- - Response from batch scoring operations on datasets. - Shield: - type: object + A scoring function resource for evaluating model outputs. + + :param type: The resource type, always scoring_function properties: identifier: + description: >- + Unique identifier for this resource in llama stack + title: Identifier type: string provider_resource_id: - type: string + anyOf: + - type: string + - type: 'null' + description: >- + Unique identifier for this resource in the provider + title: Provider Resource Id provider_id: + description: >- + ID of the provider that owns this resource + title: Provider Id type: string type: + const: scoring_function + default: scoring_function + title: Type type: string - enum: - - model - - shield - - vector_store - - dataset - - scoring_function - - benchmark - - tool - - tool_group - - prompt - const: shield - default: shield - description: The resource type, always shield - params: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object + description: + anyOf: + - type: string + - type: 'null' + title: Description + metadata: + additionalProperties: true description: >- - (Optional) Configuration parameters for the shield - additionalProperties: false + Any additional metadata for this definition + title: Metadata + type: object + return_type: + description: >- + The return type of the deterministic function + discriminator: + mapping: + agent_turn_input: '#/$defs/AgentTurnInputType' + array: '#/$defs/ArrayType' + boolean: '#/$defs/BooleanType' + chat_completion_input: '#/$defs/ChatCompletionInputType' + completion_input: '#/$defs/CompletionInputType' + json: '#/$defs/JsonType' + number: '#/$defs/NumberType' + object: '#/$defs/ObjectType' + string: '#/$defs/StringType' + union: '#/$defs/UnionType' + propertyName: type + oneOf: + - $ref: '#/$defs/StringType' + - $ref: '#/$defs/NumberType' + - $ref: '#/$defs/BooleanType' + - $ref: '#/$defs/ArrayType' + - $ref: '#/$defs/ObjectType' + - $ref: '#/$defs/JsonType' + - $ref: '#/$defs/UnionType' + - $ref: '#/$defs/ChatCompletionInputType' + - $ref: '#/$defs/CompletionInputType' + - $ref: '#/$defs/AgentTurnInputType' + title: Return Type + params: + anyOf: + - discriminator: + mapping: + basic: '#/$defs/BasicScoringFnParams' + llm_as_judge: '#/$defs/LLMAsJudgeScoringFnParams' + regex_parser: '#/$defs/RegexParserScoringFnParams' + propertyName: type + oneOf: + - $ref: '#/$defs/LLMAsJudgeScoringFnParams' + - $ref: '#/$defs/RegexParserScoringFnParams' + - $ref: '#/$defs/BasicScoringFnParams' + - type: 'null' + description: >- + The parameters for the scoring function for benchmark eval, these can + be overridden for app eval + title: Params required: - identifier - provider_id - - type - title: Shield - description: >- - A safety shield resource that can be used to check content. - ListShieldsResponse: + - return_type + title: ScoringFn type: object + ScoreRequest: + type: object + ScoreResponse: + $defs: + ScoringResult: + description: >- + A scoring result for a single row. + + + :param score_rows: The scoring result for each row. Each row is a map + of column name to value. + + :param aggregated_results: Map of metric name to aggregated value + properties: + score_rows: + items: + additionalProperties: true + type: object + title: Score Rows + type: array + aggregated_results: + additionalProperties: true + title: Aggregated Results + type: object + required: + - score_rows + - aggregated_results + title: ScoringResult + type: object + description: >- + The response from scoring. + + + :param results: A map of scoring function name to ScoringResult. + properties: + results: + additionalProperties: + $ref: '#/$defs/ScoringResult' + title: Results + type: object + required: + - results + title: ScoreResponse + type: object + ScoreBatchRequest: + type: object + ScoreBatchResponse: + $defs: + ScoringResult: + description: >- + A scoring result for a single row. + + + :param score_rows: The scoring result for each row. Each row is a map + of column name to value. + + :param aggregated_results: Map of metric name to aggregated value + properties: + score_rows: + items: + additionalProperties: true + type: object + title: Score Rows + type: array + aggregated_results: + additionalProperties: true + title: Aggregated Results + type: object + required: + - score_rows + - aggregated_results + title: ScoringResult + type: object + description: >- + Response from batch scoring operations on datasets. + + + :param dataset_id: (Optional) The identifier of the dataset that was scored + + :param results: A map of scoring function name to ScoringResult + properties: + dataset_id: + anyOf: + - type: string + - type: 'null' + title: Dataset Id + results: + additionalProperties: + $ref: '#/$defs/ScoringResult' + title: Results + type: object + required: + - results + title: ScoreBatchResponse + type: object + ListShieldsResponse: + $defs: + Shield: + description: >- + A safety shield resource that can be used to check content. + + + :param params: (Optional) Configuration parameters for the shield + + :param type: The resource type, always shield + properties: + identifier: + description: >- + Unique identifier for this resource in llama stack + title: Identifier + type: string + provider_resource_id: + anyOf: + - type: string + - type: 'null' + description: >- + Unique identifier for this resource in the provider + title: Provider Resource Id + provider_id: + description: >- + ID of the provider that owns this resource + title: Provider Id + type: string + type: + const: shield + default: shield + title: Type + type: string + params: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Params + required: + - identifier + - provider_id + title: Shield + type: object properties: data: - type: array items: - $ref: '#/components/schemas/Shield' - additionalProperties: false + $ref: '#/$defs/Shield' + title: Data + type: array required: - data title: ListShieldsResponse + type: object RegisterShieldRequest: type: object properties: @@ -10279,209 +14070,584 @@ components: default: > Result {index} - Content: {chunk.content} - Metadata: {metadata} - description: >- - Template for formatting each retrieved chunk in the context. Available - placeholders: {index} (1-based chunk ordinal), {chunk.content} (chunk - content string), {metadata} (chunk metadata dict). Default: "Result {index}\nContent: - {chunk.content}\nMetadata: {metadata}\n" - mode: - $ref: '#/components/schemas/RAGSearchMode' - default: vector - description: >- - Search mode for retrieval—either "vector", "keyword", or "hybrid". Default - "vector". - ranker: - $ref: '#/components/schemas/Ranker' - description: >- - Configuration for the ranker to use in hybrid search. Defaults to RRF - ranker. - additionalProperties: false - required: - - query_generator_config - - max_tokens_in_context - - max_chunks - - chunk_template - title: RAGQueryConfig - description: >- - Configuration for the RAG query generation. - RAGSearchMode: - type: string - enum: - - vector - - keyword - - hybrid - title: RAGSearchMode - description: >- - Search modes for RAG query retrieval: - VECTOR: Uses vector similarity search - for semantic matching - KEYWORD: Uses keyword-based search for exact matching - - HYBRID: Combines both vector and keyword search for better results - RRFRanker: - type: object - properties: - type: - type: string - const: rrf - default: rrf - description: The type of ranker, always "rrf" - impact_factor: - type: number - default: 60.0 - description: >- - The impact factor for RRF scoring. Higher values give more weight to higher-ranked - results. Must be greater than 0 - additionalProperties: false - required: - - type - - impact_factor - title: RRFRanker - description: >- - Reciprocal Rank Fusion (RRF) ranker configuration. - Ranker: - oneOf: - - $ref: '#/components/schemas/RRFRanker' - - $ref: '#/components/schemas/WeightedRanker' - discriminator: - propertyName: type - mapping: - rrf: '#/components/schemas/RRFRanker' - weighted: '#/components/schemas/WeightedRanker' - WeightedRanker: - type: object - properties: - type: - type: string - const: weighted - default: weighted - description: The type of ranker, always "weighted" - alpha: - type: number - default: 0.5 - description: >- - Weight factor between 0 and 1. 0 means only use keyword scores, 1 means - only use vector scores, values in between blend both scores. - additionalProperties: false - required: - - type - - alpha - title: WeightedRanker - description: >- - Weighted ranker configuration that combines vector and keyword scores. - QueryRequest: - type: object - properties: - content: - $ref: '#/components/schemas/InterleavedContent' - description: >- - The query content to search for in the indexed documents - vector_store_ids: - type: array - items: - type: string - description: >- - List of vector database IDs to search within - query_config: - $ref: '#/components/schemas/RAGQueryConfig' - description: >- - (Optional) Configuration parameters for the query operation - additionalProperties: false - required: - - content - - vector_store_ids - title: QueryRequest - RAGQueryResult: - type: object - properties: - content: - $ref: '#/components/schemas/InterleavedContent' - description: >- - (Optional) The retrieved content from the query - metadata: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - Additional metadata about the query result - additionalProperties: false - required: - - metadata - title: RAGQueryResult - description: >- - Result of a RAG query containing retrieved content and metadata. - ToolGroup: - type: object + :param params: (Optional) Configuration parameters for the shield + + :param type: The resource type, always shield properties: identifier: + description: >- + Unique identifier for this resource in llama stack + title: Identifier type: string provider_resource_id: - type: string + anyOf: + - type: string + - type: 'null' + description: >- + Unique identifier for this resource in the provider + title: Provider Resource Id provider_id: + description: >- + ID of the provider that owns this resource + title: Provider Id type: string type: + const: shield + default: shield + title: Type type: string - enum: - - model - - shield - - vector_store - - dataset - - scoring_function - - benchmark - - tool - - tool_group - - prompt - const: tool_group - default: tool_group - description: Type of resource, always 'tool_group' - mcp_endpoint: - $ref: '#/components/schemas/URL' - description: >- - (Optional) Model Context Protocol endpoint for remote tools - args: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - (Optional) Additional arguments for the tool group - additionalProperties: false + params: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Params required: - identifier - provider_id - - type - title: ToolGroup - description: >- - A group of related tools managed together. - ListToolGroupsResponse: + title: Shield type: object + SyntheticDataGenerateRequest: + type: object + SyntheticDataGenerationResponse: + description: >- + Response from the synthetic data generation. Batch of (prompt, response, score) + tuples that pass the threshold. + + + :param synthetic_data: List of generated synthetic data samples that passed + the filtering criteria + + :param statistics: (Optional) Statistical information about the generation + process and filtering results + properties: + synthetic_data: + items: + additionalProperties: true + type: object + title: Synthetic Data + type: array + statistics: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Statistics + required: + - synthetic_data + title: SyntheticDataGenerationResponse + type: object + InvokeToolRequest: + type: object + ToolInvocationResult: + $defs: + ImageContentItem: + description: >- + A image content item + + + :param type: Discriminator type of the content item. Always "image" + + :param image: Image as a base64 encoded string or an URL + properties: + type: + const: image + default: image + title: Type + type: string + image: + $ref: '#/$defs/_URLOrData' + required: + - image + title: ImageContentItem + type: object + TextContentItem: + description: >- + A text content item + + + :param type: Discriminator type of the content item. Always "text" + + :param text: Text content + properties: + type: + const: text + default: text + title: Type + type: string + text: + title: Text + type: string + required: + - text + title: TextContentItem + type: object + URL: + description: >- + A URL reference to external content. + + + :param uri: The URL string pointing to the resource + properties: + uri: + title: Uri + type: string + required: + - uri + title: URL + type: object + _URLOrData: + description: >- + A URL or a base64 encoded string + + + :param url: A URL of the image or data URL in the format of data:image/{type};base64,{data}. + Note that URL could have length limits. + + :param data: base64 encoded image data as string + properties: + url: + anyOf: + - $ref: '#/$defs/URL' + - type: 'null' + data: + anyOf: + - type: string + - type: 'null' + contentEncoding: base64 + title: Data + title: _URLOrData + type: object + description: >- + Result of a tool invocation. + + + :param content: (Optional) The output content from the tool execution + + :param error_message: (Optional) Error message if the tool execution failed + + :param error_code: (Optional) Numeric error code if the tool execution failed + + :param metadata: (Optional) Additional metadata about the tool execution + properties: + content: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + - type: 'null' + title: Content + error_message: + anyOf: + - type: string + - type: 'null' + title: Error Message + error_code: + anyOf: + - type: integer + - type: 'null' + title: Error Code + metadata: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Metadata + title: ToolInvocationResult + type: object + URL: + description: >- + A URL reference to external content. + + + :param uri: The URL string pointing to the resource + properties: + uri: + title: Uri + type: string + required: + - uri + title: URL + type: object + ListToolDefsResponse: + $defs: + ToolDef: + description: >- + Tool definition used in runtime contexts. + + + :param name: Name of the tool + + :param description: (Optional) Human-readable description of what the + tool does + + :param input_schema: (Optional) JSON Schema for tool inputs (MCP inputSchema) + + :param output_schema: (Optional) JSON Schema for tool outputs (MCP outputSchema) + + :param metadata: (Optional) Additional metadata about the tool + + :param toolgroup_id: (Optional) ID of the tool group this tool belongs + to + properties: + toolgroup_id: + anyOf: + - type: string + - type: 'null' + title: Toolgroup Id + name: + title: Name + type: string + description: + anyOf: + - type: string + - type: 'null' + title: Description + input_schema: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Input Schema + output_schema: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Output Schema + metadata: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Metadata + required: + - name + title: ToolDef + type: object + description: >- + Response containing a list of tool definitions. + + + :param data: List of tool definitions properties: data: - type: array items: - $ref: '#/components/schemas/ToolGroup' - description: List of tool groups - additionalProperties: false + $ref: '#/$defs/ToolDef' + title: Data + type: array + required: + - data + title: ListToolDefsResponse + type: object + InsertRequest: + type: object + QueryRequest: + type: object + RAGQueryResult: + $defs: + ImageContentItem: + description: >- + A image content item + + + :param type: Discriminator type of the content item. Always "image" + + :param image: Image as a base64 encoded string or an URL + properties: + type: + const: image + default: image + title: Type + type: string + image: + $ref: '#/$defs/_URLOrData' + required: + - image + title: ImageContentItem + type: object + TextContentItem: + description: >- + A text content item + + + :param type: Discriminator type of the content item. Always "text" + + :param text: Text content + properties: + type: + const: text + default: text + title: Type + type: string + text: + title: Text + type: string + required: + - text + title: TextContentItem + type: object + URL: + description: >- + A URL reference to external content. + + + :param uri: The URL string pointing to the resource + properties: + uri: + title: Uri + type: string + required: + - uri + title: URL + type: object + _URLOrData: + description: >- + A URL or a base64 encoded string + + + :param url: A URL of the image or data URL in the format of data:image/{type};base64,{data}. + Note that URL could have length limits. + + :param data: base64 encoded image data as string + properties: + url: + anyOf: + - $ref: '#/$defs/URL' + - type: 'null' + data: + anyOf: + - type: string + - type: 'null' + contentEncoding: base64 + title: Data + title: _URLOrData + type: object + description: >- + Result of a RAG query containing retrieved content and metadata. + + + :param content: (Optional) The retrieved content from the query + + :param metadata: Additional metadata about the query result + properties: + content: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + - type: 'null' + title: Content + metadata: + additionalProperties: true + title: Metadata + type: object + title: RAGQueryResult + type: object + ListToolGroupsResponse: + $defs: + ToolGroup: + description: >- + A group of related tools managed together. + + + :param type: Type of resource, always 'tool_group' + + :param mcp_endpoint: (Optional) Model Context Protocol endpoint for remote + tools + + :param args: (Optional) Additional arguments for the tool group + properties: + identifier: + description: >- + Unique identifier for this resource in llama stack + title: Identifier + type: string + provider_resource_id: + anyOf: + - type: string + - type: 'null' + description: >- + Unique identifier for this resource in the provider + title: Provider Resource Id + provider_id: + description: >- + ID of the provider that owns this resource + title: Provider Id + type: string + type: + const: tool_group + default: tool_group + title: Type + type: string + mcp_endpoint: + anyOf: + - $ref: '#/$defs/URL' + - type: 'null' + args: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Args + required: + - identifier + - provider_id + title: ToolGroup + type: object + URL: + description: >- + A URL reference to external content. + + + :param uri: The URL string pointing to the resource + properties: + uri: + title: Uri + type: string + required: + - uri + title: URL + type: object + description: >- + Response containing a list of tool groups. + + + :param data: List of tool groups + properties: + data: + items: + $ref: '#/$defs/ToolGroup' + title: Data + type: array required: - data title: ListToolGroupsResponse - description: >- - Response containing a list of tool groups. + type: object RegisterToolGroupRequest: type: object + ToolGroup: + $defs: + URL: + description: >- + A URL reference to external content. + + + :param uri: The URL string pointing to the resource + properties: + uri: + title: Uri + type: string + required: + - uri + title: URL + type: object + description: >- + A group of related tools managed together. + + + :param type: Type of resource, always 'tool_group' + + :param mcp_endpoint: (Optional) Model Context Protocol endpoint for remote + tools + + :param args: (Optional) Additional arguments for the tool group + properties: + identifier: + description: >- + Unique identifier for this resource in llama stack + title: Identifier + type: string + provider_resource_id: + anyOf: + - type: string + - type: 'null' + description: >- + Unique identifier for this resource in the provider + title: Provider Resource Id + provider_id: + description: >- + ID of the provider that owns this resource + title: Provider Id + type: string + type: + const: tool_group + default: tool_group + title: Type + type: string + mcp_endpoint: + anyOf: + - $ref: '#/$defs/URL' + - type: 'null' + args: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Args + required: + - identifier + - provider_id + title: ToolGroup + type: object + ToolDef: + description: >- + Tool definition used in runtime contexts. + + + :param name: Name of the tool + + :param description: (Optional) Human-readable description of what the tool + does + + :param input_schema: (Optional) JSON Schema for tool inputs (MCP inputSchema) + + :param output_schema: (Optional) JSON Schema for tool outputs (MCP outputSchema) + + :param metadata: (Optional) Additional metadata about the tool + + :param toolgroup_id: (Optional) ID of the tool group this tool belongs to properties: toolgroup_id: + anyOf: + - type: string + - type: 'null' + title: Toolgroup Id + name: + title: Name type: string description: The ID of the tool group to register. provider_id: @@ -10556,1555 +14722,2286 @@ components: A chunk of content that can be inserted into a vector database. ChunkMetadata: type: object - properties: - chunk_id: - type: string - description: >- - The ID of the chunk. If not set, it will be generated based on the document - ID and content. - document_id: - type: string - description: >- - The ID of the document this chunk belongs to. - source: - type: string - description: >- - The source of the content, such as a URL, file path, or other identifier. - created_timestamp: - type: integer - description: >- - An optional timestamp indicating when the chunk was created. - updated_timestamp: - type: integer - description: >- - An optional timestamp indicating when the chunk was last updated. - chunk_window: - type: string - description: >- - The window of the chunk, which can be used to group related chunks together. - chunk_tokenizer: - type: string - description: >- - The tokenizer used to create the chunk. Default is Tiktoken. - chunk_embedding_model: - type: string - description: >- - The embedding model used to create the chunk's embedding. - chunk_embedding_dimension: - type: integer - description: >- - The dimension of the embedding vector for the chunk. - content_token_count: - type: integer - description: >- - The number of tokens in the content of the chunk. - metadata_token_count: - type: integer - description: >- - The number of tokens in the metadata of the chunk. - additionalProperties: false - title: ChunkMetadata - description: >- - `ChunkMetadata` is backend metadata for a `Chunk` that is used to store additional - information about the chunk that will not be used in the context during - inference, but is required for backend functionality. The `ChunkMetadata` is - set during chunk creation in `MemoryToolRuntimeImpl().insert()`and is not - expected to change after. Use `Chunk.metadata` for metadata that will - be used in the context during inference. InsertChunksRequest: type: object - properties: - vector_store_id: - type: string - description: >- - The identifier of the vector database to insert the chunks into. - chunks: - type: array - items: - $ref: '#/components/schemas/Chunk' - description: >- - The chunks to insert. Each `Chunk` should contain content which can be - interleaved text, images, or other types. `metadata`: `dict[str, Any]` - and `embedding`: `List[float]` are optional. If `metadata` is provided, - you configure how Llama Stack formats the chunk during generation. If - `embedding` is not provided, it will be computed later. - ttl_seconds: - type: integer - description: The time to live of the chunks. - additionalProperties: false - required: - - vector_store_id - - chunks - title: InsertChunksRequest QueryChunksRequest: type: object - properties: - vector_store_id: - type: string - description: >- - The identifier of the vector database to query. - query: - $ref: '#/components/schemas/InterleavedContent' - description: The query to search for. - params: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: The parameters of the query. - additionalProperties: false - required: - - vector_store_id - - query - title: QueryChunksRequest QueryChunksResponse: - type: object + $defs: + Chunk: + description: >- + A chunk of content that can be inserted into a vector database. + + :param content: The content of the chunk, which can be interleaved text, + images, or other types. + + :param embedding: Optional embedding for the chunk. If not provided, it + will be computed later. + + :param metadata: Metadata associated with the chunk that will be used + in the model context during inference. + + :param stored_chunk_id: The chunk ID that is stored in the vector database. + Used for backend functionality. + + :param chunk_metadata: Metadata for the chunk that will NOT be used in + the context during inference. + The `chunk_metadata` is required backend functionality. + properties: + content: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + title: Content + metadata: + additionalProperties: true + title: Metadata + type: object + embedding: + anyOf: + - items: + type: number + type: array + - type: 'null' + title: Embedding + chunk_id: + anyOf: + - type: string + - type: 'null' + title: Chunk Id + chunk_metadata: + anyOf: + - $ref: '#/$defs/ChunkMetadata' + - type: 'null' + required: + - content + title: Chunk + type: object + ChunkMetadata: + description: >- + `ChunkMetadata` is backend metadata for a `Chunk` that is used to store + additional information about the chunk that + will not be used in the context during inference, but is required + for backend functionality. The `ChunkMetadata` + is set during chunk creation in `MemoryToolRuntimeImpl().insert()`and + is not expected to change after. + Use `Chunk.metadata` for metadata that will be used in the context + during inference. + :param chunk_id: The ID of the chunk. If not set, it will be generated + based on the document ID and content. + + :param document_id: The ID of the document this chunk belongs to. + + :param source: The source of the content, such as a URL, file path, or + other identifier. + + :param created_timestamp: An optional timestamp indicating when the chunk + was created. + + :param updated_timestamp: An optional timestamp indicating when the chunk + was last updated. + + :param chunk_window: The window of the chunk, which can be used to group + related chunks together. + + :param chunk_tokenizer: The tokenizer used to create the chunk. Default + is Tiktoken. + + :param chunk_embedding_model: The embedding model used to create the chunk's + embedding. + + :param chunk_embedding_dimension: The dimension of the embedding vector + for the chunk. + + :param content_token_count: The number of tokens in the content of the + chunk. + + :param metadata_token_count: The number of tokens in the metadata of the + chunk. + properties: + chunk_id: + anyOf: + - type: string + - type: 'null' + title: Chunk Id + document_id: + anyOf: + - type: string + - type: 'null' + title: Document Id + source: + anyOf: + - type: string + - type: 'null' + title: Source + created_timestamp: + anyOf: + - type: integer + - type: 'null' + title: Created Timestamp + updated_timestamp: + anyOf: + - type: integer + - type: 'null' + title: Updated Timestamp + chunk_window: + anyOf: + - type: string + - type: 'null' + title: Chunk Window + chunk_tokenizer: + anyOf: + - type: string + - type: 'null' + title: Chunk Tokenizer + chunk_embedding_model: + anyOf: + - type: string + - type: 'null' + title: Chunk Embedding Model + chunk_embedding_dimension: + anyOf: + - type: integer + - type: 'null' + title: Chunk Embedding Dimension + content_token_count: + anyOf: + - type: integer + - type: 'null' + title: Content Token Count + metadata_token_count: + anyOf: + - type: integer + - type: 'null' + title: Metadata Token Count + title: ChunkMetadata + type: object + ImageContentItem: + description: >- + A image content item + + + :param type: Discriminator type of the content item. Always "image" + + :param image: Image as a base64 encoded string or an URL + properties: + type: + const: image + default: image + title: Type + type: string + image: + $ref: '#/$defs/_URLOrData' + required: + - image + title: ImageContentItem + type: object + TextContentItem: + description: >- + A text content item + + + :param type: Discriminator type of the content item. Always "text" + + :param text: Text content + properties: + type: + const: text + default: text + title: Type + type: string + text: + title: Text + type: string + required: + - text + title: TextContentItem + type: object + URL: + description: >- + A URL reference to external content. + + + :param uri: The URL string pointing to the resource + properties: + uri: + title: Uri + type: string + required: + - uri + title: URL + type: object + _URLOrData: + description: >- + A URL or a base64 encoded string + + + :param url: A URL of the image or data URL in the format of data:image/{type};base64,{data}. + Note that URL could have length limits. + + :param data: base64 encoded image data as string + properties: + url: + anyOf: + - $ref: '#/$defs/URL' + - type: 'null' + data: + anyOf: + - type: string + - type: 'null' + contentEncoding: base64 + title: Data + title: _URLOrData + type: object + description: >- + Response from querying chunks in a vector database. + + + :param chunks: List of content chunks returned from the query + + :param scores: Relevance scores corresponding to each returned chunk properties: chunks: - type: array items: - $ref: '#/components/schemas/Chunk' - description: >- - List of content chunks returned from the query - scores: + $ref: '#/$defs/Chunk' + title: Chunks type: array + scores: items: type: number - description: >- - Relevance scores corresponding to each returned chunk - additionalProperties: false + title: Scores + type: array required: - chunks - scores title: QueryChunksResponse - description: >- - Response from querying chunks in a vector database. - VectorStoreFileCounts: type: object - properties: - completed: - type: integer - description: >- - Number of files that have been successfully processed - cancelled: - type: integer - description: >- - Number of files that had their processing cancelled - failed: - type: integer - description: Number of files that failed to process - in_progress: - type: integer - description: >- - Number of files currently being processed - total: - type: integer - description: >- - Total number of files in the vector store - additionalProperties: false - required: - - completed - - cancelled - - failed - - in_progress - - total - title: VectorStoreFileCounts - description: >- - File processing status counts for a vector store. VectorStoreListResponse: - type: object + $defs: + VectorStoreFileCounts: + description: >- + File processing status counts for a vector store. + + + :param completed: Number of files that have been successfully processed + + :param cancelled: Number of files that had their processing cancelled + + :param failed: Number of files that failed to process + + :param in_progress: Number of files currently being processed + + :param total: Total number of files in the vector store + properties: + completed: + title: Completed + type: integer + cancelled: + title: Cancelled + type: integer + failed: + title: Failed + type: integer + in_progress: + title: In Progress + type: integer + total: + title: Total + type: integer + required: + - completed + - cancelled + - failed + - in_progress + - total + title: VectorStoreFileCounts + type: object + VectorStoreObject: + description: >- + OpenAI Vector Store object. + + + :param id: Unique identifier for the vector store + + :param object: Object type identifier, always "vector_store" + + :param created_at: Timestamp when the vector store was created + + :param name: (Optional) Name of the vector store + + :param usage_bytes: Storage space used by the vector store in bytes + + :param file_counts: File processing status counts for the vector store + + :param status: Current status of the vector store + + :param expires_after: (Optional) Expiration policy for the vector store + + :param expires_at: (Optional) Timestamp when the vector store will expire + + :param last_active_at: (Optional) Timestamp of last activity on the vector + store + + :param metadata: Set of key-value pairs that can be attached to the vector + store + properties: + id: + title: Id + type: string + object: + default: vector_store + title: Object + type: string + created_at: + title: Created At + type: integer + name: + anyOf: + - type: string + - type: 'null' + title: Name + usage_bytes: + default: 0 + title: Usage Bytes + type: integer + file_counts: + $ref: '#/$defs/VectorStoreFileCounts' + status: + default: completed + title: Status + type: string + expires_after: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Expires After + expires_at: + anyOf: + - type: integer + - type: 'null' + title: Expires At + last_active_at: + anyOf: + - type: integer + - type: 'null' + title: Last Active At + metadata: + additionalProperties: true + title: Metadata + type: object + required: + - id + - created_at + - file_counts + title: VectorStoreObject + type: object + description: >- + Response from listing vector stores. + + + :param object: Object type identifier, always "list" + + :param data: List of vector store objects + + :param first_id: (Optional) ID of the first vector store in the list for pagination + + :param last_id: (Optional) ID of the last vector store in the list for pagination + + :param has_more: Whether there are more vector stores available beyond this + page properties: object: - type: string default: list - description: Object type identifier, always "list" + title: Object + type: string data: - type: array items: - $ref: '#/components/schemas/VectorStoreObject' - description: List of vector store objects + $ref: '#/$defs/VectorStoreObject' + title: Data + type: array first_id: - type: string - description: >- - (Optional) ID of the first vector store in the list for pagination + anyOf: + - type: string + - type: 'null' + title: First Id last_id: - type: string - description: >- - (Optional) ID of the last vector store in the list for pagination + anyOf: + - type: string + - type: 'null' + title: Last Id has_more: - type: boolean default: false - description: >- - Whether there are more vector stores available beyond this page - additionalProperties: false + title: Has More + type: boolean required: - - object - data - - has_more title: VectorStoreListResponse - description: Response from listing vector stores. - VectorStoreObject: type: object + VectorStoreObject: + $defs: + VectorStoreFileCounts: + description: >- + File processing status counts for a vector store. + + + :param completed: Number of files that have been successfully processed + + :param cancelled: Number of files that had their processing cancelled + + :param failed: Number of files that failed to process + + :param in_progress: Number of files currently being processed + + :param total: Total number of files in the vector store + properties: + completed: + title: Completed + type: integer + cancelled: + title: Cancelled + type: integer + failed: + title: Failed + type: integer + in_progress: + title: In Progress + type: integer + total: + title: Total + type: integer + required: + - completed + - cancelled + - failed + - in_progress + - total + title: VectorStoreFileCounts + type: object + description: >- + OpenAI Vector Store object. + + + :param id: Unique identifier for the vector store + + :param object: Object type identifier, always "vector_store" + + :param created_at: Timestamp when the vector store was created + + :param name: (Optional) Name of the vector store + + :param usage_bytes: Storage space used by the vector store in bytes + + :param file_counts: File processing status counts for the vector store + + :param status: Current status of the vector store + + :param expires_after: (Optional) Expiration policy for the vector store + + :param expires_at: (Optional) Timestamp when the vector store will expire + + :param last_active_at: (Optional) Timestamp of last activity on the vector + store + + :param metadata: Set of key-value pairs that can be attached to the vector + store properties: id: + title: Id type: string - description: Unique identifier for the vector store object: - type: string default: vector_store - description: >- - Object type identifier, always "vector_store" + title: Object + type: string created_at: + title: Created At type: integer - description: >- - Timestamp when the vector store was created name: - type: string - description: (Optional) Name of the vector store + anyOf: + - type: string + - type: 'null' + title: Name usage_bytes: - type: integer default: 0 - description: >- - Storage space used by the vector store in bytes + title: Usage Bytes + type: integer file_counts: - $ref: '#/components/schemas/VectorStoreFileCounts' - description: >- - File processing status counts for the vector store + $ref: '#/$defs/VectorStoreFileCounts' status: - type: string default: completed - description: Current status of the vector store + title: Status + type: string expires_after: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - (Optional) Expiration policy for the vector store + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Expires After expires_at: - type: integer - description: >- - (Optional) Timestamp when the vector store will expire + anyOf: + - type: integer + - type: 'null' + title: Expires At last_active_at: - type: integer - description: >- - (Optional) Timestamp of last activity on the vector store + anyOf: + - type: integer + - type: 'null' + title: Last Active At metadata: + additionalProperties: true + title: Metadata type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - Set of key-value pairs that can be attached to the vector store - additionalProperties: false required: - id - - object - created_at - - usage_bytes - file_counts - - status - - metadata title: VectorStoreObject - description: OpenAI Vector Store object. - "OpenAICreateVectorStoreRequestWithExtraBody": type: object - properties: - name: - type: string - description: (Optional) A name for the vector store - file_ids: - type: array - items: - type: string - description: >- - List of file IDs to include in the vector store - expires_after: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - (Optional) Expiration policy for the vector store - chunking_strategy: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - (Optional) Strategy for splitting files into chunks - metadata: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - Set of key-value pairs that can be attached to the vector store - additionalProperties: false - title: >- - OpenAICreateVectorStoreRequestWithExtraBody - description: >- - Request to create a vector store with extra_body support. OpenaiUpdateVectorStoreRequest: type: object - properties: - name: - type: string - description: The name of the vector store. - expires_after: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - The expiration policy for a vector store. - metadata: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - Set of 16 key-value pairs that can be attached to an object. - additionalProperties: false - title: OpenaiUpdateVectorStoreRequest VectorStoreDeleteResponse: - type: object + description: >- + Response from deleting a vector store. + + + :param id: Unique identifier of the deleted vector store + + :param object: Object type identifier for the deletion response + + :param deleted: Whether the deletion operation was successful properties: id: + title: Id type: string - description: >- - Unique identifier of the deleted vector store object: - type: string default: vector_store.deleted - description: >- - Object type identifier for the deletion response + title: Object + type: string deleted: - type: boolean default: true - description: >- - Whether the deletion operation was successful - additionalProperties: false + title: Deleted + type: boolean required: - id - - object - - deleted title: VectorStoreDeleteResponse - description: Response from deleting a vector store. - VectorStoreChunkingStrategy: - oneOf: - - $ref: '#/components/schemas/VectorStoreChunkingStrategyAuto' - - $ref: '#/components/schemas/VectorStoreChunkingStrategyStatic' - discriminator: - propertyName: type - mapping: - auto: '#/components/schemas/VectorStoreChunkingStrategyAuto' - static: '#/components/schemas/VectorStoreChunkingStrategyStatic' - VectorStoreChunkingStrategyAuto: type: object - properties: - type: - type: string - const: auto - default: auto - description: >- - Strategy type, always "auto" for automatic chunking - additionalProperties: false - required: - - type - title: VectorStoreChunkingStrategyAuto - description: >- - Automatic chunking strategy for vector store files. - VectorStoreChunkingStrategyStatic: - type: object - properties: - type: - type: string - const: static - default: static - description: >- - Strategy type, always "static" for static chunking - static: - $ref: '#/components/schemas/VectorStoreChunkingStrategyStaticConfig' - description: >- - Configuration parameters for the static chunking strategy - additionalProperties: false - required: - - type - - static - title: VectorStoreChunkingStrategyStatic - description: >- - Static chunking strategy with configurable parameters. - VectorStoreChunkingStrategyStaticConfig: - type: object - properties: - chunk_overlap_tokens: - type: integer - default: 400 - description: >- - Number of tokens to overlap between adjacent chunks - max_chunk_size_tokens: - type: integer - default: 800 - description: >- - Maximum number of tokens per chunk, must be between 100 and 4096 - additionalProperties: false - required: - - chunk_overlap_tokens - - max_chunk_size_tokens - title: VectorStoreChunkingStrategyStaticConfig - description: >- - Configuration for static chunking strategy. - "OpenAICreateVectorStoreFileBatchRequestWithExtraBody": - type: object - properties: - file_ids: - type: array - items: - type: string - description: >- - A list of File IDs that the vector store should use - attributes: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - (Optional) Key-value attributes to store with the files - chunking_strategy: - $ref: '#/components/schemas/VectorStoreChunkingStrategy' - description: >- - (Optional) The chunking strategy used to chunk the file(s). Defaults to - auto - additionalProperties: false - required: - - file_ids - title: >- - OpenAICreateVectorStoreFileBatchRequestWithExtraBody - description: >- - Request to create a vector store file batch with extra_body support. VectorStoreFileBatchObject: - type: object + $defs: + VectorStoreFileCounts: + description: >- + File processing status counts for a vector store. + + + :param completed: Number of files that have been successfully processed + + :param cancelled: Number of files that had their processing cancelled + + :param failed: Number of files that failed to process + + :param in_progress: Number of files currently being processed + + :param total: Total number of files in the vector store + properties: + completed: + title: Completed + type: integer + cancelled: + title: Cancelled + type: integer + failed: + title: Failed + type: integer + in_progress: + title: In Progress + type: integer + total: + title: Total + type: integer + required: + - completed + - cancelled + - failed + - in_progress + - total + title: VectorStoreFileCounts + type: object + description: >- + OpenAI Vector Store File Batch object. + + + :param id: Unique identifier for the file batch + + :param object: Object type identifier, always "vector_store.file_batch" + + :param created_at: Timestamp when the file batch was created + + :param vector_store_id: ID of the vector store containing the file batch + + :param status: Current processing status of the file batch + + :param file_counts: File processing status counts for the batch properties: id: + title: Id type: string - description: Unique identifier for the file batch object: - type: string default: vector_store.file_batch - description: >- - Object type identifier, always "vector_store.file_batch" - created_at: - type: integer - description: >- - Timestamp when the file batch was created - vector_store_id: + title: Object + type: string + created_at: + title: Created At + type: integer + vector_store_id: + title: Vector Store Id type: string - description: >- - ID of the vector store containing the file batch status: - $ref: '#/components/schemas/VectorStoreFileStatus' - description: >- - Current processing status of the file batch + anyOf: + - const: completed + type: string + - const: in_progress + type: string + - const: cancelled + type: string + - const: failed + type: string + title: Status file_counts: - $ref: '#/components/schemas/VectorStoreFileCounts' - description: >- - File processing status counts for the batch - additionalProperties: false + $ref: '#/$defs/VectorStoreFileCounts' required: - id - - object - created_at - vector_store_id - status - file_counts title: VectorStoreFileBatchObject - description: OpenAI Vector Store File Batch object. - VectorStoreFileStatus: - oneOf: - - type: string - const: completed - - type: string - const: in_progress - - type: string - const: cancelled - - type: string - const: failed - VectorStoreFileLastError: type: object - properties: - code: - oneOf: - - type: string - const: server_error - - type: string - const: rate_limit_exceeded + VectorStoreFilesListInBatchResponse: + $defs: + VectorStoreChunkingStrategyAuto: description: >- - Error code indicating the type of failure - message: - type: string + Automatic chunking strategy for vector store files. + + + :param type: Strategy type, always "auto" for automatic chunking + properties: + type: + const: auto + default: auto + title: Type + type: string + title: VectorStoreChunkingStrategyAuto + type: object + VectorStoreChunkingStrategyStatic: description: >- - Human-readable error message describing the failure - additionalProperties: false - required: - - code - - message - title: VectorStoreFileLastError + Static chunking strategy with configurable parameters. + + + :param type: Strategy type, always "static" for static chunking + + :param static: Configuration parameters for the static chunking strategy + properties: + type: + const: static + default: static + title: Type + type: string + static: + $ref: >- + #/$defs/VectorStoreChunkingStrategyStaticConfig + required: + - static + title: VectorStoreChunkingStrategyStatic + type: object + VectorStoreChunkingStrategyStaticConfig: + description: >- + Configuration for static chunking strategy. + + + :param chunk_overlap_tokens: Number of tokens to overlap between adjacent + chunks + + :param max_chunk_size_tokens: Maximum number of tokens per chunk, must + be between 100 and 4096 + properties: + chunk_overlap_tokens: + default: 400 + title: Chunk Overlap Tokens + type: integer + max_chunk_size_tokens: + default: 800 + maximum: 4096 + minimum: 100 + title: Max Chunk Size Tokens + type: integer + title: VectorStoreChunkingStrategyStaticConfig + type: object + VectorStoreFileLastError: + description: >- + Error information for failed vector store file processing. + + + :param code: Error code indicating the type of failure + + :param message: Human-readable error message describing the failure + properties: + code: + anyOf: + - const: server_error + type: string + - const: rate_limit_exceeded + type: string + title: Code + message: + title: Message + type: string + required: + - code + - message + title: VectorStoreFileLastError + type: object + VectorStoreFileObject: + description: >- + OpenAI Vector Store File object. + + + :param id: Unique identifier for the file + + :param object: Object type identifier, always "vector_store.file" + + :param attributes: Key-value attributes associated with the file + + :param chunking_strategy: Strategy used for splitting the file into chunks + + :param created_at: Timestamp when the file was added to the vector store + + :param last_error: (Optional) Error information if file processing failed + + :param status: Current processing status of the file + + :param usage_bytes: Storage space used by this file in bytes + + :param vector_store_id: ID of the vector store containing this file + properties: + id: + title: Id + type: string + object: + default: vector_store.file + title: Object + type: string + attributes: + additionalProperties: true + title: Attributes + type: object + chunking_strategy: + discriminator: + mapping: + auto: '#/$defs/VectorStoreChunkingStrategyAuto' + static: >- + #/$defs/VectorStoreChunkingStrategyStatic + propertyName: type + oneOf: + - $ref: '#/$defs/VectorStoreChunkingStrategyAuto' + - $ref: >- + #/$defs/VectorStoreChunkingStrategyStatic + title: Chunking Strategy + created_at: + title: Created At + type: integer + last_error: + anyOf: + - $ref: '#/$defs/VectorStoreFileLastError' + - type: 'null' + status: + anyOf: + - const: completed + type: string + - const: in_progress + type: string + - const: cancelled + type: string + - const: failed + type: string + title: Status + usage_bytes: + default: 0 + title: Usage Bytes + type: integer + vector_store_id: + title: Vector Store Id + type: string + required: + - id + - chunking_strategy + - created_at + - status + - vector_store_id + title: VectorStoreFileObject + type: object description: >- - Error information for failed vector store file processing. - VectorStoreFileObject: + Response from listing files in a vector store file batch. + + + :param object: Object type identifier, always "list" + + :param data: List of vector store file objects in the batch + + :param first_id: (Optional) ID of the first file in the list for pagination + + :param last_id: (Optional) ID of the last file in the list for pagination + + :param has_more: Whether there are more files available beyond this page + properties: + object: + default: list + title: Object + type: string + data: + items: + $ref: '#/$defs/VectorStoreFileObject' + title: Data + type: array + first_id: + anyOf: + - type: string + - type: 'null' + title: First Id + last_id: + anyOf: + - type: string + - type: 'null' + title: Last Id + has_more: + default: false + title: Has More + type: boolean + required: + - data + title: VectorStoreFilesListInBatchResponse type: object + Union: + type: object + nullable: true + VectorStoreListFilesResponse: + $defs: + VectorStoreChunkingStrategyAuto: + description: >- + Automatic chunking strategy for vector store files. + + + :param type: Strategy type, always "auto" for automatic chunking + properties: + type: + const: auto + default: auto + title: Type + type: string + title: VectorStoreChunkingStrategyAuto + type: object + VectorStoreChunkingStrategyStatic: + description: >- + Static chunking strategy with configurable parameters. + + + :param type: Strategy type, always "static" for static chunking + + :param static: Configuration parameters for the static chunking strategy + properties: + type: + const: static + default: static + title: Type + type: string + static: + $ref: >- + #/$defs/VectorStoreChunkingStrategyStaticConfig + required: + - static + title: VectorStoreChunkingStrategyStatic + type: object + VectorStoreChunkingStrategyStaticConfig: + description: >- + Configuration for static chunking strategy. + + + :param chunk_overlap_tokens: Number of tokens to overlap between adjacent + chunks + + :param max_chunk_size_tokens: Maximum number of tokens per chunk, must + be between 100 and 4096 + properties: + chunk_overlap_tokens: + default: 400 + title: Chunk Overlap Tokens + type: integer + max_chunk_size_tokens: + default: 800 + maximum: 4096 + minimum: 100 + title: Max Chunk Size Tokens + type: integer + title: VectorStoreChunkingStrategyStaticConfig + type: object + VectorStoreFileLastError: + description: >- + Error information for failed vector store file processing. + + + :param code: Error code indicating the type of failure + + :param message: Human-readable error message describing the failure + properties: + code: + anyOf: + - const: server_error + type: string + - const: rate_limit_exceeded + type: string + title: Code + message: + title: Message + type: string + required: + - code + - message + title: VectorStoreFileLastError + type: object + VectorStoreFileObject: + description: >- + OpenAI Vector Store File object. + + + :param id: Unique identifier for the file + + :param object: Object type identifier, always "vector_store.file" + + :param attributes: Key-value attributes associated with the file + + :param chunking_strategy: Strategy used for splitting the file into chunks + + :param created_at: Timestamp when the file was added to the vector store + + :param last_error: (Optional) Error information if file processing failed + + :param status: Current processing status of the file + + :param usage_bytes: Storage space used by this file in bytes + + :param vector_store_id: ID of the vector store containing this file + properties: + id: + title: Id + type: string + object: + default: vector_store.file + title: Object + type: string + attributes: + additionalProperties: true + title: Attributes + type: object + chunking_strategy: + discriminator: + mapping: + auto: '#/$defs/VectorStoreChunkingStrategyAuto' + static: >- + #/$defs/VectorStoreChunkingStrategyStatic + propertyName: type + oneOf: + - $ref: '#/$defs/VectorStoreChunkingStrategyAuto' + - $ref: >- + #/$defs/VectorStoreChunkingStrategyStatic + title: Chunking Strategy + created_at: + title: Created At + type: integer + last_error: + anyOf: + - $ref: '#/$defs/VectorStoreFileLastError' + - type: 'null' + status: + anyOf: + - const: completed + type: string + - const: in_progress + type: string + - const: cancelled + type: string + - const: failed + type: string + title: Status + usage_bytes: + default: 0 + title: Usage Bytes + type: integer + vector_store_id: + title: Vector Store Id + type: string + required: + - id + - chunking_strategy + - created_at + - status + - vector_store_id + title: VectorStoreFileObject + type: object + description: >- + Response from listing files in a vector store. + + + :param object: Object type identifier, always "list" + + :param data: List of vector store file objects + + :param first_id: (Optional) ID of the first file in the list for pagination + + :param last_id: (Optional) ID of the last file in the list for pagination + + :param has_more: Whether there are more files available beyond this page + properties: + object: + default: list + title: Object + type: string + data: + items: + $ref: '#/$defs/VectorStoreFileObject' + title: Data + type: array + first_id: + anyOf: + - type: string + - type: 'null' + title: First Id + last_id: + anyOf: + - type: string + - type: 'null' + title: Last Id + has_more: + default: false + title: Has More + type: boolean + required: + - data + title: VectorStoreListFilesResponse + type: object + OpenaiAttachFileToVectorStoreRequest: + type: object + VectorStoreFileObject: + $defs: + VectorStoreChunkingStrategyAuto: + description: >- + Automatic chunking strategy for vector store files. + + + :param type: Strategy type, always "auto" for automatic chunking + properties: + type: + const: auto + default: auto + title: Type + type: string + title: VectorStoreChunkingStrategyAuto + type: object + VectorStoreChunkingStrategyStatic: + description: >- + Static chunking strategy with configurable parameters. + + + :param type: Strategy type, always "static" for static chunking + + :param static: Configuration parameters for the static chunking strategy + properties: + type: + const: static + default: static + title: Type + type: string + static: + $ref: >- + #/$defs/VectorStoreChunkingStrategyStaticConfig + required: + - static + title: VectorStoreChunkingStrategyStatic + type: object + VectorStoreChunkingStrategyStaticConfig: + description: >- + Configuration for static chunking strategy. + + + :param chunk_overlap_tokens: Number of tokens to overlap between adjacent + chunks + + :param max_chunk_size_tokens: Maximum number of tokens per chunk, must + be between 100 and 4096 + properties: + chunk_overlap_tokens: + default: 400 + title: Chunk Overlap Tokens + type: integer + max_chunk_size_tokens: + default: 800 + maximum: 4096 + minimum: 100 + title: Max Chunk Size Tokens + type: integer + title: VectorStoreChunkingStrategyStaticConfig + type: object + VectorStoreFileLastError: + description: >- + Error information for failed vector store file processing. + + + :param code: Error code indicating the type of failure + + :param message: Human-readable error message describing the failure + properties: + code: + anyOf: + - const: server_error + type: string + - const: rate_limit_exceeded + type: string + title: Code + message: + title: Message + type: string + required: + - code + - message + title: VectorStoreFileLastError + type: object + description: >- + OpenAI Vector Store File object. + + + :param id: Unique identifier for the file + + :param object: Object type identifier, always "vector_store.file" + + :param attributes: Key-value attributes associated with the file + + :param chunking_strategy: Strategy used for splitting the file into chunks + + :param created_at: Timestamp when the file was added to the vector store + + :param last_error: (Optional) Error information if file processing failed + + :param status: Current processing status of the file + + :param usage_bytes: Storage space used by this file in bytes + + :param vector_store_id: ID of the vector store containing this file properties: id: + title: Id type: string - description: Unique identifier for the file object: - type: string default: vector_store.file - description: >- - Object type identifier, always "vector_store.file" - attributes: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - Key-value attributes associated with the file - chunking_strategy: - oneOf: - - $ref: '#/components/schemas/VectorStoreChunkingStrategyAuto' - - $ref: '#/components/schemas/VectorStoreChunkingStrategyStatic' - discriminator: - propertyName: type - mapping: - auto: '#/components/schemas/VectorStoreChunkingStrategyAuto' - static: '#/components/schemas/VectorStoreChunkingStrategyStatic' - description: >- - Strategy used for splitting the file into chunks - created_at: - type: integer - description: >- - Timestamp when the file was added to the vector store - last_error: - $ref: '#/components/schemas/VectorStoreFileLastError' - description: >- - (Optional) Error information if file processing failed - status: - $ref: '#/components/schemas/VectorStoreFileStatus' - description: Current processing status of the file - usage_bytes: - type: integer - default: 0 - description: Storage space used by this file in bytes - vector_store_id: + title: Object + type: string + attributes: + additionalProperties: true + title: Attributes + type: object + chunking_strategy: + discriminator: + mapping: + auto: '#/$defs/VectorStoreChunkingStrategyAuto' + static: >- + #/$defs/VectorStoreChunkingStrategyStatic + propertyName: type + oneOf: + - $ref: '#/$defs/VectorStoreChunkingStrategyAuto' + - $ref: >- + #/$defs/VectorStoreChunkingStrategyStatic + title: Chunking Strategy + created_at: + title: Created At + type: integer + last_error: + anyOf: + - $ref: '#/$defs/VectorStoreFileLastError' + - type: 'null' + status: + anyOf: + - const: completed + type: string + - const: in_progress + type: string + - const: cancelled + type: string + - const: failed + type: string + title: Status + usage_bytes: + default: 0 + title: Usage Bytes + type: integer + vector_store_id: + title: Vector Store Id type: string - description: >- - ID of the vector store containing this file - additionalProperties: false required: - id - - object - - attributes - chunking_strategy - created_at - status - - usage_bytes - vector_store_id title: VectorStoreFileObject - description: OpenAI Vector Store File object. - VectorStoreFilesListInBatchResponse: type: object - properties: - object: - type: string - default: list - description: Object type identifier, always "list" - data: - type: array - items: - $ref: '#/components/schemas/VectorStoreFileObject' - description: >- - List of vector store file objects in the batch - first_id: - type: string - description: >- - (Optional) ID of the first file in the list for pagination - last_id: - type: string - description: >- - (Optional) ID of the last file in the list for pagination - has_more: - type: boolean - default: false - description: >- - Whether there are more files available beyond this page - additionalProperties: false - required: - - object - - data - - has_more - title: VectorStoreFilesListInBatchResponse - description: >- - Response from listing files in a vector store file batch. - VectorStoreListFilesResponse: - type: object - properties: - object: - type: string - default: list - description: Object type identifier, always "list" - data: - type: array - items: - $ref: '#/components/schemas/VectorStoreFileObject' - description: List of vector store file objects - first_id: - type: string - description: >- - (Optional) ID of the first file in the list for pagination - last_id: - type: string - description: >- - (Optional) ID of the last file in the list for pagination - has_more: - type: boolean - default: false - description: >- - Whether there are more files available beyond this page - additionalProperties: false - required: - - object - - data - - has_more - title: VectorStoreListFilesResponse - description: >- - Response from listing files in a vector store. - OpenaiAttachFileToVectorStoreRequest: - type: object - properties: - file_id: - type: string - description: >- - The ID of the file to attach to the vector store. - attributes: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - The key-value attributes stored with the file, which can be used for filtering. - chunking_strategy: - $ref: '#/components/schemas/VectorStoreChunkingStrategy' - description: >- - The chunking strategy to use for the file. - additionalProperties: false - required: - - file_id - title: OpenaiAttachFileToVectorStoreRequest OpenaiUpdateVectorStoreFileRequest: type: object - properties: - attributes: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - The updated key-value attributes to store with the file. - additionalProperties: false - required: - - attributes - title: OpenaiUpdateVectorStoreFileRequest VectorStoreFileDeleteResponse: - type: object - properties: - id: - type: string - description: Unique identifier of the deleted file - object: - type: string - default: vector_store.file.deleted - description: >- - Object type identifier for the deletion response - deleted: - type: boolean - default: true - description: >- - Whether the deletion operation was successful - additionalProperties: false - required: - - id - - object - - deleted - title: VectorStoreFileDeleteResponse description: >- Response from deleting a vector store file. - VectorStoreContent: - type: object + + + :param id: Unique identifier of the deleted file + + :param object: Object type identifier for the deletion response + + :param deleted: Whether the deletion operation was successful properties: - type: + id: + title: Id type: string - const: text - description: >- - Content type, currently only "text" is supported - text: + object: + default: vector_store.file.deleted + title: Object type: string - description: The actual text content - additionalProperties: false + deleted: + default: true + title: Deleted + type: boolean required: - - type - - text - title: VectorStoreContent - description: >- - Content item from a vector store file or search result. - VectorStoreFileContentsResponse: + - id + title: VectorStoreFileDeleteResponse type: object + VectorStoreFileContentsResponse: + $defs: + VectorStoreContent: + description: >- + Content item from a vector store file or search result. + + + :param type: Content type, currently only "text" is supported + + :param text: The actual text content + properties: + type: + const: text + title: Type + type: string + text: + title: Text + type: string + required: + - type + - text + title: VectorStoreContent + type: object + description: >- + Response from retrieving the contents of a vector store file. + + + :param file_id: Unique identifier for the file + + :param filename: Name of the file + + :param attributes: Key-value attributes associated with the file + + :param content: List of content items from the file properties: file_id: + title: File Id type: string - description: Unique identifier for the file filename: + title: Filename type: string - description: Name of the file attributes: + additionalProperties: true + title: Attributes type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - Key-value attributes associated with the file content: - type: array items: - $ref: '#/components/schemas/VectorStoreContent' - description: List of content items from the file - additionalProperties: false + $ref: '#/$defs/VectorStoreContent' + title: Content + type: array required: - file_id - filename - attributes - content title: VectorStoreFileContentsResponse - description: >- - Response from retrieving the contents of a vector store file. + type: object OpenaiSearchVectorStoreRequest: type: object - properties: - query: - oneOf: - - type: string - - type: array - items: - type: string - description: >- - The query string or array for performing the search. - filters: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - Filters based on file attributes to narrow the search results. - max_num_results: - type: integer - description: >- - Maximum number of results to return (1 to 50 inclusive, default 10). - ranking_options: - type: object - properties: - ranker: - type: string - description: >- - (Optional) Name of the ranking algorithm to use - score_threshold: - type: number - default: 0.0 - description: >- - (Optional) Minimum relevance score threshold for results - additionalProperties: false - description: >- - Ranking options for fine-tuning the search results. - rewrite_query: - type: boolean - description: >- - Whether to rewrite the natural language query for vector search (default - false) - search_mode: - type: string - description: >- - The search mode to use - "keyword", "vector", or "hybrid" (default "vector") - additionalProperties: false - required: - - query - title: OpenaiSearchVectorStoreRequest - VectorStoreSearchResponse: - type: object - properties: - file_id: - type: string - description: >- - Unique identifier of the file containing the result - filename: - type: string - description: Name of the file containing the result - score: - type: number - description: Relevance score for this search result - attributes: - type: object - additionalProperties: - oneOf: - - type: string - - type: number - - type: boolean - description: >- - (Optional) Key-value attributes associated with the file - content: - type: array - items: - $ref: '#/components/schemas/VectorStoreContent' - description: >- - List of content items matching the search query - additionalProperties: false - required: - - file_id - - filename - - score - - content - title: VectorStoreSearchResponse - description: Response from searching a vector store. VectorStoreSearchResponsePage: - type: object - properties: - object: - type: string - default: vector_store.search_results.page + $defs: + VectorStoreContent: description: >- - Object type identifier for the search results page - search_query: - type: string + Content item from a vector store file or search result. + + + :param type: Content type, currently only "text" is supported + + :param text: The actual text content + properties: + type: + const: text + title: Type + type: string + text: + title: Text + type: string + required: + - type + - text + title: VectorStoreContent + type: object + VectorStoreSearchResponse: description: >- - The original search query that was executed - data: - type: array - items: - $ref: '#/components/schemas/VectorStoreSearchResponse' - description: List of search result objects - has_more: - type: boolean - default: false - description: >- - Whether there are more results available beyond this page - next_page: - type: string - description: >- - (Optional) Token for retrieving the next page of results - additionalProperties: false - required: - - object - - search_query - - data - - has_more - title: VectorStoreSearchResponsePage + Response from searching a vector store. + + + :param file_id: Unique identifier of the file containing the result + + :param filename: Name of the file containing the result + + :param score: Relevance score for this search result + + :param attributes: (Optional) Key-value attributes associated with the + file + + :param content: List of content items matching the search query + properties: + file_id: + title: File Id + type: string + filename: + title: Filename + type: string + score: + title: Score + type: number + attributes: + anyOf: + - additionalProperties: + anyOf: + - type: string + - type: number + - type: boolean + type: object + - type: 'null' + title: Attributes + content: + items: + $ref: '#/$defs/VectorStoreContent' + title: Content + type: array + required: + - file_id + - filename + - score + - content + title: VectorStoreSearchResponse + type: object description: >- Paginated response from searching a vector store. - VersionInfo: + + + :param object: Object type identifier for the search results page + + :param search_query: The original search query that was executed + + :param data: List of search result objects + + :param has_more: Whether there are more results available beyond this page + + :param next_page: (Optional) Token for retrieving the next page of results + properties: + object: + default: vector_store.search_results.page + title: Object + type: string + search_query: + title: Search Query + type: string + data: + items: + $ref: '#/$defs/VectorStoreSearchResponse' + title: Data + type: array + has_more: + default: false + title: Has More + type: boolean + next_page: + anyOf: + - type: string + - type: 'null' + title: Next Page + required: + - search_query + - data + title: VectorStoreSearchResponsePage type: object + VersionInfo: + description: >- + Version information for the service. + + + :param version: Version number of the service properties: version: + title: Version type: string - description: Version number of the service - additionalProperties: false required: - version title: VersionInfo - description: Version information for the service. + type: object AppendRowsRequest: type: object - properties: - rows: - type: array - items: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: The rows to append to the dataset. - additionalProperties: false - required: - - rows - title: AppendRowsRequest PaginatedResponse: - type: object + description: >- + A generic paginated response that follows a simple format. + + + :param data: The list of items for the current page + + :param has_more: Whether there are more items available after this set + + :param url: The URL for accessing this list properties: data: - type: array items: + additionalProperties: true type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: The list of items for the current page + title: Data + type: array has_more: + title: Has More type: boolean - description: >- - Whether there are more items available after this set url: - type: string - description: The URL for accessing this list - additionalProperties: false + anyOf: + - type: string + - type: 'null' + title: Url required: - data - has_more title: PaginatedResponse - description: >- - A generic paginated response that follows a simple format. - Dataset: type: object - properties: - identifier: - type: string - provider_resource_id: - type: string - provider_id: - type: string - type: - type: string - enum: - - model - - shield - - vector_store - - dataset - - scoring_function - - benchmark - - tool - - tool_group - - prompt - const: dataset - default: dataset + ListDatasetsResponse: + $defs: + Dataset: description: >- - Type of resource, always 'dataset' for datasets - purpose: - type: string + Dataset resource for storing and accessing training or evaluation data. + + + :param type: Type of resource, always 'dataset' for datasets + properties: + identifier: + description: >- + Unique identifier for this resource in llama stack + title: Identifier + type: string + provider_resource_id: + anyOf: + - type: string + - type: 'null' + description: >- + Unique identifier for this resource in the provider + title: Provider Resource Id + provider_id: + description: >- + ID of the provider that owns this resource + title: Provider Id + type: string + type: + const: dataset + default: dataset + title: Type + type: string + purpose: + $ref: '#/$defs/DatasetPurpose' + source: + discriminator: + mapping: + rows: '#/$defs/RowsDataSource' + uri: '#/$defs/URIDataSource' + propertyName: type + oneOf: + - $ref: '#/$defs/URIDataSource' + - $ref: '#/$defs/RowsDataSource' + title: Source + metadata: + additionalProperties: true + description: Any additional metadata for this dataset + title: Metadata + type: object + required: + - identifier + - provider_id + - purpose + - source + title: Dataset + type: object + DatasetPurpose: + description: >- + Purpose of the dataset. Each purpose has a required input data schema. + + + :cvar post-training/messages: The dataset contains messages used for post-training. + { + "messages": [ + {"role": "user", "content": "Hello, world!"}, + {"role": "assistant", "content": "Hello, world!"}, + ] + } + :cvar eval/question-answer: The dataset contains a question column and + an answer column. + { + "question": "What is the capital of France?", + "answer": "Paris" + } + :cvar eval/messages-answer: The dataset contains a messages column with + list of messages and an answer column. + { + "messages": [ + {"role": "user", "content": "Hello, my name is John Doe."}, + {"role": "assistant", "content": "Hello, John Doe. How can + I help you today?"}, + {"role": "user", "content": "What's my name?"}, + ], + "answer": "John Doe" + } enum: - post-training/messages - eval/question-answer - eval/messages-answer + title: DatasetPurpose + type: string + RowsDataSource: description: >- - Purpose of the dataset indicating its intended use - source: - oneOf: - - $ref: '#/components/schemas/URIDataSource' - - $ref: '#/components/schemas/RowsDataSource' - discriminator: - propertyName: type - mapping: - uri: '#/components/schemas/URIDataSource' - rows: '#/components/schemas/RowsDataSource' - description: >- - Data source configuration for the dataset - metadata: + A dataset stored in rows. + + :param rows: The dataset is stored in rows. E.g. + - [ + {"messages": [{"role": "user", "content": "Hello, world!"}, {"role": + "assistant", "content": "Hello, world!"}]} + ] + properties: + type: + const: rows + default: rows + title: Type + type: string + rows: + items: + additionalProperties: true + type: object + title: Rows + type: array + required: + - rows + title: RowsDataSource type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: Additional metadata for the dataset - additionalProperties: false - required: - - identifier - - provider_id - - type - - purpose - - source - - metadata - title: Dataset - description: >- - Dataset resource for storing and accessing training or evaluation data. - RowsDataSource: - type: object - properties: - type: - type: string - const: rows - default: rows - rows: - type: array - items: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object + URIDataSource: description: >- - The dataset is stored in rows. E.g. - [ {"messages": [{"role": "user", - "content": "Hello, world!"}, {"role": "assistant", "content": "Hello, - world!"}]} ] - additionalProperties: false - required: - - type - - rows - title: RowsDataSource - description: A dataset stored in rows. - URIDataSource: - type: object - properties: - type: - type: string - const: uri - default: uri - uri: - type: string - description: >- - The dataset can be obtained from a URI. E.g. - "https://mywebsite.com/mydata.jsonl" - - "lsfs://mydata.jsonl" - "data:csv;base64,{base64_content}" - additionalProperties: false - required: - - type - - uri - title: URIDataSource + A dataset that can be obtained from a URI. + + :param uri: The dataset can be obtained from a URI. E.g. + - "https://mywebsite.com/mydata.jsonl" + - "lsfs://mydata.jsonl" + - "data:csv;base64,{base64_content}" + properties: + type: + const: uri + default: uri + title: Type + type: string + uri: + title: Uri + type: string + required: + - uri + title: URIDataSource + type: object description: >- - A dataset that can be obtained from a URI. - ListDatasetsResponse: - type: object + Response from listing datasets. + + + :param data: List of datasets properties: data: - type: array items: - $ref: '#/components/schemas/Dataset' - description: List of datasets - additionalProperties: false + $ref: '#/$defs/Dataset' + title: Data + type: array required: - data title: ListDatasetsResponse - description: Response from listing datasets. - DataSource: - oneOf: - - $ref: '#/components/schemas/URIDataSource' - - $ref: '#/components/schemas/RowsDataSource' - discriminator: - propertyName: type - mapping: - uri: '#/components/schemas/URIDataSource' - rows: '#/components/schemas/RowsDataSource' + type: object RegisterDatasetRequest: type: object - properties: - purpose: - type: string + Dataset: + $defs: + DatasetPurpose: + description: >- + Purpose of the dataset. Each purpose has a required input data schema. + + + :cvar post-training/messages: The dataset contains messages used for post-training. + { + "messages": [ + {"role": "user", "content": "Hello, world!"}, + {"role": "assistant", "content": "Hello, world!"}, + ] + } + :cvar eval/question-answer: The dataset contains a question column and + an answer column. + { + "question": "What is the capital of France?", + "answer": "Paris" + } + :cvar eval/messages-answer: The dataset contains a messages column with + list of messages and an answer column. + { + "messages": [ + {"role": "user", "content": "Hello, my name is John Doe."}, + {"role": "assistant", "content": "Hello, John Doe. How can + I help you today?"}, + {"role": "user", "content": "What's my name?"}, + ], + "answer": "John Doe" + } enum: - post-training/messages - eval/question-answer - eval/messages-answer - description: >- - The purpose of the dataset. One of: - "post-training/messages": The dataset - contains a messages column with list of messages for post-training. { - "messages": [ {"role": "user", "content": "Hello, world!"}, {"role": "assistant", - "content": "Hello, world!"}, ] } - "eval/question-answer": The dataset - contains a question column and an answer column for evaluation. { "question": - "What is the capital of France?", "answer": "Paris" } - "eval/messages-answer": - The dataset contains a messages column with list of messages and an answer - column for evaluation. { "messages": [ {"role": "user", "content": "Hello, - my name is John Doe."}, {"role": "assistant", "content": "Hello, John - Doe. How can I help you today?"}, {"role": "user", "content": "What's - my name?"}, ], "answer": "John Doe" } - source: - $ref: '#/components/schemas/DataSource' - description: >- - The data source of the dataset. Ensure that the data source schema is - compatible with the purpose of the dataset. Examples: - { "type": "uri", - "uri": "https://mywebsite.com/mydata.jsonl" } - { "type": "uri", "uri": - "lsfs://mydata.jsonl" } - { "type": "uri", "uri": "data:csv;base64,{base64_content}" - } - { "type": "uri", "uri": "huggingface://llamastack/simpleqa?split=train" - } - { "type": "rows", "rows": [ { "messages": [ {"role": "user", "content": - "Hello, world!"}, {"role": "assistant", "content": "Hello, world!"}, ] - } ] } - metadata: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - The metadata for the dataset. - E.g. {"description": "My dataset"}. - dataset_id: + title: DatasetPurpose type: string + RowsDataSource: description: >- - The ID of the dataset. If not provided, an ID will be generated. - additionalProperties: false + A dataset stored in rows. + + :param rows: The dataset is stored in rows. E.g. + - [ + {"messages": [{"role": "user", "content": "Hello, world!"}, {"role": + "assistant", "content": "Hello, world!"}]} + ] + properties: + type: + const: rows + default: rows + title: Type + type: string + rows: + items: + additionalProperties: true + type: object + title: Rows + type: array + required: + - rows + title: RowsDataSource + type: object + URIDataSource: + description: >- + A dataset that can be obtained from a URI. + + :param uri: The dataset can be obtained from a URI. E.g. + - "https://mywebsite.com/mydata.jsonl" + - "lsfs://mydata.jsonl" + - "data:csv;base64,{base64_content}" + properties: + type: + const: uri + default: uri + title: Type + type: string + uri: + title: Uri + type: string + required: + - uri + title: URIDataSource + type: object + description: >- + Dataset resource for storing and accessing training or evaluation data. + + + :param type: Type of resource, always 'dataset' for datasets + properties: + identifier: + description: >- + Unique identifier for this resource in llama stack + title: Identifier + type: string + provider_resource_id: + anyOf: + - type: string + - type: 'null' + description: >- + Unique identifier for this resource in the provider + title: Provider Resource Id + provider_id: + description: >- + ID of the provider that owns this resource + title: Provider Id + type: string + type: + const: dataset + default: dataset + title: Type + type: string + purpose: + $ref: '#/$defs/DatasetPurpose' + source: + discriminator: + mapping: + rows: '#/$defs/RowsDataSource' + uri: '#/$defs/URIDataSource' + propertyName: type + oneOf: + - $ref: '#/$defs/URIDataSource' + - $ref: '#/$defs/RowsDataSource' + title: Source + metadata: + additionalProperties: true + description: Any additional metadata for this dataset + title: Metadata + type: object required: + - identifier + - provider_id - purpose - source - title: RegisterDatasetRequest - AgentConfig: + title: Dataset type: object + CreateAgentRequest: + type: object + AgentCreateResponse: + description: >- + Response returned when creating a new agent. + + + :param agent_id: Unique identifier for the created agent properties: - sampling_params: - $ref: '#/components/schemas/SamplingParams' - input_shields: - type: array - items: - type: string - output_shields: - type: array - items: - type: string - toolgroups: - type: array - items: - $ref: '#/components/schemas/AgentTool' - client_tools: - type: array - items: - $ref: '#/components/schemas/ToolDef' - tool_choice: + agent_id: + title: Agent Id type: string + required: + - agent_id + title: AgentCreateResponse + type: object + Agent: + $defs: + AgentConfig: + description: >- + Configuration for an agent. + + + :param model: The model identifier to use for the agent + + :param instructions: The system instructions for the agent + + :param name: Optional name for the agent, used in telemetry and identification + + :param enable_session_persistence: Optional flag indicating whether session + data has to be persisted + + :param response_format: Optional response format configuration + properties: + sampling_params: + anyOf: + - $ref: '#/$defs/SamplingParams' + - type: 'null' + input_shields: + anyOf: + - items: + type: string + type: array + - type: 'null' + title: Input Shields + output_shields: + anyOf: + - items: + type: string + type: array + - type: 'null' + title: Output Shields + toolgroups: + anyOf: + - items: + anyOf: + - type: string + - $ref: '#/$defs/AgentToolGroupWithArgs' + type: array + - type: 'null' + title: Toolgroups + client_tools: + anyOf: + - items: + $ref: '#/$defs/ToolDef' + type: array + - type: 'null' + title: Client Tools + tool_choice: + anyOf: + - $ref: '#/$defs/ToolChoice' + - type: 'null' + deprecated: true + tool_prompt_format: + anyOf: + - $ref: '#/$defs/ToolPromptFormat' + - type: 'null' + deprecated: true + tool_config: + anyOf: + - $ref: '#/$defs/ToolConfig' + - type: 'null' + max_infer_iters: + anyOf: + - type: integer + - type: 'null' + default: 10 + title: Max Infer Iters + model: + title: Model + type: string + instructions: + title: Instructions + type: string + name: + anyOf: + - type: string + - type: 'null' + title: Name + enable_session_persistence: + anyOf: + - type: boolean + - type: 'null' + default: false + title: Enable Session Persistence + response_format: + anyOf: + - discriminator: + mapping: + grammar: '#/$defs/GrammarResponseFormat' + json_schema: '#/$defs/JsonSchemaResponseFormat' + propertyName: type + oneOf: + - $ref: '#/$defs/JsonSchemaResponseFormat' + - $ref: '#/$defs/GrammarResponseFormat' + - type: 'null' + title: Response Format + required: + - model + - instructions + title: AgentConfig + type: object + AgentToolGroupWithArgs: + properties: + name: + title: Name + type: string + args: + additionalProperties: true + title: Args + type: object + required: + - name + - args + title: AgentToolGroupWithArgs + type: object + GrammarResponseFormat: + description: >- + Configuration for grammar-guided response generation. + + + :param type: Must be "grammar" to identify this format type + + :param bnf: The BNF grammar specification the response should conform + to + properties: + type: + const: grammar + default: grammar + title: Type + type: string + bnf: + additionalProperties: true + title: Bnf + type: object + required: + - bnf + title: GrammarResponseFormat + type: object + GreedySamplingStrategy: + description: >- + Greedy sampling strategy that selects the highest probability token at + each step. + + + :param type: Must be "greedy" to identify this sampling strategy + properties: + type: + const: greedy + default: greedy + title: Type + type: string + title: GreedySamplingStrategy + type: object + JsonSchemaResponseFormat: + description: >- + Configuration for JSON schema-guided response generation. + + + :param type: Must be "json_schema" to identify this format type + + :param json_schema: The JSON schema the response should conform to. In + a Python SDK, this is often a `pydantic` model. + properties: + type: + const: json_schema + default: json_schema + title: Type + type: string + json_schema: + additionalProperties: true + title: Json Schema + type: object + required: + - json_schema + title: JsonSchemaResponseFormat + type: object + SamplingParams: + description: >- + Sampling parameters. + + + :param strategy: The sampling strategy. + + :param max_tokens: The maximum number of tokens that can be generated + in the completion. The token count of + your prompt plus max_tokens cannot exceed the model's context length. + :param repetition_penalty: Number between -2.0 and 2.0. Positive values + penalize new tokens + based on whether they appear in the text so far, increasing the model's + likelihood to talk about new topics. + :param stop: Up to 4 sequences where the API will stop generating further + tokens. + The returned text will not contain the stop sequence. + properties: + strategy: + discriminator: + mapping: + greedy: '#/$defs/GreedySamplingStrategy' + top_k: '#/$defs/TopKSamplingStrategy' + top_p: '#/$defs/TopPSamplingStrategy' + propertyName: type + oneOf: + - $ref: '#/$defs/GreedySamplingStrategy' + - $ref: '#/$defs/TopPSamplingStrategy' + - $ref: '#/$defs/TopKSamplingStrategy' + title: Strategy + max_tokens: + anyOf: + - type: integer + - type: 'null' + title: Max Tokens + repetition_penalty: + anyOf: + - type: number + - type: 'null' + default: 1.0 + title: Repetition Penalty + stop: + anyOf: + - items: + type: string + type: array + - type: 'null' + title: Stop + title: SamplingParams + type: object + SystemMessageBehavior: + description: >- + Config for how to override the default system prompt. + + + :cvar append: Appends the provided system message to the default system + prompt: + https://www.llama.com/docs/model-cards-and-prompt-formats/llama3_2/#-function-definitions-in-the-system-prompt- + :cvar replace: Replaces the default system prompt with the provided system + message. The system message can include the string + '{{function_definitions}}' to indicate where the function definitions + should be inserted. + enum: + - append + - replace + title: SystemMessageBehavior + type: string + ToolChoice: + description: >- + Whether tool use is required or automatic. This is a hint to the model + which may not be followed. It depends on the Instruction Following capabilities + of the model. + + + :cvar auto: The model may use tools if it determines that is appropriate. + + :cvar required: The model must use tools. + + :cvar none: The model must not use tools. enum: - auto - required - none title: ToolChoice - description: >- - Whether tool use is required or automatic. This is a hint to the model - which may not be followed. It depends on the Instruction Following capabilities - of the model. - deprecated: true - tool_prompt_format: type: string + ToolConfig: + description: >- + Configuration for tool use. + + + :param tool_choice: (Optional) Whether tool use is automatic, required, + or none. Can also specify a tool name to use a specific tool. Defaults + to ToolChoice.auto. + + :param tool_prompt_format: (Optional) Instructs the model how to format + tool calls. By default, Llama Stack will attempt to use a format that + is best adapted to the model. + - `ToolPromptFormat.json`: The tool calls are formatted as a JSON + object. + - `ToolPromptFormat.function_tag`: The tool calls are enclosed in + a tag. + - `ToolPromptFormat.python_list`: The tool calls are output as Python + syntax -- a list of function calls. + :param system_message_behavior: (Optional) Config for how to override + the default system prompt. + - `SystemMessageBehavior.append`: Appends the provided system message + to the default system prompt. + - `SystemMessageBehavior.replace`: Replaces the default system prompt + with the provided system message. The system message can include the string + '{{function_definitions}}' to indicate where the function definitions + should be inserted. + properties: + tool_choice: + anyOf: + - $ref: '#/$defs/ToolChoice' + - type: string + - type: 'null' + default: auto + title: Tool Choice + tool_prompt_format: + anyOf: + - $ref: '#/$defs/ToolPromptFormat' + - type: 'null' + system_message_behavior: + anyOf: + - $ref: '#/$defs/SystemMessageBehavior' + - type: 'null' + default: append + title: ToolConfig + type: object + ToolDef: + description: >- + Tool definition used in runtime contexts. + + + :param name: Name of the tool + + :param description: (Optional) Human-readable description of what the + tool does + + :param input_schema: (Optional) JSON Schema for tool inputs (MCP inputSchema) + + :param output_schema: (Optional) JSON Schema for tool outputs (MCP outputSchema) + + :param metadata: (Optional) Additional metadata about the tool + + :param toolgroup_id: (Optional) ID of the tool group this tool belongs + to + properties: + toolgroup_id: + anyOf: + - type: string + - type: 'null' + title: Toolgroup Id + name: + title: Name + type: string + description: + anyOf: + - type: string + - type: 'null' + title: Description + input_schema: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Input Schema + output_schema: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Output Schema + metadata: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Metadata + required: + - name + title: ToolDef + type: object + ToolPromptFormat: + description: >- + Prompt format for calling custom / zero shot tools. + + + :cvar json: JSON format for calling tools. It takes the form: + { + "type": "function", + "function" : { + "name": "function_name", + "description": "function_description", + "parameters": {...} + } + } + :cvar function_tag: Function tag format, pseudo-XML. This looks like: + (parameters) + + :cvar python_list: Python list. The output is a valid Python expression + that can be + evaluated to a list. Each element in the list is a function call. + Example: + ["function_name(param1, param2)", "function_name(param1, param2)"] enum: - json - function_tag - python_list title: ToolPromptFormat - description: >- - Prompt format for calling custom / zero shot tools. - deprecated: true - tool_config: - $ref: '#/components/schemas/ToolConfig' - max_infer_iters: - type: integer - default: 10 - model: type: string + TopKSamplingStrategy: description: >- - The model identifier to use for the agent - instructions: - type: string - description: The system instructions for the agent - name: - type: string - description: >- - Optional name for the agent, used in telemetry and identification - enable_session_persistence: - type: boolean - default: false - description: >- - Optional flag indicating whether session data has to be persisted - response_format: - $ref: '#/components/schemas/ResponseFormat' - description: Optional response format configuration - additionalProperties: false - required: - - model - - instructions - title: AgentConfig - description: Configuration for an agent. - AgentTool: - oneOf: - - type: string - - type: object + Top-k sampling strategy that restricts sampling to the k most likely tokens. + + + :param type: Must be "top_k" to identify this sampling strategy + + :param top_k: Number of top tokens to consider for sampling. Must be at + least 1 properties: - name: + type: + const: top_k + default: top_k + title: Type type: string - args: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - additionalProperties: false + top_k: + minimum: 1 + title: Top K + type: integer required: - - name - - args - title: AgentToolGroupWithArgs - GrammarResponseFormat: - type: object - properties: - type: - type: string - enum: - - json_schema - - grammar - description: >- - Must be "grammar" to identify this format type - const: grammar - default: grammar - bnf: + - top_k + title: TopKSamplingStrategy type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object + TopPSamplingStrategy: description: >- - The BNF grammar specification the response should conform to - additionalProperties: false - required: - - type - - bnf - title: GrammarResponseFormat - description: >- - Configuration for grammar-guided response generation. - GreedySamplingStrategy: - type: object - properties: - type: - type: string - const: greedy - default: greedy - description: >- - Must be "greedy" to identify this sampling strategy - additionalProperties: false - required: - - type - title: GreedySamplingStrategy - description: >- - Greedy sampling strategy that selects the highest probability token at each - step. - JsonSchemaResponseFormat: - type: object - properties: - type: - type: string - enum: - - json_schema - - grammar - description: >- - Must be "json_schema" to identify this format type - const: json_schema - default: json_schema - json_schema: + Top-p (nucleus) sampling strategy that samples from the smallest set of + tokens with cumulative probability >= p. + + + :param type: Must be "top_p" to identify this sampling strategy + + :param temperature: Controls randomness in sampling. Higher values increase + randomness + + :param top_p: Cumulative probability threshold for nucleus sampling. Defaults + to 0.95 + properties: + type: + const: top_p + default: top_p + title: Type + type: string + temperature: + anyOf: + - exclusiveMinimum: 0.0 + type: number + - type: 'null' + title: Temperature + top_p: + anyOf: + - type: number + - type: 'null' + default: 0.95 + title: Top P + required: + - temperature + title: TopPSamplingStrategy type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - The JSON schema the response should conform to. In a Python SDK, this - is often a `pydantic` model. - additionalProperties: false - required: - - type - - json_schema - title: JsonSchemaResponseFormat description: >- - Configuration for JSON schema-guided response generation. - ResponseFormat: - oneOf: - - $ref: '#/components/schemas/JsonSchemaResponseFormat' - - $ref: '#/components/schemas/GrammarResponseFormat' - discriminator: - propertyName: type - mapping: - json_schema: '#/components/schemas/JsonSchemaResponseFormat' - grammar: '#/components/schemas/GrammarResponseFormat' - SamplingParams: - type: object - properties: - strategy: - oneOf: - - $ref: '#/components/schemas/GreedySamplingStrategy' - - $ref: '#/components/schemas/TopPSamplingStrategy' - - $ref: '#/components/schemas/TopKSamplingStrategy' - discriminator: - propertyName: type - mapping: - greedy: '#/components/schemas/GreedySamplingStrategy' - top_p: '#/components/schemas/TopPSamplingStrategy' - top_k: '#/components/schemas/TopKSamplingStrategy' - description: The sampling strategy. - max_tokens: - type: integer - description: >- - The maximum number of tokens that can be generated in the completion. - The token count of your prompt plus max_tokens cannot exceed the model's - context length. - repetition_penalty: - type: number - default: 1.0 - description: >- - Number between -2.0 and 2.0. Positive values penalize new tokens based - on whether they appear in the text so far, increasing the model's likelihood - to talk about new topics. - stop: - type: array - items: - type: string - description: >- - Up to 4 sequences where the API will stop generating further tokens. The - returned text will not contain the stop sequence. - additionalProperties: false - required: - - strategy - title: SamplingParams - description: Sampling parameters. - ToolConfig: - type: object - properties: - tool_choice: - oneOf: - - type: string - enum: - - auto - - required - - none - title: ToolChoice - description: >- - Whether tool use is required or automatic. This is a hint to the model - which may not be followed. It depends on the Instruction Following - capabilities of the model. - - type: string - default: auto - description: >- - (Optional) Whether tool use is automatic, required, or none. Can also - specify a tool name to use a specific tool. Defaults to ToolChoice.auto. - tool_prompt_format: - type: string - enum: - - json - - function_tag - - python_list - description: >- - (Optional) Instructs the model how to format tool calls. By default, Llama - Stack will attempt to use a format that is best adapted to the model. - - `ToolPromptFormat.json`: The tool calls are formatted as a JSON object. - - `ToolPromptFormat.function_tag`: The tool calls are enclosed in a - tag. - `ToolPromptFormat.python_list`: The tool calls are output as Python - syntax -- a list of function calls. - system_message_behavior: - type: string - enum: - - append - - replace - description: >- - (Optional) Config for how to override the default system prompt. - `SystemMessageBehavior.append`: - Appends the provided system message to the default system prompt. - `SystemMessageBehavior.replace`: - Replaces the default system prompt with the provided system message. The - system message can include the string '{{function_definitions}}' to indicate - where the function definitions should be inserted. - default: append - additionalProperties: false - title: ToolConfig - description: Configuration for tool use. - TopKSamplingStrategy: - type: object - properties: - type: - type: string - const: top_k - default: top_k - description: >- - Must be "top_k" to identify this sampling strategy - top_k: - type: integer - description: >- - Number of top tokens to consider for sampling. Must be at least 1 - additionalProperties: false - required: - - type - - top_k - title: TopKSamplingStrategy - description: >- - Top-k sampling strategy that restricts sampling to the k most likely tokens. - TopPSamplingStrategy: - type: object - properties: - type: - type: string - const: top_p - default: top_p - description: >- - Must be "top_p" to identify this sampling strategy - temperature: - type: number - description: >- - Controls randomness in sampling. Higher values increase randomness - top_p: - type: number - default: 0.95 - description: >- - Cumulative probability threshold for nucleus sampling. Defaults to 0.95 - additionalProperties: false - required: - - type - title: TopPSamplingStrategy - description: >- - Top-p (nucleus) sampling strategy that samples from the smallest set of tokens - with cumulative probability >= p. - CreateAgentRequest: - type: object - properties: - agent_config: - $ref: '#/components/schemas/AgentConfig' - description: The configuration for the agent. - additionalProperties: false - required: - - agent_config - title: CreateAgentRequest - AgentCreateResponse: - type: object + An agent instance with configuration and metadata. + + + :param agent_id: Unique identifier for the agent + + :param agent_config: Configuration settings for the agent + + :param created_at: Timestamp when the agent was created properties: agent_id: + title: Agent Id type: string - description: Unique identifier for the created agent - additionalProperties: false - required: - - agent_id - title: AgentCreateResponse - description: >- - Response returned when creating a new agent. - Agent: - type: object - properties: - agent_id: - type: string - description: Unique identifier for the agent agent_config: - $ref: '#/components/schemas/AgentConfig' - description: Configuration settings for the agent + $ref: '#/$defs/AgentConfig' created_at: - type: string format: date-time - description: Timestamp when the agent was created - additionalProperties: false + title: Created At + type: string required: - agent_id - agent_config - created_at title: Agent - description: >- - An agent instance with configuration and metadata. + type: object CreateAgentSessionRequest: type: object - properties: - session_name: - type: string - description: The name of the session to create. - additionalProperties: false - required: - - session_name - title: CreateAgentSessionRequest AgentSessionCreateResponse: - type: object + description: >- + Response returned when creating a new agent session. + + + :param session_id: Unique identifier for the created session properties: session_id: + title: Session Id type: string - description: >- - Unique identifier for the created session - additionalProperties: false required: - session_id title: AgentSessionCreateResponse @@ -12151,119 +17048,735 @@ components: A message containing the model's (assistant) response in a chat conversation. InferenceStep: type: object - properties: - turn_id: - type: string - description: The ID of the turn. - step_id: - type: string - description: The ID of the step. - started_at: - type: string - format: date-time - description: The time the step started. - completed_at: - type: string - format: date-time - description: The time the step completed. - step_type: - type: string - enum: - - inference - - tool_execution - - shield_call - - memory_retrieval - title: StepType - description: Type of the step in an agent turn. - const: inference - default: inference - model_response: - $ref: '#/components/schemas/CompletionMessage' - description: The response from the LLM. - additionalProperties: false - required: - - turn_id - - step_id - - step_type - - model_response - title: InferenceStep - description: An inference step in an agent turn. - MemoryRetrievalStep: - type: object - properties: - turn_id: - type: string - description: The ID of the turn. - step_id: - type: string - description: The ID of the step. - started_at: - type: string - format: date-time - description: The time the step started. - completed_at: - type: string - format: date-time - description: The time the step completed. - step_type: - type: string - enum: - - inference - - tool_execution - - shield_call - - memory_retrieval - title: StepType - description: Type of the step in an agent turn. - const: memory_retrieval - default: memory_retrieval - vector_store_ids: - type: string - description: >- - The IDs of the vector databases to retrieve context from. - inserted_context: - $ref: '#/components/schemas/InterleavedContent' - description: >- - The context retrieved from the vector databases. - additionalProperties: false - required: - - turn_id - - step_id - - step_type - - vector_store_ids - - inserted_context - title: MemoryRetrievalStep - description: >- - A memory retrieval step in an agent turn. Session: - type: object + $defs: + Attachment: + description: >- + An attachment to an agent turn. + + + :param content: The content of the attachment. + + :param mime_type: The MIME type of the attachment. + properties: + content: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + - $ref: '#/$defs/URL' + title: Content + mime_type: + title: Mime Type + type: string + required: + - content + - mime_type + title: Attachment + type: object + BuiltinTool: + enum: + - brave_search + - wolfram_alpha + - photogen + - code_interpreter + title: BuiltinTool + type: string + CompletionMessage: + description: >- + A message containing the model's (assistant) response in a chat conversation. + + + :param role: Must be "assistant" to identify this as the model's response + + :param content: The content of the model's response + + :param stop_reason: Reason why the model stopped generating. Options are: + - `StopReason.end_of_turn`: The model finished generating the entire + response. + - `StopReason.end_of_message`: The model finished generating but generated + a partial response -- usually, a tool call. The user may call the tool + and continue the conversation with the tool's response. + - `StopReason.out_of_tokens`: The model ran out of token budget. + :param tool_calls: List of tool calls. Each tool call is a ToolCall object. + properties: + role: + const: assistant + default: assistant + title: Role + type: string + content: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + title: Content + stop_reason: + $ref: '#/$defs/StopReason' + tool_calls: + anyOf: + - items: + $ref: '#/$defs/ToolCall' + type: array + - type: 'null' + title: Tool Calls + required: + - content + - stop_reason + title: CompletionMessage + type: object + ImageContentItem: + description: >- + A image content item + + + :param type: Discriminator type of the content item. Always "image" + + :param image: Image as a base64 encoded string or an URL + properties: + type: + const: image + default: image + title: Type + type: string + image: + $ref: '#/$defs/_URLOrData' + required: + - image + title: ImageContentItem + type: object + InferenceStep: + description: >- + An inference step in an agent turn. + + + :param model_response: The response from the LLM. + properties: + turn_id: + title: Turn Id + type: string + step_id: + title: Step Id + type: string + started_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Started At + completed_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Completed At + step_type: + const: inference + default: inference + title: Step Type + type: string + model_response: + $ref: '#/$defs/CompletionMessage' + required: + - turn_id + - step_id + - model_response + title: InferenceStep + type: object + MemoryRetrievalStep: + description: >- + A memory retrieval step in an agent turn. + + + :param vector_store_ids: The IDs of the vector databases to retrieve context + from. + + :param inserted_context: The context retrieved from the vector databases. + properties: + turn_id: + title: Turn Id + type: string + step_id: + title: Step Id + type: string + started_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Started At + completed_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Completed At + step_type: + const: memory_retrieval + default: memory_retrieval + title: Step Type + type: string + vector_store_ids: + title: Vector Store Ids + type: string + inserted_context: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + title: Inserted Context + required: + - turn_id + - step_id + - vector_store_ids + - inserted_context + title: MemoryRetrievalStep + type: object + SafetyViolation: + description: >- + Details of a safety violation detected by content moderation. + + + :param violation_level: Severity level of the violation + + :param user_message: (Optional) Message to convey to the user about the + violation + + :param metadata: Additional metadata including specific violation codes + for debugging and telemetry + properties: + violation_level: + $ref: '#/$defs/ViolationLevel' + user_message: + anyOf: + - type: string + - type: 'null' + title: User Message + metadata: + additionalProperties: true + title: Metadata + type: object + required: + - violation_level + title: SafetyViolation + type: object + ShieldCallStep: + description: >- + A shield call step in an agent turn. + + + :param violation: The violation from the shield call. + properties: + turn_id: + title: Turn Id + type: string + step_id: + title: Step Id + type: string + started_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Started At + completed_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Completed At + step_type: + const: shield_call + default: shield_call + title: Step Type + type: string + violation: + anyOf: + - $ref: '#/$defs/SafetyViolation' + - type: 'null' + required: + - turn_id + - step_id + - violation + title: ShieldCallStep + type: object + StopReason: + enum: + - end_of_turn + - end_of_message + - out_of_tokens + title: StopReason + type: string + TextContentItem: + description: >- + A text content item + + + :param type: Discriminator type of the content item. Always "text" + + :param text: Text content + properties: + type: + const: text + default: text + title: Type + type: string + text: + title: Text + type: string + required: + - text + title: TextContentItem + type: object + ToolCall: + properties: + call_id: + title: Call Id + type: string + tool_name: + anyOf: + - $ref: '#/$defs/BuiltinTool' + - type: string + title: Tool Name + arguments: + title: Arguments + type: string + required: + - call_id + - tool_name + - arguments + title: ToolCall + type: object + ToolExecutionStep: + description: >- + A tool execution step in an agent turn. + + + :param tool_calls: The tool calls to execute. + + :param tool_responses: The tool responses from the tool calls. + properties: + turn_id: + title: Turn Id + type: string + step_id: + title: Step Id + type: string + started_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Started At + completed_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Completed At + step_type: + const: tool_execution + default: tool_execution + title: Step Type + type: string + tool_calls: + items: + $ref: '#/$defs/ToolCall' + title: Tool Calls + type: array + tool_responses: + items: + $ref: '#/$defs/ToolResponse' + title: Tool Responses + type: array + required: + - turn_id + - step_id + - tool_calls + - tool_responses + title: ToolExecutionStep + type: object + ToolResponse: + description: >- + Response from a tool invocation. + + + :param call_id: Unique identifier for the tool call this response is for + + :param tool_name: Name of the tool that was invoked + + :param content: The response content from the tool + + :param metadata: (Optional) Additional metadata about the tool response + properties: + call_id: + title: Call Id + type: string + tool_name: + anyOf: + - $ref: '#/$defs/BuiltinTool' + - type: string + title: Tool Name + content: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + title: Content + metadata: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Metadata + required: + - call_id + - tool_name + - content + title: ToolResponse + type: object + ToolResponseMessage: + description: >- + A message representing the result of a tool invocation. + + + :param role: Must be "tool" to identify this as a tool response + + :param call_id: Unique identifier for the tool call this response is for + + :param content: The response content from the tool + properties: + role: + const: tool + default: tool + title: Role + type: string + call_id: + title: Call Id + type: string + content: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + title: Content + required: + - call_id + - content + title: ToolResponseMessage + type: object + Turn: + description: >- + A single turn in an interaction with an Agentic System. + + + :param turn_id: Unique identifier for the turn within a session + + :param session_id: Unique identifier for the conversation session + + :param input_messages: List of messages that initiated this turn + + :param steps: Ordered list of processing steps executed during this turn + + :param output_message: The model's generated response containing content + and metadata + + :param output_attachments: (Optional) Files or media attached to the agent's + response + + :param started_at: Timestamp when the turn began + + :param completed_at: (Optional) Timestamp when the turn finished, if completed + properties: + turn_id: + title: Turn Id + type: string + session_id: + title: Session Id + type: string + input_messages: + items: + anyOf: + - $ref: '#/$defs/UserMessage' + - $ref: '#/$defs/ToolResponseMessage' + title: Input Messages + type: array + steps: + items: + discriminator: + mapping: + inference: '#/$defs/InferenceStep' + memory_retrieval: '#/$defs/MemoryRetrievalStep' + shield_call: '#/$defs/ShieldCallStep' + tool_execution: '#/$defs/ToolExecutionStep' + propertyName: step_type + oneOf: + - $ref: '#/$defs/InferenceStep' + - $ref: '#/$defs/ToolExecutionStep' + - $ref: '#/$defs/ShieldCallStep' + - $ref: '#/$defs/MemoryRetrievalStep' + title: Steps + type: array + output_message: + $ref: '#/$defs/CompletionMessage' + output_attachments: + anyOf: + - items: + $ref: '#/$defs/Attachment' + type: array + - type: 'null' + title: Output Attachments + started_at: + format: date-time + title: Started At + type: string + completed_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Completed At + required: + - turn_id + - session_id + - input_messages + - steps + - output_message + - started_at + title: Turn + type: object + URL: + description: >- + A URL reference to external content. + + + :param uri: The URL string pointing to the resource + properties: + uri: + title: Uri + type: string + required: + - uri + title: URL + type: object + UserMessage: + description: >- + A message from the user in a chat conversation. + + + :param role: Must be "user" to identify this as a user message + + :param content: The content of the message, which can include text and + other media + + :param context: (Optional) This field is used internally by Llama Stack + to pass RAG context. This field may be removed in the API in the future. + properties: + role: + const: user + default: user + title: Role + type: string + content: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + title: Content + context: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + - type: 'null' + title: Context + required: + - content + title: UserMessage + type: object + ViolationLevel: + description: >- + Severity level of a safety violation. + + + :cvar INFO: Informational level violation that does not require action + + :cvar WARN: Warning level violation that suggests caution but allows continuation + + :cvar ERROR: Error level violation that requires blocking or intervention + enum: + - info + - warn + - error + title: ViolationLevel + type: string + _URLOrData: + description: >- + A URL or a base64 encoded string + + + :param url: A URL of the image or data URL in the format of data:image/{type};base64,{data}. + Note that URL could have length limits. + + :param data: base64 encoded image data as string + properties: + url: + anyOf: + - $ref: '#/$defs/URL' + - type: 'null' + data: + anyOf: + - type: string + - type: 'null' + contentEncoding: base64 + title: Data + title: _URLOrData + type: object + description: >- + A single session of an interaction with an Agentic System. + + + :param session_id: Unique identifier for the conversation session + + :param session_name: Human-readable name for the session + + :param turns: List of all turns that have occurred in this session + + :param started_at: Timestamp when the session was created properties: session_id: + title: Session Id type: string - description: >- - Unique identifier for the conversation session session_name: + title: Session Name type: string - description: Human-readable name for the session turns: - type: array items: - $ref: '#/components/schemas/Turn' - description: >- - List of all turns that have occurred in this session + $ref: '#/$defs/Turn' + title: Turns + type: array started_at: - type: string format: date-time - description: Timestamp when the session was created - additionalProperties: false + title: Started At + type: string required: - session_id - session_name - turns - started_at title: Session - description: >- - A single session of an interaction with an Agentic System. - ShieldCallStep: type: object properties: turn_id: @@ -12436,80 +17949,691 @@ components: description: >- A message representing the result of a tool invocation. Turn: - type: object + $defs: + Attachment: + description: >- + An attachment to an agent turn. + + + :param content: The content of the attachment. + + :param mime_type: The MIME type of the attachment. + properties: + content: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + - $ref: '#/$defs/URL' + title: Content + mime_type: + title: Mime Type + type: string + required: + - content + - mime_type + title: Attachment + type: object + BuiltinTool: + enum: + - brave_search + - wolfram_alpha + - photogen + - code_interpreter + title: BuiltinTool + type: string + CompletionMessage: + description: >- + A message containing the model's (assistant) response in a chat conversation. + + + :param role: Must be "assistant" to identify this as the model's response + + :param content: The content of the model's response + + :param stop_reason: Reason why the model stopped generating. Options are: + - `StopReason.end_of_turn`: The model finished generating the entire + response. + - `StopReason.end_of_message`: The model finished generating but generated + a partial response -- usually, a tool call. The user may call the tool + and continue the conversation with the tool's response. + - `StopReason.out_of_tokens`: The model ran out of token budget. + :param tool_calls: List of tool calls. Each tool call is a ToolCall object. + properties: + role: + const: assistant + default: assistant + title: Role + type: string + content: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + title: Content + stop_reason: + $ref: '#/$defs/StopReason' + tool_calls: + anyOf: + - items: + $ref: '#/$defs/ToolCall' + type: array + - type: 'null' + title: Tool Calls + required: + - content + - stop_reason + title: CompletionMessage + type: object + ImageContentItem: + description: >- + A image content item + + + :param type: Discriminator type of the content item. Always "image" + + :param image: Image as a base64 encoded string or an URL + properties: + type: + const: image + default: image + title: Type + type: string + image: + $ref: '#/$defs/_URLOrData' + required: + - image + title: ImageContentItem + type: object + InferenceStep: + description: >- + An inference step in an agent turn. + + + :param model_response: The response from the LLM. + properties: + turn_id: + title: Turn Id + type: string + step_id: + title: Step Id + type: string + started_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Started At + completed_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Completed At + step_type: + const: inference + default: inference + title: Step Type + type: string + model_response: + $ref: '#/$defs/CompletionMessage' + required: + - turn_id + - step_id + - model_response + title: InferenceStep + type: object + MemoryRetrievalStep: + description: >- + A memory retrieval step in an agent turn. + + + :param vector_store_ids: The IDs of the vector databases to retrieve context + from. + + :param inserted_context: The context retrieved from the vector databases. + properties: + turn_id: + title: Turn Id + type: string + step_id: + title: Step Id + type: string + started_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Started At + completed_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Completed At + step_type: + const: memory_retrieval + default: memory_retrieval + title: Step Type + type: string + vector_store_ids: + title: Vector Store Ids + type: string + inserted_context: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + title: Inserted Context + required: + - turn_id + - step_id + - vector_store_ids + - inserted_context + title: MemoryRetrievalStep + type: object + SafetyViolation: + description: >- + Details of a safety violation detected by content moderation. + + + :param violation_level: Severity level of the violation + + :param user_message: (Optional) Message to convey to the user about the + violation + + :param metadata: Additional metadata including specific violation codes + for debugging and telemetry + properties: + violation_level: + $ref: '#/$defs/ViolationLevel' + user_message: + anyOf: + - type: string + - type: 'null' + title: User Message + metadata: + additionalProperties: true + title: Metadata + type: object + required: + - violation_level + title: SafetyViolation + type: object + ShieldCallStep: + description: >- + A shield call step in an agent turn. + + + :param violation: The violation from the shield call. + properties: + turn_id: + title: Turn Id + type: string + step_id: + title: Step Id + type: string + started_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Started At + completed_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Completed At + step_type: + const: shield_call + default: shield_call + title: Step Type + type: string + violation: + anyOf: + - $ref: '#/$defs/SafetyViolation' + - type: 'null' + required: + - turn_id + - step_id + - violation + title: ShieldCallStep + type: object + StopReason: + enum: + - end_of_turn + - end_of_message + - out_of_tokens + title: StopReason + type: string + TextContentItem: + description: >- + A text content item + + + :param type: Discriminator type of the content item. Always "text" + + :param text: Text content + properties: + type: + const: text + default: text + title: Type + type: string + text: + title: Text + type: string + required: + - text + title: TextContentItem + type: object + ToolCall: + properties: + call_id: + title: Call Id + type: string + tool_name: + anyOf: + - $ref: '#/$defs/BuiltinTool' + - type: string + title: Tool Name + arguments: + title: Arguments + type: string + required: + - call_id + - tool_name + - arguments + title: ToolCall + type: object + ToolExecutionStep: + description: >- + A tool execution step in an agent turn. + + + :param tool_calls: The tool calls to execute. + + :param tool_responses: The tool responses from the tool calls. + properties: + turn_id: + title: Turn Id + type: string + step_id: + title: Step Id + type: string + started_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Started At + completed_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Completed At + step_type: + const: tool_execution + default: tool_execution + title: Step Type + type: string + tool_calls: + items: + $ref: '#/$defs/ToolCall' + title: Tool Calls + type: array + tool_responses: + items: + $ref: '#/$defs/ToolResponse' + title: Tool Responses + type: array + required: + - turn_id + - step_id + - tool_calls + - tool_responses + title: ToolExecutionStep + type: object + ToolResponse: + description: >- + Response from a tool invocation. + + + :param call_id: Unique identifier for the tool call this response is for + + :param tool_name: Name of the tool that was invoked + + :param content: The response content from the tool + + :param metadata: (Optional) Additional metadata about the tool response + properties: + call_id: + title: Call Id + type: string + tool_name: + anyOf: + - $ref: '#/$defs/BuiltinTool' + - type: string + title: Tool Name + content: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + title: Content + metadata: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Metadata + required: + - call_id + - tool_name + - content + title: ToolResponse + type: object + ToolResponseMessage: + description: >- + A message representing the result of a tool invocation. + + + :param role: Must be "tool" to identify this as a tool response + + :param call_id: Unique identifier for the tool call this response is for + + :param content: The response content from the tool + properties: + role: + const: tool + default: tool + title: Role + type: string + call_id: + title: Call Id + type: string + content: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + title: Content + required: + - call_id + - content + title: ToolResponseMessage + type: object + URL: + description: >- + A URL reference to external content. + + + :param uri: The URL string pointing to the resource + properties: + uri: + title: Uri + type: string + required: + - uri + title: URL + type: object + UserMessage: + description: >- + A message from the user in a chat conversation. + + + :param role: Must be "user" to identify this as a user message + + :param content: The content of the message, which can include text and + other media + + :param context: (Optional) This field is used internally by Llama Stack + to pass RAG context. This field may be removed in the API in the future. + properties: + role: + const: user + default: user + title: Role + type: string + content: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + title: Content + context: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + - type: 'null' + title: Context + required: + - content + title: UserMessage + type: object + ViolationLevel: + description: >- + Severity level of a safety violation. + + + :cvar INFO: Informational level violation that does not require action + + :cvar WARN: Warning level violation that suggests caution but allows continuation + + :cvar ERROR: Error level violation that requires blocking or intervention + enum: + - info + - warn + - error + title: ViolationLevel + type: string + _URLOrData: + description: >- + A URL or a base64 encoded string + + + :param url: A URL of the image or data URL in the format of data:image/{type};base64,{data}. + Note that URL could have length limits. + + :param data: base64 encoded image data as string + properties: + url: + anyOf: + - $ref: '#/$defs/URL' + - type: 'null' + data: + anyOf: + - type: string + - type: 'null' + contentEncoding: base64 + title: Data + title: _URLOrData + type: object + description: >- + A single turn in an interaction with an Agentic System. + + + :param turn_id: Unique identifier for the turn within a session + + :param session_id: Unique identifier for the conversation session + + :param input_messages: List of messages that initiated this turn + + :param steps: Ordered list of processing steps executed during this turn + + :param output_message: The model's generated response containing content and + metadata + + :param output_attachments: (Optional) Files or media attached to the agent's + response + + :param started_at: Timestamp when the turn began + + :param completed_at: (Optional) Timestamp when the turn finished, if completed properties: turn_id: + title: Turn Id type: string - description: >- - Unique identifier for the turn within a session session_id: + title: Session Id type: string - description: >- - Unique identifier for the conversation session input_messages: - type: array items: - oneOf: - - $ref: '#/components/schemas/UserMessage' - - $ref: '#/components/schemas/ToolResponseMessage' - description: >- - List of messages that initiated this turn + anyOf: + - $ref: '#/$defs/UserMessage' + - $ref: '#/$defs/ToolResponseMessage' + title: Input Messages + type: array steps: - type: array items: - oneOf: - - $ref: '#/components/schemas/InferenceStep' - - $ref: '#/components/schemas/ToolExecutionStep' - - $ref: '#/components/schemas/ShieldCallStep' - - $ref: '#/components/schemas/MemoryRetrievalStep' discriminator: - propertyName: step_type mapping: - inference: '#/components/schemas/InferenceStep' - tool_execution: '#/components/schemas/ToolExecutionStep' - shield_call: '#/components/schemas/ShieldCallStep' - memory_retrieval: '#/components/schemas/MemoryRetrievalStep' - description: >- - Ordered list of processing steps executed during this turn - output_message: - $ref: '#/components/schemas/CompletionMessage' - description: >- - The model's generated response containing content and metadata - output_attachments: + inference: '#/$defs/InferenceStep' + memory_retrieval: '#/$defs/MemoryRetrievalStep' + shield_call: '#/$defs/ShieldCallStep' + tool_execution: '#/$defs/ToolExecutionStep' + propertyName: step_type + oneOf: + - $ref: '#/$defs/InferenceStep' + - $ref: '#/$defs/ToolExecutionStep' + - $ref: '#/$defs/ShieldCallStep' + - $ref: '#/$defs/MemoryRetrievalStep' + title: Steps type: array - items: - type: object - properties: - content: - oneOf: - - type: string - - $ref: '#/components/schemas/InterleavedContentItem' - - type: array - items: - $ref: '#/components/schemas/InterleavedContentItem' - - $ref: '#/components/schemas/URL' - description: The content of the attachment. - mime_type: - type: string - description: The MIME type of the attachment. - additionalProperties: false - required: - - content - - mime_type - title: Attachment - description: An attachment to an agent turn. - description: >- - (Optional) Files or media attached to the agent's response + output_message: + $ref: '#/$defs/CompletionMessage' + output_attachments: + anyOf: + - items: + $ref: '#/$defs/Attachment' + type: array + - type: 'null' + title: Output Attachments started_at: - type: string format: date-time - description: Timestamp when the turn began + title: Started At + type: string completed_at: - type: string - format: date-time - description: >- - (Optional) Timestamp when the turn finished, if completed - additionalProperties: false + anyOf: + - format: date-time + type: string + - type: 'null' + title: Completed At required: - turn_id - session_id @@ -12547,544 +18671,621 @@ components: A message from the user in a chat conversation. CreateAgentTurnRequest: type: object - properties: - messages: - type: array - items: - oneOf: - - $ref: '#/components/schemas/UserMessage' - - $ref: '#/components/schemas/ToolResponseMessage' - description: List of messages to start the turn with. - stream: - type: boolean - description: >- - (Optional) If True, generate an SSE event stream of the response. Defaults - to False. - documents: - type: array - items: - type: object - properties: - content: - oneOf: - - type: string - - $ref: '#/components/schemas/InterleavedContentItem' - - type: array - items: - $ref: '#/components/schemas/InterleavedContentItem' - - $ref: '#/components/schemas/URL' - description: The content of the document. - mime_type: - type: string - description: The MIME type of the document. - additionalProperties: false - required: - - content - - mime_type - title: Document - description: A document to be used by an agent. - description: >- - (Optional) List of documents to create the turn with. - toolgroups: - type: array - items: - $ref: '#/components/schemas/AgentTool' - description: >- - (Optional) List of toolgroups to create the turn with, will be used in - addition to the agent's config toolgroups for the request. - tool_config: - $ref: '#/components/schemas/ToolConfig' - description: >- - (Optional) The tool configuration to create the turn with, will be used - to override the agent's tool_config. - additionalProperties: false - required: - - messages - title: CreateAgentTurnRequest - AgentTurnResponseEvent: - type: object - properties: - payload: - oneOf: - - $ref: '#/components/schemas/AgentTurnResponseStepStartPayload' - - $ref: '#/components/schemas/AgentTurnResponseStepProgressPayload' - - $ref: '#/components/schemas/AgentTurnResponseStepCompletePayload' - - $ref: '#/components/schemas/AgentTurnResponseTurnStartPayload' - - $ref: '#/components/schemas/AgentTurnResponseTurnCompletePayload' - - $ref: '#/components/schemas/AgentTurnResponseTurnAwaitingInputPayload' - discriminator: - propertyName: event_type - mapping: - step_start: '#/components/schemas/AgentTurnResponseStepStartPayload' - step_progress: '#/components/schemas/AgentTurnResponseStepProgressPayload' - step_complete: '#/components/schemas/AgentTurnResponseStepCompletePayload' - turn_start: '#/components/schemas/AgentTurnResponseTurnStartPayload' - turn_complete: '#/components/schemas/AgentTurnResponseTurnCompletePayload' - turn_awaiting_input: '#/components/schemas/AgentTurnResponseTurnAwaitingInputPayload' - description: >- - Event-specific payload containing event data - additionalProperties: false - required: - - payload - title: AgentTurnResponseEvent - description: >- - An event in an agent turn response stream. - AgentTurnResponseStepCompletePayload: - type: object - properties: - event_type: - type: string - enum: - - step_start - - step_complete - - step_progress - - turn_start - - turn_complete - - turn_awaiting_input - const: step_complete - default: step_complete - description: Type of event being reported - step_type: - type: string - enum: - - inference - - tool_execution - - shield_call - - memory_retrieval - description: Type of step being executed - step_id: - type: string - description: >- - Unique identifier for the step within a turn - step_details: - oneOf: - - $ref: '#/components/schemas/InferenceStep' - - $ref: '#/components/schemas/ToolExecutionStep' - - $ref: '#/components/schemas/ShieldCallStep' - - $ref: '#/components/schemas/MemoryRetrievalStep' - discriminator: - propertyName: step_type - mapping: - inference: '#/components/schemas/InferenceStep' - tool_execution: '#/components/schemas/ToolExecutionStep' - shield_call: '#/components/schemas/ShieldCallStep' - memory_retrieval: '#/components/schemas/MemoryRetrievalStep' - description: Complete details of the executed step - additionalProperties: false - required: - - event_type - - step_type - - step_id - - step_details - title: AgentTurnResponseStepCompletePayload - description: >- - Payload for step completion events in agent turn responses. - AgentTurnResponseStepProgressPayload: - type: object - properties: - event_type: - type: string - enum: - - step_start - - step_complete - - step_progress - - turn_start - - turn_complete - - turn_awaiting_input - const: step_progress - default: step_progress - description: Type of event being reported - step_type: - type: string - enum: - - inference - - tool_execution - - shield_call - - memory_retrieval - description: Type of step being executed - step_id: - type: string - description: >- - Unique identifier for the step within a turn - delta: - oneOf: - - $ref: '#/components/schemas/TextDelta' - - $ref: '#/components/schemas/ImageDelta' - - $ref: '#/components/schemas/ToolCallDelta' - discriminator: - propertyName: type - mapping: - text: '#/components/schemas/TextDelta' - image: '#/components/schemas/ImageDelta' - tool_call: '#/components/schemas/ToolCallDelta' - description: >- - Incremental content changes during step execution - additionalProperties: false - required: - - event_type - - step_type - - step_id - - delta - title: AgentTurnResponseStepProgressPayload - description: >- - Payload for step progress events in agent turn responses. - AgentTurnResponseStepStartPayload: - type: object - properties: - event_type: - type: string - enum: - - step_start - - step_complete - - step_progress - - turn_start - - turn_complete - - turn_awaiting_input - const: step_start - default: step_start - description: Type of event being reported - step_type: - type: string - enum: - - inference - - tool_execution - - shield_call - - memory_retrieval - description: Type of step being executed - step_id: - type: string - description: >- - Unique identifier for the step within a turn - metadata: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - (Optional) Additional metadata for the step - additionalProperties: false - required: - - event_type - - step_type - - step_id - title: AgentTurnResponseStepStartPayload - description: >- - Payload for step start events in agent turn responses. - AgentTurnResponseStreamChunk: - type: object - properties: - event: - $ref: '#/components/schemas/AgentTurnResponseEvent' - description: >- - Individual event in the agent turn response stream - additionalProperties: false - required: - - event - title: AgentTurnResponseStreamChunk - description: Streamed agent turn completion response. - "AgentTurnResponseTurnAwaitingInputPayload": - type: object - properties: - event_type: - type: string - enum: - - step_start - - step_complete - - step_progress - - turn_start - - turn_complete - - turn_awaiting_input - const: turn_awaiting_input - default: turn_awaiting_input - description: Type of event being reported - turn: - $ref: '#/components/schemas/Turn' - description: >- - Turn data when waiting for external tool responses - additionalProperties: false - required: - - event_type - - turn - title: >- - AgentTurnResponseTurnAwaitingInputPayload - description: >- - Payload for turn awaiting input events in agent turn responses. - AgentTurnResponseTurnCompletePayload: - type: object - properties: - event_type: - type: string - enum: - - step_start - - step_complete - - step_progress - - turn_start - - turn_complete - - turn_awaiting_input - const: turn_complete - default: turn_complete - description: Type of event being reported - turn: - $ref: '#/components/schemas/Turn' - description: >- - Complete turn data including all steps and results - additionalProperties: false - required: - - event_type - - turn - title: AgentTurnResponseTurnCompletePayload - description: >- - Payload for turn completion events in agent turn responses. - AgentTurnResponseTurnStartPayload: - type: object - properties: - event_type: - type: string - enum: - - step_start - - step_complete - - step_progress - - turn_start - - turn_complete - - turn_awaiting_input - const: turn_start - default: turn_start - description: Type of event being reported - turn_id: - type: string - description: >- - Unique identifier for the turn within a session - additionalProperties: false - required: - - event_type - - turn_id - title: AgentTurnResponseTurnStartPayload - description: >- - Payload for turn start events in agent turn responses. - ImageDelta: - type: object - properties: - type: - type: string - const: image - default: image - description: >- - Discriminator type of the delta. Always "image" - image: - type: string - contentEncoding: base64 - description: The incremental image data as bytes - additionalProperties: false - required: - - type - - image - title: ImageDelta - description: >- - An image content delta for streaming responses. - TextDelta: - type: object - properties: - type: - type: string - const: text - default: text - description: >- - Discriminator type of the delta. Always "text" - text: - type: string - description: The incremental text content - additionalProperties: false - required: - - type - - text - title: TextDelta - description: >- - A text content delta for streaming responses. - ToolCallDelta: - type: object - properties: - type: - type: string - const: tool_call - default: tool_call - description: >- - Discriminator type of the delta. Always "tool_call" - tool_call: - oneOf: - - type: string - - $ref: '#/components/schemas/ToolCall' - description: >- - Either an in-progress tool call string or the final parsed tool call - parse_status: - type: string - enum: - - started - - in_progress - - failed - - succeeded - description: Current parsing status of the tool call - additionalProperties: false - required: - - type - - tool_call - - parse_status - title: ToolCallDelta - description: >- - A tool call content delta for streaming responses. ResumeAgentTurnRequest: type: object - properties: - tool_responses: - type: array - items: - $ref: '#/components/schemas/ToolResponse' - description: >- - The tool call responses to resume the turn with. - stream: - type: boolean - description: Whether to stream the response. - additionalProperties: false - required: - - tool_responses - title: ResumeAgentTurnRequest AgentStepResponse: - type: object + $defs: + BuiltinTool: + enum: + - brave_search + - wolfram_alpha + - photogen + - code_interpreter + title: BuiltinTool + type: string + CompletionMessage: + description: >- + A message containing the model's (assistant) response in a chat conversation. + + + :param role: Must be "assistant" to identify this as the model's response + + :param content: The content of the model's response + + :param stop_reason: Reason why the model stopped generating. Options are: + - `StopReason.end_of_turn`: The model finished generating the entire + response. + - `StopReason.end_of_message`: The model finished generating but generated + a partial response -- usually, a tool call. The user may call the tool + and continue the conversation with the tool's response. + - `StopReason.out_of_tokens`: The model ran out of token budget. + :param tool_calls: List of tool calls. Each tool call is a ToolCall object. + properties: + role: + const: assistant + default: assistant + title: Role + type: string + content: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + title: Content + stop_reason: + $ref: '#/$defs/StopReason' + tool_calls: + anyOf: + - items: + $ref: '#/$defs/ToolCall' + type: array + - type: 'null' + title: Tool Calls + required: + - content + - stop_reason + title: CompletionMessage + type: object + ImageContentItem: + description: >- + A image content item + + + :param type: Discriminator type of the content item. Always "image" + + :param image: Image as a base64 encoded string or an URL + properties: + type: + const: image + default: image + title: Type + type: string + image: + $ref: '#/$defs/_URLOrData' + required: + - image + title: ImageContentItem + type: object + InferenceStep: + description: >- + An inference step in an agent turn. + + + :param model_response: The response from the LLM. + properties: + turn_id: + title: Turn Id + type: string + step_id: + title: Step Id + type: string + started_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Started At + completed_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Completed At + step_type: + const: inference + default: inference + title: Step Type + type: string + model_response: + $ref: '#/$defs/CompletionMessage' + required: + - turn_id + - step_id + - model_response + title: InferenceStep + type: object + MemoryRetrievalStep: + description: >- + A memory retrieval step in an agent turn. + + + :param vector_store_ids: The IDs of the vector databases to retrieve context + from. + + :param inserted_context: The context retrieved from the vector databases. + properties: + turn_id: + title: Turn Id + type: string + step_id: + title: Step Id + type: string + started_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Started At + completed_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Completed At + step_type: + const: memory_retrieval + default: memory_retrieval + title: Step Type + type: string + vector_store_ids: + title: Vector Store Ids + type: string + inserted_context: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + title: Inserted Context + required: + - turn_id + - step_id + - vector_store_ids + - inserted_context + title: MemoryRetrievalStep + type: object + SafetyViolation: + description: >- + Details of a safety violation detected by content moderation. + + + :param violation_level: Severity level of the violation + + :param user_message: (Optional) Message to convey to the user about the + violation + + :param metadata: Additional metadata including specific violation codes + for debugging and telemetry + properties: + violation_level: + $ref: '#/$defs/ViolationLevel' + user_message: + anyOf: + - type: string + - type: 'null' + title: User Message + metadata: + additionalProperties: true + title: Metadata + type: object + required: + - violation_level + title: SafetyViolation + type: object + ShieldCallStep: + description: >- + A shield call step in an agent turn. + + + :param violation: The violation from the shield call. + properties: + turn_id: + title: Turn Id + type: string + step_id: + title: Step Id + type: string + started_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Started At + completed_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Completed At + step_type: + const: shield_call + default: shield_call + title: Step Type + type: string + violation: + anyOf: + - $ref: '#/$defs/SafetyViolation' + - type: 'null' + required: + - turn_id + - step_id + - violation + title: ShieldCallStep + type: object + StopReason: + enum: + - end_of_turn + - end_of_message + - out_of_tokens + title: StopReason + type: string + TextContentItem: + description: >- + A text content item + + + :param type: Discriminator type of the content item. Always "text" + + :param text: Text content + properties: + type: + const: text + default: text + title: Type + type: string + text: + title: Text + type: string + required: + - text + title: TextContentItem + type: object + ToolCall: + properties: + call_id: + title: Call Id + type: string + tool_name: + anyOf: + - $ref: '#/$defs/BuiltinTool' + - type: string + title: Tool Name + arguments: + title: Arguments + type: string + required: + - call_id + - tool_name + - arguments + title: ToolCall + type: object + ToolExecutionStep: + description: >- + A tool execution step in an agent turn. + + + :param tool_calls: The tool calls to execute. + + :param tool_responses: The tool responses from the tool calls. + properties: + turn_id: + title: Turn Id + type: string + step_id: + title: Step Id + type: string + started_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Started At + completed_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Completed At + step_type: + const: tool_execution + default: tool_execution + title: Step Type + type: string + tool_calls: + items: + $ref: '#/$defs/ToolCall' + title: Tool Calls + type: array + tool_responses: + items: + $ref: '#/$defs/ToolResponse' + title: Tool Responses + type: array + required: + - turn_id + - step_id + - tool_calls + - tool_responses + title: ToolExecutionStep + type: object + ToolResponse: + description: >- + Response from a tool invocation. + + + :param call_id: Unique identifier for the tool call this response is for + + :param tool_name: Name of the tool that was invoked + + :param content: The response content from the tool + + :param metadata: (Optional) Additional metadata about the tool response + properties: + call_id: + title: Call Id + type: string + tool_name: + anyOf: + - $ref: '#/$defs/BuiltinTool' + - type: string + title: Tool Name + content: + anyOf: + - type: string + - discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + - items: + discriminator: + mapping: + image: '#/$defs/ImageContentItem' + text: '#/$defs/TextContentItem' + propertyName: type + oneOf: + - $ref: '#/$defs/ImageContentItem' + - $ref: '#/$defs/TextContentItem' + type: array + title: Content + metadata: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Metadata + required: + - call_id + - tool_name + - content + title: ToolResponse + type: object + URL: + description: >- + A URL reference to external content. + + + :param uri: The URL string pointing to the resource + properties: + uri: + title: Uri + type: string + required: + - uri + title: URL + type: object + ViolationLevel: + description: >- + Severity level of a safety violation. + + + :cvar INFO: Informational level violation that does not require action + + :cvar WARN: Warning level violation that suggests caution but allows continuation + + :cvar ERROR: Error level violation that requires blocking or intervention + enum: + - info + - warn + - error + title: ViolationLevel + type: string + _URLOrData: + description: >- + A URL or a base64 encoded string + + + :param url: A URL of the image or data URL in the format of data:image/{type};base64,{data}. + Note that URL could have length limits. + + :param data: base64 encoded image data as string + properties: + url: + anyOf: + - $ref: '#/$defs/URL' + - type: 'null' + data: + anyOf: + - type: string + - type: 'null' + contentEncoding: base64 + title: Data + title: _URLOrData + type: object + description: >- + Response containing details of a specific agent step. + + + :param step: The complete step data and execution details properties: step: - oneOf: - - $ref: '#/components/schemas/InferenceStep' - - $ref: '#/components/schemas/ToolExecutionStep' - - $ref: '#/components/schemas/ShieldCallStep' - - $ref: '#/components/schemas/MemoryRetrievalStep' discriminator: - propertyName: step_type mapping: - inference: '#/components/schemas/InferenceStep' - tool_execution: '#/components/schemas/ToolExecutionStep' - shield_call: '#/components/schemas/ShieldCallStep' - memory_retrieval: '#/components/schemas/MemoryRetrievalStep' - description: >- - The complete step data and execution details - additionalProperties: false + inference: '#/$defs/InferenceStep' + memory_retrieval: '#/$defs/MemoryRetrievalStep' + shield_call: '#/$defs/ShieldCallStep' + tool_execution: '#/$defs/ToolExecutionStep' + propertyName: step_type + oneOf: + - $ref: '#/$defs/InferenceStep' + - $ref: '#/$defs/ToolExecutionStep' + - $ref: '#/$defs/ShieldCallStep' + - $ref: '#/$defs/MemoryRetrievalStep' + title: Step required: - step title: AgentStepResponse - description: >- - Response containing details of a specific agent step. - Benchmark: type: object - properties: - identifier: - type: string - provider_resource_id: - type: string - provider_id: - type: string - type: - type: string - enum: - - model - - shield - - vector_store - - dataset - - scoring_function - - benchmark - - tool - - tool_group - - prompt - const: benchmark - default: benchmark - description: The resource type, always benchmark - dataset_id: - type: string - description: >- - Identifier of the dataset to use for the benchmark evaluation - scoring_functions: - type: array - items: - type: string - description: >- - List of scoring function identifiers to apply during evaluation - metadata: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: Metadata for this evaluation task - additionalProperties: false - required: - - identifier - - provider_id - - type - - dataset_id - - scoring_functions - - metadata - title: Benchmark - description: >- - A benchmark resource for evaluating model performance. ListBenchmarksResponse: - type: object + $defs: + Benchmark: + description: >- + A benchmark resource for evaluating model performance. + + + :param dataset_id: Identifier of the dataset to use for the benchmark + evaluation + + :param scoring_functions: List of scoring function identifiers to apply + during evaluation + + :param metadata: Metadata for this evaluation task + + :param type: The resource type, always benchmark + properties: + identifier: + description: >- + Unique identifier for this resource in llama stack + title: Identifier + type: string + provider_resource_id: + anyOf: + - type: string + - type: 'null' + description: >- + Unique identifier for this resource in the provider + title: Provider Resource Id + provider_id: + description: >- + ID of the provider that owns this resource + title: Provider Id + type: string + type: + const: benchmark + default: benchmark + title: Type + type: string + dataset_id: + title: Dataset Id + type: string + scoring_functions: + items: + type: string + title: Scoring Functions + type: array + metadata: + additionalProperties: true + description: Metadata for this evaluation task + title: Metadata + type: object + required: + - identifier + - provider_id + - dataset_id + - scoring_functions + title: Benchmark + type: object properties: data: - type: array items: - $ref: '#/components/schemas/Benchmark' - additionalProperties: false + $ref: '#/$defs/Benchmark' + title: Data + type: array required: - data title: ListBenchmarksResponse + type: object RegisterBenchmarkRequest: type: object + Benchmark: + description: >- + A benchmark resource for evaluating model performance. + + + :param dataset_id: Identifier of the dataset to use for the benchmark evaluation + + :param scoring_functions: List of scoring function identifiers to apply during + evaluation + + :param metadata: Metadata for this evaluation task + + :param type: The resource type, always benchmark properties: - benchmark_id: - type: string - description: The ID of the benchmark to register. - dataset_id: - type: string + identifier: description: >- - The ID of the dataset to use for the benchmark. + Unique identifier for this resource in llama stack + title: Identifier + type: string + provider_resource_id: + anyOf: + - type: string + - type: 'null' + description: >- + Unique identifier for this resource in the provider + title: Provider Resource Id + provider_id: + description: >- + ID of the provider that owns this resource + title: Provider Id + type: string + type: + const: benchmark + default: benchmark + title: Type + type: string + dataset_id: + title: Dataset Id + type: string scoring_functions: - type: array items: type: string - description: >- - The scoring functions to use for the benchmark. - provider_benchmark_id: - type: string - description: >- - The ID of the provider benchmark to use for the benchmark. - provider_id: - type: string - description: >- - The ID of the provider to use for the benchmark. + title: Scoring Functions + type: array metadata: + additionalProperties: true + description: Metadata for this evaluation task + title: Metadata type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: The metadata to use for the benchmark. - additionalProperties: false required: - - benchmark_id + - identifier + - provider_id - dataset_id - scoring_functions - title: RegisterBenchmarkRequest - AgentCandidate: + title: Benchmark type: object properties: type: @@ -13182,692 +19383,437 @@ components: A system message providing instructions or context to the model. EvaluateRowsRequest: type: object - properties: - input_rows: - type: array - items: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: The rows to evaluate. - scoring_functions: - type: array - items: - type: string - description: >- - The scoring functions to use for the evaluation. - benchmark_config: - $ref: '#/components/schemas/BenchmarkConfig' - description: The configuration for the benchmark. - additionalProperties: false - required: - - input_rows - - scoring_functions - - benchmark_config - title: EvaluateRowsRequest EvaluateResponse: - type: object + $defs: + ScoringResult: + description: >- + A scoring result for a single row. + + + :param score_rows: The scoring result for each row. Each row is a map + of column name to value. + + :param aggregated_results: Map of metric name to aggregated value + properties: + score_rows: + items: + additionalProperties: true + type: object + title: Score Rows + type: array + aggregated_results: + additionalProperties: true + title: Aggregated Results + type: object + required: + - score_rows + - aggregated_results + title: ScoringResult + type: object + description: >- + The response from an evaluation. + + + :param generations: The generations from the evaluation. + + :param scores: The scores from the evaluation. properties: generations: - type: array items: + additionalProperties: true type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: The generations from the evaluation. + title: Generations + type: array scores: - type: object additionalProperties: - $ref: '#/components/schemas/ScoringResult' - description: The scores from the evaluation. - additionalProperties: false + $ref: '#/$defs/ScoringResult' + title: Scores + type: object required: - generations - scores title: EvaluateResponse - description: The response from an evaluation. + type: object RunEvalRequest: type: object - properties: - benchmark_config: - $ref: '#/components/schemas/BenchmarkConfig' - description: The configuration for the benchmark. - additionalProperties: false - required: - - benchmark_config - title: RunEvalRequest Job: - type: object - properties: - job_id: - type: string - description: Unique identifier for the job - status: - type: string + $defs: + JobStatus: + description: >- + Status of a job execution. + + :cvar completed: Job has finished successfully + + :cvar in_progress: Job is currently running + + :cvar failed: Job has failed during execution + + :cvar scheduled: Job is scheduled but not yet started + + :cvar cancelled: Job was cancelled before completion enum: - completed - in_progress - failed - scheduled - cancelled - description: Current execution status of the job - additionalProperties: false + title: JobStatus + type: string + description: >- + A job execution instance with status tracking. + + + :param job_id: Unique identifier for the job + + :param status: Current execution status of the job + properties: + job_id: + title: Job Id + type: string + status: + $ref: '#/$defs/JobStatus' required: - job_id - status title: Job - description: >- - A job execution instance with status tracking. + type: object RerankRequest: type: object - properties: - model: - type: string - description: >- - The identifier of the reranking model to use. - query: - oneOf: - - type: string - - $ref: '#/components/schemas/OpenAIChatCompletionContentPartTextParam' - - $ref: '#/components/schemas/OpenAIChatCompletionContentPartImageParam' - description: >- - The search query to rank items against. Can be a string, text content - part, or image content part. The input must not exceed the model's max - input token length. - items: - type: array - items: - oneOf: - - type: string - - $ref: '#/components/schemas/OpenAIChatCompletionContentPartTextParam' - - $ref: '#/components/schemas/OpenAIChatCompletionContentPartImageParam' - description: >- - List of items to rerank. Each item can be a string, text content part, - or image content part. Each input must not exceed the model's max input - token length. - max_num_results: - type: integer - description: >- - (Optional) Maximum number of results to return. Default: returns all. - additionalProperties: false - required: - - model - - query - - items - title: RerankRequest - RerankData: - type: object - properties: - index: - type: integer - description: >- - The original index of the document in the input list - relevance_score: - type: number - description: >- - The relevance score from the model output. Values are inverted when applicable - so that higher scores indicate greater relevance. - additionalProperties: false - required: - - index - - relevance_score - title: RerankData - description: >- - A single rerank result from a reranking response. RerankResponse: - type: object + $defs: + RerankData: + description: >- + A single rerank result from a reranking response. + + + :param index: The original index of the document in the input list + + :param relevance_score: The relevance score from the model output. Values + are inverted when applicable so that higher scores indicate greater relevance. + properties: + index: + title: Index + type: integer + relevance_score: + title: Relevance Score + type: number + required: + - index + - relevance_score + title: RerankData + type: object + description: >- + Response from a reranking request. + + + :param data: List of rerank result objects, sorted by relevance score (descending) properties: data: - type: array items: - $ref: '#/components/schemas/RerankData' - description: >- - List of rerank result objects, sorted by relevance score (descending) - additionalProperties: false + $ref: '#/$defs/RerankData' + title: Data + type: array required: - data title: RerankResponse - description: Response from a reranking request. - Checkpoint: type: object - properties: - identifier: - type: string - description: Unique identifier for the checkpoint - created_at: - type: string - format: date-time - description: >- - Timestamp when the checkpoint was created - epoch: - type: integer - description: >- - Training epoch when the checkpoint was saved - post_training_job_id: - type: string - description: >- - Identifier of the training job that created this checkpoint - path: - type: string - description: >- - File system path where the checkpoint is stored - training_metrics: - $ref: '#/components/schemas/PostTrainingMetric' - description: >- - (Optional) Training metrics associated with this checkpoint - additionalProperties: false - required: - - identifier - - created_at - - epoch - - post_training_job_id - - path - title: Checkpoint - description: Checkpoint created during training runs. PostTrainingJobArtifactsResponse: - type: object + $defs: + Checkpoint: + description: >- + Checkpoint created during training runs. + + + :param identifier: Unique identifier for the checkpoint + + :param created_at: Timestamp when the checkpoint was created + + :param epoch: Training epoch when the checkpoint was saved + + :param post_training_job_id: Identifier of the training job that created + this checkpoint + + :param path: File system path where the checkpoint is stored + + :param training_metrics: (Optional) Training metrics associated with this + checkpoint + properties: + identifier: + title: Identifier + type: string + created_at: + format: date-time + title: Created At + type: string + epoch: + title: Epoch + type: integer + post_training_job_id: + title: Post Training Job Id + type: string + path: + title: Path + type: string + training_metrics: + anyOf: + - $ref: '#/$defs/PostTrainingMetric' + - type: 'null' + required: + - identifier + - created_at + - epoch + - post_training_job_id + - path + title: Checkpoint + type: object + PostTrainingMetric: + description: >- + Training metrics captured during post-training jobs. + + + :param epoch: Training epoch number + + :param train_loss: Loss value on the training dataset + + :param validation_loss: Loss value on the validation dataset + + :param perplexity: Perplexity metric indicating model confidence + properties: + epoch: + title: Epoch + type: integer + train_loss: + title: Train Loss + type: number + validation_loss: + title: Validation Loss + type: number + perplexity: + title: Perplexity + type: number + required: + - epoch + - train_loss + - validation_loss + - perplexity + title: PostTrainingMetric + type: object + description: >- + Artifacts of a finetuning job. + + + :param job_uuid: Unique identifier for the training job + + :param checkpoints: List of model checkpoints created during training properties: job_uuid: + title: Job Uuid type: string - description: Unique identifier for the training job checkpoints: - type: array items: - $ref: '#/components/schemas/Checkpoint' - description: >- - List of model checkpoints created during training - additionalProperties: false + $ref: '#/$defs/Checkpoint' + title: Checkpoints + type: array required: - job_uuid - - checkpoints title: PostTrainingJobArtifactsResponse - description: Artifacts of a finetuning job. - PostTrainingMetric: type: object - properties: - epoch: - type: integer - description: Training epoch number - train_loss: - type: number - description: Loss value on the training dataset - validation_loss: - type: number - description: Loss value on the validation dataset - perplexity: - type: number - description: >- - Perplexity metric indicating model confidence - additionalProperties: false - required: - - epoch - - train_loss - - validation_loss - - perplexity - title: PostTrainingMetric - description: >- - Training metrics captured during post-training jobs. CancelTrainingJobRequest: type: object - properties: - job_uuid: - type: string - description: The UUID of the job to cancel. - additionalProperties: false - required: - - job_uuid - title: CancelTrainingJobRequest PostTrainingJobStatusResponse: - type: object - properties: - job_uuid: - type: string - description: Unique identifier for the training job - status: - type: string + $defs: + Checkpoint: + description: >- + Checkpoint created during training runs. + + + :param identifier: Unique identifier for the checkpoint + + :param created_at: Timestamp when the checkpoint was created + + :param epoch: Training epoch when the checkpoint was saved + + :param post_training_job_id: Identifier of the training job that created + this checkpoint + + :param path: File system path where the checkpoint is stored + + :param training_metrics: (Optional) Training metrics associated with this + checkpoint + properties: + identifier: + title: Identifier + type: string + created_at: + format: date-time + title: Created At + type: string + epoch: + title: Epoch + type: integer + post_training_job_id: + title: Post Training Job Id + type: string + path: + title: Path + type: string + training_metrics: + anyOf: + - $ref: '#/$defs/PostTrainingMetric' + - type: 'null' + required: + - identifier + - created_at + - epoch + - post_training_job_id + - path + title: Checkpoint + type: object + JobStatus: + description: >- + Status of a job execution. + + :cvar completed: Job has finished successfully + + :cvar in_progress: Job is currently running + + :cvar failed: Job has failed during execution + + :cvar scheduled: Job is scheduled but not yet started + + :cvar cancelled: Job was cancelled before completion enum: - completed - in_progress - failed - scheduled - cancelled - description: Current status of the training job - scheduled_at: + title: JobStatus type: string - format: date-time + PostTrainingMetric: description: >- - (Optional) Timestamp when the job was scheduled - started_at: - type: string - format: date-time - description: >- - (Optional) Timestamp when the job execution began - completed_at: - type: string - format: date-time - description: >- - (Optional) Timestamp when the job finished, if completed - resources_allocated: + Training metrics captured during post-training jobs. + + + :param epoch: Training epoch number + + :param train_loss: Loss value on the training dataset + + :param validation_loss: Loss value on the validation dataset + + :param perplexity: Perplexity metric indicating model confidence + properties: + epoch: + title: Epoch + type: integer + train_loss: + title: Train Loss + type: number + validation_loss: + title: Validation Loss + type: number + perplexity: + title: Perplexity + type: number + required: + - epoch + - train_loss + - validation_loss + - perplexity + title: PostTrainingMetric type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: >- - (Optional) Information about computational resources allocated to the - job + description: >- + Status of a finetuning job. + + + :param job_uuid: Unique identifier for the training job + + :param status: Current status of the training job + + :param scheduled_at: (Optional) Timestamp when the job was scheduled + + :param started_at: (Optional) Timestamp when the job execution began + + :param completed_at: (Optional) Timestamp when the job finished, if completed + + :param resources_allocated: (Optional) Information about computational resources + allocated to the job + + :param checkpoints: List of model checkpoints created during training + properties: + job_uuid: + title: Job Uuid + type: string + status: + $ref: '#/$defs/JobStatus' + scheduled_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Scheduled At + started_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Started At + completed_at: + anyOf: + - format: date-time + type: string + - type: 'null' + title: Completed At + resources_allocated: + anyOf: + - additionalProperties: true + type: object + - type: 'null' + title: Resources Allocated checkpoints: - type: array items: - $ref: '#/components/schemas/Checkpoint' - description: >- - List of model checkpoints created during training - additionalProperties: false + $ref: '#/$defs/Checkpoint' + title: Checkpoints + type: array required: - job_uuid - status - - checkpoints title: PostTrainingJobStatusResponse - description: Status of a finetuning job. - ListPostTrainingJobsResponse: type: object + ListPostTrainingJobsResponse: + $defs: + PostTrainingJob: + properties: + job_uuid: + title: Job Uuid + type: string + required: + - job_uuid + title: PostTrainingJob + type: object properties: data: - type: array items: - type: object - properties: - job_uuid: - type: string - additionalProperties: false - required: - - job_uuid - title: PostTrainingJob - additionalProperties: false + $ref: '#/$defs/PostTrainingJob' + title: Data + type: array required: - data title: ListPostTrainingJobsResponse - DPOAlignmentConfig: type: object - properties: - beta: - type: number - description: Temperature parameter for the DPO loss - loss_type: - $ref: '#/components/schemas/DPOLossType' - default: sigmoid - description: The type of loss function to use for DPO - additionalProperties: false - required: - - beta - - loss_type - title: DPOAlignmentConfig - description: >- - Configuration for Direct Preference Optimization (DPO) alignment. - DPOLossType: - type: string - enum: - - sigmoid - - hinge - - ipo - - kto_pair - title: DPOLossType - DataConfig: - type: object - properties: - dataset_id: - type: string - description: >- - Unique identifier for the training dataset - batch_size: - type: integer - description: Number of samples per training batch - shuffle: - type: boolean - description: >- - Whether to shuffle the dataset during training - data_format: - $ref: '#/components/schemas/DatasetFormat' - description: >- - Format of the dataset (instruct or dialog) - validation_dataset_id: - type: string - description: >- - (Optional) Unique identifier for the validation dataset - packed: - type: boolean - default: false - description: >- - (Optional) Whether to pack multiple samples into a single sequence for - efficiency - train_on_input: - type: boolean - default: false - description: >- - (Optional) Whether to compute loss on input tokens as well as output tokens - additionalProperties: false - required: - - dataset_id - - batch_size - - shuffle - - data_format - title: DataConfig - description: >- - Configuration for training data and data loading. - DatasetFormat: - type: string - enum: - - instruct - - dialog - title: DatasetFormat - description: Format of the training dataset. - EfficiencyConfig: - type: object - properties: - enable_activation_checkpointing: - type: boolean - default: false - description: >- - (Optional) Whether to use activation checkpointing to reduce memory usage - enable_activation_offloading: - type: boolean - default: false - description: >- - (Optional) Whether to offload activations to CPU to save GPU memory - memory_efficient_fsdp_wrap: - type: boolean - default: false - description: >- - (Optional) Whether to use memory-efficient FSDP wrapping - fsdp_cpu_offload: - type: boolean - default: false - description: >- - (Optional) Whether to offload FSDP parameters to CPU - additionalProperties: false - title: EfficiencyConfig - description: >- - Configuration for memory and compute efficiency optimizations. - OptimizerConfig: - type: object - properties: - optimizer_type: - $ref: '#/components/schemas/OptimizerType' - description: >- - Type of optimizer to use (adam, adamw, or sgd) - lr: - type: number - description: Learning rate for the optimizer - weight_decay: - type: number - description: >- - Weight decay coefficient for regularization - num_warmup_steps: - type: integer - description: Number of steps for learning rate warmup - additionalProperties: false - required: - - optimizer_type - - lr - - weight_decay - - num_warmup_steps - title: OptimizerConfig - description: >- - Configuration parameters for the optimization algorithm. - OptimizerType: - type: string - enum: - - adam - - adamw - - sgd - title: OptimizerType - description: >- - Available optimizer algorithms for training. - TrainingConfig: - type: object - properties: - n_epochs: - type: integer - description: Number of training epochs to run - max_steps_per_epoch: - type: integer - default: 1 - description: Maximum number of steps to run per epoch - gradient_accumulation_steps: - type: integer - default: 1 - description: >- - Number of steps to accumulate gradients before updating - max_validation_steps: - type: integer - default: 1 - description: >- - (Optional) Maximum number of validation steps per epoch - data_config: - $ref: '#/components/schemas/DataConfig' - description: >- - (Optional) Configuration for data loading and formatting - optimizer_config: - $ref: '#/components/schemas/OptimizerConfig' - description: >- - (Optional) Configuration for the optimization algorithm - efficiency_config: - $ref: '#/components/schemas/EfficiencyConfig' - description: >- - (Optional) Configuration for memory and compute optimizations - dtype: - type: string - default: bf16 - description: >- - (Optional) Data type for model parameters (bf16, fp16, fp32) - additionalProperties: false - required: - - n_epochs - - max_steps_per_epoch - - gradient_accumulation_steps - title: TrainingConfig - description: >- - Comprehensive configuration for the training process. PreferenceOptimizeRequest: type: object - properties: - job_uuid: - type: string - description: The UUID of the job to create. - finetuned_model: - type: string - description: The model to fine-tune. - algorithm_config: - $ref: '#/components/schemas/DPOAlignmentConfig' - description: The algorithm configuration. - training_config: - $ref: '#/components/schemas/TrainingConfig' - description: The training configuration. - hyperparam_search_config: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: The hyperparam search configuration. - logger_config: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: The logger configuration. - additionalProperties: false - required: - - job_uuid - - finetuned_model - - algorithm_config - - training_config - - hyperparam_search_config - - logger_config - title: PreferenceOptimizeRequest PostTrainingJob: - type: object properties: job_uuid: + title: Job Uuid type: string - additionalProperties: false required: - job_uuid title: PostTrainingJob - AlgorithmConfig: - oneOf: - - $ref: '#/components/schemas/LoraFinetuningConfig' - - $ref: '#/components/schemas/QATFinetuningConfig' - discriminator: - propertyName: type - mapping: - LoRA: '#/components/schemas/LoraFinetuningConfig' - QAT: '#/components/schemas/QATFinetuningConfig' - LoraFinetuningConfig: type: object - properties: - type: - type: string - const: LoRA - default: LoRA - description: Algorithm type identifier, always "LoRA" - lora_attn_modules: - type: array - items: - type: string - description: >- - List of attention module names to apply LoRA to - apply_lora_to_mlp: - type: boolean - description: Whether to apply LoRA to MLP layers - apply_lora_to_output: - type: boolean - description: >- - Whether to apply LoRA to output projection layers - rank: - type: integer - description: >- - Rank of the LoRA adaptation (lower rank = fewer parameters) - alpha: - type: integer - description: >- - LoRA scaling parameter that controls adaptation strength - use_dora: - type: boolean - default: false - description: >- - (Optional) Whether to use DoRA (Weight-Decomposed Low-Rank Adaptation) - quantize_base: - type: boolean - default: false - description: >- - (Optional) Whether to quantize the base model weights - additionalProperties: false - required: - - type - - lora_attn_modules - - apply_lora_to_mlp - - apply_lora_to_output - - rank - - alpha - title: LoraFinetuningConfig - description: >- - Configuration for Low-Rank Adaptation (LoRA) fine-tuning. - QATFinetuningConfig: - type: object - properties: - type: - type: string - const: QAT - default: QAT - description: Algorithm type identifier, always "QAT" - quantizer_name: - type: string - description: >- - Name of the quantization algorithm to use - group_size: - type: integer - description: Size of groups for grouped quantization - additionalProperties: false - required: - - type - - quantizer_name - - group_size - title: QATFinetuningConfig - description: >- - Configuration for Quantization-Aware Training (QAT) fine-tuning. SupervisedFineTuneRequest: type: object - properties: - job_uuid: - type: string - description: The UUID of the job to create. - training_config: - $ref: '#/components/schemas/TrainingConfig' - description: The training configuration. - hyperparam_search_config: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: The hyperparam search configuration. - logger_config: - type: object - additionalProperties: - oneOf: - - type: 'null' - - type: boolean - - type: number - - type: string - - type: array - - type: object - description: The logger configuration. - model: - type: string - description: The model to fine-tune. - checkpoint_dir: - type: string - description: The directory to save checkpoint(s) to. - algorithm_config: - $ref: '#/components/schemas/AlgorithmConfig' - description: The algorithm configuration. - additionalProperties: false - required: - - job_uuid - - training_config - - hyperparam_search_config - - logger_config - title: SupervisedFineTuneRequest responses: BadRequest400: description: The request was invalid or malformed @@ -13957,16 +19903,12 @@ tags: Llama Stack Inference API for generating completions, chat completions, and embeddings. - - This API provides the raw interface to the underlying models. Three kinds of - models are supported: - - - LLM models: these models generate "raw" and "chat" (conversational) completions. - - - Embedding models: these models generate embeddings to be used for semantic + This API provides the raw interface to the underlying models. Three kinds + of models are supported: + - LLM models: these models generate "raw" and "chat" (conversational) completions. + - Embedding models: these models generate embeddings to be used for semantic search. - - - Rerank models: these models reorder the documents based on their relevance + - Rerank models: these models reorder the documents based on their relevance to a query. x-displayName: Inference - name: Inspect diff --git a/pyproject.toml b/pyproject.toml index 8f07f9cbd..6a01d7843 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -49,6 +49,7 @@ dependencies = [ "aiosqlite>=0.21.0", # server - for metadata store "asyncpg", # for metadata store "sqlalchemy[asyncio]>=2.0.41", # server - for conversations + "pyyaml>=6.0.2", ] [project.optional-dependencies] @@ -67,13 +68,13 @@ dev = [ "pytest-cov", "pytest-html", "pytest-json-report", - "pytest-socket", # For blocking network access in unit tests - "nbval", # For notebook testing + "pytest-socket", # For blocking network access in unit tests + "nbval", # For notebook testing "black", "ruff", "mypy", "pre-commit", - "ruamel.yaml", # needed for openapi generator + "ruamel.yaml", # needed for openapi generator ] # Type checking dependencies - includes type stubs and optional runtime dependencies # needed for complete mypy coverage across all optional features @@ -248,7 +249,9 @@ unfixable = [ # Ignore the following errors for the following files [tool.ruff.lint.per-file-ignores] "tests/**/*.py" = ["DTZ"] # Ignore datetime rules for tests -"src/llama_stack/providers/inline/scoring/basic/utils/ifeval_utils.py" = ["RUF001"] +"src/llama_stack/providers/inline/scoring/basic/utils/ifeval_utils.py" = [ + "RUF001", +] "src/llama_stack/providers/inline/scoring/basic/scoring_fn/fn_defs/regex_parser_multiple_choice_answer.py" = [ "RUF001", "PLE2515", @@ -338,7 +341,6 @@ exclude = [ "^src/llama_stack/providers/utils/telemetry/dataset_mixin\\.py$", "^src/llama_stack/providers/utils/telemetry/trace_protocol\\.py$", "^src/llama_stack/providers/utils/telemetry/tracing\\.py$", - "^src/llama_stack/strong_typing/auxiliary\\.py$", "^src/llama_stack/distributions/template\\.py$", ] diff --git a/scripts/fastapi_generator.py b/scripts/fastapi_generator.py new file mode 100755 index 000000000..5a0dbd00a --- /dev/null +++ b/scripts/fastapi_generator.py @@ -0,0 +1,1002 @@ +#!/usr/bin/env python3 +# Copyright (c) Meta Platforms, Inc. and affiliates. +# All rights reserved. +# +# This source code is licensed under the terms described in the LICENSE file in +# the root directory of this source tree. + +""" +FastAPI-based OpenAPI generator for Llama Stack. +""" + +import inspect +import json +from pathlib import Path +from typing import Annotated, Any, Literal, get_args, get_origin + +import yaml +from fastapi import FastAPI +from fastapi.openapi.utils import get_openapi + +from llama_stack.apis.datatypes import Api +from llama_stack.core.resolver import api_protocol_map + +# Import the existing route discovery system +from llama_stack.core.server.routes import get_all_api_routes + + +def _get_all_api_routes_with_functions(): + """ + Get all API routes with their actual function references. + This is a modified version of get_all_api_routes that includes the function. + """ + from aiohttp import hdrs + from starlette.routing import Route + + from llama_stack.apis.tools import RAGToolRuntime, SpecialToolGroup + + apis = {} + protocols = api_protocol_map() + toolgroup_protocols = { + SpecialToolGroup.rag_tool: RAGToolRuntime, + } + + for api, protocol in protocols.items(): + routes = [] + protocol_methods = inspect.getmembers(protocol, predicate=inspect.isfunction) + + # HACK ALERT + if api == Api.tool_runtime: + for tool_group in SpecialToolGroup: + sub_protocol = toolgroup_protocols[tool_group] + sub_protocol_methods = inspect.getmembers(sub_protocol, predicate=inspect.isfunction) + for name, method in sub_protocol_methods: + if not hasattr(method, "__webmethod__"): + continue + protocol_methods.append((f"{tool_group.value}.{name}", method)) + + for name, method in protocol_methods: + # Get all webmethods for this method (supports multiple decorators) + webmethods = getattr(method, "__webmethods__", []) + if not webmethods: + continue + + # Create routes for each webmethod decorator + for webmethod in webmethods: + path = f"/{webmethod.level}/{webmethod.route.lstrip('/')}" + if webmethod.method == hdrs.METH_GET: + http_method = hdrs.METH_GET + elif webmethod.method == hdrs.METH_DELETE: + http_method = hdrs.METH_DELETE + else: + http_method = hdrs.METH_POST + + # Store the function reference in the webmethod + webmethod.func = method + + routes.append((Route(path=path, methods=[http_method], name=name, endpoint=None), webmethod)) + + apis[api] = routes + + return apis + + +def create_llama_stack_app() -> FastAPI: + """ + Create a FastAPI app that represents the Llama Stack API. + This uses the existing route discovery system to automatically find all routes. + """ + app = FastAPI( + title="Llama Stack API", + description="A comprehensive API for building and deploying AI applications", + version="1.0.0", + servers=[ + {"url": "https://api.llamastack.com", "description": "Production server"}, + {"url": "https://staging-api.llamastack.com", "description": "Staging server"}, + ], + ) + + # Get all API routes using the modified system that includes functions + api_routes = _get_all_api_routes_with_functions() + + # Create FastAPI routes from the discovered routes + for _, routes in api_routes.items(): + for route, webmethod in routes: + # Convert the route to a FastAPI endpoint + _create_fastapi_endpoint(app, route, webmethod) + + return app + + +def _create_fastapi_endpoint(app: FastAPI, route, webmethod): + """ + Create a FastAPI endpoint from a discovered route and webmethod. + This creates endpoints with actual Pydantic models for proper schema generation. + """ + # Extract route information + path = route.path + methods = route.methods + name = route.name + + # Convert path parameters from {param} to {param:path} format for FastAPI + fastapi_path = path.replace("{", "{").replace("}", "}") + + # Try to find actual models for this endpoint + request_model, response_model, query_parameters = _find_models_for_endpoint(webmethod) + + # Extract response description from webmethod docstring (always try this first) + response_description = _extract_response_description_from_docstring(webmethod, response_model) + + # Create endpoint function with proper typing + if request_model and response_model: + # POST/PUT request with request body + async def typed_endpoint(request: request_model) -> response_model: + """Typed endpoint for proper schema generation.""" + return response_model() + + endpoint_func = typed_endpoint + elif response_model and query_parameters: + # Request with individual parameters (could be GET with query params or POST with individual params) + # Create a function with the actual query parameters + def create_query_endpoint_func(): + # Build the function signature dynamically + import inspect + + # Create parameter annotations + param_annotations = {} + param_defaults = {} + + for param_name, param_type, default_value in query_parameters: + # Handle problematic type annotations that cause FastAPI issues + safe_type = _make_type_safe_for_fastapi(param_type) + param_annotations[param_name] = safe_type + if default_value is not None: + param_defaults[param_name] = default_value + + # Create the function signature + sig = inspect.Signature( + [ + inspect.Parameter( + name=param_name, + kind=inspect.Parameter.POSITIONAL_OR_KEYWORD, + default=default_value, + annotation=param_annotations[param_name], + ) + for param_name, param_type, default_value in query_parameters + ] + ) + + async def query_endpoint(**kwargs) -> response_model: + """Query endpoint for proper schema generation.""" + return response_model() + + # Set the signature + query_endpoint.__signature__ = sig + query_endpoint.__annotations__ = param_annotations + return query_endpoint + + endpoint_func = create_query_endpoint_func() + elif response_model: + # Response-only endpoint (no parameters) + async def response_only_endpoint() -> response_model: + """Response-only endpoint for proper schema generation.""" + return response_model() + + endpoint_func = response_only_endpoint + else: + # Fallback to generic endpoint + async def generic_endpoint(*args, **kwargs): + """Generic endpoint - this would be replaced with actual implementation.""" + return {"message": f"Endpoint {name} not implemented in OpenAPI generator"} + + endpoint_func = generic_endpoint + + # Add the endpoint to the FastAPI app + is_deprecated = webmethod.deprecated or False + route_kwargs = { + "name": name, + "tags": [_get_tag_from_api(webmethod)], + "deprecated": is_deprecated, + "responses": { + 200: { + "description": response_description, + "content": { + "application/json": { + "schema": {"$ref": f"#/components/schemas/{response_model.__name__}"} if response_model else {} + } + }, + }, + 400: {"$ref": "#/components/responses/BadRequest400"}, + 429: {"$ref": "#/components/responses/TooManyRequests429"}, + 500: {"$ref": "#/components/responses/InternalServerError500"}, + "default": {"$ref": "#/components/responses/DefaultError"}, + }, + } + + for method in methods: + if method.upper() == "GET": + app.get(fastapi_path, **route_kwargs)(endpoint_func) + elif method.upper() == "POST": + app.post(fastapi_path, **route_kwargs)(endpoint_func) + elif method.upper() == "PUT": + app.put(fastapi_path, **route_kwargs)(endpoint_func) + elif method.upper() == "DELETE": + app.delete(fastapi_path, **route_kwargs)(endpoint_func) + elif method.upper() == "PATCH": + app.patch(fastapi_path, **route_kwargs)(endpoint_func) + + +def _extract_response_description_from_docstring(webmethod, response_model) -> str: + """ + Extract response description from the actual function docstring. + Looks for :returns: in the docstring and uses that as the description. + """ + # Try to get the actual function from the webmethod + # The webmethod should have a reference to the original function + func = getattr(webmethod, "func", None) + if not func: + # If we can't get the function, return a generic description + return "Successful Response" + + # Get the function's docstring + docstring = func.__doc__ or "" + + # Look for :returns: line in the docstring + lines = docstring.split("\n") + for line in lines: + line = line.strip() + if line.startswith(":returns:"): + # Extract the description after :returns: + description = line[9:].strip() # Remove ':returns:' prefix + if description: + return description + + # If no :returns: found, return a generic description + return "Successful Response" + + +def _get_tag_from_api(webmethod) -> str: + """Extract a tag name from the webmethod for API grouping.""" + # Extract API name from the route path + if webmethod.level: + return webmethod.level.replace("/", "").title() + return "API" + + +def _find_models_for_endpoint(webmethod) -> tuple[type | None, type | None, list[tuple[str, type, Any]]]: + """ + Find appropriate request and response models for an endpoint by analyzing the actual function signature. + This uses the webmethod's function to determine the correct models dynamically. + + Returns: + tuple: (request_model, response_model, query_parameters) + where query_parameters is a list of (name, type, default_value) tuples + """ + try: + # Get the actual function from the webmethod + func = getattr(webmethod, "func", None) + if not func: + return None, None, [] + + # Analyze the function signature + sig = inspect.signature(func) + + # Find request model (first parameter that's not 'self') + request_model = None + query_parameters = [] + + for param_name, param in sig.parameters.items(): + if param_name == "self": + continue + + # Check if it's a Pydantic model (for POST/PUT requests) + param_type = param.annotation + if hasattr(param_type, "model_json_schema"): + request_model = param_type + break + elif get_origin(param_type) is Annotated: + # Handle Annotated types - get the base type + args = get_args(param_type) + if args and hasattr(args[0], "model_json_schema"): + request_model = args[0] + break + else: + # This is likely a query parameter for GET requests + # Store the parameter info for later use + default_value = param.default if param.default != inspect.Parameter.empty else None + + # Extract the base type from union types (e.g., str | None -> str) + # Also make it safe for FastAPI to avoid forward reference issues + base_type = _make_type_safe_for_fastapi(param_type) + query_parameters.append((param_name, base_type, default_value)) + + # Find response model from return annotation + response_model = None + return_annotation = sig.return_annotation + if return_annotation != inspect.Signature.empty: + if hasattr(return_annotation, "model_json_schema"): + response_model = return_annotation + elif get_origin(return_annotation) is Annotated: + # Handle Annotated return types + args = get_args(return_annotation) + if args and hasattr(args[0], "model_json_schema"): + response_model = args[0] + elif get_origin(return_annotation) is type(return_annotation): # Union type + # Handle union types - try to find the first Pydantic model + args = get_args(return_annotation) + for arg in args: + if hasattr(arg, "model_json_schema"): + response_model = arg + break + + return request_model, response_model, query_parameters + + except Exception: + # If we can't analyze the function signature, return None + return None, None, [] + + +def _make_type_safe_for_fastapi(type_hint) -> type: + """ + Make a type hint safe for FastAPI by converting problematic types to their base types. + This handles cases like Literal["24h"] that cause forward reference errors. + """ + # Handle Literal types that might cause issues + if hasattr(type_hint, "__origin__") and type_hint.__origin__ is Literal: + args = get_args(type_hint) + if args: + # Get the type of the first literal value + first_arg = args[0] + if isinstance(first_arg, str): + return str + elif isinstance(first_arg, int): + return int + elif isinstance(first_arg, float): + return float + elif isinstance(first_arg, bool): + return bool + else: + return type(first_arg) + + # Handle Union types (Python 3.10+ uses | syntax) + origin = get_origin(type_hint) + + if origin is type(None) or (origin is type and type_hint is type(None)): + # This is just None, return None + return type_hint + + # Handle Union types (both old Union and new | syntax) + if origin is type(type_hint) or (hasattr(type_hint, "__args__") and type_hint.__args__): + # This is a union type, find the non-None type + args = get_args(type_hint) + for arg in args: + if arg is not type(None) and arg is not None: + return arg + # If all args are None, return the first one + return args[0] if args else type_hint + + # Not a union type, return as-is + return type_hint + + +def _generate_schema_for_type(type_hint) -> dict[str, Any]: + """ + Generate a JSON schema for a given type hint. + This is a simplified version that handles basic types. + """ + # Handle Union types (e.g., str | None) + if get_origin(type_hint) is type(None) or (get_origin(type_hint) is type and type_hint is type(None)): + return {"type": "null"} + + # Handle list types + if get_origin(type_hint) is list: + args = get_args(type_hint) + if args: + item_type = args[0] + return {"type": "array", "items": _generate_schema_for_type(item_type)} + return {"type": "array"} + + # Handle basic types + if type_hint is str: + return {"type": "string"} + elif type_hint is int: + return {"type": "integer"} + elif type_hint is float: + return {"type": "number"} + elif type_hint is bool: + return {"type": "boolean"} + elif type_hint is dict: + return {"type": "object"} + elif type_hint is list: + return {"type": "array"} + + # For complex types, try to get the schema from Pydantic + try: + if hasattr(type_hint, "model_json_schema"): + return type_hint.model_json_schema() + elif hasattr(type_hint, "__name__"): + return {"$ref": f"#/components/schemas/{type_hint.__name__}"} + except Exception: + pass + + # Fallback + return {"type": "object"} + + +def _add_llama_stack_extensions(openapi_schema: dict[str, Any], app: FastAPI) -> dict[str, Any]: + """ + Add Llama Stack specific extensions to the OpenAPI schema. + This includes x-llama-stack-extra-body-params for ExtraBodyField parameters. + """ + # Get all API routes to find functions with ExtraBodyField parameters + api_routes = get_all_api_routes() + + for api_name, routes in api_routes.items(): + for route, webmethod in routes: + # Extract path and method + path = route.path + methods = route.methods + + for method in methods: + method_lower = method.lower() + if method_lower in openapi_schema.get("paths", {}).get(path, {}): + operation = openapi_schema["paths"][path][method_lower] + + # Try to find the actual function that implements this route + # and extract its ExtraBodyField parameters + extra_body_params = _find_extra_body_params_for_route(api_name, route, webmethod) + + if extra_body_params: + operation["x-llama-stack-extra-body-params"] = extra_body_params + + return openapi_schema + + +def _find_extra_body_params_for_route(api_name: str, route, webmethod) -> list[dict[str, Any]]: + """ + Find the actual function that implements a route and extract its ExtraBodyField parameters. + """ + try: + # Try to get the actual function from the API protocol map + from llama_stack.core.resolver import api_protocol_map + + # Look up the API implementation + if api_name in api_protocol_map: + _ = api_protocol_map[api_name] + + # Try to find the method that matches this route + # This is a simplified approach - we'd need to map the route to the actual method + # For now, we'll return an empty list to avoid hardcoding + return [] + + return [] + except Exception: + # If we can't find the function, return empty list + return [] + + +def _add_error_responses(openapi_schema: dict[str, Any]) -> dict[str, Any]: + """ + Add standard error response definitions to the OpenAPI schema. + Uses the actual Error model from the codebase for consistency. + """ + if "components" not in openapi_schema: + openapi_schema["components"] = {} + + if "responses" not in openapi_schema["components"]: + openapi_schema["components"]["responses"] = {} + + # Import the actual Error model + try: + from llama_stack.apis.datatypes import Error + + # Generate the Error schema using Pydantic + error_schema = Error.model_json_schema() + + # Ensure the Error schema is in the components/schemas + if "schemas" not in openapi_schema["components"]: + openapi_schema["components"]["schemas"] = {} + + # Only add Error schema if it doesn't already exist + if "Error" not in openapi_schema["components"]["schemas"]: + openapi_schema["components"]["schemas"]["Error"] = error_schema + + except ImportError: + # Fallback if we can't import the Error model + error_schema = {"$ref": "#/components/schemas/Error"} + + # Define standard HTTP error responses + error_responses = { + 400: { + "name": "BadRequest400", + "description": "The request was invalid or malformed", + "example": {"status": 400, "title": "Bad Request", "detail": "The request was invalid or malformed"}, + }, + 429: { + "name": "TooManyRequests429", + "description": "The client has sent too many requests in a given amount of time", + "example": { + "status": 429, + "title": "Too Many Requests", + "detail": "You have exceeded the rate limit. Please try again later.", + }, + }, + 500: { + "name": "InternalServerError500", + "description": "The server encountered an unexpected error", + "example": {"status": 500, "title": "Internal Server Error", "detail": "An unexpected error occurred"}, + }, + } + + # Add each error response to the schema + for _, error_info in error_responses.items(): + response_name = error_info["name"] + openapi_schema["components"]["responses"][response_name] = { + "description": error_info["description"], + "content": { + "application/json": {"schema": {"$ref": "#/components/schemas/Error"}, "example": error_info["example"]} + }, + } + + # Add a default error response + openapi_schema["components"]["responses"]["DefaultError"] = { + "description": "An error occurred", + "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}, + } + + return openapi_schema + + +def _fix_schema_issues(openapi_schema: dict[str, Any]) -> dict[str, Any]: + """ + Fix common schema issues that cause OpenAPI validation problems. + This includes converting exclusiveMinimum numbers to minimum values. + """ + if "components" not in openapi_schema or "schemas" not in openapi_schema["components"]: + return openapi_schema + + schemas = openapi_schema["components"]["schemas"] + + # Fix exclusiveMinimum issues + for _, schema_def in schemas.items(): + _fix_exclusive_minimum_in_schema(schema_def) + + return openapi_schema + + +def _fix_exclusive_minimum_in_schema(obj: Any) -> None: + """ + Recursively fix exclusiveMinimum issues in a schema object. + Converts exclusiveMinimum numbers to minimum values. + """ + if isinstance(obj, dict): + # Check if this is a schema with exclusiveMinimum + if "exclusiveMinimum" in obj and isinstance(obj["exclusiveMinimum"], int | float): + # Convert exclusiveMinimum number to minimum + obj["minimum"] = obj["exclusiveMinimum"] + del obj["exclusiveMinimum"] + + # Recursively process all values + for value in obj.values(): + _fix_exclusive_minimum_in_schema(value) + + elif isinstance(obj, list): + # Recursively process all items + for item in obj: + _fix_exclusive_minimum_in_schema(item) + + +def _sort_paths_alphabetically(openapi_schema: dict[str, Any]) -> dict[str, Any]: + """ + Sort the paths in the OpenAPI schema by version prefix first, then alphabetically. + Also sort HTTP methods alphabetically within each path. + Version order: v1beta, v1alpha, v1 + """ + if "paths" not in openapi_schema: + return openapi_schema + + def path_sort_key(path: str) -> tuple: + """ + Create a sort key that groups paths by version prefix first. + Returns (version_priority, path) where version_priority: + - 0 for v1beta + - 1 for v1alpha + - 2 for v1 + - 3 for others + """ + if path.startswith("/v1beta/"): + version_priority = 0 + elif path.startswith("/v1alpha/"): + version_priority = 1 + elif path.startswith("/v1/"): + version_priority = 2 + else: + version_priority = 3 + + return (version_priority, path) + + def sort_path_item(path_item: dict[str, Any]) -> dict[str, Any]: + """Sort HTTP methods alphabetically within a path item.""" + if not isinstance(path_item, dict): + return path_item + + # Define the order of HTTP methods + method_order = ["delete", "get", "head", "options", "patch", "post", "put", "trace"] + + # Create a new ordered dict with methods in alphabetical order + sorted_path_item = {} + + # First add methods in the defined order + for method in method_order: + if method in path_item: + sorted_path_item[method] = path_item[method] + + # Then add any other keys that aren't HTTP methods + for key, value in path_item.items(): + if key not in method_order: + sorted_path_item[key] = value + + return sorted_path_item + + # Sort paths by version prefix first, then alphabetically + # Also sort HTTP methods within each path + sorted_paths = {} + for path, path_item in sorted(openapi_schema["paths"].items(), key=lambda x: path_sort_key(x[0])): + sorted_paths[path] = sort_path_item(path_item) + + openapi_schema["paths"] = sorted_paths + + return openapi_schema + + +def _filter_schema_by_version( + openapi_schema: dict[str, Any], stable_only: bool = True, exclude_deprecated: bool = True +) -> dict[str, Any]: + """ + Filter OpenAPI schema by API version. + + Args: + openapi_schema: The full OpenAPI schema + stable_only: If True, return only /v1/ paths (stable). If False, return only /v1alpha/ and /v1beta/ paths (experimental). + exclude_deprecated: If True, exclude deprecated endpoints from the result. + + Returns: + Filtered OpenAPI schema + """ + filtered_schema = openapi_schema.copy() + + if "paths" not in filtered_schema: + return filtered_schema + + # Filter paths based on version prefix and deprecated status + filtered_paths = {} + for path, path_item in filtered_schema["paths"].items(): + # Check if path has any deprecated operations + is_deprecated = _is_path_deprecated(path_item) + + # Skip deprecated endpoints if exclude_deprecated is True + if exclude_deprecated and is_deprecated: + continue + + if stable_only: + # Only include /v1/ paths, exclude /v1alpha/ and /v1beta/ + if path.startswith("/v1/") and not path.startswith("/v1alpha/") and not path.startswith("/v1beta/"): + filtered_paths[path] = path_item + else: + # Only include /v1alpha/ and /v1beta/ paths, exclude /v1/ + if path.startswith("/v1alpha/") or path.startswith("/v1beta/"): + filtered_paths[path] = path_item + + filtered_schema["paths"] = filtered_paths + + # Filter schemas/components to only include ones referenced by filtered paths + if "components" in filtered_schema and "schemas" in filtered_schema["components"]: + # Find all schemas that are actually referenced by the filtered paths + # Use the original schema to find all references, not the filtered one + referenced_schemas = _find_schemas_referenced_by_paths(filtered_paths, openapi_schema) + + # Only keep schemas that are referenced by the filtered paths + filtered_schemas = {} + for schema_name, schema_def in filtered_schema["components"]["schemas"].items(): + if schema_name in referenced_schemas: + filtered_schemas[schema_name] = schema_def + + filtered_schema["components"]["schemas"] = filtered_schemas + + return filtered_schema + + +def _find_schemas_referenced_by_paths(filtered_paths: dict[str, Any], openapi_schema: dict[str, Any]) -> set[str]: + """ + Find all schemas that are referenced by the filtered paths. + This recursively traverses the path definitions to find all $ref references. + """ + referenced_schemas = set() + + # Traverse all filtered paths + for _, path_item in filtered_paths.items(): + if not isinstance(path_item, dict): + continue + + # Check each HTTP method in the path + for method in ["get", "post", "put", "delete", "patch", "head", "options"]: + if method in path_item: + operation = path_item[method] + if isinstance(operation, dict): + # Find all schema references in this operation + referenced_schemas.update(_find_schema_refs_in_object(operation)) + + # Also check the responses section for schema references + if "components" in openapi_schema and "responses" in openapi_schema["components"]: + referenced_schemas.update(_find_schema_refs_in_object(openapi_schema["components"]["responses"])) + + # Also include schemas that are referenced by other schemas (transitive references) + # This ensures we include all dependencies + all_schemas = openapi_schema.get("components", {}).get("schemas", {}) + additional_schemas = set() + + for schema_name in referenced_schemas: + if schema_name in all_schemas: + additional_schemas.update(_find_schema_refs_in_object(all_schemas[schema_name])) + + # Keep adding transitive references until no new ones are found + while additional_schemas: + new_schemas = additional_schemas - referenced_schemas + if not new_schemas: + break + referenced_schemas.update(new_schemas) + additional_schemas = set() + for schema_name in new_schemas: + if schema_name in all_schemas: + additional_schemas.update(_find_schema_refs_in_object(all_schemas[schema_name])) + + return referenced_schemas + + +def _find_schema_refs_in_object(obj: Any) -> set[str]: + """ + Recursively find all schema references ($ref) in an object. + """ + refs = set() + + if isinstance(obj, dict): + for key, value in obj.items(): + if key == "$ref" and isinstance(value, str) and value.startswith("#/components/schemas/"): + schema_name = value.split("/")[-1] + refs.add(schema_name) + else: + refs.update(_find_schema_refs_in_object(value)) + elif isinstance(obj, list): + for item in obj: + refs.update(_find_schema_refs_in_object(item)) + + return refs + + +def _is_path_deprecated(path_item: dict[str, Any]) -> bool: + """ + Check if a path item has any deprecated operations. + """ + if not isinstance(path_item, dict): + return False + + # Check each HTTP method in the path item + for method in ["get", "post", "put", "delete", "patch", "head", "options"]: + if method in path_item: + operation = path_item[method] + if isinstance(operation, dict) and operation.get("deprecated", False): + return True + + return False + + +def _filter_deprecated_schema(openapi_schema: dict[str, Any]) -> dict[str, Any]: + """ + Filter OpenAPI schema to include only deprecated endpoints. + Includes all deprecated endpoints regardless of version (v1, v1alpha, v1beta). + """ + filtered_schema = openapi_schema.copy() + + if "paths" not in filtered_schema: + return filtered_schema + + # Filter paths to only include deprecated ones + filtered_paths = {} + for path, path_item in filtered_schema["paths"].items(): + if _is_path_deprecated(path_item): + filtered_paths[path] = path_item + + filtered_schema["paths"] = filtered_paths + + return filtered_schema + + +def generate_openapi_spec(output_dir: str, format: str = "yaml", include_examples: bool = True) -> dict[str, Any]: + """ + Generate OpenAPI specification using FastAPI's built-in method. + + Args: + output_dir: Directory to save the generated files + format: Output format ("yaml", "json", or "both") + include_examples: Whether to include examples in the spec + + Returns: + The generated OpenAPI specification as a dictionary + """ + # Create the FastAPI app + app = create_llama_stack_app() + + # Generate the OpenAPI schema + openapi_schema = get_openapi( + title=app.title, + version=app.version, + description=app.description, + routes=app.routes, + servers=app.servers, + ) + + # Add Llama Stack specific extensions + openapi_schema = _add_llama_stack_extensions(openapi_schema, app) + + # Add standard error responses + openapi_schema = _add_error_responses(openapi_schema) + + # Ensure all referenced schemas are included + # DISABLED: This was using hardcoded schema generation. FastAPI should handle this automatically. + # openapi_schema = _ensure_referenced_schemas(openapi_schema) + + # Control schema registration based on @json_schema_type decorator + # Temporarily disabled to fix missing schema issues + # openapi_schema = _control_schema_registration(openapi_schema) + + # Fix malformed schemas after all other processing + # DISABLED: This was a hardcoded workaround. Using Pydantic's TypeAdapter instead. + # _fix_malformed_schemas(openapi_schema) + + # Split into stable (v1 only), experimental (v1alpha + v1beta), and deprecated specs + # Each spec needs its own deep copy of the full schema to avoid cross-contamination + import copy + + stable_schema = _filter_schema_by_version(copy.deepcopy(openapi_schema), stable_only=True, exclude_deprecated=True) + experimental_schema = _filter_schema_by_version( + copy.deepcopy(openapi_schema), stable_only=False, exclude_deprecated=True + ) + deprecated_schema = _filter_deprecated_schema(copy.deepcopy(openapi_schema)) + + # Sort paths alphabetically for stable (v1 only) + stable_schema = _sort_paths_alphabetically(stable_schema) + # Sort paths by version prefix for experimental (v1beta, v1alpha) + experimental_schema = _sort_paths_alphabetically(experimental_schema) + # Sort paths by version prefix for deprecated + deprecated_schema = _sort_paths_alphabetically(deprecated_schema) + + # Fix schema issues (like exclusiveMinimum -> minimum) for each spec + stable_schema = _fix_schema_issues(stable_schema) + experimental_schema = _fix_schema_issues(experimental_schema) + deprecated_schema = _fix_schema_issues(deprecated_schema) + + # Add any custom modifications here if needed + if include_examples: + # Add examples to the schema if needed + pass + + # Ensure output directory exists + output_path = Path(output_dir) + output_path.mkdir(parents=True, exist_ok=True) + + # Save the stable specification + if format in ["yaml", "both"]: + yaml_path = output_path / "llama-stack-spec.yaml" + with open(yaml_path, "w") as f: + yaml.dump(stable_schema, f, default_flow_style=False, sort_keys=False) + print(f"✅ Generated YAML (stable): {yaml_path}") + + experimental_yaml_path = output_path / "experimental-llama-stack-spec.yaml" + with open(experimental_yaml_path, "w") as f: + yaml.dump(experimental_schema, f, default_flow_style=False, sort_keys=False) + print(f"✅ Generated YAML (experimental): {experimental_yaml_path}") + + deprecated_yaml_path = output_path / "deprecated-llama-stack-spec.yaml" + with open(deprecated_yaml_path, "w") as f: + yaml.dump(deprecated_schema, f, default_flow_style=False, sort_keys=False) + print(f"✅ Generated YAML (deprecated): {deprecated_yaml_path}") + + if format in ["json", "both"]: + json_path = output_path / "llama-stack-spec.json" + with open(json_path, "w") as f: + json.dump(stable_schema, f, indent=2) + print(f"✅ Generated JSON (stable): {json_path}") + + experimental_json_path = output_path / "experimental-llama-stack-spec.json" + with open(experimental_json_path, "w") as f: + json.dump(experimental_schema, f, indent=2) + print(f"✅ Generated JSON (experimental): {experimental_json_path}") + + deprecated_json_path = output_path / "deprecated-llama-stack-spec.json" + with open(deprecated_json_path, "w") as f: + json.dump(deprecated_schema, f, indent=2) + print(f"✅ Generated JSON (deprecated): {deprecated_json_path}") + + # Generate HTML documentation + html_path = output_path / "llama-stack-spec.html" + generate_html_docs(stable_schema, html_path) + print(f"✅ Generated HTML: {html_path}") + + experimental_html_path = output_path / "experimental-llama-stack-spec.html" + generate_html_docs(experimental_schema, experimental_html_path, spec_file="experimental-llama-stack-spec.yaml") + print(f"✅ Generated HTML (experimental): {experimental_html_path}") + + deprecated_html_path = output_path / "deprecated-llama-stack-spec.html" + generate_html_docs(deprecated_schema, deprecated_html_path, spec_file="deprecated-llama-stack-spec.yaml") + print(f"✅ Generated HTML (deprecated): {deprecated_html_path}") + + return stable_schema + + +def generate_html_docs( + openapi_schema: dict[str, Any], output_path: Path, spec_file: str = "llama-stack-spec.yaml" +) -> None: + """Generate HTML documentation using ReDoc.""" + html_template = f""" + + + + Llama Stack API Documentation + + + + + + + + + + + """.strip() + + with open(output_path, "w") as f: + f.write(html_template + "\n") + + +def main(): + """Main entry point for the FastAPI OpenAPI generator.""" + import argparse + + parser = argparse.ArgumentParser(description="Generate OpenAPI specification using FastAPI") + parser.add_argument("output_dir", help="Output directory for generated files") + parser.add_argument("--format", choices=["yaml", "json", "both"], default="yaml", help="Output format") + parser.add_argument("--no-examples", action="store_true", help="Exclude examples from the specification") + + args = parser.parse_args() + + print("🚀 Generating OpenAPI specification using FastAPI...") + print(f"📁 Output directory: {args.output_dir}") + print(f"📄 Format: {args.format}") + + try: + openapi_schema = generate_openapi_spec( + output_dir=args.output_dir, format=args.format, include_examples=not args.no_examples + ) + + print("\n✅ OpenAPI specification generated successfully!") + print(f"📊 Schemas: {len(openapi_schema.get('components', {}).get('schemas', {}))}") + print(f"🛣️ Paths: {len(openapi_schema.get('paths', {}))}") + + # Count operations + operation_count = 0 + for path_info in openapi_schema.get("paths", {}).values(): + for method in ["get", "post", "put", "delete", "patch"]: + if method in path_info: + operation_count += 1 + + print(f"🔧 Operations: {operation_count}") + + except Exception as e: + print(f"❌ Error generating OpenAPI specification: {e}") + raise + + +if __name__ == "__main__": + main() diff --git a/src/llama_stack/apis/vector_io/vector_io.py b/src/llama_stack/apis/vector_io/vector_io.py index cbb16287b..892dc0711 100644 --- a/src/llama_stack/apis/vector_io/vector_io.py +++ b/src/llama_stack/apis/vector_io/vector_io.py @@ -17,8 +17,7 @@ from llama_stack.apis.inference import InterleavedContent from llama_stack.apis.vector_stores import VectorStore from llama_stack.apis.version import LLAMA_STACK_API_V1 from llama_stack.core.telemetry.trace_protocol import trace_protocol -from llama_stack.schema_utils import json_schema_type, webmethod -from llama_stack.strong_typing.schema import register_schema +from llama_stack.schema_utils import json_schema_type, register_schema, webmethod @json_schema_type diff --git a/src/llama_stack/core/library_client.py b/src/llama_stack/core/library_client.py index 6203b529e..7bde7312d 100644 --- a/src/llama_stack/core/library_client.py +++ b/src/llama_stack/core/library_client.py @@ -33,24 +33,17 @@ from termcolor import cprint from llama_stack.core.build import print_pip_install_help from llama_stack.core.configure import parse_and_maybe_upgrade_config from llama_stack.core.datatypes import BuildConfig, BuildProvider, DistributionSpec -from llama_stack.core.request_headers import ( - PROVIDER_DATA_VAR, - request_provider_data_context, -) +from llama_stack.core.request_headers import PROVIDER_DATA_VAR, request_provider_data_context from llama_stack.core.resolver import ProviderRegistry from llama_stack.core.server.routes import RouteImpls, find_matching_route, initialize_route_impls -from llama_stack.core.stack import ( - Stack, - get_stack_run_config_from_distro, - replace_env_vars, -) +from llama_stack.core.stack import Stack, get_stack_run_config_from_distro, replace_env_vars from llama_stack.core.telemetry import Telemetry from llama_stack.core.telemetry.tracing import CURRENT_TRACE_CONTEXT, end_trace, setup_logger, start_trace from llama_stack.core.utils.config import redact_sensitive_fields from llama_stack.core.utils.context import preserve_contexts_async_generator from llama_stack.core.utils.exec import in_notebook +from llama_stack.core.utils.type_inspection import is_unwrapped_body_param from llama_stack.log import get_logger, setup_logging -from llama_stack.strong_typing.inspection import is_unwrapped_body_param logger = get_logger(name=__name__, category="core") diff --git a/src/llama_stack/core/utils/type_inspection.py b/src/llama_stack/core/utils/type_inspection.py new file mode 100644 index 000000000..31e7f2328 --- /dev/null +++ b/src/llama_stack/core/utils/type_inspection.py @@ -0,0 +1,45 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# All rights reserved. +# +# This source code is licensed under the terms described in the LICENSE file in +# the root directory of this source tree. + +""" +Utility functions for type inspection and parameter handling. +""" + +import inspect +import typing +from typing import Any, get_args, get_origin + +from pydantic import BaseModel +from pydantic.fields import FieldInfo + + +def is_unwrapped_body_param(param_type: Any) -> bool: + """ + Check if a parameter type represents an unwrapped body parameter. + An unwrapped body parameter is an Annotated type with Body(embed=False) + + This is used to determine whether request parameters should be flattened + in OpenAPI specs and client libraries (matching FastAPI's embed=False behavior). + + Args: + param_type: The parameter type annotation to check + + Returns: + True if the parameter should be treated as an unwrapped body parameter + """ + # Check if it's Annotated with Body(embed=False) + if get_origin(param_type) is typing.Annotated: + args = get_args(param_type) + base_type = args[0] + metadata = args[1:] + + # Look for Body annotation with embed=False + # Body() returns a FieldInfo object, so we check for that type and the embed attribute + for item in metadata: + if isinstance(item, FieldInfo) and hasattr(item, "embed") and not item.embed: + return inspect.isclass(base_type) and issubclass(base_type, BaseModel) + + return False diff --git a/src/llama_stack/schema_utils.py b/src/llama_stack/schema_utils.py index 8444d2a34..8760988d4 100644 --- a/src/llama_stack/schema_utils.py +++ b/src/llama_stack/schema_utils.py @@ -8,8 +8,6 @@ from collections.abc import Callable from dataclasses import dataclass from typing import Any, TypeVar -from .strong_typing.schema import json_schema_type, register_schema # noqa: F401 - class ExtraBodyField[T]: """ @@ -48,6 +46,47 @@ class ExtraBodyField[T]: self.description = description +def json_schema_type(cls): + """ + Decorator to mark a Pydantic model for top-level component registration. + + Models marked with this decorator will be registered as top-level components + in the OpenAPI schema, while unmarked models will be inlined. + + This provides control over schema registration to avoid unnecessary indirection + for simple one-off types while keeping complex reusable types as components. + """ + cls._llama_stack_schema_type = True + return cls + + +# Global registry for registered schemas +_registered_schemas = {} + + +def register_schema(schema_type, name: str | None = None): + """ + Register a schema type for top-level component registration. + + This replicates the behavior of strong_typing's register_schema function. + It's used for union types and other complex types that should appear as + top-level components in the OpenAPI schema. + + Args: + schema_type: The type to register (e.g., union types, Annotated types) + name: Optional name for the schema in the OpenAPI spec. If not provided, + uses the type's __name__ or a generated name. + """ + if name is None: + name = getattr(schema_type, "__name__", f"Anonymous_{id(schema_type)}") + + # Store the registration information in a global registry + # since union types don't allow setting attributes + _registered_schemas[schema_type] = {"name": name, "type": schema_type} + + return schema_type + + @dataclass class WebMethod: level: str | None = None diff --git a/src/llama_stack/strong_typing/__init__.py b/src/llama_stack/strong_typing/__init__.py deleted file mode 100644 index d832dcf6f..000000000 --- a/src/llama_stack/strong_typing/__init__.py +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright (c) Meta Platforms, Inc. and affiliates. -# All rights reserved. -# -# This source code is licensed under the terms described in the LICENSE file in -# the root directory of this source tree. - -""" -Type-safe data interchange for Python data classes. - -Provides auxiliary services for working with Python type annotations, converting typed data to and from JSON, -and generating a JSON schema for a complex type. -""" - -__version__ = "0.3.4" -__author__ = "Levente Hunyadi" -__copyright__ = "Copyright 2021-2024, Levente Hunyadi" -__license__ = "MIT" -__maintainer__ = "Levente Hunyadi" -__status__ = "Production" diff --git a/src/llama_stack/strong_typing/auxiliary.py b/src/llama_stack/strong_typing/auxiliary.py deleted file mode 100644 index eb067b38b..000000000 --- a/src/llama_stack/strong_typing/auxiliary.py +++ /dev/null @@ -1,229 +0,0 @@ -# Copyright (c) Meta Platforms, Inc. and affiliates. -# All rights reserved. -# -# This source code is licensed under the terms described in the LICENSE file in -# the root directory of this source tree. - -""" -Type-safe data interchange for Python data classes. - -:see: https://github.com/hunyadi/strong_typing -""" - -import dataclasses -import sys -from collections.abc import Callable -from dataclasses import is_dataclass -from typing import TypeVar, overload - -if sys.version_info >= (3, 9): - from typing import Annotated as Annotated -else: - from typing import Annotated as Annotated - -if sys.version_info >= (3, 10): - from typing import TypeAlias as TypeAlias -else: - from typing import TypeAlias as TypeAlias - -if sys.version_info >= (3, 11): - from typing import dataclass_transform as dataclass_transform -else: - from typing import dataclass_transform as dataclass_transform - -T = TypeVar("T") - - -def _compact_dataclass_repr(obj: object) -> str: - """ - Compact data-class representation where positional arguments are used instead of keyword arguments. - - :param obj: A data-class object. - :returns: A string that matches the pattern `Class(arg1, arg2, ...)`. - """ - - if is_dataclass(obj): - arglist = ", ".join(repr(getattr(obj, field.name)) for field in dataclasses.fields(obj)) - return f"{obj.__class__.__name__}({arglist})" - else: - return obj.__class__.__name__ - - -class CompactDataClass: - "A data class whose repr() uses positional rather than keyword arguments." - - def __repr__(self) -> str: - return _compact_dataclass_repr(self) - - -@overload -def typeannotation(cls: type[T], /) -> type[T]: ... - - -@overload -def typeannotation(cls: None, *, eq: bool = True, order: bool = False) -> Callable[[type[T]], type[T]]: ... - - -@dataclass_transform(eq_default=True, order_default=False) -def typeannotation( - cls: type[T] | None = None, *, eq: bool = True, order: bool = False -) -> type[T] | Callable[[type[T]], type[T]]: - """ - Returns the same class as was passed in, with dunder methods added based on the fields defined in the class. - - :param cls: The data-class type to transform into a type annotation. - :param eq: Whether to generate functions to support equality comparison. - :param order: Whether to generate functions to support ordering. - :returns: A data-class type, or a wrapper for data-class types. - """ - - def wrap(cls: type[T]) -> type[T]: - # mypy fails to equate bound-y functions (first argument interpreted as - # the bound object) with class methods, hence the `ignore` directive. - cls.__repr__ = _compact_dataclass_repr # type: ignore[method-assign] - if not dataclasses.is_dataclass(cls): - cls = dataclasses.dataclass( # type: ignore[call-overload] - cls, - init=True, - repr=False, - eq=eq, - order=order, - unsafe_hash=False, - frozen=True, - ) - return cls - - # see if decorator is used as @typeannotation or @typeannotation() - if cls is None: - # called with parentheses - return wrap - else: - # called without parentheses - return wrap(cls) - - -@typeannotation -class Alias: - "Alternative name of a property, typically used in JSON serialization." - - name: str - - -@typeannotation -class Signed: - "Signedness of an integer type." - - is_signed: bool - - -@typeannotation -class Storage: - "Number of bytes the binary representation of an integer type takes, e.g. 4 bytes for an int32." - - bytes: int - - -@typeannotation -class IntegerRange: - "Minimum and maximum value of an integer. The range is inclusive." - - minimum: int - maximum: int - - -@typeannotation -class Precision: - "Precision of a floating-point value." - - significant_digits: int - decimal_digits: int = 0 - - @property - def integer_digits(self) -> int: - return self.significant_digits - self.decimal_digits - - -@typeannotation -class TimePrecision: - """ - Precision of a timestamp or time interval. - - :param decimal_digits: Number of fractional digits retained in the sub-seconds field for a timestamp. - """ - - decimal_digits: int = 0 - - -@typeannotation -class Length: - "Exact length of a string." - - value: int - - -@typeannotation -class MinLength: - "Minimum length of a string." - - value: int - - -@typeannotation -class MaxLength: - "Maximum length of a string." - - value: int - - -@typeannotation -class SpecialConversion: - "Indicates that the annotated type is subject to custom conversion rules." - - -int8: TypeAlias = Annotated[int, Signed(True), Storage(1), IntegerRange(-128, 127)] -int16: TypeAlias = Annotated[int, Signed(True), Storage(2), IntegerRange(-32768, 32767)] -int32: TypeAlias = Annotated[ - int, - Signed(True), - Storage(4), - IntegerRange(-2147483648, 2147483647), -] -int64: TypeAlias = Annotated[ - int, - Signed(True), - Storage(8), - IntegerRange(-9223372036854775808, 9223372036854775807), -] - -uint8: TypeAlias = Annotated[int, Signed(False), Storage(1), IntegerRange(0, 255)] -uint16: TypeAlias = Annotated[int, Signed(False), Storage(2), IntegerRange(0, 65535)] -uint32: TypeAlias = Annotated[ - int, - Signed(False), - Storage(4), - IntegerRange(0, 4294967295), -] -uint64: TypeAlias = Annotated[ - int, - Signed(False), - Storage(8), - IntegerRange(0, 18446744073709551615), -] - -float32: TypeAlias = Annotated[float, Storage(4)] -float64: TypeAlias = Annotated[float, Storage(8)] - -# maps globals of type Annotated[T, ...] defined in this module to their string names -_auxiliary_types: dict[object, str] = {} -module = sys.modules[__name__] -for var in dir(module): - typ = getattr(module, var) - if getattr(typ, "__metadata__", None) is not None: - # type is Annotated[T, ...] - _auxiliary_types[typ] = var - - -def get_auxiliary_format(data_type: object) -> str | None: - "Returns the JSON format string corresponding to an auxiliary type." - - return _auxiliary_types.get(data_type) diff --git a/src/llama_stack/strong_typing/classdef.py b/src/llama_stack/strong_typing/classdef.py deleted file mode 100644 index e54e3a9d6..000000000 --- a/src/llama_stack/strong_typing/classdef.py +++ /dev/null @@ -1,440 +0,0 @@ -# Copyright (c) Meta Platforms, Inc. and affiliates. -# All rights reserved. -# -# This source code is licensed under the terms described in the LICENSE file in -# the root directory of this source tree. - -import copy -import dataclasses -import datetime -import decimal -import enum -import ipaddress -import math -import re -import sys -import types -import typing -import uuid -from dataclasses import dataclass -from typing import Any, Literal, TypeVar, Union - -from .auxiliary import ( - Alias, - Annotated, - MaxLength, - Precision, - float32, - float64, - int16, - int32, - int64, -) -from .core import JsonType, Schema -from .docstring import Docstring, DocstringParam -from .inspection import TypeLike -from .serialization import json_to_object, object_to_json - -T = TypeVar("T") - - -@dataclass -class JsonSchemaNode: - title: str | None - description: str | None - - -@dataclass -class JsonSchemaType(JsonSchemaNode): - type: str - format: str | None - - -@dataclass -class JsonSchemaBoolean(JsonSchemaType): - type: Literal["boolean"] - const: bool | None - default: bool | None - examples: list[bool] | None - - -@dataclass -class JsonSchemaInteger(JsonSchemaType): - type: Literal["integer"] - const: int | None - default: int | None - examples: list[int] | None - enum: list[int] | None - minimum: int | None - maximum: int | None - - -@dataclass -class JsonSchemaNumber(JsonSchemaType): - type: Literal["number"] - const: float | None - default: float | None - examples: list[float] | None - minimum: float | None - maximum: float | None - exclusiveMinimum: float | None - exclusiveMaximum: float | None - multipleOf: float | None - - -@dataclass -class JsonSchemaString(JsonSchemaType): - type: Literal["string"] - const: str | None - default: str | None - examples: list[str] | None - enum: list[str] | None - minLength: int | None - maxLength: int | None - - -@dataclass -class JsonSchemaArray(JsonSchemaType): - type: Literal["array"] - items: "JsonSchemaAny" - - -@dataclass -class JsonSchemaObject(JsonSchemaType): - type: Literal["object"] - properties: dict[str, "JsonSchemaAny"] | None - additionalProperties: bool | None - required: list[str] | None - - -@dataclass -class JsonSchemaRef(JsonSchemaNode): - ref: Annotated[str, Alias("$ref")] - - -@dataclass -class JsonSchemaAllOf(JsonSchemaNode): - allOf: list["JsonSchemaAny"] - - -@dataclass -class JsonSchemaAnyOf(JsonSchemaNode): - anyOf: list["JsonSchemaAny"] - - -@dataclass -class Discriminator: - propertyName: str - mapping: dict[str, str] - - -@dataclass -class JsonSchemaOneOf(JsonSchemaNode): - oneOf: list["JsonSchemaAny"] - discriminator: Discriminator | None - - -JsonSchemaAny = Union[ - JsonSchemaRef, - JsonSchemaBoolean, - JsonSchemaInteger, - JsonSchemaNumber, - JsonSchemaString, - JsonSchemaArray, - JsonSchemaObject, - JsonSchemaOneOf, -] - - -@dataclass -class JsonSchemaTopLevelObject(JsonSchemaObject): - schema: Annotated[str, Alias("$schema")] - definitions: dict[str, JsonSchemaAny] | None - - -def integer_range_to_type(min_value: float, max_value: float) -> type: - if min_value >= -(2**15) and max_value < 2**15: - return int16 - elif min_value >= -(2**31) and max_value < 2**31: - return int32 - else: - return int64 - - -def enum_safe_name(name: str) -> str: - name = re.sub(r"\W", "_", name) - is_dunder = name.startswith("__") - is_sunder = name.startswith("_") and name.endswith("_") - if is_dunder or is_sunder: # provide an alternative for dunder and sunder names - name = f"v{name}" - return name - - -def enum_values_to_type( - module: types.ModuleType, - name: str, - values: dict[str, Any], - title: str | None = None, - description: str | None = None, -) -> type[enum.Enum]: - enum_class: type[enum.Enum] = enum.Enum(name, values) # type: ignore - - # assign the newly created type to the same module where the defining class is - enum_class.__module__ = module.__name__ - enum_class.__doc__ = str(Docstring(short_description=title, long_description=description)) - setattr(module, name, enum_class) - - return enum.unique(enum_class) - - -def schema_to_type(schema: Schema, *, module: types.ModuleType, class_name: str) -> TypeLike: - """ - Creates a Python type from a JSON schema. - - :param schema: The JSON schema that the types would correspond to. - :param module: The module in which to create the new types. - :param class_name: The name assigned to the top-level class. - """ - - top_node = typing.cast(JsonSchemaTopLevelObject, json_to_object(JsonSchemaTopLevelObject, schema)) - if top_node.definitions is not None: - for type_name, type_node in top_node.definitions.items(): - type_def = node_to_typedef(module, type_name, type_node) - if type_def.default is not dataclasses.MISSING: - raise TypeError("disallowed: `default` for top-level type definitions") - - type_def.type.__module__ = module.__name__ - setattr(module, type_name, type_def.type) - - return node_to_typedef(module, class_name, top_node).type - - -@dataclass -class TypeDef: - type: TypeLike - default: Any = dataclasses.MISSING - - -def json_to_value(target_type: TypeLike, data: JsonType) -> Any: - if data is not None: - return json_to_object(target_type, data) - else: - return dataclasses.MISSING - - -def node_to_typedef(module: types.ModuleType, context: str, node: JsonSchemaNode) -> TypeDef: - if isinstance(node, JsonSchemaRef): - match_obj = re.match(r"^#/definitions/(\w+)$", node.ref) - if not match_obj: - raise ValueError(f"invalid reference: {node.ref}") - - type_name = match_obj.group(1) - return TypeDef(getattr(module, type_name), dataclasses.MISSING) - - elif isinstance(node, JsonSchemaBoolean): - if node.const is not None: - return TypeDef(Literal[node.const], dataclasses.MISSING) - - default = json_to_value(bool, node.default) - return TypeDef(bool, default) - - elif isinstance(node, JsonSchemaInteger): - if node.const is not None: - return TypeDef(Literal[node.const], dataclasses.MISSING) - - integer_type: TypeLike - if node.format == "int16": - integer_type = int16 - elif node.format == "int32": - integer_type = int32 - elif node.format == "int64": - integer_type = int64 - else: - if node.enum is not None: - integer_type = integer_range_to_type(min(node.enum), max(node.enum)) - elif node.minimum is not None and node.maximum is not None: - integer_type = integer_range_to_type(node.minimum, node.maximum) - else: - integer_type = int - - default = json_to_value(integer_type, node.default) - return TypeDef(integer_type, default) - - elif isinstance(node, JsonSchemaNumber): - if node.const is not None: - return TypeDef(Literal[node.const], dataclasses.MISSING) - - number_type: TypeLike - if node.format == "float32": - number_type = float32 - elif node.format == "float64": - number_type = float64 - else: - if ( - node.exclusiveMinimum is not None - and node.exclusiveMaximum is not None - and node.exclusiveMinimum == -node.exclusiveMaximum - ): - integer_digits = round(math.log10(node.exclusiveMaximum)) - else: - integer_digits = None - - if node.multipleOf is not None: - decimal_digits = -round(math.log10(node.multipleOf)) - else: - decimal_digits = None - - if integer_digits is not None and decimal_digits is not None: - number_type = Annotated[ - decimal.Decimal, - Precision(integer_digits + decimal_digits, decimal_digits), - ] - else: - number_type = float - - default = json_to_value(number_type, node.default) - return TypeDef(number_type, default) - - elif isinstance(node, JsonSchemaString): - if node.const is not None: - return TypeDef(Literal[node.const], dataclasses.MISSING) - - string_type: TypeLike - if node.format == "date-time": - string_type = datetime.datetime - elif node.format == "uuid": - string_type = uuid.UUID - elif node.format == "ipv4": - string_type = ipaddress.IPv4Address - elif node.format == "ipv6": - string_type = ipaddress.IPv6Address - - elif node.enum is not None: - string_type = enum_values_to_type( - module, - context, - {enum_safe_name(e): e for e in node.enum}, - title=node.title, - description=node.description, - ) - - elif node.maxLength is not None: - string_type = Annotated[str, MaxLength(node.maxLength)] - else: - string_type = str - - default = json_to_value(string_type, node.default) - return TypeDef(string_type, default) - - elif isinstance(node, JsonSchemaArray): - type_def = node_to_typedef(module, context, node.items) - if type_def.default is not dataclasses.MISSING: - raise TypeError("disallowed: `default` for array element type") - list_type = list[(type_def.type,)] # type: ignore - return TypeDef(list_type, dataclasses.MISSING) - - elif isinstance(node, JsonSchemaObject): - if node.properties is None: - return TypeDef(JsonType, dataclasses.MISSING) - - if node.additionalProperties is None or node.additionalProperties is not False: - raise TypeError("expected: `additionalProperties` equals `false`") - - required = node.required if node.required is not None else [] - - class_name = context - - fields: list[tuple[str, Any, dataclasses.Field]] = [] - params: dict[str, DocstringParam] = {} - for prop_name, prop_node in node.properties.items(): - type_def = node_to_typedef(module, f"{class_name}__{prop_name}", prop_node) - if prop_name in required: - prop_type = type_def.type - else: - prop_type = Union[(None, type_def.type)] - fields.append((prop_name, prop_type, dataclasses.field(default=type_def.default))) - prop_desc = prop_node.title or prop_node.description - if prop_desc is not None: - params[prop_name] = DocstringParam(prop_name, prop_desc) - - fields.sort(key=lambda t: t[2].default is not dataclasses.MISSING) - if sys.version_info >= (3, 12): - class_type = dataclasses.make_dataclass(class_name, fields, module=module.__name__) - else: - class_type = dataclasses.make_dataclass(class_name, fields, namespace={"__module__": module.__name__}) - class_type.__doc__ = str( - Docstring( - short_description=node.title, - long_description=node.description, - params=params, - ) - ) - setattr(module, class_name, class_type) - return TypeDef(class_type, dataclasses.MISSING) - - elif isinstance(node, JsonSchemaOneOf): - union_defs = tuple(node_to_typedef(module, context, n) for n in node.oneOf) - if any(d.default is not dataclasses.MISSING for d in union_defs): - raise TypeError("disallowed: `default` for union member type") - union_types = tuple(d.type for d in union_defs) - return TypeDef(Union[union_types], dataclasses.MISSING) - - raise NotImplementedError() - - -@dataclass -class SchemaFlatteningOptions: - qualified_names: bool = False - recursive: bool = False - - -def flatten_schema(schema: Schema, *, options: SchemaFlatteningOptions | None = None) -> Schema: - top_node = typing.cast(JsonSchemaTopLevelObject, json_to_object(JsonSchemaTopLevelObject, schema)) - flattener = SchemaFlattener(options) - obj = flattener.flatten(top_node) - return typing.cast(Schema, object_to_json(obj)) - - -class SchemaFlattener: - options: SchemaFlatteningOptions - - def __init__(self, options: SchemaFlatteningOptions | None = None) -> None: - self.options = options or SchemaFlatteningOptions() - - def flatten(self, source_node: JsonSchemaObject) -> JsonSchemaObject: - if source_node.type != "object": - return source_node - - source_props = source_node.properties or {} - target_props: dict[str, JsonSchemaAny] = {} - - source_reqs = source_node.required or [] - target_reqs: list[str] = [] - - for name, prop in source_props.items(): - if not isinstance(prop, JsonSchemaObject): - target_props[name] = prop - if name in source_reqs: - target_reqs.append(name) - continue - - if self.options.recursive: - obj = self.flatten(prop) - else: - obj = prop - if obj.properties is not None: - if self.options.qualified_names: - target_props.update((f"{name}.{n}", p) for n, p in obj.properties.items()) - else: - target_props.update(obj.properties.items()) - if obj.required is not None: - if self.options.qualified_names: - target_reqs.extend(f"{name}.{n}" for n in obj.required) - else: - target_reqs.extend(obj.required) - - target_node = copy.copy(source_node) - target_node.properties = target_props or None - target_node.additionalProperties = False - target_node.required = target_reqs or None - return target_node diff --git a/src/llama_stack/strong_typing/core.py b/src/llama_stack/strong_typing/core.py deleted file mode 100644 index 5f3764aeb..000000000 --- a/src/llama_stack/strong_typing/core.py +++ /dev/null @@ -1,46 +0,0 @@ -# Copyright (c) Meta Platforms, Inc. and affiliates. -# All rights reserved. -# -# This source code is licensed under the terms described in the LICENSE file in -# the root directory of this source tree. - -""" -Type-safe data interchange for Python data classes. - -:see: https://github.com/hunyadi/strong_typing -""" - -from typing import Union - - -class JsonObject: - "Placeholder type for an unrestricted JSON object." - - -class JsonArray: - "Placeholder type for an unrestricted JSON array." - - -# a JSON type with possible `null` values -JsonType = Union[ - None, - bool, - int, - float, - str, - dict[str, "JsonType"], - list["JsonType"], -] - -# a JSON type that cannot contain `null` values -StrictJsonType = Union[ - bool, - int, - float, - str, - dict[str, "StrictJsonType"], - list["StrictJsonType"], -] - -# a meta-type that captures the object type in a JSON schema -Schema = dict[str, JsonType] diff --git a/src/llama_stack/strong_typing/deserializer.py b/src/llama_stack/strong_typing/deserializer.py deleted file mode 100644 index 58dfe53a4..000000000 --- a/src/llama_stack/strong_typing/deserializer.py +++ /dev/null @@ -1,872 +0,0 @@ -# Copyright (c) Meta Platforms, Inc. and affiliates. -# All rights reserved. -# -# This source code is licensed under the terms described in the LICENSE file in -# the root directory of this source tree. - -""" -Type-safe data interchange for Python data classes. - -:see: https://github.com/hunyadi/strong_typing -""" - -import abc -import base64 -import dataclasses -import datetime -import enum -import inspect -import ipaddress -import sys -import typing -import uuid -from collections.abc import Callable -from types import ModuleType -from typing import ( - Any, - Generic, - Literal, - NamedTuple, - Optional, - TypeVar, - Union, -) - -from .core import JsonType -from .exception import JsonKeyError, JsonTypeError, JsonValueError -from .inspection import ( - TypeLike, - create_object, - enum_value_types, - evaluate_type, - get_class_properties, - get_class_property, - get_resolved_hints, - is_dataclass_instance, - is_dataclass_type, - is_named_tuple_type, - is_type_annotated, - is_type_literal, - is_type_optional, - unwrap_annotated_type, - unwrap_literal_values, - unwrap_optional_type, -) -from .mapping import python_field_to_json_property -from .name import python_type_to_str - -E = TypeVar("E", bound=enum.Enum) -T = TypeVar("T") -R = TypeVar("R") -K = TypeVar("K") -V = TypeVar("V") - - -class Deserializer(abc.ABC, Generic[T]): - "Parses a JSON value into a Python type." - - def build(self, context: ModuleType | None) -> None: - """ - Creates auxiliary parsers that this parser is depending on. - - :param context: A module context for evaluating types specified as a string. - """ - - @abc.abstractmethod - def parse(self, data: JsonType) -> T: - """ - Parses a JSON value into a Python type. - - :param data: The JSON value to de-serialize. - :returns: The Python object that the JSON value de-serializes to. - """ - - -class NoneDeserializer(Deserializer[None]): - "Parses JSON `null` values into Python `None`." - - def parse(self, data: JsonType) -> None: - if data is not None: - raise JsonTypeError(f"`None` type expects JSON `null` but instead received: {data}") - return None - - -class BoolDeserializer(Deserializer[bool]): - "Parses JSON `boolean` values into Python `bool` type." - - def parse(self, data: JsonType) -> bool: - if not isinstance(data, bool): - raise JsonTypeError(f"`bool` type expects JSON `boolean` data but instead received: {data}") - return bool(data) - - -class IntDeserializer(Deserializer[int]): - "Parses JSON `number` values into Python `int` type." - - def parse(self, data: JsonType) -> int: - if not isinstance(data, int): - raise JsonTypeError(f"`int` type expects integer data as JSON `number` but instead received: {data}") - return int(data) - - -class FloatDeserializer(Deserializer[float]): - "Parses JSON `number` values into Python `float` type." - - def parse(self, data: JsonType) -> float: - if not isinstance(data, float) and not isinstance(data, int): - raise JsonTypeError(f"`int` type expects data as JSON `number` but instead received: {data}") - return float(data) - - -class StringDeserializer(Deserializer[str]): - "Parses JSON `string` values into Python `str` type." - - def parse(self, data: JsonType) -> str: - if not isinstance(data, str): - raise JsonTypeError(f"`str` type expects JSON `string` data but instead received: {data}") - return str(data) - - -class BytesDeserializer(Deserializer[bytes]): - "Parses JSON `string` values of Base64-encoded strings into Python `bytes` type." - - def parse(self, data: JsonType) -> bytes: - if not isinstance(data, str): - raise JsonTypeError(f"`bytes` type expects JSON `string` data but instead received: {data}") - return base64.b64decode(data, validate=True) - - -class DateTimeDeserializer(Deserializer[datetime.datetime]): - "Parses JSON `string` values representing timestamps in ISO 8601 format to Python `datetime` with time zone." - - def parse(self, data: JsonType) -> datetime.datetime: - if not isinstance(data, str): - raise JsonTypeError(f"`datetime` type expects JSON `string` data but instead received: {data}") - - if data.endswith("Z"): - data = f"{data[:-1]}+00:00" # Python's isoformat() does not support military time zones like "Zulu" for UTC - timestamp = datetime.datetime.fromisoformat(data) - if timestamp.tzinfo is None: - raise JsonValueError(f"timestamp lacks explicit time zone designator: {data}") - return timestamp - - -class DateDeserializer(Deserializer[datetime.date]): - "Parses JSON `string` values representing dates in ISO 8601 format to Python `date` type." - - def parse(self, data: JsonType) -> datetime.date: - if not isinstance(data, str): - raise JsonTypeError(f"`date` type expects JSON `string` data but instead received: {data}") - - return datetime.date.fromisoformat(data) - - -class TimeDeserializer(Deserializer[datetime.time]): - "Parses JSON `string` values representing time instances in ISO 8601 format to Python `time` type with time zone." - - def parse(self, data: JsonType) -> datetime.time: - if not isinstance(data, str): - raise JsonTypeError(f"`time` type expects JSON `string` data but instead received: {data}") - - return datetime.time.fromisoformat(data) - - -class UUIDDeserializer(Deserializer[uuid.UUID]): - "Parses JSON `string` values of UUID strings into Python `uuid.UUID` type." - - def parse(self, data: JsonType) -> uuid.UUID: - if not isinstance(data, str): - raise JsonTypeError(f"`UUID` type expects JSON `string` data but instead received: {data}") - return uuid.UUID(data) - - -class IPv4Deserializer(Deserializer[ipaddress.IPv4Address]): - "Parses JSON `string` values of IPv4 address strings into Python `ipaddress.IPv4Address` type." - - def parse(self, data: JsonType) -> ipaddress.IPv4Address: - if not isinstance(data, str): - raise JsonTypeError(f"`IPv4Address` type expects JSON `string` data but instead received: {data}") - return ipaddress.IPv4Address(data) - - -class IPv6Deserializer(Deserializer[ipaddress.IPv6Address]): - "Parses JSON `string` values of IPv6 address strings into Python `ipaddress.IPv6Address` type." - - def parse(self, data: JsonType) -> ipaddress.IPv6Address: - if not isinstance(data, str): - raise JsonTypeError(f"`IPv6Address` type expects JSON `string` data but instead received: {data}") - return ipaddress.IPv6Address(data) - - -class ListDeserializer(Deserializer[list[T]]): - "Recursively de-serializes a JSON array into a Python `list`." - - item_type: type[T] - item_parser: Deserializer - - def __init__(self, item_type: type[T]) -> None: - self.item_type = item_type - - def build(self, context: ModuleType | None) -> None: - self.item_parser = _get_deserializer(self.item_type, context) - - def parse(self, data: JsonType) -> list[T]: - if not isinstance(data, list): - type_name = python_type_to_str(self.item_type) - raise JsonTypeError(f"type `List[{type_name}]` expects JSON `array` data but instead received: {data}") - - return [self.item_parser.parse(item) for item in data] - - -class DictDeserializer(Deserializer[dict[K, V]]): - "Recursively de-serializes a JSON object into a Python `dict`." - - key_type: type[K] - value_type: type[V] - value_parser: Deserializer[V] - - def __init__(self, key_type: type[K], value_type: type[V]) -> None: - self.key_type = key_type - self.value_type = value_type - self._check_key_type() - - def build(self, context: ModuleType | None) -> None: - self.value_parser = _get_deserializer(self.value_type, context) - - def _check_key_type(self) -> None: - if self.key_type is str: - return - - if issubclass(self.key_type, enum.Enum): - value_types = enum_value_types(self.key_type) - if len(value_types) != 1: - raise JsonTypeError( - f"type `{self.container_type}` has invalid key type, " - f"enumerations must have a consistent member value type but several types found: {value_types}" - ) - value_type = value_types.pop() - if value_type is not str: - f"`type `{self.container_type}` has invalid enumeration key type, expected `enum.Enum` with string values" - return - - raise JsonTypeError( - f"`type `{self.container_type}` has invalid key type, expected `str` or `enum.Enum` with string values" - ) - - @property - def container_type(self) -> str: - key_type_name = python_type_to_str(self.key_type) - value_type_name = python_type_to_str(self.value_type) - return f"Dict[{key_type_name}, {value_type_name}]" - - def parse(self, data: JsonType) -> dict[K, V]: - if not isinstance(data, dict): - raise JsonTypeError( - f"`type `{self.container_type}` expects JSON `object` data but instead received: {data}" - ) - - return dict( - (self.key_type(key), self.value_parser.parse(value)) # type: ignore[call-arg] - for key, value in data.items() - ) - - -class SetDeserializer(Deserializer[set[T]]): - "Recursively de-serializes a JSON list into a Python `set`." - - member_type: type[T] - member_parser: Deserializer - - def __init__(self, member_type: type[T]) -> None: - self.member_type = member_type - - def build(self, context: ModuleType | None) -> None: - self.member_parser = _get_deserializer(self.member_type, context) - - def parse(self, data: JsonType) -> set[T]: - if not isinstance(data, list): - type_name = python_type_to_str(self.member_type) - raise JsonTypeError(f"type `Set[{type_name}]` expects JSON `array` data but instead received: {data}") - - return set(self.member_parser.parse(item) for item in data) - - -class TupleDeserializer(Deserializer[tuple[Any, ...]]): - "Recursively de-serializes a JSON list into a Python `tuple`." - - item_types: tuple[type[Any], ...] - item_parsers: tuple[Deserializer[Any], ...] - - def __init__(self, item_types: tuple[type[Any], ...]) -> None: - self.item_types = item_types - - def build(self, context: ModuleType | None) -> None: - self.item_parsers = tuple(_get_deserializer(item_type, context) for item_type in self.item_types) - - @property - def container_type(self) -> str: - type_names = ", ".join(python_type_to_str(item_type) for item_type in self.item_types) - return f"Tuple[{type_names}]" - - def parse(self, data: JsonType) -> tuple[Any, ...]: - if not isinstance(data, list) or len(data) != len(self.item_parsers): - if not isinstance(data, list): - raise JsonTypeError( - f"type `{self.container_type}` expects JSON `array` data but instead received: {data}" - ) - else: - count = len(self.item_parsers) - raise JsonValueError( - f"type `{self.container_type}` expects a JSON `array` of length {count} but received length {len(data)}" - ) - - return tuple(item_parser.parse(item) for item_parser, item in zip(self.item_parsers, data, strict=False)) - - -class UnionDeserializer(Deserializer): - "De-serializes a JSON value (of any type) into a Python union type." - - member_types: tuple[type, ...] - member_parsers: tuple[Deserializer, ...] - - def __init__(self, member_types: tuple[type, ...]) -> None: - self.member_types = member_types - - def build(self, context: ModuleType | None) -> None: - self.member_parsers = tuple(_get_deserializer(member_type, context) for member_type in self.member_types) - - def parse(self, data: JsonType) -> Any: - for member_parser in self.member_parsers: - # iterate over potential types of discriminated union - try: - return member_parser.parse(data) - except (JsonKeyError, JsonTypeError): - # indicates a required field is missing from JSON dict -OR- the data cannot be cast to the expected type, - # i.e. we don't have the type that we are looking for - continue - - type_names = ", ".join(python_type_to_str(member_type) for member_type in self.member_types) - raise JsonKeyError(f"type `Union[{type_names}]` could not be instantiated from: {data}") - - -def get_literal_properties(typ: type) -> set[str]: - "Returns the names of all properties in a class that are of a literal type." - - return set( - property_name for property_name, property_type in get_class_properties(typ) if is_type_literal(property_type) - ) - - -def get_discriminating_properties(types: tuple[type, ...]) -> set[str]: - "Returns a set of properties with literal type that are common across all specified classes." - - if not types or not all(isinstance(typ, type) for typ in types): - return set() - - props = get_literal_properties(types[0]) - for typ in types[1:]: - props = props & get_literal_properties(typ) - - return props - - -class TaggedUnionDeserializer(Deserializer): - "De-serializes a JSON value with one or more disambiguating properties into a Python union type." - - member_types: tuple[type, ...] - disambiguating_properties: set[str] - member_parsers: dict[tuple[str, Any], Deserializer] - - def __init__(self, member_types: tuple[type, ...]) -> None: - self.member_types = member_types - self.disambiguating_properties = get_discriminating_properties(member_types) - - def build(self, context: ModuleType | None) -> None: - self.member_parsers = {} - for member_type in self.member_types: - for property_name in self.disambiguating_properties: - literal_type = get_class_property(member_type, property_name) - if not literal_type: - continue - - for literal_value in unwrap_literal_values(literal_type): - tpl = (property_name, literal_value) - if tpl in self.member_parsers: - raise JsonTypeError( - f"disambiguating property `{property_name}` in type `{self.union_type}` has a duplicate value: {literal_value}" - ) - - self.member_parsers[tpl] = _get_deserializer(member_type, context) - - @property - def union_type(self) -> str: - type_names = ", ".join(python_type_to_str(member_type) for member_type in self.member_types) - return f"Union[{type_names}]" - - def parse(self, data: JsonType) -> Any: - if not isinstance(data, dict): - raise JsonTypeError( - f"tagged union type `{self.union_type}` expects JSON `object` data but instead received: {data}" - ) - - for property_name in self.disambiguating_properties: - disambiguating_value = data.get(property_name) - if disambiguating_value is None: - continue - - member_parser = self.member_parsers.get((property_name, disambiguating_value)) - if member_parser is None: - raise JsonTypeError( - f"disambiguating property value is invalid for tagged union type `{self.union_type}`: {data}" - ) - - return member_parser.parse(data) - - raise JsonTypeError( - f"disambiguating property value is missing for tagged union type `{self.union_type}`: {data}" - ) - - -class LiteralDeserializer(Deserializer): - "De-serializes a JSON value into a Python literal type." - - values: tuple[Any, ...] - parser: Deserializer - - def __init__(self, values: tuple[Any, ...]) -> None: - self.values = values - - def build(self, context: ModuleType | None) -> None: - literal_type_tuple = tuple(type(value) for value in self.values) - literal_type_set = set(literal_type_tuple) - if len(literal_type_set) != 1: - value_names = ", ".join(repr(value) for value in self.values) - raise TypeError( - f"type `Literal[{value_names}]` expects consistent literal value types but got: {literal_type_tuple}" - ) - - literal_type = literal_type_set.pop() - self.parser = _get_deserializer(literal_type, context) - - def parse(self, data: JsonType) -> Any: - value = self.parser.parse(data) - if value not in self.values: - value_names = ", ".join(repr(value) for value in self.values) - raise JsonTypeError(f"type `Literal[{value_names}]` could not be instantiated from: {data}") - return value - - -class EnumDeserializer(Deserializer[E]): - "Returns an enumeration instance based on the enumeration value read from a JSON value." - - enum_type: type[E] - - def __init__(self, enum_type: type[E]) -> None: - self.enum_type = enum_type - - def parse(self, data: JsonType) -> E: - return self.enum_type(data) - - -class CustomDeserializer(Deserializer[T]): - "Uses the `from_json` class method in class to de-serialize the object from JSON." - - converter: Callable[[JsonType], T] - - def __init__(self, converter: Callable[[JsonType], T]) -> None: - self.converter = converter - - def parse(self, data: JsonType) -> T: - return self.converter(data) - - -class FieldDeserializer(abc.ABC, Generic[T, R]): - """ - Deserializes a JSON property into a Python object field. - - :param property_name: The name of the JSON property to read from a JSON `object`. - :param field_name: The name of the field in a Python class to write data to. - :param parser: A compatible deserializer that can handle the field's type. - """ - - property_name: str - field_name: str - parser: Deserializer[T] - - def __init__(self, property_name: str, field_name: str, parser: Deserializer[T]) -> None: - self.property_name = property_name - self.field_name = field_name - self.parser = parser - - @abc.abstractmethod - def parse_field(self, data: dict[str, JsonType]) -> R: ... - - -class RequiredFieldDeserializer(FieldDeserializer[T, T]): - "Deserializes a JSON property into a mandatory Python object field." - - def parse_field(self, data: dict[str, JsonType]) -> T: - if self.property_name not in data: - raise JsonKeyError(f"missing required property `{self.property_name}` from JSON object: {data}") - - return self.parser.parse(data[self.property_name]) - - -class OptionalFieldDeserializer(FieldDeserializer[T, Optional[T]]): - "Deserializes a JSON property into an optional Python object field with a default value of `None`." - - def parse_field(self, data: dict[str, JsonType]) -> T | None: - value = data.get(self.property_name) - if value is not None: - return self.parser.parse(value) - else: - return None - - -class DefaultFieldDeserializer(FieldDeserializer[T, T]): - "Deserializes a JSON property into a Python object field with an explicit default value." - - default_value: T - - def __init__( - self, - property_name: str, - field_name: str, - parser: Deserializer, - default_value: T, - ) -> None: - super().__init__(property_name, field_name, parser) - self.default_value = default_value - - def parse_field(self, data: dict[str, JsonType]) -> T: - value = data.get(self.property_name) - if value is not None: - return self.parser.parse(value) - else: - return self.default_value - - -class DefaultFactoryFieldDeserializer(FieldDeserializer[T, T]): - "Deserializes a JSON property into an optional Python object field with an explicit default value factory." - - default_factory: Callable[[], T] - - def __init__( - self, - property_name: str, - field_name: str, - parser: Deserializer[T], - default_factory: Callable[[], T], - ) -> None: - super().__init__(property_name, field_name, parser) - self.default_factory = default_factory - - def parse_field(self, data: dict[str, JsonType]) -> T: - value = data.get(self.property_name) - if value is not None: - return self.parser.parse(value) - else: - return self.default_factory() - - -class ClassDeserializer(Deserializer[T]): - "Base class for de-serializing class-like types such as data classes, named tuples and regular classes." - - class_type: type - property_parsers: list[FieldDeserializer] - property_fields: set[str] - - def __init__(self, class_type: type[T]) -> None: - self.class_type = class_type - - def assign(self, property_parsers: list[FieldDeserializer]) -> None: - self.property_parsers = property_parsers - self.property_fields = set(property_parser.property_name for property_parser in property_parsers) - - def parse(self, data: JsonType) -> T: - if not isinstance(data, dict): - type_name = python_type_to_str(self.class_type) - raise JsonTypeError(f"`type `{type_name}` expects JSON `object` data but instead received: {data}") - - object_data: dict[str, JsonType] = typing.cast(dict[str, JsonType], data) - - field_values = {} - for property_parser in self.property_parsers: - field_values[property_parser.field_name] = property_parser.parse_field(object_data) - - if not self.property_fields.issuperset(object_data): - unassigned_names = [name for name in object_data if name not in self.property_fields] - raise JsonKeyError(f"unrecognized fields in JSON object: {unassigned_names}") - - return self.create(**field_values) - - def create(self, **field_values: Any) -> T: - "Instantiates an object with a collection of property values." - - obj: T = create_object(self.class_type) - - # use `setattr` on newly created object instance - for field_name, field_value in field_values.items(): - setattr(obj, field_name, field_value) - return obj - - -class NamedTupleDeserializer(ClassDeserializer[NamedTuple]): - "De-serializes a named tuple from a JSON `object`." - - def build(self, context: ModuleType | None) -> None: - property_parsers: list[FieldDeserializer] = [ - RequiredFieldDeserializer(field_name, field_name, _get_deserializer(field_type, context)) - for field_name, field_type in get_resolved_hints(self.class_type).items() - ] - super().assign(property_parsers) - - def create(self, **field_values: Any) -> NamedTuple: - # mypy fails to deduce that this class returns NamedTuples only, hence the `ignore` directive - return self.class_type(**field_values) # type: ignore[no-any-return] - - -class DataclassDeserializer(ClassDeserializer[T]): - "De-serializes a data class from a JSON `object`." - - def __init__(self, class_type: type[T]) -> None: - if not dataclasses.is_dataclass(class_type): - raise TypeError("expected: data-class type") - super().__init__(class_type) # type: ignore[arg-type] - - def build(self, context: ModuleType | None) -> None: - property_parsers: list[FieldDeserializer] = [] - resolved_hints = get_resolved_hints(self.class_type) - for field in dataclasses.fields(self.class_type): - field_type = resolved_hints[field.name] - property_name = python_field_to_json_property(field.name, field_type) - - is_optional = is_type_optional(field_type) - has_default = field.default is not dataclasses.MISSING - has_default_factory = field.default_factory is not dataclasses.MISSING - - if is_optional: - required_type: type[T] = unwrap_optional_type(field_type) - else: - required_type = field_type - - parser = _get_deserializer(required_type, context) - - if has_default: - field_parser: FieldDeserializer = DefaultFieldDeserializer( - property_name, field.name, parser, field.default - ) - elif has_default_factory: - default_factory = typing.cast(Callable[[], Any], field.default_factory) - field_parser = DefaultFactoryFieldDeserializer(property_name, field.name, parser, default_factory) - elif is_optional: - field_parser = OptionalFieldDeserializer(property_name, field.name, parser) - else: - field_parser = RequiredFieldDeserializer(property_name, field.name, parser) - - property_parsers.append(field_parser) - - super().assign(property_parsers) - - -class FrozenDataclassDeserializer(DataclassDeserializer[T]): - "De-serializes a frozen data class from a JSON `object`." - - def create(self, **field_values: Any) -> T: - "Instantiates an object with a collection of property values." - - # create object instance without calling `__init__` - obj: T = create_object(self.class_type) - - # can't use `setattr` on frozen dataclasses, pass member variable values to `__init__` - obj.__init__(**field_values) # type: ignore - return obj - - -class TypedClassDeserializer(ClassDeserializer[T]): - "De-serializes a class with type annotations from a JSON `object` by iterating over class properties." - - def build(self, context: ModuleType | None) -> None: - property_parsers: list[FieldDeserializer] = [] - for field_name, field_type in get_resolved_hints(self.class_type).items(): - property_name = python_field_to_json_property(field_name, field_type) - - is_optional = is_type_optional(field_type) - - if is_optional: - required_type: type[T] = unwrap_optional_type(field_type) - else: - required_type = field_type - - parser = _get_deserializer(required_type, context) - - if is_optional: - field_parser: FieldDeserializer = OptionalFieldDeserializer(property_name, field_name, parser) - else: - field_parser = RequiredFieldDeserializer(property_name, field_name, parser) - - property_parsers.append(field_parser) - - super().assign(property_parsers) - - -def create_deserializer(typ: TypeLike, context: ModuleType | None = None) -> Deserializer: - """ - Creates a de-serializer engine to produce a Python object from an object obtained from a JSON string. - - When de-serializing a JSON object into a Python object, the following transformations are applied: - - * Fundamental types are parsed as `bool`, `int`, `float` or `str`. - * Date and time types are parsed from the ISO 8601 format with time zone into the corresponding Python type - `datetime`, `date` or `time`. - * Byte arrays are read from a string with Base64 encoding into a `bytes` instance. - * UUIDs are extracted from a UUID string compliant with RFC 4122 into a `uuid.UUID` instance. - * Enumerations are instantiated with a lookup on enumeration value. - * Containers (e.g. `list`, `dict`, `set`, `tuple`) are parsed recursively. - * Complex objects with properties (including data class types) are populated from dictionaries of key-value pairs - using reflection (enumerating type annotations). - - :raises TypeError: A de-serializer engine cannot be constructed for the input type. - """ - - if context is None: - if isinstance(typ, type): - context = sys.modules[typ.__module__] - - return _get_deserializer(typ, context) - - -_CACHE: dict[tuple[str, str], Deserializer] = {} - - -def _get_deserializer(typ: TypeLike, context: ModuleType | None) -> Deserializer: - "Creates or re-uses a de-serializer engine to parse an object obtained from a JSON string." - - cache_key = None - - if isinstance(typ, (str, typing.ForwardRef)): - if context is None: - raise TypeError(f"missing context for evaluating type: {typ}") - - if isinstance(typ, str): - if hasattr(context, typ): - cache_key = (context.__name__, typ) - elif isinstance(typ, typing.ForwardRef): - if hasattr(context, typ.__forward_arg__): - cache_key = (context.__name__, typ.__forward_arg__) - - typ = evaluate_type(typ, context) - - typ = unwrap_annotated_type(typ) if is_type_annotated(typ) else typ - - if isinstance(typ, type) and typing.get_origin(typ) is None: - cache_key = (typ.__module__, typ.__name__) - - if cache_key is not None: - deserializer = _CACHE.get(cache_key) - if deserializer is None: - deserializer = _create_deserializer(typ) - - # store de-serializer immediately in cache to avoid stack overflow for recursive types - _CACHE[cache_key] = deserializer - - if isinstance(typ, type): - # use type's own module as context for evaluating member types - context = sys.modules[typ.__module__] - - # create any de-serializers this de-serializer is depending on - deserializer.build(context) - else: - # special forms are not always hashable, create a new de-serializer every time - deserializer = _create_deserializer(typ) - deserializer.build(context) - - return deserializer - - -def _create_deserializer(typ: TypeLike) -> Deserializer: - "Creates a de-serializer engine to parse an object obtained from a JSON string." - - # check for well-known types - if typ is type(None): - return NoneDeserializer() - elif typ is bool: - return BoolDeserializer() - elif typ is int: - return IntDeserializer() - elif typ is float: - return FloatDeserializer() - elif typ is str: - return StringDeserializer() - elif typ is bytes: - return BytesDeserializer() - elif typ is datetime.datetime: - return DateTimeDeserializer() - elif typ is datetime.date: - return DateDeserializer() - elif typ is datetime.time: - return TimeDeserializer() - elif typ is uuid.UUID: - return UUIDDeserializer() - elif typ is ipaddress.IPv4Address: - return IPv4Deserializer() - elif typ is ipaddress.IPv6Address: - return IPv6Deserializer() - - # dynamically-typed collection types - if typ is list: - raise TypeError("explicit item type required: use `List[T]` instead of `list`") - if typ is dict: - raise TypeError("explicit key and value types required: use `Dict[K, V]` instead of `dict`") - if typ is set: - raise TypeError("explicit member type required: use `Set[T]` instead of `set`") - if typ is tuple: - raise TypeError("explicit item type list required: use `Tuple[T, ...]` instead of `tuple`") - - # generic types (e.g. list, dict, set, etc.) - origin_type = typing.get_origin(typ) - if origin_type is list: - (list_item_type,) = typing.get_args(typ) # unpack single tuple element - return ListDeserializer(list_item_type) - elif origin_type is dict: - key_type, value_type = typing.get_args(typ) - return DictDeserializer(key_type, value_type) - elif origin_type is set: - (set_member_type,) = typing.get_args(typ) # unpack single tuple element - return SetDeserializer(set_member_type) - elif origin_type is tuple: - return TupleDeserializer(typing.get_args(typ)) - elif origin_type is Union: - union_args = typing.get_args(typ) - if get_discriminating_properties(union_args): - return TaggedUnionDeserializer(union_args) - else: - return UnionDeserializer(union_args) - elif origin_type is Literal: - return LiteralDeserializer(typing.get_args(typ)) - - if not inspect.isclass(typ): - if is_dataclass_instance(typ): - raise TypeError(f"dataclass type expected but got instance: {typ}") - else: - raise TypeError(f"unable to de-serialize unrecognized type: {typ}") - - if issubclass(typ, enum.Enum): - return EnumDeserializer(typ) - - if is_named_tuple_type(typ): - return NamedTupleDeserializer(typ) - - # check if object has custom serialization method - convert_func = getattr(typ, "from_json", None) - if callable(convert_func): - return CustomDeserializer(convert_func) - - if is_dataclass_type(typ): - dataclass_params = getattr(typ, "__dataclass_params__", None) - if dataclass_params is not None and dataclass_params.frozen: - return FrozenDataclassDeserializer(typ) - else: - return DataclassDeserializer(typ) - - return TypedClassDeserializer(typ) diff --git a/src/llama_stack/strong_typing/docstring.py b/src/llama_stack/strong_typing/docstring.py deleted file mode 100644 index 4c9ea49e5..000000000 --- a/src/llama_stack/strong_typing/docstring.py +++ /dev/null @@ -1,410 +0,0 @@ -# Copyright (c) Meta Platforms, Inc. and affiliates. -# All rights reserved. -# -# This source code is licensed under the terms described in the LICENSE file in -# the root directory of this source tree. - -""" -Type-safe data interchange for Python data classes. - -:see: https://github.com/hunyadi/strong_typing -""" - -import builtins -import collections.abc -import dataclasses -import inspect -import re -import sys -import types -import typing -from collections.abc import Callable -from dataclasses import dataclass -from io import StringIO -from typing import Any, Protocol, TypeVar - -if sys.version_info >= (3, 10): - from typing import TypeGuard -else: - from typing import TypeGuard - -from .inspection import ( - DataclassInstance, - get_class_properties, - get_signature, - is_dataclass_type, - is_type_enum, -) - -T = TypeVar("T") - - -@dataclass -class DocstringParam: - """ - A parameter declaration in a parameter block. - - :param name: The name of the parameter. - :param description: The description text for the parameter. - """ - - name: str - description: str - param_type: type | str = inspect.Signature.empty - - def __str__(self) -> str: - return f":param {self.name}: {self.description}" - - -@dataclass -class DocstringReturns: - """ - A `returns` declaration extracted from a docstring. - - :param description: The description text for the return value. - """ - - description: str - return_type: type = inspect.Signature.empty - - def __str__(self) -> str: - return f":returns: {self.description}" - - -@dataclass -class DocstringRaises: - """ - A `raises` declaration extracted from a docstring. - - :param typename: The type name of the exception raised. - :param description: The description associated with the exception raised. - """ - - typename: str - description: str - raise_type: type = inspect.Signature.empty - - def __str__(self) -> str: - return f":raises {self.typename}: {self.description}" - - -@dataclass -class Docstring: - """ - Represents the documentation string (a.k.a. docstring) for a type such as a (data) class or function. - - A docstring is broken down into the following components: - * A short description, which is the first block of text in the documentation string, and ends with a double - newline or a parameter block. - * A long description, which is the optional block of text following the short description, and ends with - a parameter block. - * A parameter block of named parameter and description string pairs in ReST-style. - * A `returns` declaration, which adds explanation to the return value. - * A `raises` declaration, which adds explanation to the exception type raised by the function on error. - - When the docstring is attached to a data class, it is understood as the documentation string of the class - `__init__` method. - - :param short_description: The short description text parsed from a docstring. - :param long_description: The long description text parsed from a docstring. - :param params: The parameter block extracted from a docstring. - :param returns: The returns declaration extracted from a docstring. - """ - - short_description: str | None = None - long_description: str | None = None - params: dict[str, DocstringParam] = dataclasses.field(default_factory=dict) - returns: DocstringReturns | None = None - raises: dict[str, DocstringRaises] = dataclasses.field(default_factory=dict) - - @property - def full_description(self) -> str | None: - if self.short_description and self.long_description: - return f"{self.short_description}\n\n{self.long_description}" - elif self.short_description: - return self.short_description - else: - return None - - def __str__(self) -> str: - output = StringIO() - - has_description = self.short_description or self.long_description - has_blocks = self.params or self.returns or self.raises - - if has_description: - if self.short_description and self.long_description: - output.write(self.short_description) - output.write("\n\n") - output.write(self.long_description) - elif self.short_description: - output.write(self.short_description) - - if has_blocks: - if has_description: - output.write("\n") - - for param in self.params.values(): - output.write("\n") - output.write(str(param)) - if self.returns: - output.write("\n") - output.write(str(self.returns)) - for raises in self.raises.values(): - output.write("\n") - output.write(str(raises)) - - s = output.getvalue() - output.close() - return s - - -def is_exception(member: object) -> TypeGuard[type[BaseException]]: - return isinstance(member, type) and issubclass(member, BaseException) - - -def get_exceptions(module: types.ModuleType) -> dict[str, type[BaseException]]: - "Returns all exception classes declared in a module." - - return {name: class_type for name, class_type in inspect.getmembers(module, is_exception)} - - -class SupportsDoc(Protocol): - __doc__: str | None - - -def _maybe_unwrap_async_iterator(t): - origin_type = typing.get_origin(t) - if origin_type is collections.abc.AsyncIterator: - return typing.get_args(t)[0] - return t - - -def parse_type(typ: SupportsDoc) -> Docstring: - """ - Parse the docstring of a type into its components. - - :param typ: The type whose documentation string to parse. - :returns: Components of the documentation string. - """ - # Use docstring from the iterator origin type for streaming apis - typ = _maybe_unwrap_async_iterator(typ) - - doc = get_docstring(typ) - if doc is None: - return Docstring() - - docstring = parse_text(doc) - check_docstring(typ, docstring) - - # assign parameter and return types - if is_dataclass_type(typ): - properties = dict(get_class_properties(typing.cast(type, typ))) - - for name, param in docstring.params.items(): - param.param_type = properties[name] - - elif inspect.isfunction(typ): - signature = get_signature(typ) - for name, param in docstring.params.items(): - param.param_type = signature.parameters[name].annotation - if docstring.returns: - docstring.returns.return_type = signature.return_annotation - - # assign exception types - defining_module = inspect.getmodule(typ) - if defining_module: - context: dict[str, type] = {} - context.update(get_exceptions(builtins)) - context.update(get_exceptions(defining_module)) - for exc_name, exc in docstring.raises.items(): - raise_type = context.get(exc_name) - if raise_type is None: - type_name = getattr(typ, "__qualname__", None) or getattr(typ, "__name__", None) or None - raise TypeError( - f"doc-string exception type `{exc_name}` is not an exception defined in the context of `{type_name}`" - ) - - exc.raise_type = raise_type - - return docstring - - -def parse_text(text: str) -> Docstring: - """ - Parse a ReST-style docstring into its components. - - :param text: The documentation string to parse, typically acquired as `type.__doc__`. - :returns: Components of the documentation string. - """ - - if not text: - return Docstring() - - # find block that starts object metadata block (e.g. `:param p:` or `:returns:`) - text = inspect.cleandoc(text) - match = re.search("^:", text, flags=re.MULTILINE) - if match: - desc_chunk = text[: match.start()] - meta_chunk = text[match.start() :] # noqa: E203 - else: - desc_chunk = text - meta_chunk = "" - - # split description text into short and long description - parts = desc_chunk.split("\n\n", 1) - - # ensure short description has no newlines - short_description = parts[0].strip().replace("\n", " ") or None - - # ensure long description preserves its structure (e.g. preformatted text) - if len(parts) > 1: - long_description = parts[1].strip() or None - else: - long_description = None - - params: dict[str, DocstringParam] = {} - raises: dict[str, DocstringRaises] = {} - returns = None - for match in re.finditer(r"(^:.*?)(?=^:|\Z)", meta_chunk, flags=re.DOTALL | re.MULTILINE): - chunk = match.group(0) - if not chunk: - continue - - args_chunk, desc_chunk = chunk.lstrip(":").split(":", 1) - args = args_chunk.split() - desc = re.sub(r"\s+", " ", desc_chunk.strip()) - - if len(args) > 0: - kw = args[0] - if len(args) == 2: - if kw == "param": - params[args[1]] = DocstringParam( - name=args[1], - description=desc, - ) - elif kw == "raise" or kw == "raises": - raises[args[1]] = DocstringRaises( - typename=args[1], - description=desc, - ) - - elif len(args) == 1: - if kw == "return" or kw == "returns": - returns = DocstringReturns(description=desc) - - return Docstring( - long_description=long_description, - short_description=short_description, - params=params, - returns=returns, - raises=raises, - ) - - -def has_default_docstring(typ: SupportsDoc) -> bool: - "Check if class has the auto-generated string assigned by @dataclass." - - if not isinstance(typ, type): - return False - - if is_dataclass_type(typ): - return typ.__doc__ is not None and re.match(f"^{re.escape(typ.__name__)}[(].*[)]$", typ.__doc__) is not None - - if is_type_enum(typ): - return typ.__doc__ is not None and typ.__doc__ == "An enumeration." - - return False - - -def has_docstring(typ: SupportsDoc) -> bool: - "Check if class has a documentation string other than the auto-generated string assigned by @dataclass." - - if has_default_docstring(typ): - return False - - return bool(typ.__doc__) - - -def get_docstring(typ: SupportsDoc) -> str | None: - if typ.__doc__ is None: - return None - - if has_default_docstring(typ): - return None - - return typ.__doc__ - - -def check_docstring(typ: SupportsDoc, docstring: Docstring, strict: bool = False) -> None: - """ - Verifies the doc-string of a type. - - :raises TypeError: Raised on a mismatch between doc-string parameters, and function or type signature. - """ - - if is_dataclass_type(typ): - check_dataclass_docstring(typ, docstring, strict) - elif inspect.isfunction(typ): - check_function_docstring(typ, docstring, strict) - - -def check_dataclass_docstring(typ: type[DataclassInstance], docstring: Docstring, strict: bool = False) -> None: - """ - Verifies the doc-string of a data-class type. - - :param strict: Whether to check if all data-class members have doc-strings. - :raises TypeError: Raised on a mismatch between doc-string parameters and data-class members. - """ - - if not is_dataclass_type(typ): - raise TypeError("not a data-class type") - - properties = dict(get_class_properties(typ)) - class_name = typ.__name__ - - for name in docstring.params: - if name not in properties: - raise TypeError(f"doc-string parameter `{name}` is not a member of the data-class `{class_name}`") - - if not strict: - return - - for name in properties: - if name not in docstring.params: - raise TypeError(f"member `{name}` in data-class `{class_name}` is missing its doc-string") - - -def check_function_docstring(fn: Callable[..., Any], docstring: Docstring, strict: bool = False) -> None: - """ - Verifies the doc-string of a function or member function. - - :param strict: Whether to check if all function parameters and the return type have doc-strings. - :raises TypeError: Raised on a mismatch between doc-string parameters and function signature. - """ - - signature = get_signature(fn) - func_name = fn.__qualname__ - - for name in docstring.params: - if name not in signature.parameters: - raise TypeError(f"doc-string parameter `{name}` is absent from signature of function `{func_name}`") - - if docstring.returns is not None and signature.return_annotation is inspect.Signature.empty: - raise TypeError(f"doc-string has returns description in function `{func_name}` with no return type annotation") - - if not strict: - return - - for name, param in signature.parameters.items(): - # ignore `self` in member function signatures - if name == "self" and ( - param.kind is inspect.Parameter.POSITIONAL_ONLY or param.kind is inspect.Parameter.POSITIONAL_OR_KEYWORD - ): - continue - - if name not in docstring.params: - raise TypeError(f"function parameter `{name}` in `{func_name}` is missing its doc-string") - - if signature.return_annotation is not inspect.Signature.empty and docstring.returns is None: - raise TypeError(f"function `{func_name}` has no returns description in its doc-string") diff --git a/src/llama_stack/strong_typing/exception.py b/src/llama_stack/strong_typing/exception.py deleted file mode 100644 index af037cc3c..000000000 --- a/src/llama_stack/strong_typing/exception.py +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright (c) Meta Platforms, Inc. and affiliates. -# All rights reserved. -# -# This source code is licensed under the terms described in the LICENSE file in -# the root directory of this source tree. - -""" -Type-safe data interchange for Python data classes. - -:see: https://github.com/hunyadi/strong_typing -""" - - -class JsonKeyError(Exception): - "Raised when deserialization for a class or union type has failed because a matching member was not found." - - -class JsonValueError(Exception): - "Raised when (de)serialization of data has failed due to invalid value." - - -class JsonTypeError(Exception): - "Raised when deserialization of data has failed due to a type mismatch." diff --git a/src/llama_stack/strong_typing/inspection.py b/src/llama_stack/strong_typing/inspection.py deleted file mode 100644 index 319d12657..000000000 --- a/src/llama_stack/strong_typing/inspection.py +++ /dev/null @@ -1,1104 +0,0 @@ -# Copyright (c) Meta Platforms, Inc. and affiliates. -# All rights reserved. -# -# This source code is licensed under the terms described in the LICENSE file in -# the root directory of this source tree. - -""" -Type-safe data interchange for Python data classes. - -:see: https://github.com/hunyadi/strong_typing -""" - -import dataclasses -import datetime -import enum -import importlib -import importlib.machinery -import importlib.util -import inspect -import re -import sys -import types -import typing -import uuid -from collections.abc import Callable, Iterable -from typing import ( - Any, - Literal, - NamedTuple, - Protocol, - TypeVar, - Union, - runtime_checkable, -) - -if sys.version_info >= (3, 9): - from typing import Annotated -else: - from typing import Annotated - -if sys.version_info >= (3, 10): - from typing import TypeGuard -else: - from typing import TypeGuard - - -from pydantic import BaseModel -from pydantic.fields import FieldInfo - -S = TypeVar("S") -T = TypeVar("T") -K = TypeVar("K") -V = TypeVar("V") - - -def _is_type_like(data_type: object) -> bool: - """ - Checks if the object is a type or type-like object (e.g. generic type). - - :param data_type: The object to validate. - :returns: True if the object is a type or type-like object. - """ - - if isinstance(data_type, type): - # a standard type - return True - elif typing.get_origin(data_type) is not None: - # a generic type such as `list`, `dict` or `set` - return True - elif hasattr(data_type, "__forward_arg__"): - # an instance of `ForwardRef` - return True - elif data_type is Any: - # the special form `Any` - return True - else: - return False - - -if sys.version_info >= (3, 9): - TypeLike = Union[type, types.GenericAlias, typing.ForwardRef, Any] - - def is_type_like( - data_type: object, - ) -> TypeGuard[TypeLike]: - """ - Checks if the object is a type or type-like object (e.g. generic type). - - :param data_type: The object to validate. - :returns: True if the object is a type or type-like object. - """ - - return _is_type_like(data_type) - -else: - TypeLike = object - - def is_type_like( - data_type: object, - ) -> bool: - return _is_type_like(data_type) - - -def evaluate_member_type(typ: Any, cls: type) -> Any: - """ - Evaluates a forward reference type in a dataclass member. - - :param typ: The dataclass member type to convert. - :param cls: The dataclass in which the member is defined. - :returns: The evaluated type. - """ - - return evaluate_type(typ, sys.modules[cls.__module__]) - - -def evaluate_type(typ: Any, module: types.ModuleType) -> Any: - """ - Evaluates a forward reference type. - - :param typ: The type to convert, typically a dataclass member type. - :param module: The context for the type, i.e. the module in which the member is defined. - :returns: The evaluated type. - """ - - if isinstance(typ, str): - # evaluate data-class field whose type annotation is a string - return eval(typ, module.__dict__, locals()) - if isinstance(typ, typing.ForwardRef): - if sys.version_info >= (3, 9): - return typ._evaluate(module.__dict__, locals(), recursive_guard=frozenset()) - else: - return typ._evaluate(module.__dict__, locals()) - else: - return typ - - -@runtime_checkable -class DataclassInstance(Protocol): - __dataclass_fields__: typing.ClassVar[dict[str, dataclasses.Field]] - - -def is_dataclass_type(typ: Any) -> TypeGuard[type[DataclassInstance]]: - "True if the argument corresponds to a data class type (but not an instance)." - - typ = unwrap_annotated_type(typ) - return isinstance(typ, type) and dataclasses.is_dataclass(typ) - - -def is_dataclass_instance(obj: Any) -> TypeGuard[DataclassInstance]: - "True if the argument corresponds to a data class instance (but not a type)." - - return not isinstance(obj, type) and dataclasses.is_dataclass(obj) - - -@dataclasses.dataclass -class DataclassField: - name: str - type: Any - default: Any - - def __init__(self, name: str, type: Any, default: Any = dataclasses.MISSING) -> None: - self.name = name - self.type = type - self.default = default - - -def dataclass_fields(cls: type[DataclassInstance]) -> Iterable[DataclassField]: - "Generates the fields of a data-class resolving forward references." - - for field in dataclasses.fields(cls): - yield DataclassField(field.name, evaluate_member_type(field.type, cls), field.default) - - -def dataclass_field_by_name(cls: type[DataclassInstance], name: str) -> DataclassField: - "Looks up a field in a data-class by its field name." - - for field in dataclasses.fields(cls): - if field.name == name: - return DataclassField(field.name, evaluate_member_type(field.type, cls)) - - raise LookupError(f"field `{name}` missing from class `{cls.__name__}`") - - -def is_named_tuple_instance(obj: Any) -> TypeGuard[NamedTuple]: - "True if the argument corresponds to a named tuple instance." - - return is_named_tuple_type(type(obj)) - - -def is_named_tuple_type(typ: Any) -> TypeGuard[type[NamedTuple]]: - """ - True if the argument corresponds to a named tuple type. - - Calling the function `collections.namedtuple` gives a new type that is a subclass of `tuple` (and no other classes) - with a member named `_fields` that is a tuple whose items are all strings. - """ - - if not isinstance(typ, type): - return False - - typ = unwrap_annotated_type(typ) - - b = getattr(typ, "__bases__", None) - if b is None: - return False - - if len(b) != 1 or b[0] != tuple: - return False - - f = getattr(typ, "_fields", None) - if not isinstance(f, tuple): - return False - - return all(isinstance(n, str) for n in f) - - -if sys.version_info >= (3, 11): - - def is_type_enum(typ: object) -> TypeGuard[type[enum.Enum]]: - "True if the specified type is an enumeration type." - - typ = unwrap_annotated_type(typ) - return isinstance(typ, enum.EnumType) - -else: - - def is_type_enum(typ: object) -> TypeGuard[type[enum.Enum]]: - "True if the specified type is an enumeration type." - - typ = unwrap_annotated_type(typ) - - # use an explicit isinstance(..., type) check to filter out special forms like generics - return isinstance(typ, type) and issubclass(typ, enum.Enum) - - -def enum_value_types(enum_type: type[enum.Enum]) -> list[type]: - """ - Returns all unique value types of the `enum.Enum` type in definition order. - """ - - # filter unique enumeration value types by keeping definition order - return list(dict.fromkeys(type(e.value) for e in enum_type)) - - -def extend_enum( - source: type[enum.Enum], -) -> Callable[[type[enum.Enum]], type[enum.Enum]]: - """ - Creates a new enumeration type extending the set of values in an existing type. - - :param source: The existing enumeration type to be extended with new values. - :returns: A new enumeration type with the extended set of values. - """ - - def wrap(extend: type[enum.Enum]) -> type[enum.Enum]: - # create new enumeration type combining the values from both types - values: dict[str, Any] = {} - values.update((e.name, e.value) for e in source) - values.update((e.name, e.value) for e in extend) - # mypy fails to determine that __name__ is always a string; hence the `ignore` directive. - enum_class: type[enum.Enum] = enum.Enum(extend.__name__, values) # type: ignore[misc] - - # assign the newly created type to the same module where the extending class is defined - enum_class.__module__ = extend.__module__ - enum_class.__doc__ = extend.__doc__ - setattr(sys.modules[extend.__module__], extend.__name__, enum_class) - - return enum.unique(enum_class) - - return wrap - - -if sys.version_info >= (3, 10): - - def _is_union_like(typ: object) -> bool: - "True if type is a union such as `Union[T1, T2, ...]` or a union type `T1 | T2`." - - return typing.get_origin(typ) is Union or isinstance(typ, types.UnionType) - -else: - - def _is_union_like(typ: object) -> bool: - "True if type is a union such as `Union[T1, T2, ...]` or a union type `T1 | T2`." - - return typing.get_origin(typ) is Union - - -def is_type_optional(typ: object, strict: bool = False) -> TypeGuard[type[Any | None]]: - """ - True if the type annotation corresponds to an optional type (e.g. `Optional[T]` or `Union[T1,T2,None]`). - - `Optional[T]` is represented as `Union[T, None]` is classic style, and is equivalent to `T | None` in new style. - - :param strict: True if only `Optional[T]` qualifies as an optional type but `Union[T1, T2, None]` does not. - """ - - typ = unwrap_annotated_type(typ) - - if _is_union_like(typ): - args = typing.get_args(typ) - if strict and len(args) != 2: - return False - - return type(None) in args - - return False - - -def unwrap_optional_type(typ: type[T | None]) -> type[T]: - """ - Extracts the inner type of an optional type. - - :param typ: The optional type `Optional[T]`. - :returns: The inner type `T`. - """ - - return rewrap_annotated_type(_unwrap_optional_type, typ) - - -def _unwrap_optional_type(typ: type[T | None]) -> type[T]: - "Extracts the type qualified as optional (e.g. returns `T` for `Optional[T]`)." - - # Optional[T] is represented internally as Union[T, None] - if not _is_union_like(typ): - raise TypeError("optional type must have un-subscripted type of Union") - - # will automatically unwrap Union[T] into T - return Union[tuple(filter(lambda item: item is not type(None), typing.get_args(typ)))] # type: ignore[return-value] - - -def is_type_union(typ: object) -> bool: - "True if the type annotation corresponds to a union type (e.g. `Union[T1,T2,T3]`)." - - typ = unwrap_annotated_type(typ) - if _is_union_like(typ): - args = typing.get_args(typ) - return len(args) > 2 or type(None) not in args - - return False - - -def unwrap_union_types(typ: object) -> tuple[object, ...]: - """ - Extracts the inner types of a union type. - - :param typ: The union type `Union[T1, T2, ...]`. - :returns: The inner types `T1`, `T2`, etc. - """ - - typ = unwrap_annotated_type(typ) - return _unwrap_union_types(typ) - - -def _unwrap_union_types(typ: object) -> tuple[object, ...]: - "Extracts the types in a union (e.g. returns a tuple of types `T1` and `T2` for `Union[T1, T2]`)." - - if not _is_union_like(typ): - raise TypeError("union type must have un-subscripted type of Union") - - return typing.get_args(typ) - - -def is_type_literal(typ: object) -> bool: - "True if the specified type is a literal of one or more constant values, e.g. `Literal['string']` or `Literal[42]`." - - typ = unwrap_annotated_type(typ) - return typing.get_origin(typ) is Literal - - -def unwrap_literal_value(typ: object) -> Any: - """ - Extracts the single constant value captured by a literal type. - - :param typ: The literal type `Literal[value]`. - :returns: The values captured by the literal type. - """ - - args = unwrap_literal_values(typ) - if len(args) != 1: - raise TypeError("too many values in literal type") - - return args[0] - - -def unwrap_literal_values(typ: object) -> tuple[Any, ...]: - """ - Extracts the constant values captured by a literal type. - - :param typ: The literal type `Literal[value, ...]`. - :returns: A tuple of values captured by the literal type. - """ - - typ = unwrap_annotated_type(typ) - return typing.get_args(typ) - - -def unwrap_literal_types(typ: object) -> tuple[type, ...]: - """ - Extracts the types of the constant values captured by a literal type. - - :param typ: The literal type `Literal[value, ...]`. - :returns: A tuple of item types `T` such that `type(value) == T`. - """ - - return tuple(type(t) for t in unwrap_literal_values(typ)) - - -def is_generic_list(typ: object) -> TypeGuard[type[list]]: - "True if the specified type is a generic list, i.e. `List[T]`." - - typ = unwrap_annotated_type(typ) - return typing.get_origin(typ) is list - - -def unwrap_generic_list(typ: type[list[T]]) -> type[T]: - """ - Extracts the item type of a list type. - - :param typ: The list type `List[T]`. - :returns: The item type `T`. - """ - - return rewrap_annotated_type(_unwrap_generic_list, typ) - - -def _unwrap_generic_list(typ: type[list[T]]) -> type[T]: - "Extracts the item type of a list type (e.g. returns `T` for `List[T]`)." - - (list_type,) = typing.get_args(typ) # unpack single tuple element - return list_type # type: ignore[no-any-return] - - -def is_generic_sequence(typ: object) -> bool: - "True if the specified type is a generic Sequence, i.e. `Sequence[T]`." - import collections.abc - - typ = unwrap_annotated_type(typ) - return typing.get_origin(typ) is collections.abc.Sequence - - -def unwrap_generic_sequence(typ: object) -> type: - """ - Extracts the item type of a Sequence type. - - :param typ: The Sequence type `Sequence[T]`. - :returns: The item type `T`. - """ - - return rewrap_annotated_type(_unwrap_generic_sequence, typ) # type: ignore[arg-type] - - -def _unwrap_generic_sequence(typ: object) -> type: - "Extracts the item type of a Sequence type (e.g. returns `T` for `Sequence[T]`)." - - (sequence_type,) = typing.get_args(typ) # unpack single tuple element - return sequence_type # type: ignore[no-any-return] - - -def is_generic_set(typ: object) -> TypeGuard[type[set]]: - "True if the specified type is a generic set, i.e. `Set[T]`." - - typ = unwrap_annotated_type(typ) - return typing.get_origin(typ) is set - - -def unwrap_generic_set(typ: type[set[T]]) -> type[T]: - """ - Extracts the item type of a set type. - - :param typ: The set type `Set[T]`. - :returns: The item type `T`. - """ - - return rewrap_annotated_type(_unwrap_generic_set, typ) - - -def _unwrap_generic_set(typ: type[set[T]]) -> type[T]: - "Extracts the item type of a set type (e.g. returns `T` for `Set[T]`)." - - (set_type,) = typing.get_args(typ) # unpack single tuple element - return set_type # type: ignore[no-any-return] - - -def is_generic_dict(typ: object) -> TypeGuard[type[dict]]: - "True if the specified type is a generic dictionary, i.e. `Dict[KeyType, ValueType]`." - - typ = unwrap_annotated_type(typ) - return typing.get_origin(typ) is dict - - -def unwrap_generic_dict(typ: type[dict[K, V]]) -> tuple[type[K], type[V]]: - """ - Extracts the key and value types of a dictionary type as a tuple. - - :param typ: The dictionary type `Dict[K, V]`. - :returns: The key and value types `K` and `V`. - """ - - return _unwrap_generic_dict(unwrap_annotated_type(typ)) - - -def _unwrap_generic_dict(typ: type[dict[K, V]]) -> tuple[type[K], type[V]]: - "Extracts the key and value types of a dict type (e.g. returns (`K`, `V`) for `Dict[K, V]`)." - - key_type, value_type = typing.get_args(typ) - return key_type, value_type - - -def is_type_annotated(typ: TypeLike) -> bool: - "True if the type annotation corresponds to an annotated type (i.e. `Annotated[T, ...]`)." - - return getattr(typ, "__metadata__", None) is not None - - -def get_annotation(data_type: TypeLike, annotation_type: type[T]) -> T | None: - """ - Returns the first annotation on a data type that matches the expected annotation type. - - :param data_type: The annotated type from which to extract the annotation. - :param annotation_type: The annotation class to look for. - :returns: The annotation class instance found (if any). - """ - - metadata = getattr(data_type, "__metadata__", None) - if metadata is not None: - for annotation in metadata: - if isinstance(annotation, annotation_type): - return annotation - - return None - - -def unwrap_annotated_type(typ: T) -> T: - "Extracts the wrapped type from an annotated type (e.g. returns `T` for `Annotated[T, ...]`)." - - if is_type_annotated(typ): - # type is Annotated[T, ...] - return typing.get_args(typ)[0] # type: ignore[no-any-return] - else: - # type is a regular type - return typ - - -def rewrap_annotated_type(transform: Callable[[type[S]], type[T]], typ: type[S]) -> type[T]: - """ - Un-boxes, transforms and re-boxes an optionally annotated type. - - :param transform: A function that maps an un-annotated type to another type. - :param typ: A type to un-box (if necessary), transform, and re-box (if necessary). - """ - - metadata = getattr(typ, "__metadata__", None) - if metadata is not None: - # type is Annotated[T, ...] - inner_type = typing.get_args(typ)[0] - else: - # type is a regular type - inner_type = typ - - transformed_type = transform(inner_type) - - if metadata is not None: - return Annotated[(transformed_type, *metadata)] # type: ignore[return-value] - else: - return transformed_type - - -def get_module_classes(module: types.ModuleType) -> list[type]: - "Returns all classes declared directly in a module." - - def is_class_member(member: object) -> TypeGuard[type]: - return inspect.isclass(member) and member.__module__ == module.__name__ - - return [class_type for _, class_type in inspect.getmembers(module, is_class_member)] - - -if sys.version_info >= (3, 9): - - def get_resolved_hints(typ: type) -> dict[str, type]: - return typing.get_type_hints(typ, include_extras=True) - -else: - - def get_resolved_hints(typ: type) -> dict[str, type]: - return typing.get_type_hints(typ) - - -def get_class_properties(typ: type) -> Iterable[tuple[str, type | str]]: - "Returns all properties of a class." - - if is_dataclass_type(typ): - return ((field.name, field.type) for field in dataclasses.fields(typ)) - elif hasattr(typ, "model_fields"): - # Pydantic BaseModel - use model_fields to exclude ClassVar and other non-field attributes - # Reconstruct Annotated type if discriminator exists to preserve metadata - from typing import Annotated, Any - - from pydantic.fields import FieldInfo - - def get_field_type(name: str, field: Any) -> type | str: - # If field has discriminator, wrap in Annotated to preserve it for schema generation - if field.discriminator: - field_info = FieldInfo(annotation=None, discriminator=field.discriminator) - # Annotated returns _AnnotatedAlias which isn't a type but is valid here - return Annotated[field.annotation, field_info] # type: ignore[return-value] - # field.annotation can be Union types, Annotated, etc. which aren't type but are valid - return field.annotation # type: ignore[return-value,no-any-return] - - return ((name, get_field_type(name, field)) for name, field in typ.model_fields.items()) - else: - resolved_hints = get_resolved_hints(typ) - return resolved_hints.items() - - -def get_class_property(typ: type, name: str) -> type | str | None: - "Looks up the annotated type of a property in a class by its property name." - - for property_name, property_type in get_class_properties(typ): - if name == property_name: - return property_type - return None - - -@dataclasses.dataclass -class _ROOT: - pass - - -def get_referenced_types(typ: TypeLike, module: types.ModuleType | None = None) -> set[type]: - """ - Extracts types directly or indirectly referenced by this type. - - For example, extract `T` from `List[T]`, `Optional[T]` or `Annotated[T, ...]`, `K` and `V` from `Dict[K,V]`, - `A` and `B` from `Union[A,B]`. - - :param typ: A type or special form. - :param module: The context in which types are evaluated. - :returns: Types referenced by the given type or special form. - """ - - collector = TypeCollector() - collector.run(typ, _ROOT, module) - return collector.references - - -class TypeCollector: - """ - Collects types directly or indirectly referenced by a type. - - :param graph: The type dependency graph, linking types to types they depend on. - """ - - graph: dict[type, set[type]] - - @property - def references(self) -> set[type]: - "Types collected by the type collector." - - dependencies = set() - for edges in self.graph.values(): - dependencies.update(edges) - return dependencies - - def __init__(self) -> None: - self.graph = {_ROOT: set()} - - def traverse(self, typ: type) -> None: - "Finds all dependent types of a type." - - self.run(typ, _ROOT, sys.modules[typ.__module__]) - - def traverse_all(self, types: Iterable[type]) -> None: - "Finds all dependent types of a list of types." - - for typ in types: - self.traverse(typ) - - def run( - self, - typ: TypeLike, - cls: type[DataclassInstance], - module: types.ModuleType | None, - ) -> None: - """ - Extracts types indirectly referenced by this type. - - For example, extract `T` from `List[T]`, `Optional[T]` or `Annotated[T, ...]`, `K` and `V` from `Dict[K,V]`, - `A` and `B` from `Union[A,B]`. - - :param typ: A type or special form. - :param cls: A dataclass type being expanded for dependent types. - :param module: The context in which types are evaluated. - :returns: Types referenced by the given type or special form. - """ - - if typ is type(None) or typ is Any: - return - - if isinstance(typ, type): - self.graph[cls].add(typ) - - if typ in self.graph: - return - - self.graph[typ] = set() - - metadata = getattr(typ, "__metadata__", None) - if metadata is not None: - # type is Annotated[T, ...] - arg = typing.get_args(typ)[0] - return self.run(arg, cls, module) - - # type is a forward reference - if isinstance(typ, str) or isinstance(typ, typing.ForwardRef): - if module is None: - raise ValueError("missing context for evaluating types") - - evaluated_type = evaluate_type(typ, module) - return self.run(evaluated_type, cls, module) - - # type is a special form - origin = typing.get_origin(typ) - if origin in [list, dict, frozenset, set, tuple, Union]: - for arg in typing.get_args(typ): - self.run(arg, cls, module) - return - elif origin is Literal: - return - - # type is optional or a union type - if is_type_optional(typ): - return self.run(unwrap_optional_type(typ), cls, module) - if is_type_union(typ): - for union_type in unwrap_union_types(typ): - self.run(union_type, cls, module) - return - - # type is a regular type - elif is_dataclass_type(typ) or is_type_enum(typ) or isinstance(typ, type): - context = sys.modules[typ.__module__] - if is_dataclass_type(typ): - for field in dataclass_fields(typ): - self.run(field.type, typ, context) - else: - for field_name, field_type in get_resolved_hints(typ).items(): - self.run(field_type, typ, context) - return - - raise TypeError(f"expected: type-like; got: {typ}") - - -if sys.version_info >= (3, 10): - - def get_signature(fn: Callable[..., Any]) -> inspect.Signature: - "Extracts the signature of a function." - - return inspect.signature(fn, eval_str=True) - -else: - - def get_signature(fn: Callable[..., Any]) -> inspect.Signature: - "Extracts the signature of a function." - - return inspect.signature(fn) - - -def is_reserved_property(name: str) -> bool: - "True if the name stands for an internal property." - - # filter built-in and special properties - if re.match(r"^__.+__$", name): - return True - - # filter built-in special names - if name in ["_abc_impl"]: - return True - - return False - - -def create_module(name: str) -> types.ModuleType: - """ - Creates a new module dynamically at run-time. - - :param name: Fully qualified name of the new module (with dot notation). - """ - - if name in sys.modules: - raise KeyError(f"{name!r} already in sys.modules") - - spec = importlib.machinery.ModuleSpec(name, None) - module = importlib.util.module_from_spec(spec) - sys.modules[name] = module - if spec.loader is not None: - spec.loader.exec_module(module) - return module - - -if sys.version_info >= (3, 10): - - def create_data_type(class_name: str, fields: list[tuple[str, type]]) -> type: - """ - Creates a new data-class type dynamically. - - :param class_name: The name of new data-class type. - :param fields: A list of fields (and their type) that the new data-class type is expected to have. - :returns: The newly created data-class type. - """ - - # has the `slots` parameter - return dataclasses.make_dataclass(class_name, fields, slots=True) - -else: - - def create_data_type(class_name: str, fields: list[tuple[str, type]]) -> type: - """ - Creates a new data-class type dynamically. - - :param class_name: The name of new data-class type. - :param fields: A list of fields (and their type) that the new data-class type is expected to have. - :returns: The newly created data-class type. - """ - - cls = dataclasses.make_dataclass(class_name, fields) - - cls_dict = dict(cls.__dict__) - field_names = tuple(field.name for field in dataclasses.fields(cls)) - - cls_dict["__slots__"] = field_names - - for field_name in field_names: - cls_dict.pop(field_name, None) - cls_dict.pop("__dict__", None) - - qualname = getattr(cls, "__qualname__", None) - cls = type(cls)(cls.__name__, (), cls_dict) - if qualname is not None: - cls.__qualname__ = qualname - - return cls - - -def create_object(typ: type[T]) -> T: - "Creates an instance of a type." - - if issubclass(typ, Exception): - # exception types need special treatment - e = typ.__new__(typ) - return typing.cast(T, e) - else: - return object.__new__(typ) - - -if sys.version_info >= (3, 9): - TypeOrGeneric = Union[type, types.GenericAlias] - -else: - TypeOrGeneric = object - - -def is_generic_instance(obj: Any, typ: TypeLike) -> bool: - """ - Returns whether an object is an instance of a generic class, a standard class or of a subclass thereof. - - This function checks the following items recursively: - * items of a list - * keys and values of a dictionary - * members of a set - * items of a tuple - * members of a union type - - :param obj: The (possibly generic container) object to check recursively. - :param typ: The expected type of the object. - """ - - if isinstance(typ, typing.ForwardRef): - fwd: typing.ForwardRef = typ - identifier = fwd.__forward_arg__ - typ = eval(identifier) - if isinstance(typ, type): - return isinstance(obj, typ) - else: - return False - - # generic types (e.g. list, dict, set, etc.) - origin_type = typing.get_origin(typ) - if origin_type is list: - if not isinstance(obj, list): - return False - (list_item_type,) = typing.get_args(typ) # unpack single tuple element - list_obj: list = obj - return all(is_generic_instance(item, list_item_type) for item in list_obj) - elif origin_type is dict: - if not isinstance(obj, dict): - return False - key_type, value_type = typing.get_args(typ) - dict_obj: dict = obj - return all( - is_generic_instance(key, key_type) and is_generic_instance(value, value_type) - for key, value in dict_obj.items() - ) - elif origin_type is set: - if not isinstance(obj, set): - return False - (set_member_type,) = typing.get_args(typ) # unpack single tuple element - set_obj: set = obj - return all(is_generic_instance(item, set_member_type) for item in set_obj) - elif origin_type is tuple: - if not isinstance(obj, tuple): - return False - return all( - is_generic_instance(item, tuple_item_type) - for tuple_item_type, item in zip( - (tuple_item_type for tuple_item_type in typing.get_args(typ)), - (item for item in obj), - strict=False, - ) - ) - elif origin_type is Union: - return any(is_generic_instance(obj, member_type) for member_type in typing.get_args(typ)) - elif isinstance(typ, type): - return isinstance(obj, typ) - else: - raise TypeError(f"expected `type` but got: {typ}") - - -class RecursiveChecker: - _pred: Callable[[type, Any], bool] | None - - def __init__(self, pred: Callable[[type, Any], bool]) -> None: - """ - Creates a checker to verify if a predicate applies to all nested member properties of an object recursively. - - :param pred: The predicate to test on member properties. Takes a property type and a property value. - """ - - self._pred = pred - - def pred(self, typ: type, obj: Any) -> bool: - "Acts as a workaround for the type checker mypy." - - assert self._pred is not None - return self._pred(typ, obj) - - def check(self, typ: TypeLike, obj: Any) -> bool: - """ - Checks if a predicate applies to all nested member properties of an object recursively. - - :param typ: The type to recurse into. - :param obj: The object to inspect recursively. Must be an instance of the given type. - :returns: True if all member properties pass the filter predicate. - """ - - # check for well-known types - if ( - typ is type(None) - or typ is bool - or typ is int - or typ is float - or typ is str - or typ is bytes - or typ is datetime.datetime - or typ is datetime.date - or typ is datetime.time - or typ is uuid.UUID - ): - return self.pred(typing.cast(type, typ), obj) - - # generic types (e.g. list, dict, set, etc.) - origin_type = typing.get_origin(typ) - if origin_type is list: - if not isinstance(obj, list): - raise TypeError(f"expected `list` but got: {obj}") - (list_item_type,) = typing.get_args(typ) # unpack single tuple element - list_obj: list = obj - return all(self.check(list_item_type, item) for item in list_obj) - elif origin_type is dict: - if not isinstance(obj, dict): - raise TypeError(f"expected `dict` but got: {obj}") - key_type, value_type = typing.get_args(typ) - dict_obj: dict = obj - return all(self.check(value_type, item) for item in dict_obj.values()) - elif origin_type is set: - if not isinstance(obj, set): - raise TypeError(f"expected `set` but got: {obj}") - (set_member_type,) = typing.get_args(typ) # unpack single tuple element - set_obj: set = obj - return all(self.check(set_member_type, item) for item in set_obj) - elif origin_type is tuple: - if not isinstance(obj, tuple): - raise TypeError(f"expected `tuple` but got: {obj}") - return all( - self.check(tuple_item_type, item) - for tuple_item_type, item in zip( - (tuple_item_type for tuple_item_type in typing.get_args(typ)), - (item for item in obj), - strict=False, - ) - ) - elif origin_type is Union: - return self.pred(typ, obj) # type: ignore[arg-type] - - if not inspect.isclass(typ): - raise TypeError(f"expected `type` but got: {typ}") - - # enumeration type - if issubclass(typ, enum.Enum): - if not isinstance(obj, enum.Enum): - raise TypeError(f"expected `{typ}` but got: {obj}") - return self.pred(typ, obj) - - # class types with properties - if is_named_tuple_type(typ): - if not isinstance(obj, tuple): - raise TypeError(f"expected `NamedTuple` but got: {obj}") - return all( - self.check(field_type, getattr(obj, field_name)) - for field_name, field_type in typing.get_type_hints(typ).items() - ) - elif is_dataclass_type(typ): - if not isinstance(obj, typ): - raise TypeError(f"expected `{typ}` but got: {obj}") - resolved_hints = get_resolved_hints(typ) - return all( - self.check(resolved_hints[field.name], getattr(obj, field.name)) for field in dataclasses.fields(typ) - ) - else: - if not isinstance(obj, typ): - raise TypeError(f"expected `{typ}` but got: {obj}") - return all( - self.check(property_type, getattr(obj, property_name)) - for property_name, property_type in get_class_properties(typ) - ) - - -def check_recursive( - obj: object, - /, - *, - pred: Callable[[type, Any], bool] | None = None, - type_pred: Callable[[type], bool] | None = None, - value_pred: Callable[[Any], bool] | None = None, -) -> bool: - """ - Checks if a predicate applies to all nested member properties of an object recursively. - - :param obj: The object to inspect recursively. - :param pred: The predicate to test on member properties. Takes a property type and a property value. - :param type_pred: Constrains the check to properties of an expected type. Properties of other types pass automatically. - :param value_pred: Verifies a condition on member property values (of an expected type). - :returns: True if all member properties pass the filter predicate(s). - """ - - if type_pred is not None and value_pred is not None: - if pred is not None: - raise TypeError("filter predicate not permitted when type and value predicates are present") - - type_p: Callable[[type[T]], bool] = type_pred - value_p: Callable[[T], bool] = value_pred - pred = lambda typ, obj: not type_p(typ) or value_p(obj) # noqa: E731 - - elif value_pred is not None: - if pred is not None: - raise TypeError("filter predicate not permitted when value predicate is present") - - value_only_p: Callable[[T], bool] = value_pred - pred = lambda typ, obj: value_only_p(obj) # noqa: E731 - - elif type_pred is not None: - raise TypeError("value predicate required when type predicate is present") - - elif pred is None: - pred = lambda typ, obj: True # noqa: E731 - - return RecursiveChecker(pred).check(type(obj), obj) - - -def is_unwrapped_body_param(param_type: Any) -> bool: - """ - Check if a parameter type represents an unwrapped body parameter. - An unwrapped body parameter is an Annotated type with Body(embed=False) - - This is used to determine whether request parameters should be flattened - in OpenAPI specs and client libraries (matching FastAPI's embed=False behavior). - - Args: - param_type: The parameter type annotation to check - - Returns: - True if the parameter should be treated as an unwrapped body parameter - """ - # Check if it's Annotated with Body(embed=False) - if typing.get_origin(param_type) is Annotated: - args = typing.get_args(param_type) - base_type = args[0] - metadata = args[1:] - - # Look for Body annotation with embed=False - # Body() returns a FieldInfo object, so we check for that type and the embed attribute - for item in metadata: - if isinstance(item, FieldInfo) and hasattr(item, "embed") and not item.embed: - return inspect.isclass(base_type) and issubclass(base_type, BaseModel) - - return False diff --git a/src/llama_stack/strong_typing/mapping.py b/src/llama_stack/strong_typing/mapping.py deleted file mode 100644 index d6c1a3172..000000000 --- a/src/llama_stack/strong_typing/mapping.py +++ /dev/null @@ -1,39 +0,0 @@ -# Copyright (c) Meta Platforms, Inc. and affiliates. -# All rights reserved. -# -# This source code is licensed under the terms described in the LICENSE file in -# the root directory of this source tree. - -""" -Type-safe data interchange for Python data classes. - -:see: https://github.com/hunyadi/strong_typing -""" - -import keyword - -from .auxiliary import Alias -from .inspection import get_annotation - - -def python_field_to_json_property(python_id: str, python_type: object | None = None) -> str: - """ - Map a Python field identifier to a JSON property name. - - Authors may use an underscore appended at the end of a Python identifier as per PEP 8 if it clashes with a Python - keyword: e.g. `in` would become `in_` and `from` would become `from_`. Remove these suffixes when exporting to JSON. - - Authors may supply an explicit alias with the type annotation `Alias`, e.g. `Annotated[MyType, Alias("alias")]`. - """ - - if python_type is not None: - alias = get_annotation(python_type, Alias) - if alias: - return alias.name - - if python_id.endswith("_"): - id = python_id[:-1] - if keyword.iskeyword(id): - return id - - return python_id diff --git a/src/llama_stack/strong_typing/name.py b/src/llama_stack/strong_typing/name.py deleted file mode 100644 index 60501ac43..000000000 --- a/src/llama_stack/strong_typing/name.py +++ /dev/null @@ -1,188 +0,0 @@ -# Copyright (c) Meta Platforms, Inc. and affiliates. -# All rights reserved. -# -# This source code is licensed under the terms described in the LICENSE file in -# the root directory of this source tree. - -""" -Type-safe data interchange for Python data classes. - -:see: https://github.com/hunyadi/strong_typing -""" - -import typing -from typing import Any, Literal, Union - -from .auxiliary import _auxiliary_types -from .inspection import ( - TypeLike, - is_generic_dict, - is_generic_list, - is_generic_sequence, - is_type_optional, - is_type_union, - unwrap_generic_dict, - unwrap_generic_list, - unwrap_generic_sequence, - unwrap_optional_type, - unwrap_union_types, -) - - -class TypeFormatter: - """ - Type formatter. - - :param use_union_operator: Whether to emit union types as `X | Y` as per PEP 604. - """ - - use_union_operator: bool - - def __init__(self, use_union_operator: bool = False) -> None: - self.use_union_operator = use_union_operator - - def union_to_str(self, data_type_args: tuple[TypeLike, ...]) -> str: - if self.use_union_operator: - return " | ".join(self.python_type_to_str(t) for t in data_type_args) - else: - if len(data_type_args) == 2 and type(None) in data_type_args: - # Optional[T] is represented as Union[T, None] - origin_name = "Optional" - data_type_args = tuple(t for t in data_type_args if t is not type(None)) - else: - origin_name = "Union" - - args = ", ".join(self.python_type_to_str(t) for t in data_type_args) - return f"{origin_name}[{args}]" - - def plain_type_to_str(self, data_type: TypeLike) -> str: - "Returns the string representation of a Python type without metadata." - - # return forward references as the annotation string - if isinstance(data_type, typing.ForwardRef): - fwd: typing.ForwardRef = data_type - return fwd.__forward_arg__ - elif isinstance(data_type, str): - return data_type - - origin = typing.get_origin(data_type) - if origin is not None: - data_type_args = typing.get_args(data_type) - - if origin is dict: # Dict[T] - origin_name = "Dict" - elif origin is list: # List[T] - origin_name = "List" - elif origin is set: # Set[T] - origin_name = "Set" - elif origin is Union: - return self.union_to_str(data_type_args) - elif origin is Literal: - args = ", ".join(repr(arg) for arg in data_type_args) - return f"Literal[{args}]" - else: - origin_name = origin.__name__ - - args = ", ".join(self.python_type_to_str(t) for t in data_type_args) - return f"{origin_name}[{args}]" - - return data_type.__name__ - - def python_type_to_str(self, data_type: TypeLike) -> str: - "Returns the string representation of a Python type." - - if data_type is type(None): - return "None" - - # use compact name for alias types - name = _auxiliary_types.get(data_type) - if name is not None: - return name - - metadata = getattr(data_type, "__metadata__", None) - if metadata is not None: - # type is Annotated[T, ...] - metatuple: tuple[Any, ...] = metadata - arg = typing.get_args(data_type)[0] - - # check for auxiliary types with user-defined annotations - metaset = set(metatuple) - for auxiliary_type, auxiliary_name in _auxiliary_types.items(): - auxiliary_arg = typing.get_args(auxiliary_type)[0] - if arg is not auxiliary_arg: - continue - - auxiliary_metatuple: tuple[Any, ...] | None = getattr(auxiliary_type, "__metadata__", None) - if auxiliary_metatuple is None: - continue - - if metaset.issuperset(auxiliary_metatuple): - # type is an auxiliary type with extra annotations - auxiliary_args = ", ".join(repr(m) for m in metatuple if m not in auxiliary_metatuple) - return f"Annotated[{auxiliary_name}, {auxiliary_args}]" - - # type is an annotated type - args = ", ".join(repr(m) for m in metatuple) - return f"Annotated[{self.plain_type_to_str(arg)}, {args}]" - else: - # type is a regular type - return self.plain_type_to_str(data_type) - - -def python_type_to_str(data_type: TypeLike, use_union_operator: bool = False) -> str: - """ - Returns the string representation of a Python type. - - :param use_union_operator: Whether to emit union types as `X | Y` as per PEP 604. - """ - - fmt = TypeFormatter(use_union_operator) - return fmt.python_type_to_str(data_type) - - -def python_type_to_name(data_type: TypeLike, force: bool = False) -> str: - """ - Returns the short name of a Python type. - - :param force: Whether to produce a name for composite types such as generics. - """ - - # use compact name for alias types - name = _auxiliary_types.get(data_type) - if name is not None: - return name - - # unwrap annotated types - metadata = getattr(data_type, "__metadata__", None) - if metadata is not None: - # type is Annotated[T, ...] - arg = typing.get_args(data_type)[0] - return python_type_to_name(arg, force=force) - - if force: - # generic types - if is_type_optional(data_type, strict=True): - inner_name = python_type_to_name(unwrap_optional_type(data_type), force=True) - return f"Optional__{inner_name}" - elif is_generic_list(data_type): - item_name = python_type_to_name(unwrap_generic_list(data_type), force=True) - return f"List__{item_name}" - elif is_generic_sequence(data_type): - # Treat Sequence the same as List for schema generation purposes - item_name = python_type_to_name(unwrap_generic_sequence(data_type), force=True) - return f"List__{item_name}" - elif is_generic_dict(data_type): - key_type, value_type = unwrap_generic_dict(data_type) - key_name = python_type_to_name(key_type, force=True) - value_name = python_type_to_name(value_type, force=True) - return f"Dict__{key_name}__{value_name}" - elif is_type_union(data_type): - member_types = unwrap_union_types(data_type) - member_names = "__".join(python_type_to_name(member_type, force=True) for member_type in member_types) - return f"Union__{member_names}" - - # named system or user-defined type - if hasattr(data_type, "__name__") and not typing.get_args(data_type): - return data_type.__name__ - - raise TypeError(f"cannot assign a simple name to type: {data_type}") diff --git a/src/llama_stack/strong_typing/py.typed b/src/llama_stack/strong_typing/py.typed deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/llama_stack/strong_typing/schema.py b/src/llama_stack/strong_typing/schema.py deleted file mode 100644 index 916690e41..000000000 --- a/src/llama_stack/strong_typing/schema.py +++ /dev/null @@ -1,791 +0,0 @@ -# Copyright (c) Meta Platforms, Inc. and affiliates. -# All rights reserved. -# -# This source code is licensed under the terms described in the LICENSE file in -# the root directory of this source tree. - -""" -Type-safe data interchange for Python data classes. - -:see: https://github.com/hunyadi/strong_typing -""" - -import collections.abc -import dataclasses -import datetime -import decimal -import enum -import functools -import inspect -import json -import types -import typing -import uuid -from collections.abc import Callable -from copy import deepcopy -from typing import ( - Annotated, - Any, - ClassVar, - Literal, - TypeVar, - Union, - overload, -) - -import jsonschema - -from . import docstring -from .auxiliary import ( - Alias, - IntegerRange, - MaxLength, - MinLength, - Precision, - get_auxiliary_format, -) -from .core import JsonArray, JsonObject, JsonType, Schema, StrictJsonType -from .inspection import ( - TypeLike, - enum_value_types, - get_annotation, - get_class_properties, - is_type_enum, - is_type_like, - is_type_optional, - unwrap_optional_type, -) -from .name import python_type_to_name -from .serialization import object_to_json - -# determines the maximum number of distinct enum members up to which a Dict[EnumType, Any] is converted into a JSON -# schema with explicitly listed properties (rather than employing a pattern constraint on property names) -OBJECT_ENUM_EXPANSION_LIMIT = 4 - - -T = TypeVar("T") - - -def get_class_docstrings(data_type: type) -> tuple[str | None, str | None]: - docstr = docstring.parse_type(data_type) - - # check if class has a doc-string other than the auto-generated string assigned by @dataclass - if docstring.has_default_docstring(data_type): - return None, None - - return docstr.short_description, docstr.long_description - - -def get_class_property_docstrings( - data_type: type, transform_fun: Callable[[type, str, str], str] | None = None -) -> dict[str, str]: - """ - Extracts the documentation strings associated with the properties of a composite type. - - :param data_type: The object whose properties to iterate over. - :param transform_fun: An optional function that maps a property documentation string to a custom tailored string. - :returns: A dictionary mapping property names to descriptions. - """ - - result: dict[str, str] = {} - # Only try to get MRO if data_type is actually a class - # Special types like Literal, Union, etc. don't have MRO - if not inspect.isclass(data_type): - return result - - for base in inspect.getmro(data_type): - docstr = docstring.parse_type(base) - for param in docstr.params.values(): - if param.name in result: - continue - - if transform_fun: - description = transform_fun(data_type, param.name, param.description) - else: - description = param.description - - result[param.name] = description - return result - - -def docstring_to_schema(data_type: type) -> Schema: - short_description, long_description = get_class_docstrings(data_type) - schema: Schema = { - "title": python_type_to_name(data_type, force=True), - } - - description = "\n".join(filter(None, [short_description, long_description])) - if description: - schema["description"] = description - return schema - - -def id_from_ref(data_type: typing.ForwardRef | str | type) -> str: - "Extracts the name of a possibly forward-referenced type." - - if isinstance(data_type, typing.ForwardRef): - forward_type: typing.ForwardRef = data_type - return forward_type.__forward_arg__ - elif isinstance(data_type, str): - return data_type - else: - return data_type.__name__ - - -def type_from_ref(data_type: typing.ForwardRef | str | type) -> tuple[str, type]: - "Creates a type from a forward reference." - - if isinstance(data_type, typing.ForwardRef): - forward_type: typing.ForwardRef = data_type - true_type = eval(forward_type.__forward_code__) - return forward_type.__forward_arg__, true_type - elif isinstance(data_type, str): - true_type = eval(data_type) - return data_type, true_type - else: - return data_type.__name__, data_type - - -@dataclasses.dataclass -class TypeCatalogEntry: - schema: Schema | None - identifier: str - examples: JsonType | None = None - - -class TypeCatalog: - "Maintains an association of well-known Python types to their JSON schema." - - _by_type: dict[TypeLike, TypeCatalogEntry] - _by_name: dict[str, TypeCatalogEntry] - - def __init__(self) -> None: - self._by_type = {} - self._by_name = {} - - def __contains__(self, data_type: TypeLike) -> bool: - if isinstance(data_type, typing.ForwardRef): - fwd: typing.ForwardRef = data_type - name = fwd.__forward_arg__ - return name in self._by_name - else: - return data_type in self._by_type - - def add( - self, - data_type: TypeLike, - schema: Schema | None, - identifier: str, - examples: list[JsonType] | None = None, - ) -> None: - if isinstance(data_type, typing.ForwardRef): - raise TypeError("forward references cannot be used to register a type") - - if data_type in self._by_type: - raise ValueError(f"type {data_type} is already registered in the catalog") - - entry = TypeCatalogEntry(schema, identifier, examples) - self._by_type[data_type] = entry - self._by_name[identifier] = entry - - def get(self, data_type: TypeLike) -> TypeCatalogEntry: - if isinstance(data_type, typing.ForwardRef): - fwd: typing.ForwardRef = data_type - name = fwd.__forward_arg__ - return self._by_name[name] - else: - return self._by_type[data_type] - - -@dataclasses.dataclass -class SchemaOptions: - definitions_path: str = "#/definitions/" - use_descriptions: bool = True - use_examples: bool = True - property_description_fun: Callable[[type, str, str], str] | None = None - - -class JsonSchemaGenerator: - "Creates a JSON schema with user-defined type definitions." - - type_catalog: ClassVar[TypeCatalog] = TypeCatalog() - types_used: dict[str, TypeLike] - options: SchemaOptions - - def __init__(self, options: SchemaOptions | None = None): - if options is None: - self.options = SchemaOptions() - else: - self.options = options - self.types_used = {} - - @functools.singledispatchmethod - def _metadata_to_schema(self, arg: object) -> Schema: - # unrecognized annotation - return {} - - @_metadata_to_schema.register - def _(self, arg: IntegerRange) -> Schema: - return {"minimum": arg.minimum, "maximum": arg.maximum} - - @_metadata_to_schema.register - def _(self, arg: Precision) -> Schema: - return { - "multipleOf": 10 ** (-arg.decimal_digits), - "exclusiveMinimum": -(10**arg.integer_digits), - "exclusiveMaximum": (10**arg.integer_digits), - } - - @_metadata_to_schema.register - def _(self, arg: MinLength) -> Schema: - return {"minLength": arg.value} - - @_metadata_to_schema.register - def _(self, arg: MaxLength) -> Schema: - return {"maxLength": arg.value} - - def _with_metadata(self, type_schema: Schema, metadata: tuple[Any, ...] | None) -> Schema: - if metadata: - for m in metadata: - type_schema.update(self._metadata_to_schema(m)) - return type_schema - - def _simple_type_to_schema(self, typ: TypeLike, json_schema_extra: dict | None = None) -> Schema | None: - """ - Returns the JSON schema associated with a simple, unrestricted type. - - :returns: The schema for a simple type, or `None`. - """ - - if typ is type(None): - return {"type": "null"} - elif typ is bool: - return {"type": "boolean"} - elif typ is int: - return {"type": "integer"} - elif typ is float: - return {"type": "number"} - elif typ is str: - if json_schema_extra and "contentEncoding" in json_schema_extra: - return { - "type": "string", - "contentEncoding": json_schema_extra["contentEncoding"], - } - return {"type": "string"} - elif typ is bytes: - return {"type": "string", "contentEncoding": "base64"} - elif typ is datetime.datetime: - # 2018-11-13T20:20:39+00:00 - return { - "type": "string", - "format": "date-time", - } - elif typ is datetime.date: - # 2018-11-13 - return {"type": "string", "format": "date"} - elif typ is datetime.time: - # 20:20:39+00:00 - return {"type": "string", "format": "time"} - elif typ is decimal.Decimal: - return {"type": "number"} - elif typ is uuid.UUID: - # f81d4fae-7dec-11d0-a765-00a0c91e6bf6 - return {"type": "string", "format": "uuid"} - elif typ is Any: - return { - "oneOf": [ - {"type": "null"}, - {"type": "boolean"}, - {"type": "number"}, - {"type": "string"}, - {"type": "array"}, - {"type": "object"}, - ] - } - elif typ is JsonObject: - return {"type": "object"} - elif typ is JsonArray: - return {"type": "array"} - else: - # not a simple type - return None - - def type_to_schema( - self, - data_type: TypeLike, - force_expand: bool = False, - json_schema_extra: dict | None = None, - ) -> Schema: - common_info = {} - if json_schema_extra and "deprecated" in json_schema_extra: - common_info["deprecated"] = json_schema_extra["deprecated"] - return self._type_to_schema(data_type, force_expand, json_schema_extra) | common_info - - def _type_to_schema( - self, - data_type: TypeLike, - force_expand: bool = False, - json_schema_extra: dict | None = None, - ) -> Schema: - """ - Returns the JSON schema associated with a type. - - :param data_type: The Python type whose JSON schema to return. - :param force_expand: Forces a JSON schema to be returned even if the type is registered in the catalog of known types. - :returns: The JSON schema associated with the type. - """ - - # short-circuit for common simple types - schema = self._simple_type_to_schema(data_type, json_schema_extra) - if schema is not None: - return schema - - # types registered in the type catalog of well-known types - type_catalog = JsonSchemaGenerator.type_catalog - if not force_expand and data_type in type_catalog: - # user-defined type - identifier = type_catalog.get(data_type).identifier - self.types_used.setdefault(identifier, data_type) - return {"$ref": f"{self.options.definitions_path}{identifier}"} - - # unwrap annotated types - metadata = getattr(data_type, "__metadata__", None) - if metadata is not None: - # type is Annotated[T, ...] - typ = typing.get_args(data_type)[0] - schema = self._simple_type_to_schema(typ) - if schema is not None: - # recognize well-known auxiliary types - fmt = get_auxiliary_format(data_type) - if fmt is not None: - schema.update({"format": fmt}) - return schema - else: - return self._with_metadata(schema, metadata) - - else: - # type is a regular type - typ = data_type - - if isinstance(typ, typing.ForwardRef) or isinstance(typ, str): - if force_expand: - identifier, true_type = type_from_ref(typ) - return self.type_to_schema(true_type, force_expand=True) - else: - try: - identifier, true_type = type_from_ref(typ) - self.types_used[identifier] = true_type - except NameError: - identifier = id_from_ref(typ) - - return {"$ref": f"{self.options.definitions_path}{identifier}"} - - if is_type_enum(typ): - enum_type: type[enum.Enum] = typ - value_types = enum_value_types(enum_type) - if len(value_types) != 1: - raise ValueError( - f"enumerations must have a consistent member value type but several types found: {value_types}" - ) - enum_value_type = value_types.pop() - - enum_schema: Schema - if enum_value_type is bool or enum_value_type is int or enum_value_type is float or enum_value_type is str: - if enum_value_type is bool: - enum_schema_type = "boolean" - elif enum_value_type is int: - enum_schema_type = "integer" - elif enum_value_type is float: - enum_schema_type = "number" - elif enum_value_type is str: - enum_schema_type = "string" - - enum_schema = { - "type": enum_schema_type, - "enum": [object_to_json(e.value) for e in enum_type], - } - if self.options.use_descriptions: - enum_schema.update(docstring_to_schema(typ)) - return enum_schema - else: - enum_schema = self.type_to_schema(enum_value_type) - if self.options.use_descriptions: - enum_schema.update(docstring_to_schema(typ)) - return enum_schema - - origin_type = typing.get_origin(typ) - if origin_type is list: - (list_type,) = typing.get_args(typ) # unpack single tuple element - return {"type": "array", "items": self.type_to_schema(list_type)} - elif origin_type is collections.abc.Sequence: - # Treat Sequence the same as list for JSON schema (both are arrays) - (sequence_type,) = typing.get_args(typ) # unpack single tuple element - return {"type": "array", "items": self.type_to_schema(sequence_type)} - elif origin_type is dict: - key_type, value_type = typing.get_args(typ) - if not (key_type is str or key_type is int or is_type_enum(key_type)): - raise ValueError("`dict` with key type not coercible to `str` is not supported") - - dict_schema: Schema - value_schema = self.type_to_schema(value_type) - if is_type_enum(key_type): - enum_values = [str(e.value) for e in key_type] - if len(enum_values) > OBJECT_ENUM_EXPANSION_LIMIT: - dict_schema = { - "propertyNames": {"pattern": "^(" + "|".join(enum_values) + ")$"}, - "additionalProperties": value_schema, - } - else: - dict_schema = { - "properties": dict.fromkeys(enum_values, value_schema), - "additionalProperties": False, - } - else: - dict_schema = {"additionalProperties": value_schema} - - schema = {"type": "object"} - schema.update(dict_schema) - return schema - elif origin_type is set: - (set_type,) = typing.get_args(typ) # unpack single tuple element - return { - "type": "array", - "items": self.type_to_schema(set_type), - "uniqueItems": True, - } - elif origin_type is tuple: - args = typing.get_args(typ) - return { - "type": "array", - "minItems": len(args), - "maxItems": len(args), - "prefixItems": [self.type_to_schema(member_type) for member_type in args], - } - elif origin_type in (Union, types.UnionType): - discriminator = None - if typing.get_origin(data_type) is Annotated: - discriminator = typing.get_args(data_type)[1].discriminator - ret: Schema = {"oneOf": [self.type_to_schema(union_type) for union_type in typing.get_args(typ)]} - if discriminator: - # for each union type, we need to read the value of the discriminator - mapping: dict[str, JsonType] = {} - for union_type in typing.get_args(typ): - props = self.type_to_schema(union_type, force_expand=True)["properties"] - # mypy is confused here because JsonType allows multiple types, some of them - # not indexable (bool?) or not indexable by string (list?). The correctness of - # types depends on correct model definitions. Hence multiple ignore statements below. - discriminator_value = props[discriminator]["default"] # type: ignore[index,call-overload] - mapping[discriminator_value] = self.type_to_schema(union_type)["$ref"] # type: ignore[index] - - ret["discriminator"] = { - "propertyName": discriminator, - "mapping": mapping, - } - return ret - elif origin_type is Literal: - literal_args = typing.get_args(typ) - if len(literal_args) == 1: - (literal_value,) = literal_args - schema = self.type_to_schema(type(literal_value)) - schema["const"] = literal_value - return schema - elif len(literal_args) > 1: - first_value = literal_args[0] - schema = self.type_to_schema(type(first_value)) - schema["enum"] = list(literal_args) - return schema - else: - return {"enum": []} - elif origin_type is type: - (concrete_type,) = typing.get_args(typ) # unpack single tuple element - return {"const": self.type_to_schema(concrete_type, force_expand=True)} - elif origin_type is collections.abc.AsyncIterator: - (concrete_type,) = typing.get_args(typ) - return self.type_to_schema(concrete_type) - - # dictionary of class attributes - members = dict(inspect.getmembers(typ, lambda a: not inspect.isroutine(a))) - - property_docstrings = get_class_property_docstrings(typ, self.options.property_description_fun) - properties: dict[str, Schema] = {} - required: list[str] = [] - for property_name, property_type in get_class_properties(typ): - # rename property if an alias name is specified - alias = get_annotation(property_type, Alias) - if alias: - output_name = alias.name - else: - output_name = property_name - - defaults = {} - json_schema_extra = None - if "model_fields" in members: - f = members["model_fields"] - defaults = {k: finfo.default for k, finfo in f.items()} - if output_name in f: - finfo = f[output_name] - json_schema_extra = finfo.json_schema_extra or {} - if finfo.deprecated: - json_schema_extra["deprecated"] = True - - if is_type_optional(property_type): - optional_type: type = unwrap_optional_type(property_type) - property_def = self.type_to_schema(optional_type, json_schema_extra=json_schema_extra) - else: - property_def = self.type_to_schema(property_type, json_schema_extra=json_schema_extra) - required.append(output_name) - - # check if attribute has a default value initializer - if defaults.get(property_name) is not None: - def_value = defaults[property_name] - # check if value can be directly represented in JSON - if isinstance( - def_value, - ( - bool, - int, - float, - str, - enum.Enum, - datetime.datetime, - datetime.date, - datetime.time, - ), - ): - property_def["default"] = object_to_json(def_value) - - # add property docstring if available - property_doc = property_docstrings.get(property_name) - if property_doc: - # print(output_name, property_doc) - property_def.pop("title", None) - property_def["description"] = property_doc - - properties[output_name] = property_def - - schema = {"type": "object"} - if len(properties) > 0: - schema["properties"] = typing.cast(JsonType, properties) - schema["additionalProperties"] = False - if len(required) > 0: - schema["required"] = typing.cast(JsonType, required) - if self.options.use_descriptions: - schema.update(docstring_to_schema(typ)) - return schema - - def _type_to_schema_with_lookup(self, data_type: TypeLike) -> Schema: - """ - Returns the JSON schema associated with a type that may be registered in the catalog of known types. - - :param data_type: The type whose JSON schema we seek. - :returns: The JSON schema associated with the type. - """ - - entry = JsonSchemaGenerator.type_catalog.get(data_type) - if entry.schema is None: - type_schema = self.type_to_schema(data_type, force_expand=True) - else: - type_schema = deepcopy(entry.schema) - - # add descriptive text (if present) - if self.options.use_descriptions: - if isinstance(data_type, type) and not isinstance(data_type, typing.ForwardRef): - type_schema.update(docstring_to_schema(data_type)) - - # add example (if present) - if self.options.use_examples and entry.examples: - type_schema["examples"] = entry.examples - - return type_schema - - def classdef_to_schema(self, data_type: TypeLike, force_expand: bool = False) -> tuple[Schema, dict[str, Schema]]: - """ - Returns the JSON schema associated with a type and any nested types. - - :param data_type: The type whose JSON schema to return. - :param force_expand: True if a full JSON schema is to be returned even for well-known types; false if a schema - reference is to be used for well-known types. - :returns: A tuple of the JSON schema, and a mapping between nested type names and their corresponding schema. - """ - - if not is_type_like(data_type): - raise TypeError(f"expected a type-like object but got: {data_type}") - - self.types_used = {} - try: - type_schema = self.type_to_schema(data_type, force_expand=force_expand) - - types_defined: dict[str, Schema] = {} - while len(self.types_used) > len(types_defined): - # make a snapshot copy; original collection is going to be modified - types_undefined = { - sub_name: sub_type - for sub_name, sub_type in self.types_used.items() - if sub_name not in types_defined - } - - # expand undefined types, which may lead to additional types to be defined - for sub_name, sub_type in types_undefined.items(): - types_defined[sub_name] = self._type_to_schema_with_lookup(sub_type) - - type_definitions = dict(sorted(types_defined.items())) - finally: - self.types_used = {} - - return type_schema, type_definitions - - -class Validator(enum.Enum): - "Defines constants for JSON schema standards." - - Draft7 = jsonschema.Draft7Validator - Draft201909 = jsonschema.Draft201909Validator - Draft202012 = jsonschema.Draft202012Validator - Latest = jsonschema.Draft202012Validator - - -def classdef_to_schema( - data_type: TypeLike, - options: SchemaOptions | None = None, - validator: Validator = Validator.Latest, -) -> Schema: - """ - Returns the JSON schema corresponding to the given type. - - :param data_type: The Python type used to generate the JSON schema - :returns: A JSON object that you can serialize to a JSON string with json.dump or json.dumps - :raises TypeError: Indicates that the generated JSON schema does not validate against the desired meta-schema. - """ - - # short-circuit with an error message when passing invalid data - if not is_type_like(data_type): - raise TypeError(f"expected a type-like object but got: {data_type}") - - generator = JsonSchemaGenerator(options) - type_schema, type_definitions = generator.classdef_to_schema(data_type) - - class_schema: Schema = {} - if type_definitions: - class_schema["definitions"] = typing.cast(JsonType, type_definitions) - class_schema.update(type_schema) - - validator_id = validator.value.META_SCHEMA["$id"] - try: - validator.value.check_schema(class_schema) - except jsonschema.exceptions.SchemaError: - raise TypeError(f"schema does not validate against meta-schema <{validator_id}>") - - schema = {"$schema": validator_id} - schema.update(class_schema) - return schema - - -def validate_object(data_type: TypeLike, json_dict: JsonType) -> None: - """ - Validates if the JSON dictionary object conforms to the expected type. - - :param data_type: The type to match against. - :param json_dict: A JSON object obtained with `json.load` or `json.loads`. - :raises jsonschema.exceptions.ValidationError: Indicates that the JSON object cannot represent the type. - """ - - schema_dict = classdef_to_schema(data_type) - jsonschema.validate(json_dict, schema_dict, format_checker=jsonschema.FormatChecker()) - - -def print_schema(data_type: type) -> None: - """Pretty-prints the JSON schema corresponding to the type.""" - - s = classdef_to_schema(data_type) - print(json.dumps(s, indent=4)) - - -def get_schema_identifier(data_type: type) -> str | None: - if data_type in JsonSchemaGenerator.type_catalog: - return JsonSchemaGenerator.type_catalog.get(data_type).identifier - else: - return None - - -def register_schema( - data_type: T, - schema: Schema | None = None, - name: str | None = None, - examples: list[JsonType] | None = None, -) -> T: - """ - Associates a type with a JSON schema definition. - - :param data_type: The type to associate with a JSON schema. - :param schema: The schema to associate the type with. Derived automatically if omitted. - :param name: The name used for looking uo the type. Determined automatically if omitted. - :returns: The input type. - """ - - JsonSchemaGenerator.type_catalog.add( - data_type, - schema, - name if name is not None else python_type_to_name(data_type), - examples, - ) - return data_type - - -@overload -def json_schema_type(cls: type[T], /) -> type[T]: ... - - -@overload -def json_schema_type(cls: None, *, schema: Schema | None = None) -> Callable[[type[T]], type[T]]: ... - - -def json_schema_type( - cls: type[T] | None = None, - *, - schema: Schema | None = None, - examples: list[JsonType] | None = None, -) -> type[T] | Callable[[type[T]], type[T]]: - """Decorator to add user-defined schema definition to a class.""" - - def wrap(cls: type[T]) -> type[T]: - return register_schema(cls, schema, examples=examples) - - # see if decorator is used as @json_schema_type or @json_schema_type() - if cls is None: - # called with parentheses - return wrap - else: - # called as @json_schema_type without parentheses - return wrap(cls) - - -register_schema(JsonObject, name="JsonObject") -register_schema(JsonArray, name="JsonArray") - -register_schema( - JsonType, - name="JsonType", - examples=[ - { - "property1": None, - "property2": True, - "property3": 64, - "property4": "string", - "property5": ["item"], - "property6": {"key": "value"}, - } - ], -) -register_schema( - StrictJsonType, - name="StrictJsonType", - examples=[ - { - "property1": True, - "property2": 64, - "property3": "string", - "property4": ["item"], - "property5": {"key": "value"}, - } - ], -) diff --git a/src/llama_stack/strong_typing/serialization.py b/src/llama_stack/strong_typing/serialization.py deleted file mode 100644 index 3e34945ad..000000000 --- a/src/llama_stack/strong_typing/serialization.py +++ /dev/null @@ -1,97 +0,0 @@ -# Copyright (c) Meta Platforms, Inc. and affiliates. -# All rights reserved. -# -# This source code is licensed under the terms described in the LICENSE file in -# the root directory of this source tree. - -""" -Type-safe data interchange for Python data classes. - -:see: https://github.com/hunyadi/strong_typing -""" - -import inspect -import json -import sys -from types import ModuleType -from typing import Any, TextIO, TypeVar - -from .core import JsonType -from .deserializer import create_deserializer -from .inspection import TypeLike -from .serializer import create_serializer - -T = TypeVar("T") - - -def object_to_json(obj: Any) -> JsonType: - """ - Converts a Python object to a representation that can be exported to JSON. - - * Fundamental types (e.g. numeric types) are written as is. - * Date and time types are serialized in the ISO 8601 format with time zone. - * A byte array is written as a string with Base64 encoding. - * UUIDs are written as a UUID string. - * Enumerations are written as their value. - * Containers (e.g. `list`, `dict`, `set`, `tuple`) are exported recursively. - * Objects with properties (including data class types) are converted to a dictionaries of key-value pairs. - """ - - typ: type = type(obj) - generator = create_serializer(typ) - return generator.generate(obj) - - -def json_to_object(typ: TypeLike, data: JsonType, *, context: ModuleType | None = None) -> object: - """ - Creates an object from a representation that has been de-serialized from JSON. - - When de-serializing a JSON object into a Python object, the following transformations are applied: - - * Fundamental types are parsed as `bool`, `int`, `float` or `str`. - * Date and time types are parsed from the ISO 8601 format with time zone into the corresponding Python type - `datetime`, `date` or `time` - * A byte array is read from a string with Base64 encoding into a `bytes` instance. - * UUIDs are extracted from a UUID string into a `uuid.UUID` instance. - * Enumerations are instantiated with a lookup on enumeration value. - * Containers (e.g. `list`, `dict`, `set`, `tuple`) are parsed recursively. - * Complex objects with properties (including data class types) are populated from dictionaries of key-value pairs - using reflection (enumerating type annotations). - - :raises TypeError: A de-serializing engine cannot be constructed for the input type. - :raises JsonKeyError: Deserialization for a class or union type has failed because a matching member was not found. - :raises JsonTypeError: Deserialization for data has failed due to a type mismatch. - """ - - # use caller context for evaluating types if no context is supplied - if context is None: - this_frame = inspect.currentframe() - if this_frame is not None: - caller_frame = this_frame.f_back - del this_frame - - if caller_frame is not None: - try: - context = sys.modules[caller_frame.f_globals["__name__"]] - finally: - del caller_frame - - parser = create_deserializer(typ, context) - return parser.parse(data) - - -def json_dump_string(json_object: JsonType) -> str: - "Dump an object as a JSON string with a compact representation." - - return json.dumps(json_object, ensure_ascii=False, check_circular=False, separators=(",", ":")) - - -def json_dump(json_object: JsonType, file: TextIO) -> None: - json.dump( - json_object, - file, - ensure_ascii=False, - check_circular=False, - separators=(",", ":"), - ) - file.write("\n") diff --git a/src/llama_stack/strong_typing/serializer.py b/src/llama_stack/strong_typing/serializer.py deleted file mode 100644 index 4a12a1f4b..000000000 --- a/src/llama_stack/strong_typing/serializer.py +++ /dev/null @@ -1,494 +0,0 @@ -# Copyright (c) Meta Platforms, Inc. and affiliates. -# All rights reserved. -# -# This source code is licensed under the terms described in the LICENSE file in -# the root directory of this source tree. - -""" -Type-safe data interchange for Python data classes. - -:see: https://github.com/hunyadi/strong_typing -""" - -import abc -import base64 -import datetime -import enum -import functools -import inspect -import ipaddress -import sys -import typing -import uuid -from collections.abc import Callable -from types import FunctionType, MethodType, ModuleType -from typing import ( - Any, - Generic, - Literal, - NamedTuple, - TypeVar, - Union, -) - -from .core import JsonType -from .exception import JsonTypeError, JsonValueError -from .inspection import ( - TypeLike, - enum_value_types, - evaluate_type, - get_class_properties, - get_resolved_hints, - is_dataclass_type, - is_named_tuple_type, - is_reserved_property, - is_type_annotated, - is_type_enum, - unwrap_annotated_type, -) -from .mapping import python_field_to_json_property - -T = TypeVar("T") - - -class Serializer(abc.ABC, Generic[T]): - @abc.abstractmethod - def generate(self, data: T) -> JsonType: ... - - -class NoneSerializer(Serializer[None]): - def generate(self, data: None) -> None: - # can be directly represented in JSON - return None - - -class BoolSerializer(Serializer[bool]): - def generate(self, data: bool) -> bool: - # can be directly represented in JSON - return data - - -class IntSerializer(Serializer[int]): - def generate(self, data: int) -> int: - # can be directly represented in JSON - return data - - -class FloatSerializer(Serializer[float]): - def generate(self, data: float) -> float: - # can be directly represented in JSON - return data - - -class StringSerializer(Serializer[str]): - def generate(self, data: str) -> str: - # can be directly represented in JSON - return data - - -class BytesSerializer(Serializer[bytes]): - def generate(self, data: bytes) -> str: - return base64.b64encode(data).decode("ascii") - - -class DateTimeSerializer(Serializer[datetime.datetime]): - def generate(self, obj: datetime.datetime) -> str: - if obj.tzinfo is None: - raise JsonValueError(f"timestamp lacks explicit time zone designator: {obj}") - fmt = obj.isoformat() - if fmt.endswith("+00:00"): - fmt = f"{fmt[:-6]}Z" # Python's isoformat() does not support military time zones like "Zulu" for UTC - return fmt - - -class DateSerializer(Serializer[datetime.date]): - def generate(self, obj: datetime.date) -> str: - return obj.isoformat() - - -class TimeSerializer(Serializer[datetime.time]): - def generate(self, obj: datetime.time) -> str: - return obj.isoformat() - - -class UUIDSerializer(Serializer[uuid.UUID]): - def generate(self, obj: uuid.UUID) -> str: - return str(obj) - - -class IPv4Serializer(Serializer[ipaddress.IPv4Address]): - def generate(self, obj: ipaddress.IPv4Address) -> str: - return str(obj) - - -class IPv6Serializer(Serializer[ipaddress.IPv6Address]): - def generate(self, obj: ipaddress.IPv6Address) -> str: - return str(obj) - - -class EnumSerializer(Serializer[enum.Enum]): - def generate(self, obj: enum.Enum) -> int | str: - value = obj.value - if isinstance(value, int): - return value - return str(value) - - -class UntypedListSerializer(Serializer[list]): - def generate(self, obj: list) -> list[JsonType]: - return [object_to_json(item) for item in obj] - - -class UntypedDictSerializer(Serializer[dict]): - def generate(self, obj: dict) -> dict[str, JsonType]: - if obj and isinstance(next(iter(obj.keys())), enum.Enum): - iterator = ((key.value, object_to_json(value)) for key, value in obj.items()) - else: - iterator = ((str(key), object_to_json(value)) for key, value in obj.items()) - return dict(iterator) - - -class UntypedSetSerializer(Serializer[set]): - def generate(self, obj: set) -> list[JsonType]: - return [object_to_json(item) for item in obj] - - -class UntypedTupleSerializer(Serializer[tuple]): - def generate(self, obj: tuple) -> list[JsonType]: - return [object_to_json(item) for item in obj] - - -class TypedCollectionSerializer(Serializer, Generic[T]): - generator: Serializer[T] - - def __init__(self, item_type: type[T], context: ModuleType | None) -> None: - self.generator = _get_serializer(item_type, context) - - -class TypedListSerializer(TypedCollectionSerializer[T]): - def generate(self, obj: list[T]) -> list[JsonType]: - return [self.generator.generate(item) for item in obj] - - -class TypedStringDictSerializer(TypedCollectionSerializer[T]): - def __init__(self, value_type: type[T], context: ModuleType | None) -> None: - super().__init__(value_type, context) - - def generate(self, obj: dict[str, T]) -> dict[str, JsonType]: - return {key: self.generator.generate(value) for key, value in obj.items()} - - -class TypedEnumDictSerializer(TypedCollectionSerializer[T]): - def __init__( - self, - key_type: type[enum.Enum], - value_type: type[T], - context: ModuleType | None, - ) -> None: - super().__init__(value_type, context) - - value_types = enum_value_types(key_type) - if len(value_types) != 1: - raise JsonTypeError( - f"invalid key type, enumerations must have a consistent member value type but several types found: {value_types}" - ) - - value_type = value_types.pop() - if value_type is not str: - raise JsonTypeError("invalid enumeration key type, expected `enum.Enum` with string values") - - def generate(self, obj: dict[enum.Enum, T]) -> dict[str, JsonType]: - return {key.value: self.generator.generate(value) for key, value in obj.items()} - - -class TypedSetSerializer(TypedCollectionSerializer[T]): - def generate(self, obj: set[T]) -> JsonType: - return [self.generator.generate(item) for item in obj] - - -class TypedTupleSerializer(Serializer[tuple]): - item_generators: tuple[Serializer, ...] - - def __init__(self, item_types: tuple[type, ...], context: ModuleType | None) -> None: - self.item_generators = tuple(_get_serializer(item_type, context) for item_type in item_types) - - def generate(self, obj: tuple) -> list[JsonType]: - return [item_generator.generate(item) for item_generator, item in zip(self.item_generators, obj, strict=False)] - - -class CustomSerializer(Serializer): - converter: Callable[[object], JsonType] - - def __init__(self, converter: Callable[[object], JsonType]) -> None: - self.converter = converter - - def generate(self, obj: object) -> JsonType: - return self.converter(obj) - - -class FieldSerializer(Generic[T]): - """ - Serializes a Python object field into a JSON property. - - :param field_name: The name of the field in a Python class to read data from. - :param property_name: The name of the JSON property to write to a JSON `object`. - :param generator: A compatible serializer that can handle the field's type. - """ - - field_name: str - property_name: str - generator: Serializer - - def __init__(self, field_name: str, property_name: str, generator: Serializer[T]) -> None: - self.field_name = field_name - self.property_name = property_name - self.generator = generator - - def generate_field(self, obj: object, object_dict: dict[str, JsonType]) -> None: - value = getattr(obj, self.field_name) - if value is not None: - object_dict[self.property_name] = self.generator.generate(value) - - -class TypedClassSerializer(Serializer[T]): - property_generators: list[FieldSerializer] - - def __init__(self, class_type: type[T], context: ModuleType | None) -> None: - self.property_generators = [ - FieldSerializer( - field_name, - python_field_to_json_property(field_name, field_type), - _get_serializer(field_type, context), - ) - for field_name, field_type in get_class_properties(class_type) - ] - - def generate(self, obj: T) -> dict[str, JsonType]: - object_dict: dict[str, JsonType] = {} - for property_generator in self.property_generators: - property_generator.generate_field(obj, object_dict) - - return object_dict - - -class TypedNamedTupleSerializer(TypedClassSerializer[NamedTuple]): - def __init__(self, class_type: type[NamedTuple], context: ModuleType | None) -> None: - super().__init__(class_type, context) - - -class DataclassSerializer(TypedClassSerializer[T]): - def __init__(self, class_type: type[T], context: ModuleType | None) -> None: - super().__init__(class_type, context) - - -class UnionSerializer(Serializer): - def generate(self, obj: Any) -> JsonType: - return object_to_json(obj) - - -class LiteralSerializer(Serializer): - generator: Serializer - - def __init__(self, values: tuple[Any, ...], context: ModuleType | None) -> None: - literal_type_tuple = tuple(type(value) for value in values) - literal_type_set = set(literal_type_tuple) - if len(literal_type_set) != 1: - value_names = ", ".join(repr(value) for value in values) - raise TypeError( - f"type `Literal[{value_names}]` expects consistent literal value types but got: {literal_type_tuple}" - ) - - literal_type = literal_type_set.pop() - self.generator = _get_serializer(literal_type, context) - - def generate(self, obj: Any) -> JsonType: - return self.generator.generate(obj) - - -class UntypedNamedTupleSerializer(Serializer): - fields: dict[str, str] - - def __init__(self, class_type: type[NamedTuple]) -> None: - # named tuples are also instances of tuple - self.fields = {} - field_names: tuple[str, ...] = class_type._fields - for field_name in field_names: - self.fields[field_name] = python_field_to_json_property(field_name) - - def generate(self, obj: NamedTuple) -> JsonType: - object_dict = {} - for field_name, property_name in self.fields.items(): - value = getattr(obj, field_name) - object_dict[property_name] = object_to_json(value) - - return object_dict - - -class UntypedClassSerializer(Serializer): - def generate(self, obj: object) -> JsonType: - # iterate over object attributes to get a standard representation - object_dict = {} - for name in dir(obj): - if is_reserved_property(name): - continue - - value = getattr(obj, name) - if value is None: - continue - - # filter instance methods - if inspect.ismethod(value): - continue - - object_dict[python_field_to_json_property(name)] = object_to_json(value) - - return object_dict - - -def create_serializer(typ: TypeLike, context: ModuleType | None = None) -> Serializer: - """ - Creates a serializer engine to produce an object that can be directly converted into a JSON string. - - When serializing a Python object into a JSON object, the following transformations are applied: - - * Fundamental types (`bool`, `int`, `float` or `str`) are returned as-is. - * Date and time types (`datetime`, `date` or `time`) produce an ISO 8601 format string with time zone - (ending with `Z` for UTC). - * Byte arrays (`bytes`) are written as a string with Base64 encoding. - * UUIDs (`uuid.UUID`) are written as a UUID string as per RFC 4122. - * Enumerations yield their enumeration value. - * Containers (e.g. `list`, `dict`, `set`, `tuple`) are processed recursively. - * Complex objects with properties (including data class types) generate dictionaries of key-value pairs. - - :raises TypeError: A serializer engine cannot be constructed for the input type. - """ - - if context is None: - if isinstance(typ, type): - context = sys.modules[typ.__module__] - - return _get_serializer(typ, context) - - -def _get_serializer(typ: TypeLike, context: ModuleType | None) -> Serializer: - if isinstance(typ, (str, typing.ForwardRef)): - if context is None: - raise TypeError(f"missing context for evaluating type: {typ}") - - typ = evaluate_type(typ, context) - - if isinstance(typ, type): - return _fetch_serializer(typ) - else: - # special forms are not always hashable - return _create_serializer(typ, context) - - -@functools.cache -def _fetch_serializer(typ: type) -> Serializer: - context = sys.modules[typ.__module__] - return _create_serializer(typ, context) - - -def _create_serializer(typ: TypeLike, context: ModuleType | None) -> Serializer: - # check for well-known types - if typ is type(None): - return NoneSerializer() - elif typ is bool: - return BoolSerializer() - elif typ is int: - return IntSerializer() - elif typ is float: - return FloatSerializer() - elif typ is str: - return StringSerializer() - elif typ is bytes: - return BytesSerializer() - elif typ is datetime.datetime: - return DateTimeSerializer() - elif typ is datetime.date: - return DateSerializer() - elif typ is datetime.time: - return TimeSerializer() - elif typ is uuid.UUID: - return UUIDSerializer() - elif typ is ipaddress.IPv4Address: - return IPv4Serializer() - elif typ is ipaddress.IPv6Address: - return IPv6Serializer() - - # dynamically-typed collection types - if typ is list: - return UntypedListSerializer() - elif typ is dict: - return UntypedDictSerializer() - elif typ is set: - return UntypedSetSerializer() - elif typ is tuple: - return UntypedTupleSerializer() - - # generic types (e.g. list, dict, set, etc.) - origin_type = typing.get_origin(typ) - if origin_type is list: - (list_item_type,) = typing.get_args(typ) # unpack single tuple element - return TypedListSerializer(list_item_type, context) - elif origin_type is dict: - key_type, value_type = typing.get_args(typ) - if key_type is str: - return TypedStringDictSerializer(value_type, context) - elif issubclass(key_type, enum.Enum): - return TypedEnumDictSerializer(key_type, value_type, context) - elif origin_type is set: - (set_member_type,) = typing.get_args(typ) # unpack single tuple element - return TypedSetSerializer(set_member_type, context) - elif origin_type is tuple: - return TypedTupleSerializer(typing.get_args(typ), context) - elif origin_type is Union: - return UnionSerializer() - elif origin_type is Literal: - return LiteralSerializer(typing.get_args(typ), context) - - if is_type_annotated(typ): - return create_serializer(unwrap_annotated_type(typ)) - - # check if object has custom serialization method - convert_func = getattr(typ, "to_json", None) - if callable(convert_func): - return CustomSerializer(convert_func) - - if is_type_enum(typ): - return EnumSerializer() - if is_dataclass_type(typ): - return DataclassSerializer(typ, context) - if is_named_tuple_type(typ): - if getattr(typ, "__annotations__", None): - return TypedNamedTupleSerializer(typ, context) - else: - return UntypedNamedTupleSerializer(typ) - - # fail early if caller passes an object with an exotic type - if not isinstance(typ, type) or typ is FunctionType or typ is MethodType or typ is type or typ is ModuleType: - raise TypeError(f"object of type {typ} cannot be represented in JSON") - - if get_resolved_hints(typ): - return TypedClassSerializer(typ, context) - else: - return UntypedClassSerializer() - - -def object_to_json(obj: Any) -> JsonType: - """ - Converts a Python object to a representation that can be exported to JSON. - - * Fundamental types (e.g. numeric types) are written as is. - * Date and time types are serialized in the ISO 8601 format with time zone. - * A byte array is written as a string with Base64 encoding. - * UUIDs are written as a UUID string. - * Enumerations are written as their value. - * Containers (e.g. `list`, `dict`, `set`, `tuple`) are exported recursively. - * Objects with properties (including data class types) are converted to a dictionaries of key-value pairs. - """ - - typ: type = type(obj) - generator = create_serializer(typ) - return generator.generate(obj) diff --git a/src/llama_stack/strong_typing/slots.py b/src/llama_stack/strong_typing/slots.py deleted file mode 100644 index 772834140..000000000 --- a/src/llama_stack/strong_typing/slots.py +++ /dev/null @@ -1,27 +0,0 @@ -# Copyright (c) Meta Platforms, Inc. and affiliates. -# All rights reserved. -# -# This source code is licensed under the terms described in the LICENSE file in -# the root directory of this source tree. - -from typing import Any, TypeVar - -T = TypeVar("T") - - -class SlotsMeta(type): - def __new__(cls: type[T], name: str, bases: tuple[type, ...], ns: dict[str, Any]) -> T: - # caller may have already provided slots, in which case just retain them and keep going - slots: tuple[str, ...] = ns.get("__slots__", ()) - - # add fields with type annotations to slots - annotations: dict[str, Any] = ns.get("__annotations__", {}) - members = tuple(member for member in annotations.keys() if member not in slots) - - # assign slots - ns["__slots__"] = slots + tuple(members) - return super().__new__(cls, name, bases, ns) # type: ignore - - -class Slots(metaclass=SlotsMeta): - pass diff --git a/src/llama_stack/strong_typing/topological.py b/src/llama_stack/strong_typing/topological.py deleted file mode 100644 index 9502a5887..000000000 --- a/src/llama_stack/strong_typing/topological.py +++ /dev/null @@ -1,90 +0,0 @@ -# Copyright (c) Meta Platforms, Inc. and affiliates. -# All rights reserved. -# -# This source code is licensed under the terms described in the LICENSE file in -# the root directory of this source tree. - -""" -Type-safe data interchange for Python data classes. - -:see: https://github.com/hunyadi/strong_typing -""" - -from collections.abc import Callable, Iterable -from typing import TypeVar - -from .inspection import TypeCollector - -T = TypeVar("T") - - -def topological_sort(graph: dict[T, set[T]]) -> list[T]: - """ - Performs a topological sort of a graph. - - Nodes with no outgoing edges are first. Nodes with no incoming edges are last. - The topological ordering is not unique. - - :param graph: A dictionary of mappings from nodes to adjacent nodes. Keys and set members must be hashable. - :returns: The list of nodes in topological order. - """ - - # empty list that will contain the sorted nodes (in reverse order) - ordered: list[T] = [] - - seen: dict[T, bool] = {} - - def _visit(n: T) -> None: - status = seen.get(n) - if status is not None: - if status: # node has a permanent mark - return - else: # node has a temporary mark - raise RuntimeError(f"cycle detected in graph for node {n}") - - seen[n] = False # apply temporary mark - for m in graph[n]: # visit all adjacent nodes - if m != n: # ignore self-referencing nodes - _visit(m) - - seen[n] = True # apply permanent mark - ordered.append(n) - - for n in graph.keys(): - _visit(n) - - return ordered - - -def type_topological_sort( - types: Iterable[type], - dependency_fn: Callable[[type], Iterable[type]] | None = None, -) -> list[type]: - """ - Performs a topological sort of a list of types. - - Types that don't depend on other types (i.e. fundamental types) are first. Types on which no other types depend - are last. The topological ordering is not unique. - - :param types: A list of types (simple or composite). - :param dependency_fn: Returns a list of additional dependencies for a class (e.g. classes referenced by a foreign key). - :returns: The list of types in topological order. - """ - - if not all(isinstance(typ, type) for typ in types): - raise TypeError("expected a list of types") - - collector = TypeCollector() - collector.traverse_all(types) - graph = collector.graph - - if dependency_fn: - new_types: set[type] = set() - for source_type, references in graph.items(): - dependent_types = dependency_fn(source_type) - references.update(dependent_types) - new_types.update(dependent_types) - for new_type in new_types: - graph[new_type] = set() - - return topological_sort(graph) diff --git a/uv.lock b/uv.lock index de1c8879c..32e2e4219 100644 --- a/uv.lock +++ b/uv.lock @@ -1955,6 +1955,7 @@ dependencies = [ { name = "pyjwt", extra = ["crypto"] }, { name = "python-dotenv" }, { name = "python-multipart" }, + { name = "pyyaml" }, { name = "rich" }, { name = "sqlalchemy", extra = ["asyncio"] }, { name = "starlette" }, @@ -2108,6 +2109,7 @@ requires-dist = [ { name = "pyjwt", extras = ["crypto"], specifier = ">=2.10.0" }, { name = "python-dotenv" }, { name = "python-multipart", specifier = ">=0.0.20" }, + { name = "pyyaml", specifier = ">=6.0.2" }, { name = "rich" }, { name = "sqlalchemy", extras = ["asyncio"], specifier = ">=2.0.41" }, { name = "starlette" }, @@ -4488,40 +4490,46 @@ wheels = [ [[package]] name = "ruamel-yaml" -version = "0.18.14" +version = "0.18.16" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ruamel-yaml-clib", marker = "python_full_version < '3.14' and platform_python_implementation == 'CPython'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/39/87/6da0df742a4684263261c253f00edd5829e6aca970fff69e75028cccc547/ruamel.yaml-0.18.14.tar.gz", hash = "sha256:7227b76aaec364df15936730efbf7d72b30c0b79b1d578bbb8e3dcb2d81f52b7", size = 145511, upload-time = "2025-06-09T08:51:09.828Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9f/c7/ee630b29e04a672ecfc9b63227c87fd7a37eb67c1bf30fe95376437f897c/ruamel.yaml-0.18.16.tar.gz", hash = "sha256:a6e587512f3c998b2225d68aa1f35111c29fad14aed561a26e73fab729ec5e5a", size = 147269, upload-time = "2025-10-22T17:54:02.346Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/af/6d/6fe4805235e193aad4aaf979160dd1f3c487c57d48b810c816e6e842171b/ruamel.yaml-0.18.14-py3-none-any.whl", hash = "sha256:710ff198bb53da66718c7db27eec4fbcc9aa6ca7204e4c1df2f282b6fe5eb6b2", size = 118570, upload-time = "2025-06-09T08:51:06.348Z" }, + { url = "https://files.pythonhosted.org/packages/0f/73/bb1bc2529f852e7bf64a2dec885e89ff9f5cc7bbf6c9340eed30ff2c69c5/ruamel.yaml-0.18.16-py3-none-any.whl", hash = "sha256:048f26d64245bae57a4f9ef6feb5b552a386830ef7a826f235ffb804c59efbba", size = 119858, upload-time = "2025-10-22T17:53:59.012Z" }, ] [[package]] name = "ruamel-yaml-clib" -version = "0.2.12" +version = "0.2.14" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/20/84/80203abff8ea4993a87d823a5f632e4d92831ef75d404c9fc78d0176d2b5/ruamel.yaml.clib-0.2.12.tar.gz", hash = "sha256:6c8fbb13ec503f99a91901ab46e0b07ae7941cd527393187039aec586fdfd36f", size = 225315, upload-time = "2024-10-20T10:10:56.22Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/e9/39ec4d4b3f91188fad1842748f67d4e749c77c37e353c4e545052ee8e893/ruamel.yaml.clib-0.2.14.tar.gz", hash = "sha256:803f5044b13602d58ea378576dd75aa759f52116a0232608e8fdada4da33752e", size = 225394, upload-time = "2025-09-22T19:51:23.753Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/48/41/e7a405afbdc26af961678474a55373e1b323605a4f5e2ddd4a80ea80f628/ruamel.yaml.clib-0.2.12-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:20b0f8dc160ba83b6dcc0e256846e1a02d044e13f7ea74a3d1d56ede4e48c632", size = 133433, upload-time = "2024-10-20T10:12:55.657Z" }, - { url = "https://files.pythonhosted.org/packages/ec/b0/b850385604334c2ce90e3ee1013bd911aedf058a934905863a6ea95e9eb4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:943f32bc9dedb3abff9879edc134901df92cfce2c3d5c9348f172f62eb2d771d", size = 647362, upload-time = "2024-10-20T10:12:57.155Z" }, - { url = "https://files.pythonhosted.org/packages/44/d0/3f68a86e006448fb6c005aee66565b9eb89014a70c491d70c08de597f8e4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95c3829bb364fdb8e0332c9931ecf57d9be3519241323c5274bd82f709cebc0c", size = 754118, upload-time = "2024-10-20T10:12:58.501Z" }, - { url = "https://files.pythonhosted.org/packages/52/a9/d39f3c5ada0a3bb2870d7db41901125dbe2434fa4f12ca8c5b83a42d7c53/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:749c16fcc4a2b09f28843cda5a193e0283e47454b63ec4b81eaa2242f50e4ccd", size = 706497, upload-time = "2024-10-20T10:13:00.211Z" }, - { url = "https://files.pythonhosted.org/packages/b0/fa/097e38135dadd9ac25aecf2a54be17ddf6e4c23e43d538492a90ab3d71c6/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bf165fef1f223beae7333275156ab2022cffe255dcc51c27f066b4370da81e31", size = 698042, upload-time = "2024-10-21T11:26:46.038Z" }, - { url = "https://files.pythonhosted.org/packages/ec/d5/a659ca6f503b9379b930f13bc6b130c9f176469b73b9834296822a83a132/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:32621c177bbf782ca5a18ba4d7af0f1082a3f6e517ac2a18b3974d4edf349680", size = 745831, upload-time = "2024-10-21T11:26:47.487Z" }, - { url = "https://files.pythonhosted.org/packages/db/5d/36619b61ffa2429eeaefaab4f3374666adf36ad8ac6330d855848d7d36fd/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b82a7c94a498853aa0b272fd5bc67f29008da798d4f93a2f9f289feb8426a58d", size = 715692, upload-time = "2024-12-11T19:58:17.252Z" }, - { url = "https://files.pythonhosted.org/packages/b1/82/85cb92f15a4231c89b95dfe08b09eb6adca929ef7df7e17ab59902b6f589/ruamel.yaml.clib-0.2.12-cp312-cp312-win32.whl", hash = "sha256:e8c4ebfcfd57177b572e2040777b8abc537cdef58a2120e830124946aa9b42c5", size = 98777, upload-time = "2024-10-20T10:13:01.395Z" }, - { url = "https://files.pythonhosted.org/packages/d7/8f/c3654f6f1ddb75daf3922c3d8fc6005b1ab56671ad56ffb874d908bfa668/ruamel.yaml.clib-0.2.12-cp312-cp312-win_amd64.whl", hash = "sha256:0467c5965282c62203273b838ae77c0d29d7638c8a4e3a1c8bdd3602c10904e4", size = 115523, upload-time = "2024-10-20T10:13:02.768Z" }, - { url = "https://files.pythonhosted.org/packages/29/00/4864119668d71a5fa45678f380b5923ff410701565821925c69780356ffa/ruamel.yaml.clib-0.2.12-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:4c8c5d82f50bb53986a5e02d1b3092b03622c02c2eb78e29bec33fd9593bae1a", size = 132011, upload-time = "2024-10-20T10:13:04.377Z" }, - { url = "https://files.pythonhosted.org/packages/7f/5e/212f473a93ae78c669ffa0cb051e3fee1139cb2d385d2ae1653d64281507/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:e7e3736715fbf53e9be2a79eb4db68e4ed857017344d697e8b9749444ae57475", size = 642488, upload-time = "2024-10-20T10:13:05.906Z" }, - { url = "https://files.pythonhosted.org/packages/1f/8f/ecfbe2123ade605c49ef769788f79c38ddb1c8fa81e01f4dbf5cf1a44b16/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7e75b4965e1d4690e93021adfcecccbca7d61c7bddd8e22406ef2ff20d74ef", size = 745066, upload-time = "2024-10-20T10:13:07.26Z" }, - { url = "https://files.pythonhosted.org/packages/e2/a9/28f60726d29dfc01b8decdb385de4ced2ced9faeb37a847bd5cf26836815/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96777d473c05ee3e5e3c3e999f5d23c6f4ec5b0c38c098b3a5229085f74236c6", size = 701785, upload-time = "2024-10-20T10:13:08.504Z" }, - { url = "https://files.pythonhosted.org/packages/84/7e/8e7ec45920daa7f76046578e4f677a3215fe8f18ee30a9cb7627a19d9b4c/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:3bc2a80e6420ca8b7d3590791e2dfc709c88ab9152c00eeb511c9875ce5778bf", size = 693017, upload-time = "2024-10-21T11:26:48.866Z" }, - { url = "https://files.pythonhosted.org/packages/c5/b3/d650eaade4ca225f02a648321e1ab835b9d361c60d51150bac49063b83fa/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e188d2699864c11c36cdfdada94d781fd5d6b0071cd9c427bceb08ad3d7c70e1", size = 741270, upload-time = "2024-10-21T11:26:50.213Z" }, - { url = "https://files.pythonhosted.org/packages/87/b8/01c29b924dcbbed75cc45b30c30d565d763b9c4d540545a0eeecffb8f09c/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4f6f3eac23941b32afccc23081e1f50612bdbe4e982012ef4f5797986828cd01", size = 709059, upload-time = "2024-12-11T19:58:18.846Z" }, - { url = "https://files.pythonhosted.org/packages/30/8c/ed73f047a73638257aa9377ad356bea4d96125b305c34a28766f4445cc0f/ruamel.yaml.clib-0.2.12-cp313-cp313-win32.whl", hash = "sha256:6442cb36270b3afb1b4951f060eccca1ce49f3d087ca1ca4563a6eb479cb3de6", size = 98583, upload-time = "2024-10-20T10:13:09.658Z" }, - { url = "https://files.pythonhosted.org/packages/b0/85/e8e751d8791564dd333d5d9a4eab0a7a115f7e349595417fd50ecae3395c/ruamel.yaml.clib-0.2.12-cp313-cp313-win_amd64.whl", hash = "sha256:e5b8daf27af0b90da7bb903a876477a9e6d7270be6146906b276605997c7e9a3", size = 115190, upload-time = "2024-10-20T10:13:10.66Z" }, + { url = "https://files.pythonhosted.org/packages/b4/42/ccfb34a25289afbbc42017e4d3d4288e61d35b2e00cfc6b92974a6a1f94b/ruamel.yaml.clib-0.2.14-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:6aeadc170090ff1889f0d2c3057557f9cd71f975f17535c26a5d37af98f19c27", size = 271775, upload-time = "2025-09-23T14:24:12.771Z" }, + { url = "https://files.pythonhosted.org/packages/82/73/e628a92e80197ff6a79ab81ec3fa00d4cc082d58ab78d3337b7ba7043301/ruamel.yaml.clib-0.2.14-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:5e56ac47260c0eed992789fa0b8efe43404a9adb608608631a948cee4fc2b052", size = 138842, upload-time = "2025-09-22T19:50:49.156Z" }, + { url = "https://files.pythonhosted.org/packages/2b/c5/346c7094344a60419764b4b1334d9e0285031c961176ff88ffb652405b0c/ruamel.yaml.clib-0.2.14-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:a911aa73588d9a8b08d662b9484bc0567949529824a55d3885b77e8dd62a127a", size = 647404, upload-time = "2025-09-22T19:50:52.921Z" }, + { url = "https://files.pythonhosted.org/packages/df/99/65080c863eb06d4498de3d6c86f3e90595e02e159fd8529f1565f56cfe2c/ruamel.yaml.clib-0.2.14-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a05ba88adf3d7189a974b2de7a9d56731548d35dc0a822ec3dc669caa7019b29", size = 753141, upload-time = "2025-09-22T19:50:50.294Z" }, + { url = "https://files.pythonhosted.org/packages/3d/e3/0de85f3e3333f8e29e4b10244374a202a87665d1131798946ee22cf05c7c/ruamel.yaml.clib-0.2.14-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb04c5650de6668b853623eceadcdb1a9f2fee381f5d7b6bc842ee7c239eeec4", size = 703477, upload-time = "2025-09-22T19:50:51.508Z" }, + { url = "https://files.pythonhosted.org/packages/d9/25/0d2f09d8833c7fd77ab8efeff213093c16856479a9d293180a0d89f6bed9/ruamel.yaml.clib-0.2.14-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:df3ec9959241d07bc261f4983d25a1205ff37703faf42b474f15d54d88b4f8c9", size = 741157, upload-time = "2025-09-23T18:42:50.408Z" }, + { url = "https://files.pythonhosted.org/packages/d3/8c/959f10c2e2153cbdab834c46e6954b6dd9e3b109c8f8c0a3cf1618310985/ruamel.yaml.clib-0.2.14-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:fbc08c02e9b147a11dfcaa1ac8a83168b699863493e183f7c0c8b12850b7d259", size = 745859, upload-time = "2025-09-22T19:50:54.497Z" }, + { url = "https://files.pythonhosted.org/packages/ed/6b/e580a7c18b485e1a5f30a32cda96b20364b0ba649d9d2baaf72f8bd21f83/ruamel.yaml.clib-0.2.14-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c099cafc1834d3c5dac305865d04235f7c21c167c8dd31ebc3d6bbc357e2f023", size = 770200, upload-time = "2025-09-22T19:50:55.718Z" }, + { url = "https://files.pythonhosted.org/packages/ef/44/3455eebc761dc8e8fdced90f2b0a3fa61e32ba38b50de4130e2d57db0f21/ruamel.yaml.clib-0.2.14-cp312-cp312-win32.whl", hash = "sha256:b5b0f7e294700b615a3bcf6d28b26e6da94e8eba63b079f4ec92e9ba6c0d6b54", size = 98829, upload-time = "2025-09-22T19:50:58.895Z" }, + { url = "https://files.pythonhosted.org/packages/76/ab/5121f7f3b651db93de546f8c982c241397aad0a4765d793aca1dac5eadee/ruamel.yaml.clib-0.2.14-cp312-cp312-win_amd64.whl", hash = "sha256:a37f40a859b503304dd740686359fcf541d6fb3ff7fc10f539af7f7150917c68", size = 115570, upload-time = "2025-09-22T19:50:57.981Z" }, + { url = "https://files.pythonhosted.org/packages/d7/ae/e3811f05415594025e96000349d3400978adaed88d8f98d494352d9761ee/ruamel.yaml.clib-0.2.14-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7e4f9da7e7549946e02a6122dcad00b7c1168513acb1f8a726b1aaf504a99d32", size = 269205, upload-time = "2025-09-23T14:24:15.06Z" }, + { url = "https://files.pythonhosted.org/packages/72/06/7d51f4688d6d72bb72fa74254e1593c4f5ebd0036be5b41fe39315b275e9/ruamel.yaml.clib-0.2.14-cp313-cp313-macosx_15_0_arm64.whl", hash = "sha256:dd7546c851e59c06197a7c651335755e74aa383a835878ca86d2c650c07a2f85", size = 137417, upload-time = "2025-09-22T19:50:59.82Z" }, + { url = "https://files.pythonhosted.org/packages/5a/08/b4499234a420ef42960eeb05585df5cc7eb25ccb8c980490b079e6367050/ruamel.yaml.clib-0.2.14-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:1c1acc3a0209ea9042cc3cfc0790edd2eddd431a2ec3f8283d081e4d5018571e", size = 642558, upload-time = "2025-09-22T19:51:03.388Z" }, + { url = "https://files.pythonhosted.org/packages/b6/ba/1975a27dedf1c4c33306ee67c948121be8710b19387aada29e2f139c43ee/ruamel.yaml.clib-0.2.14-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2070bf0ad1540d5c77a664de07ebcc45eebd1ddcab71a7a06f26936920692beb", size = 744087, upload-time = "2025-09-22T19:51:00.897Z" }, + { url = "https://files.pythonhosted.org/packages/20/15/8a19a13d27f3bd09fa18813add8380a29115a47b553845f08802959acbce/ruamel.yaml.clib-0.2.14-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bd8fe07f49c170e09d76773fb86ad9135e0beee44f36e1576a201b0676d3d1d", size = 699709, upload-time = "2025-09-22T19:51:02.075Z" }, + { url = "https://files.pythonhosted.org/packages/19/ee/8d6146a079ad21e534b5083c9ee4a4c8bec42f79cf87594b60978286b39a/ruamel.yaml.clib-0.2.14-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ff86876889ea478b1381089e55cf9e345707b312beda4986f823e1d95e8c0f59", size = 708926, upload-time = "2025-09-23T18:42:51.707Z" }, + { url = "https://files.pythonhosted.org/packages/a9/f5/426b714abdc222392e68f3b8ad323930d05a214a27c7e7a0f06c69126401/ruamel.yaml.clib-0.2.14-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:1f118b707eece8cf84ecbc3e3ec94d9db879d85ed608f95870d39b2d2efa5dca", size = 740202, upload-time = "2025-09-22T19:51:04.673Z" }, + { url = "https://files.pythonhosted.org/packages/3d/ac/3c5c2b27a183f4fda8a57c82211721c016bcb689a4a175865f7646db9f94/ruamel.yaml.clib-0.2.14-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b30110b29484adc597df6bd92a37b90e63a8c152ca8136aad100a02f8ba6d1b6", size = 765196, upload-time = "2025-09-22T19:51:05.916Z" }, + { url = "https://files.pythonhosted.org/packages/92/2e/06f56a71fd55021c993ed6e848c9b2e5e9cfce180a42179f0ddd28253f7c/ruamel.yaml.clib-0.2.14-cp313-cp313-win32.whl", hash = "sha256:f4e97a1cf0b7a30af9e1d9dad10a5671157b9acee790d9e26996391f49b965a2", size = 98635, upload-time = "2025-09-22T19:51:08.183Z" }, + { url = "https://files.pythonhosted.org/packages/51/79/76aba16a1689b50528224b182f71097ece338e7a4ab55e84c2e73443b78a/ruamel.yaml.clib-0.2.14-cp313-cp313-win_amd64.whl", hash = "sha256:090782b5fb9d98df96509eecdbcaffd037d47389a89492320280d52f91330d78", size = 115238, upload-time = "2025-09-22T19:51:07.081Z" }, + { url = "https://files.pythonhosted.org/packages/21/e2/a59ff65c26aaf21a24eb38df777cb9af5d87ba8fc8107c163c2da9d1e85e/ruamel.yaml.clib-0.2.14-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:7df6f6e9d0e33c7b1d435defb185095386c469109de723d514142632a7b9d07f", size = 271441, upload-time = "2025-09-23T14:24:16.498Z" }, + { url = "https://files.pythonhosted.org/packages/6b/fa/3234f913fe9a6525a7b97c6dad1f51e72b917e6872e051a5e2ffd8b16fbb/ruamel.yaml.clib-0.2.14-cp314-cp314-macosx_15_0_arm64.whl", hash = "sha256:70eda7703b8126f5e52fcf276e6c0f40b0d314674f896fc58c47b0aef2b9ae83", size = 137970, upload-time = "2025-09-22T19:51:09.472Z" }, + { url = "https://files.pythonhosted.org/packages/ef/ec/4edbf17ac2c87fa0845dd366ef8d5852b96eb58fcd65fc1ecf5fe27b4641/ruamel.yaml.clib-0.2.14-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:a0cb71ccc6ef9ce36eecb6272c81afdc2f565950cdcec33ae8e6cd8f7fc86f27", size = 739639, upload-time = "2025-09-22T19:51:10.566Z" }, + { url = "https://files.pythonhosted.org/packages/15/18/b0e1fafe59051de9e79cdd431863b03593ecfa8341c110affad7c8121efc/ruamel.yaml.clib-0.2.14-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:e7cb9ad1d525d40f7d87b6df7c0ff916a66bc52cb61b66ac1b2a16d0c1b07640", size = 764456, upload-time = "2025-09-22T19:51:11.736Z" }, ] [[package]]