Skip to content

Commit e6a6574

Browse files
committed
feat: add support for tool_choice to repsponses api
Signed-off-by: Jaideep Rao <[email protected]>
1 parent dabebdd commit e6a6574

File tree

18 files changed

+50076
-1
lines changed

18 files changed

+50076
-1
lines changed

client-sdks/stainless/openapi.yml

Lines changed: 336 additions & 0 deletions
Large diffs are not rendered by default.

docs/static/deprecated-llama-stack-spec.html

Lines changed: 14419 additions & 0 deletions
Large diffs are not rendered by default.

docs/static/deprecated-llama-stack-spec.yaml

Lines changed: 336 additions & 0 deletions
Large diffs are not rendered by default.

docs/static/experimental-llama-stack-spec.yaml

Lines changed: 304 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3318,6 +3318,38 @@ components:
33183318
title: OpenAIResponseInputToolWebSearch | ... (4 variants)
33193319
type: array
33203320
- type: 'null'
3321+
tool_choice:
3322+
anyOf:
3323+
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceMode'
3324+
title: OpenAIResponseInputToolChoiceMode
3325+
- oneOf:
3326+
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceAllowedTools'
3327+
title: OpenAIResponseInputToolChoiceAllowedTools
3328+
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceFileSearch'
3329+
title: OpenAIResponseInputToolChoiceFileSearch
3330+
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceWebSearch'
3331+
title: OpenAIResponseInputToolChoiceWebSearch
3332+
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceFunctionTool'
3333+
title: OpenAIResponseInputToolChoiceFunctionTool
3334+
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceMCPTool'
3335+
title: OpenAIResponseInputToolChoiceMCPTool
3336+
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceCustomTool'
3337+
title: OpenAIResponseInputToolChoiceCustomTool
3338+
discriminator:
3339+
propertyName: type
3340+
mapping:
3341+
allowed_tools: '#/components/schemas/OpenAIResponseInputToolChoiceAllowedTools'
3342+
custom: '#/components/schemas/OpenAIResponseInputToolChoiceCustomTool'
3343+
file_search: '#/components/schemas/OpenAIResponseInputToolChoiceFileSearch'
3344+
function: '#/components/schemas/OpenAIResponseInputToolChoiceFunctionTool'
3345+
mcp: '#/components/schemas/OpenAIResponseInputToolChoiceMCPTool'
3346+
web_search: '#/components/schemas/OpenAIResponseInputToolChoiceWebSearch'
3347+
web_search_2025_08_26: '#/components/schemas/OpenAIResponseInputToolChoiceWebSearch'
3348+
web_search_preview: '#/components/schemas/OpenAIResponseInputToolChoiceWebSearch'
3349+
web_search_preview_2025_03_11: '#/components/schemas/OpenAIResponseInputToolChoiceWebSearch'
3350+
title: OpenAIResponseInputToolChoiceAllowedTools | ... (6 variants)
3351+
- type: 'null'
3352+
title: OpenAIResponseInputToolChoiceMode
33213353
truncation:
33223354
anyOf:
33233355
- type: string
@@ -3718,6 +3750,38 @@ components:
37183750
title: OpenAIResponseInputToolWebSearch | ... (4 variants)
37193751
type: array
37203752
- type: 'null'
3753+
tool_choice:
3754+
anyOf:
3755+
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceMode'
3756+
title: OpenAIResponseInputToolChoiceMode
3757+
- oneOf:
3758+
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceAllowedTools'
3759+
title: OpenAIResponseInputToolChoiceAllowedTools
3760+
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceFileSearch'
3761+
title: OpenAIResponseInputToolChoiceFileSearch
3762+
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceWebSearch'
3763+
title: OpenAIResponseInputToolChoiceWebSearch
3764+
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceFunctionTool'
3765+
title: OpenAIResponseInputToolChoiceFunctionTool
3766+
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceMCPTool'
3767+
title: OpenAIResponseInputToolChoiceMCPTool
3768+
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceCustomTool'
3769+
title: OpenAIResponseInputToolChoiceCustomTool
3770+
discriminator:
3771+
propertyName: type
3772+
mapping:
3773+
allowed_tools: '#/components/schemas/OpenAIResponseInputToolChoiceAllowedTools'
3774+
custom: '#/components/schemas/OpenAIResponseInputToolChoiceCustomTool'
3775+
file_search: '#/components/schemas/OpenAIResponseInputToolChoiceFileSearch'
3776+
function: '#/components/schemas/OpenAIResponseInputToolChoiceFunctionTool'
3777+
mcp: '#/components/schemas/OpenAIResponseInputToolChoiceMCPTool'
3778+
web_search: '#/components/schemas/OpenAIResponseInputToolChoiceWebSearch'
3779+
web_search_2025_08_26: '#/components/schemas/OpenAIResponseInputToolChoiceWebSearch'
3780+
web_search_preview: '#/components/schemas/OpenAIResponseInputToolChoiceWebSearch'
3781+
web_search_preview_2025_03_11: '#/components/schemas/OpenAIResponseInputToolChoiceWebSearch'
3782+
title: OpenAIResponseInputToolChoiceAllowedTools | ... (6 variants)
3783+
- type: 'null'
3784+
title: OpenAIResponseInputToolChoiceMode
37213785
truncation:
37223786
anyOf:
37233787
- type: string
@@ -7620,6 +7684,121 @@ components:
76207684
type: object
76217685
title: OpenAIChatCompletionUsagePromptTokensDetails
76227686
description: Token details for prompt tokens in OpenAI chat completion usage.
7687+
OpenAIResponseInputToolChoiceAllowedTools:
7688+
properties:
7689+
mode:
7690+
type: string
7691+
enum:
7692+
- auto
7693+
- required
7694+
title: Mode
7695+
default: auto
7696+
tools:
7697+
items:
7698+
additionalProperties:
7699+
type: string
7700+
type: object
7701+
type: array
7702+
title: Tools
7703+
type:
7704+
type: string
7705+
const: allowed_tools
7706+
title: Type
7707+
default: allowed_tools
7708+
type: object
7709+
required:
7710+
- tools
7711+
title: OpenAIResponseInputToolChoiceAllowedTools
7712+
description: Constrains the tools available to the model to a pre-defined set.
7713+
OpenAIResponseInputToolChoiceCustomTool:
7714+
properties:
7715+
type:
7716+
type: string
7717+
const: custom
7718+
title: Type
7719+
default: custom
7720+
name:
7721+
type: string
7722+
title: Name
7723+
type: object
7724+
required:
7725+
- name
7726+
title: OpenAIResponseInputToolChoiceCustomTool
7727+
description: Forces the model to call a custom tool.
7728+
OpenAIResponseInputToolChoiceFileSearch:
7729+
properties:
7730+
type:
7731+
type: string
7732+
const: file_search
7733+
title: Type
7734+
default: file_search
7735+
type: object
7736+
title: OpenAIResponseInputToolChoiceFileSearch
7737+
description: Indicates that the model should use file search to generate a response.
7738+
OpenAIResponseInputToolChoiceFunctionTool:
7739+
properties:
7740+
name:
7741+
type: string
7742+
title: Name
7743+
type:
7744+
type: string
7745+
const: function
7746+
title: Type
7747+
default: function
7748+
type: object
7749+
required:
7750+
- name
7751+
title: OpenAIResponseInputToolChoiceFunctionTool
7752+
description: Forces the model to call a specific function.
7753+
OpenAIResponseInputToolChoiceMCPTool:
7754+
properties:
7755+
server_label:
7756+
type: string
7757+
title: Server Label
7758+
type:
7759+
type: string
7760+
const: mcp
7761+
title: Type
7762+
default: mcp
7763+
name:
7764+
anyOf:
7765+
- type: string
7766+
- type: 'null'
7767+
type: object
7768+
required:
7769+
- server_label
7770+
title: OpenAIResponseInputToolChoiceMCPTool
7771+
description: Forces the model to call a specific tool on a remote MCP server
7772+
OpenAIResponseInputToolChoiceMode:
7773+
type: string
7774+
enum:
7775+
- auto
7776+
- required
7777+
- none
7778+
title: OpenAIResponseInputToolChoiceMode
7779+
OpenAIResponseInputToolChoiceWebSearch:
7780+
properties:
7781+
type:
7782+
title: Type
7783+
default: web_search
7784+
type: string
7785+
enum:
7786+
- web_search
7787+
- web_search_preview
7788+
- web_search_preview_2025_03_11
7789+
- web_search_2025_08_26
7790+
search_context_size:
7791+
anyOf:
7792+
- type: string
7793+
pattern: ^low|medium|high$
7794+
- type: 'null'
7795+
default: medium
7796+
type: object
7797+
title: OpenAIResponseInputToolChoiceWebSearch
7798+
description: |-
7799+
Indicates that the model should use web search to generate a response.
7800+
7801+
This is an alias for OpenAIResponseInputToolWebSearch used in tool_choice context.
76237802
OpenAIResponseMessage-Output:
76247803
properties:
76257804
content:
@@ -7937,6 +8116,131 @@ components:
79378116
- $ref: '#/components/schemas/GrammarResponseFormat'
79388117
title: GrammarResponseFormat
79398118
title: JsonSchemaResponseFormat | GrammarResponseFormat
8119+
AllowedToolsConfig:
8120+
properties:
8121+
tools:
8122+
items:
8123+
additionalProperties: true
8124+
type: object
8125+
title: Tools
8126+
type: array
8127+
mode:
8128+
enum:
8129+
- auto
8130+
- required
8131+
title: Mode
8132+
type: string
8133+
required:
8134+
- tools
8135+
- mode
8136+
title: AllowedToolsConfig
8137+
type: object
8138+
CustomToolConfig:
8139+
properties:
8140+
name:
8141+
title: Name
8142+
type: string
8143+
required:
8144+
- name
8145+
title: CustomToolConfig
8146+
type: object
8147+
FunctionToolConfig:
8148+
properties:
8149+
name:
8150+
title: Name
8151+
type: string
8152+
required:
8153+
- name
8154+
title: FunctionToolConfig
8155+
type: object
8156+
OpenAIChatCompletionToolChoiceAllowedTools:
8157+
description: Allowed tools response format for OpenAI-compatible chat completion requests.
8158+
properties:
8159+
type:
8160+
const: allowed_tools
8161+
default: allowed_tools
8162+
title: Type
8163+
type: string
8164+
allowed_tools:
8165+
$ref: '#/components/schemas/AllowedToolsConfig'
8166+
required:
8167+
- allowed_tools
8168+
title: OpenAIChatCompletionToolChoiceAllowedTools
8169+
type: object
8170+
OpenAIChatCompletionToolChoiceCustomTool:
8171+
description: Custom tool choice for OpenAI-compatible chat completion requests.
8172+
properties:
8173+
type:
8174+
const: custom
8175+
default: custom
8176+
title: Type
8177+
type: string
8178+
custom:
8179+
$ref: '#/components/schemas/CustomToolConfig'
8180+
required:
8181+
- custom
8182+
title: OpenAIChatCompletionToolChoiceCustomTool
8183+
type: object
8184+
OpenAIChatCompletionToolChoiceFunctionTool:
8185+
description: Function tool choice for OpenAI-compatible chat completion requests.
8186+
properties:
8187+
type:
8188+
const: function
8189+
default: function
8190+
title: Type
8191+
type: string
8192+
function:
8193+
$ref: '#/components/schemas/FunctionToolConfig'
8194+
required:
8195+
- function
8196+
title: OpenAIChatCompletionToolChoiceFunctionTool
8197+
type: object
8198+
OpenAIChatCompletionToolChoice:
8199+
discriminator:
8200+
mapping:
8201+
allowed_tools: '#/components/schemas/OpenAIChatCompletionToolChoiceAllowedTools'
8202+
custom: '#/components/schemas/OpenAIChatCompletionToolChoiceCustomTool'
8203+
function: '#/components/schemas/OpenAIChatCompletionToolChoiceFunctionTool'
8204+
propertyName: type
8205+
oneOf:
8206+
- $ref: '#/components/schemas/OpenAIChatCompletionToolChoiceAllowedTools'
8207+
title: OpenAIChatCompletionToolChoiceAllowedTools
8208+
- $ref: '#/components/schemas/OpenAIChatCompletionToolChoiceFunctionTool'
8209+
title: OpenAIChatCompletionToolChoiceFunctionTool
8210+
- $ref: '#/components/schemas/OpenAIChatCompletionToolChoiceCustomTool'
8211+
title: OpenAIChatCompletionToolChoiceCustomTool
8212+
title: OpenAIChatCompletionToolChoiceAllowedTools | OpenAIChatCompletionToolChoiceFunctionTool | OpenAIChatCompletionToolChoiceCustomTool
8213+
OpenAIResponseInputToolChoice:
8214+
anyOf:
8215+
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceMode'
8216+
title: OpenAIResponseInputToolChoiceMode
8217+
- discriminator:
8218+
mapping:
8219+
allowed_tools: '#/components/schemas/OpenAIResponseInputToolChoiceAllowedTools'
8220+
custom: '#/components/schemas/OpenAIResponseInputToolChoiceCustomTool'
8221+
file_search: '#/components/schemas/OpenAIResponseInputToolChoiceFileSearch'
8222+
function: '#/components/schemas/OpenAIResponseInputToolChoiceFunctionTool'
8223+
mcp: '#/components/schemas/OpenAIResponseInputToolChoiceMCPTool'
8224+
web_search: '#/components/schemas/OpenAIResponseInputToolChoiceWebSearch'
8225+
web_search_2025_08_26: '#/components/schemas/OpenAIResponseInputToolChoiceWebSearch'
8226+
web_search_preview: '#/components/schemas/OpenAIResponseInputToolChoiceWebSearch'
8227+
web_search_preview_2025_03_11: '#/components/schemas/OpenAIResponseInputToolChoiceWebSearch'
8228+
propertyName: type
8229+
oneOf:
8230+
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceAllowedTools'
8231+
title: OpenAIResponseInputToolChoiceAllowedTools
8232+
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceFileSearch'
8233+
title: OpenAIResponseInputToolChoiceFileSearch
8234+
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceWebSearch'
8235+
title: OpenAIResponseInputToolChoiceWebSearch
8236+
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceFunctionTool'
8237+
title: OpenAIResponseInputToolChoiceFunctionTool
8238+
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceMCPTool'
8239+
title: OpenAIResponseInputToolChoiceMCPTool
8240+
- $ref: '#/components/schemas/OpenAIResponseInputToolChoiceCustomTool'
8241+
title: OpenAIResponseInputToolChoiceCustomTool
8242+
title: OpenAIResponseInputToolChoiceAllowedTools | ... (6 variants)
8243+
title: OpenAIResponseInputToolChoiceMode
79408244
OpenAIResponseContentPart:
79418245
discriminator:
79428246
mapping:

0 commit comments

Comments
 (0)