feat: add support for tool_choice to repsponses api

Signed-off-by: Jaideep Rao <jrao@redhat.com>
This commit is contained in:
Jaideep Rao 2025-11-07 23:42:28 +05:30
parent ee107aadd6
commit d2d2c88921
17 changed files with 49613 additions and 1 deletions

View file

@ -3778,6 +3778,38 @@ components:
title: OpenAIResponseInputToolWebSearch | ... (4 variants)
type: array
- type: 'null'
tool_choice:
anyOf:
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceMode'
title: OpenAIResponseInputToolChoiceMode
- oneOf:
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceAllowedTools'
title: OpenAIResponseInputToolChoiceAllowedTools
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceFileSearch'
title: OpenAIResponseInputToolChoiceFileSearch
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceWebSearch'
title: OpenAIResponseInputToolChoiceWebSearch
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceFunctionTool'
title: OpenAIResponseInputToolChoiceFunctionTool
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceMCPTool'
title: OpenAIResponseInputToolChoiceMCPTool
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceCustomTool'
title: OpenAIResponseInputToolChoiceCustomTool
discriminator:
propertyName: type
mapping:
allowed_tools: '#/components/schemas/OpenAIResponseInputToolChoiceAllowedTools'
custom: '#/components/schemas/OpenAIResponseInputToolChoiceCustomTool'
file_search: '#/components/schemas/OpenAIResponseInputToolChoiceFileSearch'
function: '#/components/schemas/OpenAIResponseInputToolChoiceFunctionTool'
mcp: '#/components/schemas/OpenAIResponseInputToolChoiceMCPTool'
web_search: '#/components/schemas/OpenAIResponseInputToolChoiceWebSearch'
web_search_2025_08_26: '#/components/schemas/OpenAIResponseInputToolChoiceWebSearch'
web_search_preview: '#/components/schemas/OpenAIResponseInputToolChoiceWebSearch'
web_search_preview_2025_03_11: '#/components/schemas/OpenAIResponseInputToolChoiceWebSearch'
title: OpenAIResponseInputToolChoiceAllowedTools | ... (6 variants)
- type: 'null'
title: OpenAIResponseInputToolChoiceMode
truncation:
anyOf:
- type: string
@ -4165,6 +4197,38 @@ components:
title: OpenAIResponseText
- type: 'null'
title: OpenAIResponseText
tool_choice:
anyOf:
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceMode'
title: OpenAIResponseInputToolChoiceMode
- oneOf:
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceAllowedTools'
title: OpenAIResponseInputToolChoiceAllowedTools
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceFileSearch'
title: OpenAIResponseInputToolChoiceFileSearch
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceWebSearch'
title: OpenAIResponseInputToolChoiceWebSearch
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceFunctionTool'
title: OpenAIResponseInputToolChoiceFunctionTool
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceMCPTool'
title: OpenAIResponseInputToolChoiceMCPTool
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceCustomTool'
title: OpenAIResponseInputToolChoiceCustomTool
discriminator:
propertyName: type
mapping:
allowed_tools: '#/components/schemas/OpenAIResponseInputToolChoiceAllowedTools'
custom: '#/components/schemas/OpenAIResponseInputToolChoiceCustomTool'
file_search: '#/components/schemas/OpenAIResponseInputToolChoiceFileSearch'
function: '#/components/schemas/OpenAIResponseInputToolChoiceFunctionTool'
mcp: '#/components/schemas/OpenAIResponseInputToolChoiceMCPTool'
web_search: '#/components/schemas/OpenAIResponseInputToolChoiceWebSearch'
web_search_2025_08_26: '#/components/schemas/OpenAIResponseInputToolChoiceWebSearch'
web_search_preview: '#/components/schemas/OpenAIResponseInputToolChoiceWebSearch'
web_search_preview_2025_03_11: '#/components/schemas/OpenAIResponseInputToolChoiceWebSearch'
title: OpenAIResponseInputToolChoiceAllowedTools | ... (6 variants)
- type: 'null'
title: OpenAIResponseInputToolChoiceMode
tools:
anyOf:
- items:
@ -4324,6 +4388,38 @@ components:
title: OpenAIResponseInputToolWebSearch | ... (4 variants)
type: array
- type: 'null'
tool_choice:
anyOf:
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceMode'
title: OpenAIResponseInputToolChoiceMode
- oneOf:
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceAllowedTools'
title: OpenAIResponseInputToolChoiceAllowedTools
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceFileSearch'
title: OpenAIResponseInputToolChoiceFileSearch
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceWebSearch'
title: OpenAIResponseInputToolChoiceWebSearch
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceFunctionTool'
title: OpenAIResponseInputToolChoiceFunctionTool
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceMCPTool'
title: OpenAIResponseInputToolChoiceMCPTool
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceCustomTool'
title: OpenAIResponseInputToolChoiceCustomTool
discriminator:
propertyName: type
mapping:
allowed_tools: '#/components/schemas/OpenAIResponseInputToolChoiceAllowedTools'
custom: '#/components/schemas/OpenAIResponseInputToolChoiceCustomTool'
file_search: '#/components/schemas/OpenAIResponseInputToolChoiceFileSearch'
function: '#/components/schemas/OpenAIResponseInputToolChoiceFunctionTool'
mcp: '#/components/schemas/OpenAIResponseInputToolChoiceMCPTool'
web_search: '#/components/schemas/OpenAIResponseInputToolChoiceWebSearch'
web_search_2025_08_26: '#/components/schemas/OpenAIResponseInputToolChoiceWebSearch'
web_search_preview: '#/components/schemas/OpenAIResponseInputToolChoiceWebSearch'
web_search_preview_2025_03_11: '#/components/schemas/OpenAIResponseInputToolChoiceWebSearch'
title: OpenAIResponseInputToolChoiceAllowedTools | ... (6 variants)
- type: 'null'
title: OpenAIResponseInputToolChoiceMode
truncation:
anyOf:
- type: string
@ -8797,6 +8893,121 @@ components:
type: object
title: OpenAIChatCompletionUsagePromptTokensDetails
description: Token details for prompt tokens in OpenAI chat completion usage.
OpenAIResponseInputToolChoiceAllowedTools:
properties:
mode:
type: string
enum:
- auto
- required
title: Mode
default: auto
tools:
items:
additionalProperties:
type: string
type: object
type: array
title: Tools
type:
type: string
const: allowed_tools
title: Type
default: allowed_tools
type: object
required:
- tools
title: OpenAIResponseInputToolChoiceAllowedTools
description: Constrains the tools available to the model to a pre-defined set.
OpenAIResponseInputToolChoiceCustomTool:
properties:
type:
type: string
const: custom
title: Type
default: custom
name:
type: string
title: Name
type: object
required:
- name
title: OpenAIResponseInputToolChoiceCustomTool
description: Forces the model to call a custom tool.
OpenAIResponseInputToolChoiceFileSearch:
properties:
type:
type: string
const: file_search
title: Type
default: file_search
type: object
title: OpenAIResponseInputToolChoiceFileSearch
description: Indicates that the model should use file search to generate a response.
OpenAIResponseInputToolChoiceFunctionTool:
properties:
name:
type: string
title: Name
type:
type: string
const: function
title: Type
default: function
type: object
required:
- name
title: OpenAIResponseInputToolChoiceFunctionTool
description: Forces the model to call a specific function.
OpenAIResponseInputToolChoiceMCPTool:
properties:
server_label:
type: string
title: Server Label
type:
type: string
const: mcp
title: Type
default: mcp
name:
anyOf:
- type: string
- type: 'null'
type: object
required:
- server_label
title: OpenAIResponseInputToolChoiceMCPTool
description: Forces the model to call a specific tool on a remote MCP server
OpenAIResponseInputToolChoiceMode:
type: string
enum:
- auto
- required
- none
title: OpenAIResponseInputToolChoiceMode
OpenAIResponseInputToolChoiceWebSearch:
properties:
type:
title: Type
default: web_search
type: string
enum:
- web_search
- web_search_preview
- web_search_preview_2025_03_11
- web_search_2025_08_26
search_context_size:
anyOf:
- type: string
pattern: ^low|medium|high$
- type: 'null'
default: medium
type: object
title: OpenAIResponseInputToolChoiceWebSearch
description: |-
Indicates that the model should use web search to generate a response.
This is an alias for OpenAIResponseInputToolWebSearch used in tool_choice context.
OpenAIResponseMessage-Input:
properties:
content:
@ -9183,6 +9394,131 @@ components:
- $ref: '#/components/schemas/GrammarResponseFormat'
title: GrammarResponseFormat
title: JsonSchemaResponseFormat | GrammarResponseFormat
AllowedToolsConfig:
properties:
tools:
items:
additionalProperties: true
type: object
title: Tools
type: array
mode:
enum:
- auto
- required
title: Mode
type: string
required:
- tools
- mode
title: AllowedToolsConfig
type: object
CustomToolConfig:
properties:
name:
title: Name
type: string
required:
- name
title: CustomToolConfig
type: object
FunctionToolConfig:
properties:
name:
title: Name
type: string
required:
- name
title: FunctionToolConfig
type: object
OpenAIChatCompletionToolChoiceAllowedTools:
description: Allowed tools response format for OpenAI-compatible chat completion requests.
properties:
type:
const: allowed_tools
default: allowed_tools
title: Type
type: string
allowed_tools:
$ref: '#/components/schemas/AllowedToolsConfig'
required:
- allowed_tools
title: OpenAIChatCompletionToolChoiceAllowedTools
type: object
OpenAIChatCompletionToolChoiceCustomTool:
description: Custom tool choice for OpenAI-compatible chat completion requests.
properties:
type:
const: custom
default: custom
title: Type
type: string
custom:
$ref: '#/components/schemas/CustomToolConfig'
required:
- custom
title: OpenAIChatCompletionToolChoiceCustomTool
type: object
OpenAIChatCompletionToolChoiceFunctionTool:
description: Function tool choice for OpenAI-compatible chat completion requests.
properties:
type:
const: function
default: function
title: Type
type: string
function:
$ref: '#/components/schemas/FunctionToolConfig'
required:
- function
title: OpenAIChatCompletionToolChoiceFunctionTool
type: object
OpenAIChatCompletionToolChoice:
discriminator:
mapping:
allowed_tools: '#/components/schemas/OpenAIChatCompletionToolChoiceAllowedTools'
custom: '#/components/schemas/OpenAIChatCompletionToolChoiceCustomTool'
function: '#/components/schemas/OpenAIChatCompletionToolChoiceFunctionTool'
propertyName: type
oneOf:
- $ref: '#/components/schemas/OpenAIChatCompletionToolChoiceAllowedTools'
title: OpenAIChatCompletionToolChoiceAllowedTools
- $ref: '#/components/schemas/OpenAIChatCompletionToolChoiceFunctionTool'
title: OpenAIChatCompletionToolChoiceFunctionTool
- $ref: '#/components/schemas/OpenAIChatCompletionToolChoiceCustomTool'
title: OpenAIChatCompletionToolChoiceCustomTool
title: OpenAIChatCompletionToolChoiceAllowedTools | OpenAIChatCompletionToolChoiceFunctionTool | OpenAIChatCompletionToolChoiceCustomTool
OpenAIResponseInputToolChoice:
anyOf:
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceMode'
title: OpenAIResponseInputToolChoiceMode
- discriminator:
mapping:
allowed_tools: '#/components/schemas/OpenAIResponseInputToolChoiceAllowedTools'
custom: '#/components/schemas/OpenAIResponseInputToolChoiceCustomTool'
file_search: '#/components/schemas/OpenAIResponseInputToolChoiceFileSearch'
function: '#/components/schemas/OpenAIResponseInputToolChoiceFunctionTool'
mcp: '#/components/schemas/OpenAIResponseInputToolChoiceMCPTool'
web_search: '#/components/schemas/OpenAIResponseInputToolChoiceWebSearch'
web_search_2025_08_26: '#/components/schemas/OpenAIResponseInputToolChoiceWebSearch'
web_search_preview: '#/components/schemas/OpenAIResponseInputToolChoiceWebSearch'
web_search_preview_2025_03_11: '#/components/schemas/OpenAIResponseInputToolChoiceWebSearch'
propertyName: type
oneOf:
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceAllowedTools'
title: OpenAIResponseInputToolChoiceAllowedTools
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceFileSearch'
title: OpenAIResponseInputToolChoiceFileSearch
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceWebSearch'
title: OpenAIResponseInputToolChoiceWebSearch
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceFunctionTool'
title: OpenAIResponseInputToolChoiceFunctionTool
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceMCPTool'
title: OpenAIResponseInputToolChoiceMCPTool
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceCustomTool'
title: OpenAIResponseInputToolChoiceCustomTool
title: OpenAIResponseInputToolChoiceAllowedTools | ... (6 variants)
title: OpenAIResponseInputToolChoiceMode
OpenAIResponseContentPart:
discriminator:
mapping: