diff --git a/client-sdks/stainless/openapi.yml b/client-sdks/stainless/openapi.yml index 1c92a22080..22369796a3 100644 --- a/client-sdks/stainless/openapi.yml +++ b/client-sdks/stainless/openapi.yml @@ -6863,6 +6863,7 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' propertyName: type oneOf: @@ -6880,7 +6881,9 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest - title: OpenAIResponseMessage | ... (7 variants) + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem + title: OpenAIResponseMessage | ... (8 variants) - $ref: '#/components/schemas/OpenAIResponseInputFunctionToolCallOutput' title: OpenAIResponseInputFunctionToolCallOutput - $ref: '#/components/schemas/OpenAIResponseMCPApprovalResponse' @@ -7032,6 +7035,8 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem discriminator: propertyName: type mapping: @@ -7041,8 +7046,9 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage-Output' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' - title: OpenAIResponseMessage-Output | ... (7 variants) + title: OpenAIResponseMessage-Output | ... (8 variants) type: array title: Output parallel_tool_calls: @@ -7208,6 +7214,8 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem discriminator: propertyName: type mapping: @@ -7217,8 +7225,9 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage-Output' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' - title: OpenAIResponseMessage-Output | ... (7 variants) + title: OpenAIResponseMessage-Output | ... (8 variants) - $ref: '#/components/schemas/OpenAIResponseInputFunctionToolCallOutput' title: OpenAIResponseInputFunctionToolCallOutput - $ref: '#/components/schemas/OpenAIResponseMCPApprovalResponse' @@ -7247,6 +7256,7 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' propertyName: type oneOf: @@ -7264,7 +7274,9 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest - title: OpenAIResponseMessage | ... (7 variants) + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem + title: OpenAIResponseMessage | ... (8 variants) OpenAIResponsePrompt: properties: id: @@ -7515,6 +7527,8 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem discriminator: propertyName: type mapping: @@ -7524,8 +7538,9 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage-Output' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' - title: OpenAIResponseMessage-Output | ... (7 variants) + title: OpenAIResponseMessage-Output | ... (8 variants) type: array title: Output parallel_tool_calls: @@ -8320,6 +8335,7 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' propertyName: type oneOf: @@ -8337,7 +8353,9 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest - title: OpenAIResponseMessage | ... (7 variants) + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem + title: OpenAIResponseMessage | ... (8 variants) output_index: title: Output Index type: integer @@ -8370,6 +8388,7 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' propertyName: type oneOf: @@ -8387,7 +8406,9 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest - title: OpenAIResponseMessage | ... (7 variants) + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem + title: OpenAIResponseMessage | ... (8 variants) output_index: title: Output Index type: integer @@ -8863,6 +8884,8 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem discriminator: propertyName: type mapping: @@ -8872,8 +8895,9 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage-Output' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' - title: OpenAIResponseMessage-Output | ... (7 variants) + title: OpenAIResponseMessage-Output | ... (8 variants) - $ref: '#/components/schemas/OpenAIResponseInputFunctionToolCallOutput' title: OpenAIResponseInputFunctionToolCallOutput - $ref: '#/components/schemas/OpenAIResponseMCPApprovalResponse' @@ -11424,6 +11448,8 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem discriminator: propertyName: type mapping: @@ -11433,8 +11459,9 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage-Input' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' - title: OpenAIResponseMessage-Input | ... (7 variants) + title: OpenAIResponseMessage-Input | ... (8 variants) - $ref: '#/components/schemas/OpenAIResponseInputFunctionToolCallOutput' title: OpenAIResponseInputFunctionToolCallOutput - $ref: '#/components/schemas/OpenAIResponseMCPApprovalResponse' @@ -12516,6 +12543,77 @@ components: - text title: OpenAIResponseOutputMessageFileSearchToolCallResults description: Search results returned by the file search operation. + OpenAIResponseOutputMessageReasoningContent: + properties: + text: + type: string + title: Text + description: The reasoning text content from the model. + type: + type: string + title: Type + description: The type identifier, always 'reasoning_text'. + enum: + - reasoning_text + required: + - text + title: OpenAIResponseOutputMessageReasoningContent + description: Reasoning text from the model. + OpenAIResponseOutputMessageReasoningItem: + properties: + id: + type: string + title: Id + description: Unique identifier for the reasoning output item. + summary: + items: + $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningSummary' + type: array + title: Summary + description: Summary of the reasoning output. + type: + type: string + title: Type + description: The type identifier, always 'reasoning'. + enum: + - reasoning + content: + anyOf: + - items: + $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningContent' + type: array + - type: 'null' + description: The reasoning content from the model. + status: + anyOf: + - type: string + enum: + - in_progress + - completed + - incomplete + - type: 'null' + description: The status of the reasoning output. + required: + - id + - summary + title: OpenAIResponseOutputMessageReasoningItem + description: Reasoning output from the model, representing the model's thinking process. + OpenAIResponseOutputMessageReasoningSummary: + properties: + text: + type: string + title: Text + description: The summary text of the reasoning output. + type: + type: string + title: Type + description: The type identifier, always 'summary_text'. + enum: + - summary_text + required: + - text + title: OpenAIResponseOutputMessageReasoningSummary + description: A summary of reasoning output from the model. OpenAIResponseReasoning: properties: effort: @@ -12529,6 +12627,15 @@ components: - high - xhigh - type: 'null' + summary: + anyOf: + - type: string + enum: + - auto + - concise + - detailed + - type: 'null' + description: Summary mode for reasoning output. One of 'auto', 'concise', or 'detailed'. title: OpenAIResponseReasoning description: |- Configuration for reasoning effort in OpenAI responses. diff --git a/docs/docs/api-openai/conformance.mdx b/docs/docs/api-openai/conformance.mdx index 0e6fab91a2..3d544ca5d2 100644 --- a/docs/docs/api-openai/conformance.mdx +++ b/docs/docs/api-openai/conformance.mdx @@ -1100,7 +1100,7 @@ Below is a detailed breakdown of conformance issues and missing properties for e | `responses.200.content.application/json.properties.incomplete_details` | Union variants added: 1; Union variants removed: 1 | Yes | | `responses.200.content.application/json.properties.metadata` | Union variants added: 2 | Yes | | `responses.200.content.application/json.properties.object` | Default changed: response -> None | No | -| `responses.200.content.application/json.properties.output.items` | Union variants added: 7; Union variants removed: 4 | Yes | +| `responses.200.content.application/json.properties.output.items` | Union variants added: 8; Union variants removed: 4 | Yes | | `responses.200.content.application/json.properties.parallel_tool_calls` | Type removed: ['boolean']; Nullable added (OpenAI non-nullable); Union variants added: 2; Default changed: None -> True | Yes | | `responses.200.content.application/json.properties.presence_penalty` | Type removed: ['number']; Nullable added (OpenAI non-nullable); Union variants added: 2 | No | | `responses.200.content.application/json.properties.reasoning` | Union variants added: 1; Union variants removed: 1 | Yes | diff --git a/docs/static/deprecated-llama-stack-spec.yaml b/docs/static/deprecated-llama-stack-spec.yaml index 54d93bb7d8..554c6816c8 100644 --- a/docs/static/deprecated-llama-stack-spec.yaml +++ b/docs/static/deprecated-llama-stack-spec.yaml @@ -3221,6 +3221,7 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' propertyName: type oneOf: @@ -3238,7 +3239,9 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest - title: OpenAIResponseMessage | ... (7 variants) + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem + title: OpenAIResponseMessage | ... (8 variants) - $ref: '#/components/schemas/OpenAIResponseInputFunctionToolCallOutput' title: OpenAIResponseInputFunctionToolCallOutput - $ref: '#/components/schemas/OpenAIResponseMCPApprovalResponse' @@ -3390,6 +3393,8 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem discriminator: propertyName: type mapping: @@ -3399,8 +3404,9 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage-Output' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' - title: OpenAIResponseMessage-Output | ... (7 variants) + title: OpenAIResponseMessage-Output | ... (8 variants) type: array title: Output parallel_tool_calls: @@ -3566,6 +3572,8 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem discriminator: propertyName: type mapping: @@ -3575,8 +3583,9 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage-Output' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' - title: OpenAIResponseMessage-Output | ... (7 variants) + title: OpenAIResponseMessage-Output | ... (8 variants) - $ref: '#/components/schemas/OpenAIResponseInputFunctionToolCallOutput' title: OpenAIResponseInputFunctionToolCallOutput - $ref: '#/components/schemas/OpenAIResponseMCPApprovalResponse' @@ -3605,6 +3614,7 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' propertyName: type oneOf: @@ -3622,7 +3632,9 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest - title: OpenAIResponseMessage | ... (7 variants) + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem + title: OpenAIResponseMessage | ... (8 variants) OpenAIResponsePrompt: properties: id: @@ -3873,6 +3885,8 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem discriminator: propertyName: type mapping: @@ -3882,8 +3896,9 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage-Output' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' - title: OpenAIResponseMessage-Output | ... (7 variants) + title: OpenAIResponseMessage-Output | ... (8 variants) type: array title: Output parallel_tool_calls: @@ -4678,6 +4693,7 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' propertyName: type oneOf: @@ -4695,7 +4711,9 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest - title: OpenAIResponseMessage | ... (7 variants) + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem + title: OpenAIResponseMessage | ... (8 variants) output_index: title: Output Index type: integer @@ -4728,6 +4746,7 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' propertyName: type oneOf: @@ -4745,7 +4764,9 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest - title: OpenAIResponseMessage | ... (7 variants) + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem + title: OpenAIResponseMessage | ... (8 variants) output_index: title: Output Index type: integer @@ -5221,6 +5242,8 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem discriminator: propertyName: type mapping: @@ -5230,8 +5253,9 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage-Output' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' - title: OpenAIResponseMessage-Output | ... (7 variants) + title: OpenAIResponseMessage-Output | ... (8 variants) - $ref: '#/components/schemas/OpenAIResponseInputFunctionToolCallOutput' title: OpenAIResponseInputFunctionToolCallOutput - $ref: '#/components/schemas/OpenAIResponseMCPApprovalResponse' @@ -7782,6 +7806,8 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem discriminator: propertyName: type mapping: @@ -7791,8 +7817,9 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage-Input' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' - title: OpenAIResponseMessage-Input | ... (7 variants) + title: OpenAIResponseMessage-Input | ... (8 variants) - $ref: '#/components/schemas/OpenAIResponseInputFunctionToolCallOutput' title: OpenAIResponseInputFunctionToolCallOutput - $ref: '#/components/schemas/OpenAIResponseMCPApprovalResponse' @@ -8876,6 +8903,77 @@ components: - text title: OpenAIResponseOutputMessageFileSearchToolCallResults description: Search results returned by the file search operation. + OpenAIResponseOutputMessageReasoningContent: + properties: + text: + type: string + title: Text + description: The reasoning text content from the model. + type: + type: string + title: Type + description: The type identifier, always 'reasoning_text'. + enum: + - reasoning_text + required: + - text + title: OpenAIResponseOutputMessageReasoningContent + description: Reasoning text from the model. + OpenAIResponseOutputMessageReasoningItem: + properties: + id: + type: string + title: Id + description: Unique identifier for the reasoning output item. + summary: + items: + $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningSummary' + type: array + title: Summary + description: Summary of the reasoning output. + type: + type: string + title: Type + description: The type identifier, always 'reasoning'. + enum: + - reasoning + content: + anyOf: + - items: + $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningContent' + type: array + - type: 'null' + description: The reasoning content from the model. + status: + anyOf: + - type: string + enum: + - in_progress + - completed + - incomplete + - type: 'null' + description: The status of the reasoning output. + required: + - id + - summary + title: OpenAIResponseOutputMessageReasoningItem + description: Reasoning output from the model, representing the model's thinking process. + OpenAIResponseOutputMessageReasoningSummary: + properties: + text: + type: string + title: Text + description: The summary text of the reasoning output. + type: + type: string + title: Type + description: The type identifier, always 'summary_text'. + enum: + - summary_text + required: + - text + title: OpenAIResponseOutputMessageReasoningSummary + description: A summary of reasoning output from the model. OpenAIResponseReasoning: properties: effort: @@ -8889,6 +8987,15 @@ components: - high - xhigh - type: 'null' + summary: + anyOf: + - type: string + enum: + - auto + - concise + - detailed + - type: 'null' + description: Summary mode for reasoning output. One of 'auto', 'concise', or 'detailed'. title: OpenAIResponseReasoning description: |- Configuration for reasoning effort in OpenAI responses. diff --git a/docs/static/experimental-llama-stack-spec.yaml b/docs/static/experimental-llama-stack-spec.yaml index 8529a64c29..e6e7bd0968 100644 --- a/docs/static/experimental-llama-stack-spec.yaml +++ b/docs/static/experimental-llama-stack-spec.yaml @@ -3772,6 +3772,7 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' propertyName: type oneOf: @@ -3789,7 +3790,9 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest - title: OpenAIResponseMessage | ... (7 variants) + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem + title: OpenAIResponseMessage | ... (8 variants) - $ref: '#/components/schemas/OpenAIResponseInputFunctionToolCallOutput' title: OpenAIResponseInputFunctionToolCallOutput - $ref: '#/components/schemas/OpenAIResponseMCPApprovalResponse' @@ -3941,6 +3944,8 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem discriminator: propertyName: type mapping: @@ -3950,8 +3955,9 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage-Output' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' - title: OpenAIResponseMessage-Output | ... (7 variants) + title: OpenAIResponseMessage-Output | ... (8 variants) type: array title: Output parallel_tool_calls: @@ -4117,6 +4123,8 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem discriminator: propertyName: type mapping: @@ -4126,8 +4134,9 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage-Output' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' - title: OpenAIResponseMessage-Output | ... (7 variants) + title: OpenAIResponseMessage-Output | ... (8 variants) - $ref: '#/components/schemas/OpenAIResponseInputFunctionToolCallOutput' title: OpenAIResponseInputFunctionToolCallOutput - $ref: '#/components/schemas/OpenAIResponseMCPApprovalResponse' @@ -4156,6 +4165,7 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' propertyName: type oneOf: @@ -4173,7 +4183,9 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest - title: OpenAIResponseMessage | ... (7 variants) + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem + title: OpenAIResponseMessage | ... (8 variants) OpenAIResponsePrompt: properties: id: @@ -4414,6 +4426,8 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem discriminator: propertyName: type mapping: @@ -4423,8 +4437,9 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage-Output' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' - title: OpenAIResponseMessage-Output | ... (7 variants) + title: OpenAIResponseMessage-Output | ... (8 variants) type: array title: Output parallel_tool_calls: @@ -5219,6 +5234,7 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' propertyName: type oneOf: @@ -5236,7 +5252,9 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest - title: OpenAIResponseMessage | ... (7 variants) + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem + title: OpenAIResponseMessage | ... (8 variants) output_index: title: Output Index type: integer @@ -5269,6 +5287,7 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' propertyName: type oneOf: @@ -5286,7 +5305,9 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest - title: OpenAIResponseMessage | ... (7 variants) + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem + title: OpenAIResponseMessage | ... (8 variants) output_index: title: Output Index type: integer @@ -5762,6 +5783,8 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem discriminator: propertyName: type mapping: @@ -5771,8 +5794,9 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage-Output' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' - title: OpenAIResponseMessage-Output | ... (7 variants) + title: OpenAIResponseMessage-Output | ... (8 variants) - $ref: '#/components/schemas/OpenAIResponseInputFunctionToolCallOutput' title: OpenAIResponseInputFunctionToolCallOutput - $ref: '#/components/schemas/OpenAIResponseMCPApprovalResponse' @@ -9113,6 +9137,77 @@ components: - text title: OpenAIResponseOutputMessageFileSearchToolCallResults description: Search results returned by the file search operation. + OpenAIResponseOutputMessageReasoningContent: + properties: + text: + type: string + title: Text + description: The reasoning text content from the model. + type: + type: string + title: Type + description: The type identifier, always 'reasoning_text'. + enum: + - reasoning_text + required: + - text + title: OpenAIResponseOutputMessageReasoningContent + description: Reasoning text from the model. + OpenAIResponseOutputMessageReasoningItem: + properties: + id: + type: string + title: Id + description: Unique identifier for the reasoning output item. + summary: + items: + $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningSummary' + type: array + title: Summary + description: Summary of the reasoning output. + type: + type: string + title: Type + description: The type identifier, always 'reasoning'. + enum: + - reasoning + content: + anyOf: + - items: + $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningContent' + type: array + - type: 'null' + description: The reasoning content from the model. + status: + anyOf: + - type: string + enum: + - in_progress + - completed + - incomplete + - type: 'null' + description: The status of the reasoning output. + required: + - id + - summary + title: OpenAIResponseOutputMessageReasoningItem + description: Reasoning output from the model, representing the model's thinking process. + OpenAIResponseOutputMessageReasoningSummary: + properties: + text: + type: string + title: Text + description: The summary text of the reasoning output. + type: + type: string + title: Type + description: The type identifier, always 'summary_text'. + enum: + - summary_text + required: + - text + title: OpenAIResponseOutputMessageReasoningSummary + description: A summary of reasoning output from the model. OpenAIResponseReasoning: properties: effort: @@ -9126,6 +9221,15 @@ components: - high - xhigh - type: 'null' + summary: + anyOf: + - type: string + enum: + - auto + - concise + - detailed + - type: 'null' + description: Summary mode for reasoning output. One of 'auto', 'concise', or 'detailed'. title: OpenAIResponseReasoning description: |- Configuration for reasoning effort in OpenAI responses. diff --git a/docs/static/llama-stack-spec.yaml b/docs/static/llama-stack-spec.yaml index a7516b40d7..4c3b7c9d10 100644 --- a/docs/static/llama-stack-spec.yaml +++ b/docs/static/llama-stack-spec.yaml @@ -5811,6 +5811,7 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' propertyName: type oneOf: @@ -5828,7 +5829,9 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest - title: OpenAIResponseMessage | ... (7 variants) + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem + title: OpenAIResponseMessage | ... (8 variants) - $ref: '#/components/schemas/OpenAIResponseInputFunctionToolCallOutput' title: OpenAIResponseInputFunctionToolCallOutput - $ref: '#/components/schemas/OpenAIResponseMCPApprovalResponse' @@ -5980,6 +5983,8 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem discriminator: propertyName: type mapping: @@ -5989,8 +5994,9 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage-Output' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' - title: OpenAIResponseMessage-Output | ... (7 variants) + title: OpenAIResponseMessage-Output | ... (8 variants) type: array title: Output parallel_tool_calls: @@ -6156,6 +6162,8 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem discriminator: propertyName: type mapping: @@ -6165,8 +6173,9 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage-Output' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' - title: OpenAIResponseMessage-Output | ... (7 variants) + title: OpenAIResponseMessage-Output | ... (8 variants) - $ref: '#/components/schemas/OpenAIResponseInputFunctionToolCallOutput' title: OpenAIResponseInputFunctionToolCallOutput - $ref: '#/components/schemas/OpenAIResponseMCPApprovalResponse' @@ -6195,6 +6204,7 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' propertyName: type oneOf: @@ -6212,7 +6222,9 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest - title: OpenAIResponseMessage | ... (7 variants) + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem + title: OpenAIResponseMessage | ... (8 variants) OpenAIResponsePrompt: properties: id: @@ -6463,6 +6475,8 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem discriminator: propertyName: type mapping: @@ -6472,8 +6486,9 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage-Output' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' - title: OpenAIResponseMessage-Output | ... (7 variants) + title: OpenAIResponseMessage-Output | ... (8 variants) type: array title: Output parallel_tool_calls: @@ -7268,6 +7283,7 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' propertyName: type oneOf: @@ -7285,7 +7301,9 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest - title: OpenAIResponseMessage | ... (7 variants) + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem + title: OpenAIResponseMessage | ... (8 variants) output_index: title: Output Index type: integer @@ -7318,6 +7336,7 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' propertyName: type oneOf: @@ -7335,7 +7354,9 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest - title: OpenAIResponseMessage | ... (7 variants) + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem + title: OpenAIResponseMessage | ... (8 variants) output_index: title: Output Index type: integer @@ -7811,6 +7832,8 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem discriminator: propertyName: type mapping: @@ -7820,8 +7843,9 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage-Output' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' - title: OpenAIResponseMessage-Output | ... (7 variants) + title: OpenAIResponseMessage-Output | ... (8 variants) - $ref: '#/components/schemas/OpenAIResponseInputFunctionToolCallOutput' title: OpenAIResponseInputFunctionToolCallOutput - $ref: '#/components/schemas/OpenAIResponseMCPApprovalResponse' @@ -10347,6 +10371,8 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem discriminator: propertyName: type mapping: @@ -10356,8 +10382,9 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage-Input' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' - title: OpenAIResponseMessage-Input | ... (7 variants) + title: OpenAIResponseMessage-Input | ... (8 variants) - $ref: '#/components/schemas/OpenAIResponseInputFunctionToolCallOutput' title: OpenAIResponseInputFunctionToolCallOutput - $ref: '#/components/schemas/OpenAIResponseMCPApprovalResponse' @@ -11441,6 +11468,77 @@ components: - text title: OpenAIResponseOutputMessageFileSearchToolCallResults description: Search results returned by the file search operation. + OpenAIResponseOutputMessageReasoningContent: + properties: + text: + type: string + title: Text + description: The reasoning text content from the model. + type: + type: string + title: Type + description: The type identifier, always 'reasoning_text'. + enum: + - reasoning_text + required: + - text + title: OpenAIResponseOutputMessageReasoningContent + description: Reasoning text from the model. + OpenAIResponseOutputMessageReasoningItem: + properties: + id: + type: string + title: Id + description: Unique identifier for the reasoning output item. + summary: + items: + $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningSummary' + type: array + title: Summary + description: Summary of the reasoning output. + type: + type: string + title: Type + description: The type identifier, always 'reasoning'. + enum: + - reasoning + content: + anyOf: + - items: + $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningContent' + type: array + - type: 'null' + description: The reasoning content from the model. + status: + anyOf: + - type: string + enum: + - in_progress + - completed + - incomplete + - type: 'null' + description: The status of the reasoning output. + required: + - id + - summary + title: OpenAIResponseOutputMessageReasoningItem + description: Reasoning output from the model, representing the model's thinking process. + OpenAIResponseOutputMessageReasoningSummary: + properties: + text: + type: string + title: Text + description: The summary text of the reasoning output. + type: + type: string + title: Type + description: The type identifier, always 'summary_text'. + enum: + - summary_text + required: + - text + title: OpenAIResponseOutputMessageReasoningSummary + description: A summary of reasoning output from the model. OpenAIResponseReasoning: properties: effort: @@ -11454,6 +11552,15 @@ components: - high - xhigh - type: 'null' + summary: + anyOf: + - type: string + enum: + - auto + - concise + - detailed + - type: 'null' + description: Summary mode for reasoning output. One of 'auto', 'concise', or 'detailed'. title: OpenAIResponseReasoning description: |- Configuration for reasoning effort in OpenAI responses. diff --git a/docs/static/openai-coverage.json b/docs/static/openai-coverage.json index 3bbbba3639..b04170602c 100644 --- a/docs/static/openai-coverage.json +++ b/docs/static/openai-coverage.json @@ -1845,7 +1845,7 @@ { "property": "POST.responses.200.content.application/json.properties.output.items", "details": [ - "Union variants added: 7", + "Union variants added: 8", "Union variants removed: 4" ] }, diff --git a/docs/static/stainless-llama-stack-spec.yaml b/docs/static/stainless-llama-stack-spec.yaml index 1c92a22080..22369796a3 100644 --- a/docs/static/stainless-llama-stack-spec.yaml +++ b/docs/static/stainless-llama-stack-spec.yaml @@ -6863,6 +6863,7 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' propertyName: type oneOf: @@ -6880,7 +6881,9 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest - title: OpenAIResponseMessage | ... (7 variants) + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem + title: OpenAIResponseMessage | ... (8 variants) - $ref: '#/components/schemas/OpenAIResponseInputFunctionToolCallOutput' title: OpenAIResponseInputFunctionToolCallOutput - $ref: '#/components/schemas/OpenAIResponseMCPApprovalResponse' @@ -7032,6 +7035,8 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem discriminator: propertyName: type mapping: @@ -7041,8 +7046,9 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage-Output' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' - title: OpenAIResponseMessage-Output | ... (7 variants) + title: OpenAIResponseMessage-Output | ... (8 variants) type: array title: Output parallel_tool_calls: @@ -7208,6 +7214,8 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem discriminator: propertyName: type mapping: @@ -7217,8 +7225,9 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage-Output' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' - title: OpenAIResponseMessage-Output | ... (7 variants) + title: OpenAIResponseMessage-Output | ... (8 variants) - $ref: '#/components/schemas/OpenAIResponseInputFunctionToolCallOutput' title: OpenAIResponseInputFunctionToolCallOutput - $ref: '#/components/schemas/OpenAIResponseMCPApprovalResponse' @@ -7247,6 +7256,7 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' propertyName: type oneOf: @@ -7264,7 +7274,9 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest - title: OpenAIResponseMessage | ... (7 variants) + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem + title: OpenAIResponseMessage | ... (8 variants) OpenAIResponsePrompt: properties: id: @@ -7515,6 +7527,8 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem discriminator: propertyName: type mapping: @@ -7524,8 +7538,9 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage-Output' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' - title: OpenAIResponseMessage-Output | ... (7 variants) + title: OpenAIResponseMessage-Output | ... (8 variants) type: array title: Output parallel_tool_calls: @@ -8320,6 +8335,7 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' propertyName: type oneOf: @@ -8337,7 +8353,9 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest - title: OpenAIResponseMessage | ... (7 variants) + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem + title: OpenAIResponseMessage | ... (8 variants) output_index: title: Output Index type: integer @@ -8370,6 +8388,7 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' propertyName: type oneOf: @@ -8387,7 +8406,9 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest - title: OpenAIResponseMessage | ... (7 variants) + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem + title: OpenAIResponseMessage | ... (8 variants) output_index: title: Output Index type: integer @@ -8863,6 +8884,8 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem discriminator: propertyName: type mapping: @@ -8872,8 +8895,9 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage-Output' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' - title: OpenAIResponseMessage-Output | ... (7 variants) + title: OpenAIResponseMessage-Output | ... (8 variants) - $ref: '#/components/schemas/OpenAIResponseInputFunctionToolCallOutput' title: OpenAIResponseInputFunctionToolCallOutput - $ref: '#/components/schemas/OpenAIResponseMCPApprovalResponse' @@ -11424,6 +11448,8 @@ components: title: OpenAIResponseOutputMessageMCPListTools - $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest' title: OpenAIResponseMCPApprovalRequest + - $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' + title: OpenAIResponseOutputMessageReasoningItem discriminator: propertyName: type mapping: @@ -11433,8 +11459,9 @@ components: mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall' mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools' message: '#/components/schemas/OpenAIResponseMessage-Input' + reasoning: '#/components/schemas/OpenAIResponseOutputMessageReasoningItem' web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall' - title: OpenAIResponseMessage-Input | ... (7 variants) + title: OpenAIResponseMessage-Input | ... (8 variants) - $ref: '#/components/schemas/OpenAIResponseInputFunctionToolCallOutput' title: OpenAIResponseInputFunctionToolCallOutput - $ref: '#/components/schemas/OpenAIResponseMCPApprovalResponse' @@ -12516,6 +12543,77 @@ components: - text title: OpenAIResponseOutputMessageFileSearchToolCallResults description: Search results returned by the file search operation. + OpenAIResponseOutputMessageReasoningContent: + properties: + text: + type: string + title: Text + description: The reasoning text content from the model. + type: + type: string + title: Type + description: The type identifier, always 'reasoning_text'. + enum: + - reasoning_text + required: + - text + title: OpenAIResponseOutputMessageReasoningContent + description: Reasoning text from the model. + OpenAIResponseOutputMessageReasoningItem: + properties: + id: + type: string + title: Id + description: Unique identifier for the reasoning output item. + summary: + items: + $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningSummary' + type: array + title: Summary + description: Summary of the reasoning output. + type: + type: string + title: Type + description: The type identifier, always 'reasoning'. + enum: + - reasoning + content: + anyOf: + - items: + $ref: '#/components/schemas/OpenAIResponseOutputMessageReasoningContent' + type: array + - type: 'null' + description: The reasoning content from the model. + status: + anyOf: + - type: string + enum: + - in_progress + - completed + - incomplete + - type: 'null' + description: The status of the reasoning output. + required: + - id + - summary + title: OpenAIResponseOutputMessageReasoningItem + description: Reasoning output from the model, representing the model's thinking process. + OpenAIResponseOutputMessageReasoningSummary: + properties: + text: + type: string + title: Text + description: The summary text of the reasoning output. + type: + type: string + title: Type + description: The type identifier, always 'summary_text'. + enum: + - summary_text + required: + - text + title: OpenAIResponseOutputMessageReasoningSummary + description: A summary of reasoning output from the model. OpenAIResponseReasoning: properties: effort: @@ -12529,6 +12627,15 @@ components: - high - xhigh - type: 'null' + summary: + anyOf: + - type: string + enum: + - auto + - concise + - detailed + - type: 'null' + description: Summary mode for reasoning output. One of 'auto', 'concise', or 'detailed'. title: OpenAIResponseReasoning description: |- Configuration for reasoning effort in OpenAI responses. diff --git a/src/llama_stack/providers/inline/responses/builtin/responses/types.py b/src/llama_stack/providers/inline/responses/builtin/responses/types.py index 83ae4a7bf4..f81fd9a761 100644 --- a/src/llama_stack/providers/inline/responses/builtin/responses/types.py +++ b/src/llama_stack/providers/inline/responses/builtin/responses/types.py @@ -12,6 +12,7 @@ from pydantic import BaseModel from llama_stack_api import ( + OpenAIAssistantMessageParam, OpenAIChatCompletionToolCall, OpenAIFinishReason, OpenAIMessageParam, @@ -35,6 +36,18 @@ ) +class AssistantMessageWithReasoning(OpenAIAssistantMessageParam): + """Internal type for passing reasoning content between the Responses + layer and providers. NOT part of the public API. + + The Responses layer creates this when converting input ReasoningItems + to CC messages. Providers check isinstance(msg, AssistantMessageWithReasoning) + and map reasoning_content to their own CC format (e.g. 'reasoning' for Ollama/vLLM). + """ + + reasoning_content: str | None = None + + def _json_equal(a: str, b: str) -> bool: """Compare two JSON strings by value, falling back to string comparison.""" try: @@ -68,6 +81,7 @@ class ChatCompletionResult: content_part_emitted: bool # Tracking state logprobs: list[OpenAITokenLogProb] | None = None service_tier: str | None = None # The actual service tier used (may differ from input) + reasoning_content: str | None = None @property def content_text(self) -> str: diff --git a/src/llama_stack/providers/inline/responses/builtin/responses/utils.py b/src/llama_stack/providers/inline/responses/builtin/responses/utils.py index 12d9af0778..4bb0591269 100644 --- a/src/llama_stack/providers/inline/responses/builtin/responses/utils.py +++ b/src/llama_stack/providers/inline/responses/builtin/responses/utils.py @@ -47,6 +47,7 @@ OpenAIResponseOutputMessageFunctionToolCall, OpenAIResponseOutputMessageMCPCall, OpenAIResponseOutputMessageMCPListTools, + OpenAIResponseOutputMessageReasoningItem, OpenAIResponseOutputMessageWebSearchToolCall, OpenAIResponseText, OpenAISystemMessageParam, @@ -305,6 +306,9 @@ async def convert_response_input_to_chat_messages( if isinstance(input_item, OpenAIResponseInputFunctionToolCallOutput): # skip as these have been extracted and inserted in order pass + elif isinstance(input_item, OpenAIResponseOutputMessageReasoningItem): + # skip for now — reasoning items will be handled in Stage 2 + pass elif isinstance(input_item, OpenAIResponseOutputMessageFunctionToolCall): tool_call = OpenAIChatCompletionToolCall( index=0, @@ -372,6 +376,10 @@ async def convert_response_input_to_chat_messages( continue # Skip duplicate user message # Dynamic message type call - different message types have different content expectations messages.append(message_type(content=content)) # type: ignore[call-arg,arg-type] + else: + # Fail loudly on unknown types so future additions to + # OpenAIResponseInput don't silently drop data. + raise ValueError(f"Unexpected input item type: {type(input_item).__name__}") if len(tool_call_results): # Check if unpaired function_call_outputs reference function_calls from previous messages if previous_messages: diff --git a/src/llama_stack_api/__init__.py b/src/llama_stack_api/__init__.py index 3566ebb0fd..32e08b6239 100644 --- a/src/llama_stack_api/__init__.py +++ b/src/llama_stack_api/__init__.py @@ -421,6 +421,9 @@ OpenAIResponseOutputMessageFunctionToolCall, OpenAIResponseOutputMessageMCPCall, OpenAIResponseOutputMessageMCPListTools, + OpenAIResponseOutputMessageReasoningContent, + OpenAIResponseOutputMessageReasoningItem, + OpenAIResponseOutputMessageReasoningSummary, OpenAIResponseOutputMessageWebSearchToolCall, OpenAIResponsePrompt, OpenAIResponseReasoning, @@ -934,6 +937,9 @@ "OpenAIResponseOutputMessageFunctionToolCall", "OpenAIResponseOutputMessageMCPCall", "OpenAIResponseOutputMessageMCPListTools", + "OpenAIResponseOutputMessageReasoningContent", + "OpenAIResponseOutputMessageReasoningItem", + "OpenAIResponseOutputMessageReasoningSummary", "OpenAIResponseOutputMessageWebSearchToolCall", "OpenAIResponsePrompt", "OpenAIResponseReasoning", diff --git a/src/llama_stack_api/openai_responses.py b/src/llama_stack_api/openai_responses.py index c5ce42d940..12d57043a0 100644 --- a/src/llama_stack_api/openai_responses.py +++ b/src/llama_stack_api/openai_responses.py @@ -367,6 +367,41 @@ class OpenAIResponseMCPApprovalResponse(BaseModel): reason: str | None = None +@json_schema_type +class OpenAIResponseOutputMessageReasoningSummary(BaseModel): + """A summary of reasoning output from the model.""" + + text: str = Field(description="The summary text of the reasoning output.") + type: Literal["summary_text"] = Field( + default="summary_text", description="The type identifier, always 'summary_text'." + ) + + +@json_schema_type +class OpenAIResponseOutputMessageReasoningContent(BaseModel): + """Reasoning text from the model.""" + + text: str = Field(description="The reasoning text content from the model.") + type: Literal["reasoning_text"] = Field( + default="reasoning_text", description="The type identifier, always 'reasoning_text'." + ) + + +@json_schema_type +class OpenAIResponseOutputMessageReasoningItem(BaseModel): + """Reasoning output from the model, representing the model's thinking process.""" + + id: str = Field(description="Unique identifier for the reasoning output item.") + summary: list[OpenAIResponseOutputMessageReasoningSummary] = Field(description="Summary of the reasoning output.") + type: Literal["reasoning"] = Field(default="reasoning", description="The type identifier, always 'reasoning'.") + content: list[OpenAIResponseOutputMessageReasoningContent] | None = Field( + default=None, description="The reasoning content from the model." + ) + status: Literal["in_progress", "completed", "incomplete"] | None = Field( + default=None, description="The status of the reasoning output." + ) + + OpenAIResponseOutput = Annotated[ OpenAIResponseMessage | OpenAIResponseOutputMessageWebSearchToolCall @@ -374,7 +409,8 @@ class OpenAIResponseMCPApprovalResponse(BaseModel): | OpenAIResponseOutputMessageFunctionToolCall | OpenAIResponseOutputMessageMCPCall | OpenAIResponseOutputMessageMCPListTools - | OpenAIResponseMCPApprovalRequest, + | OpenAIResponseMCPApprovalRequest + | OpenAIResponseOutputMessageReasoningItem, Field(discriminator="type"), ] register_schema(OpenAIResponseOutput, name="OpenAIResponseOutput") @@ -422,6 +458,9 @@ class OpenAIResponseReasoning(BaseModel): """ effort: Literal["none", "minimal", "low", "medium", "high", "xhigh"] | None = None + summary: Literal["auto", "concise", "detailed"] | None = Field( + default=None, description="Summary mode for reasoning output. One of 'auto', 'concise', or 'detailed'." + ) # Must match type Literals of OpenAIResponseInputToolWebSearch below