mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-10-18 15:27:16 +00:00
feat(responses)!: improve responses + conversations implementations (#3810)
This PR updates the Conversation item related types and improves a couple critical parts of the implemenation: - it creates a streaming output item for the final assistant message output by the model. until now we only added content parts and included that message in the final response. - rewrites the conversation update code completely to account for items other than messages (tool calls, outputs, etc.) ## Test Plan Used the test script from https://github.com/llamastack/llama-stack-client-python/pull/281 for this ``` TEST_API_BASE_URL=http://localhost:8321/v1 \ pytest tests/integration/test_agent_turn_step_events.py::test_client_side_function_tool -xvs ```
This commit is contained in:
parent
add8cd801b
commit
e9b4278a51
129 changed files with 86266 additions and 903 deletions
160
docs/static/llama-stack-spec.yaml
vendored
160
docs/static/llama-stack-spec.yaml
vendored
|
@ -4153,18 +4153,24 @@ components:
|
|||
ConversationItem:
|
||||
oneOf:
|
||||
- $ref: '#/components/schemas/OpenAIResponseMessage'
|
||||
- $ref: '#/components/schemas/OpenAIResponseOutputMessageFunctionToolCall'
|
||||
- $ref: '#/components/schemas/OpenAIResponseOutputMessageFileSearchToolCall'
|
||||
- $ref: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall'
|
||||
- $ref: '#/components/schemas/OpenAIResponseOutputMessageFileSearchToolCall'
|
||||
- $ref: '#/components/schemas/OpenAIResponseOutputMessageFunctionToolCall'
|
||||
- $ref: '#/components/schemas/OpenAIResponseInputFunctionToolCallOutput'
|
||||
- $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest'
|
||||
- $ref: '#/components/schemas/OpenAIResponseMCPApprovalResponse'
|
||||
- $ref: '#/components/schemas/OpenAIResponseOutputMessageMCPCall'
|
||||
- $ref: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools'
|
||||
discriminator:
|
||||
propertyName: type
|
||||
mapping:
|
||||
message: '#/components/schemas/OpenAIResponseMessage'
|
||||
function_call: '#/components/schemas/OpenAIResponseOutputMessageFunctionToolCall'
|
||||
file_search_call: '#/components/schemas/OpenAIResponseOutputMessageFileSearchToolCall'
|
||||
web_search_call: '#/components/schemas/OpenAIResponseOutputMessageWebSearchToolCall'
|
||||
file_search_call: '#/components/schemas/OpenAIResponseOutputMessageFileSearchToolCall'
|
||||
function_call: '#/components/schemas/OpenAIResponseOutputMessageFunctionToolCall'
|
||||
function_call_output: '#/components/schemas/OpenAIResponseInputFunctionToolCallOutput'
|
||||
mcp_approval_request: '#/components/schemas/OpenAIResponseMCPApprovalRequest'
|
||||
mcp_approval_response: '#/components/schemas/OpenAIResponseMCPApprovalResponse'
|
||||
mcp_call: '#/components/schemas/OpenAIResponseOutputMessageMCPCall'
|
||||
mcp_list_tools: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools'
|
||||
OpenAIResponseAnnotationCitation:
|
||||
|
@ -4285,6 +4291,31 @@ components:
|
|||
url_citation: '#/components/schemas/OpenAIResponseAnnotationCitation'
|
||||
container_file_citation: '#/components/schemas/OpenAIResponseAnnotationContainerFileCitation'
|
||||
file_path: '#/components/schemas/OpenAIResponseAnnotationFilePath'
|
||||
"OpenAIResponseInputFunctionToolCallOutput":
|
||||
type: object
|
||||
properties:
|
||||
call_id:
|
||||
type: string
|
||||
output:
|
||||
type: string
|
||||
type:
|
||||
type: string
|
||||
const: function_call_output
|
||||
default: function_call_output
|
||||
id:
|
||||
type: string
|
||||
status:
|
||||
type: string
|
||||
additionalProperties: false
|
||||
required:
|
||||
- call_id
|
||||
- output
|
||||
- type
|
||||
title: >-
|
||||
OpenAIResponseInputFunctionToolCallOutput
|
||||
description: >-
|
||||
This represents the output of a function call that gets passed back to the
|
||||
model.
|
||||
OpenAIResponseInputMessageContent:
|
||||
oneOf:
|
||||
- $ref: '#/components/schemas/OpenAIResponseInputMessageContentText'
|
||||
|
@ -4343,6 +4374,53 @@ components:
|
|||
title: OpenAIResponseInputMessageContentText
|
||||
description: >-
|
||||
Text content for input messages in OpenAI response format.
|
||||
OpenAIResponseMCPApprovalRequest:
|
||||
type: object
|
||||
properties:
|
||||
arguments:
|
||||
type: string
|
||||
id:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
server_label:
|
||||
type: string
|
||||
type:
|
||||
type: string
|
||||
const: mcp_approval_request
|
||||
default: mcp_approval_request
|
||||
additionalProperties: false
|
||||
required:
|
||||
- arguments
|
||||
- id
|
||||
- name
|
||||
- server_label
|
||||
- type
|
||||
title: OpenAIResponseMCPApprovalRequest
|
||||
description: >-
|
||||
A request for human approval of a tool invocation.
|
||||
OpenAIResponseMCPApprovalResponse:
|
||||
type: object
|
||||
properties:
|
||||
approval_request_id:
|
||||
type: string
|
||||
approve:
|
||||
type: boolean
|
||||
type:
|
||||
type: string
|
||||
const: mcp_approval_response
|
||||
default: mcp_approval_response
|
||||
id:
|
||||
type: string
|
||||
reason:
|
||||
type: string
|
||||
additionalProperties: false
|
||||
required:
|
||||
- approval_request_id
|
||||
- approve
|
||||
- type
|
||||
title: OpenAIResponseMCPApprovalResponse
|
||||
description: A response to an MCP approval request.
|
||||
OpenAIResponseMessage:
|
||||
type: object
|
||||
properties:
|
||||
|
@ -5500,32 +5578,9 @@ components:
|
|||
- $ref: '#/components/schemas/OpenAIResponseInputFunctionToolCallOutput'
|
||||
- $ref: '#/components/schemas/OpenAIResponseMCPApprovalRequest'
|
||||
- $ref: '#/components/schemas/OpenAIResponseMCPApprovalResponse'
|
||||
- $ref: '#/components/schemas/OpenAIResponseOutputMessageMCPCall'
|
||||
- $ref: '#/components/schemas/OpenAIResponseOutputMessageMCPListTools'
|
||||
- $ref: '#/components/schemas/OpenAIResponseMessage'
|
||||
"OpenAIResponseInputFunctionToolCallOutput":
|
||||
type: object
|
||||
properties:
|
||||
call_id:
|
||||
type: string
|
||||
output:
|
||||
type: string
|
||||
type:
|
||||
type: string
|
||||
const: function_call_output
|
||||
default: function_call_output
|
||||
id:
|
||||
type: string
|
||||
status:
|
||||
type: string
|
||||
additionalProperties: false
|
||||
required:
|
||||
- call_id
|
||||
- output
|
||||
- type
|
||||
title: >-
|
||||
OpenAIResponseInputFunctionToolCallOutput
|
||||
description: >-
|
||||
This represents the output of a function call that gets passed back to the
|
||||
model.
|
||||
OpenAIResponseInputToolFileSearch:
|
||||
type: object
|
||||
properties:
|
||||
|
@ -5642,53 +5697,6 @@ components:
|
|||
title: OpenAIResponseInputToolWebSearch
|
||||
description: >-
|
||||
Web search tool configuration for OpenAI response inputs.
|
||||
OpenAIResponseMCPApprovalRequest:
|
||||
type: object
|
||||
properties:
|
||||
arguments:
|
||||
type: string
|
||||
id:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
server_label:
|
||||
type: string
|
||||
type:
|
||||
type: string
|
||||
const: mcp_approval_request
|
||||
default: mcp_approval_request
|
||||
additionalProperties: false
|
||||
required:
|
||||
- arguments
|
||||
- id
|
||||
- name
|
||||
- server_label
|
||||
- type
|
||||
title: OpenAIResponseMCPApprovalRequest
|
||||
description: >-
|
||||
A request for human approval of a tool invocation.
|
||||
OpenAIResponseMCPApprovalResponse:
|
||||
type: object
|
||||
properties:
|
||||
approval_request_id:
|
||||
type: string
|
||||
approve:
|
||||
type: boolean
|
||||
type:
|
||||
type: string
|
||||
const: mcp_approval_response
|
||||
default: mcp_approval_response
|
||||
id:
|
||||
type: string
|
||||
reason:
|
||||
type: string
|
||||
additionalProperties: false
|
||||
required:
|
||||
- approval_request_id
|
||||
- approve
|
||||
- type
|
||||
title: OpenAIResponseMCPApprovalResponse
|
||||
description: A response to an MCP approval request.
|
||||
OpenAIResponseObjectWithInput:
|
||||
type: object
|
||||
properties:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue