mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-06-27 18:50:41 +00:00
feat: add MCP tool signature to Responses API (#2232)
This commit is contained in:
parent
8feb1827c8
commit
d8c6ab9bfc
3 changed files with 195 additions and 2 deletions
110
docs/_static/llama-stack-spec.html
vendored
110
docs/_static/llama-stack-spec.html
vendored
|
@ -6742,6 +6742,9 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$ref": "#/components/schemas/OpenAIResponseInputToolFunction"
|
"$ref": "#/components/schemas/OpenAIResponseInputToolFunction"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$ref": "#/components/schemas/OpenAIResponseInputToolMCP"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"discriminator": {
|
"discriminator": {
|
||||||
|
@ -6749,7 +6752,8 @@
|
||||||
"mapping": {
|
"mapping": {
|
||||||
"web_search": "#/components/schemas/OpenAIResponseInputToolWebSearch",
|
"web_search": "#/components/schemas/OpenAIResponseInputToolWebSearch",
|
||||||
"file_search": "#/components/schemas/OpenAIResponseInputToolFileSearch",
|
"file_search": "#/components/schemas/OpenAIResponseInputToolFileSearch",
|
||||||
"function": "#/components/schemas/OpenAIResponseInputToolFunction"
|
"function": "#/components/schemas/OpenAIResponseInputToolFunction",
|
||||||
|
"mcp": "#/components/schemas/OpenAIResponseInputToolMCP"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -6839,6 +6843,110 @@
|
||||||
],
|
],
|
||||||
"title": "OpenAIResponseInputToolFunction"
|
"title": "OpenAIResponseInputToolFunction"
|
||||||
},
|
},
|
||||||
|
"OpenAIResponseInputToolMCP": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"type": {
|
||||||
|
"type": "string",
|
||||||
|
"const": "mcp",
|
||||||
|
"default": "mcp"
|
||||||
|
},
|
||||||
|
"server_label": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"server_url": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"headers": {
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": {
|
||||||
|
"oneOf": [
|
||||||
|
{
|
||||||
|
"type": "null"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "array"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "object"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"require_approval": {
|
||||||
|
"oneOf": [
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"const": "always"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"const": "never"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"always": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"never": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"additionalProperties": false,
|
||||||
|
"title": "ApprovalFilter"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"default": "never"
|
||||||
|
},
|
||||||
|
"allowed_tools": {
|
||||||
|
"oneOf": [
|
||||||
|
{
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"tool_names": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"additionalProperties": false,
|
||||||
|
"title": "AllowedToolsFilter"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"additionalProperties": false,
|
||||||
|
"required": [
|
||||||
|
"type",
|
||||||
|
"server_label",
|
||||||
|
"server_url",
|
||||||
|
"require_approval"
|
||||||
|
],
|
||||||
|
"title": "OpenAIResponseInputToolMCP"
|
||||||
|
},
|
||||||
"OpenAIResponseInputToolWebSearch": {
|
"OpenAIResponseInputToolWebSearch": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
|
62
docs/_static/llama-stack-spec.yaml
vendored
62
docs/_static/llama-stack-spec.yaml
vendored
|
@ -4762,12 +4762,14 @@ components:
|
||||||
- $ref: '#/components/schemas/OpenAIResponseInputToolWebSearch'
|
- $ref: '#/components/schemas/OpenAIResponseInputToolWebSearch'
|
||||||
- $ref: '#/components/schemas/OpenAIResponseInputToolFileSearch'
|
- $ref: '#/components/schemas/OpenAIResponseInputToolFileSearch'
|
||||||
- $ref: '#/components/schemas/OpenAIResponseInputToolFunction'
|
- $ref: '#/components/schemas/OpenAIResponseInputToolFunction'
|
||||||
|
- $ref: '#/components/schemas/OpenAIResponseInputToolMCP'
|
||||||
discriminator:
|
discriminator:
|
||||||
propertyName: type
|
propertyName: type
|
||||||
mapping:
|
mapping:
|
||||||
web_search: '#/components/schemas/OpenAIResponseInputToolWebSearch'
|
web_search: '#/components/schemas/OpenAIResponseInputToolWebSearch'
|
||||||
file_search: '#/components/schemas/OpenAIResponseInputToolFileSearch'
|
file_search: '#/components/schemas/OpenAIResponseInputToolFileSearch'
|
||||||
function: '#/components/schemas/OpenAIResponseInputToolFunction'
|
function: '#/components/schemas/OpenAIResponseInputToolFunction'
|
||||||
|
mcp: '#/components/schemas/OpenAIResponseInputToolMCP'
|
||||||
OpenAIResponseInputToolFileSearch:
|
OpenAIResponseInputToolFileSearch:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
@ -4822,6 +4824,66 @@ components:
|
||||||
- type
|
- type
|
||||||
- name
|
- name
|
||||||
title: OpenAIResponseInputToolFunction
|
title: OpenAIResponseInputToolFunction
|
||||||
|
OpenAIResponseInputToolMCP:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
type:
|
||||||
|
type: string
|
||||||
|
const: mcp
|
||||||
|
default: mcp
|
||||||
|
server_label:
|
||||||
|
type: string
|
||||||
|
server_url:
|
||||||
|
type: string
|
||||||
|
headers:
|
||||||
|
type: object
|
||||||
|
additionalProperties:
|
||||||
|
oneOf:
|
||||||
|
- type: 'null'
|
||||||
|
- type: boolean
|
||||||
|
- type: number
|
||||||
|
- type: string
|
||||||
|
- type: array
|
||||||
|
- type: object
|
||||||
|
require_approval:
|
||||||
|
oneOf:
|
||||||
|
- type: string
|
||||||
|
const: always
|
||||||
|
- type: string
|
||||||
|
const: never
|
||||||
|
- type: object
|
||||||
|
properties:
|
||||||
|
always:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
never:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
additionalProperties: false
|
||||||
|
title: ApprovalFilter
|
||||||
|
default: never
|
||||||
|
allowed_tools:
|
||||||
|
oneOf:
|
||||||
|
- type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
- type: object
|
||||||
|
properties:
|
||||||
|
tool_names:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
additionalProperties: false
|
||||||
|
title: AllowedToolsFilter
|
||||||
|
additionalProperties: false
|
||||||
|
required:
|
||||||
|
- type
|
||||||
|
- server_label
|
||||||
|
- server_url
|
||||||
|
- require_approval
|
||||||
|
title: OpenAIResponseInputToolMCP
|
||||||
OpenAIResponseInputToolWebSearch:
|
OpenAIResponseInputToolWebSearch:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
|
|
@ -186,8 +186,31 @@ class OpenAIResponseInputToolFileSearch(BaseModel):
|
||||||
# TODO: add filters
|
# TODO: add filters
|
||||||
|
|
||||||
|
|
||||||
|
class ApprovalFilter(BaseModel):
|
||||||
|
always: list[str] | None = None
|
||||||
|
never: list[str] | None = None
|
||||||
|
|
||||||
|
|
||||||
|
class AllowedToolsFilter(BaseModel):
|
||||||
|
tool_names: list[str] | None = None
|
||||||
|
|
||||||
|
|
||||||
|
@json_schema_type
|
||||||
|
class OpenAIResponseInputToolMCP(BaseModel):
|
||||||
|
type: Literal["mcp"] = "mcp"
|
||||||
|
server_label: str
|
||||||
|
server_url: str
|
||||||
|
headers: dict[str, Any] | None = None
|
||||||
|
|
||||||
|
require_approval: Literal["always"] | Literal["never"] | ApprovalFilter = "never"
|
||||||
|
allowed_tools: list[str] | AllowedToolsFilter | None = None
|
||||||
|
|
||||||
|
|
||||||
OpenAIResponseInputTool = Annotated[
|
OpenAIResponseInputTool = Annotated[
|
||||||
OpenAIResponseInputToolWebSearch | OpenAIResponseInputToolFileSearch | OpenAIResponseInputToolFunction,
|
OpenAIResponseInputToolWebSearch
|
||||||
|
| OpenAIResponseInputToolFileSearch
|
||||||
|
| OpenAIResponseInputToolFunction
|
||||||
|
| OpenAIResponseInputToolMCP,
|
||||||
Field(discriminator="type"),
|
Field(discriminator="type"),
|
||||||
]
|
]
|
||||||
register_schema(OpenAIResponseInputTool, name="OpenAIResponseInputTool")
|
register_schema(OpenAIResponseInputTool, name="OpenAIResponseInputTool")
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue