Update spec

This commit is contained in:
Ashwin Bharambe 2025-01-13 20:06:49 -08:00
parent 9a5803a429
commit d9d34433fc
9 changed files with 118 additions and 39 deletions

View file

@ -3843,8 +3843,8 @@
"properties": { "properties": {
"role": { "role": {
"type": "string", "type": "string",
"const": "ipython", "const": "tool",
"default": "ipython" "default": "tool"
}, },
"call_id": { "call_id": {
"type": "string" "type": "string"
@ -4185,14 +4185,7 @@
"$ref": "#/components/schemas/ChatCompletionResponseEventType" "$ref": "#/components/schemas/ChatCompletionResponseEventType"
}, },
"delta": { "delta": {
"oneOf": [ "$ref": "#/components/schemas/ContentDelta"
{
"type": "string"
},
{
"$ref": "#/components/schemas/ToolCallDelta"
}
]
}, },
"logprobs": { "logprobs": {
"type": "array", "type": "array",
@ -4232,6 +4225,50 @@
], ],
"title": "SSE-stream of these events." "title": "SSE-stream of these events."
}, },
"ContentDelta": {
"oneOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "text",
"default": "text"
},
"text": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"type",
"text"
]
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "image",
"default": "image"
},
"data": {
"type": "string",
"contentEncoding": "base64"
}
},
"additionalProperties": false,
"required": [
"type",
"data"
]
},
{
"$ref": "#/components/schemas/ToolCallDelta"
}
]
},
"TokenLogProbs": { "TokenLogProbs": {
"type": "object", "type": "object",
"properties": { "properties": {
@ -4250,6 +4287,11 @@
"ToolCallDelta": { "ToolCallDelta": {
"type": "object", "type": "object",
"properties": { "properties": {
"type": {
"type": "string",
"const": "tool_call",
"default": "tool_call"
},
"content": { "content": {
"oneOf": [ "oneOf": [
{ {
@ -4266,6 +4308,7 @@
}, },
"additionalProperties": false, "additionalProperties": false,
"required": [ "required": [
"type",
"content", "content",
"parse_status" "parse_status"
] ]
@ -4275,8 +4318,8 @@
"enum": [ "enum": [
"started", "started",
"in_progress", "in_progress",
"failure", "failed",
"success" "succeeded"
] ]
}, },
"CompletionRequest": { "CompletionRequest": {
@ -4777,18 +4820,16 @@
"step_id": { "step_id": {
"type": "string" "type": "string"
}, },
"text_delta": { "delta": {
"type": "string" "$ref": "#/components/schemas/ContentDelta"
},
"tool_call_delta": {
"$ref": "#/components/schemas/ToolCallDelta"
} }
}, },
"additionalProperties": false, "additionalProperties": false,
"required": [ "required": [
"event_type", "event_type",
"step_type", "step_type",
"step_id" "step_id",
"delta"
] ]
}, },
"AgentTurnResponseStepStartPayload": { "AgentTurnResponseStepStartPayload": {
@ -8758,6 +8799,10 @@
"name": "CompletionResponseStreamChunk", "name": "CompletionResponseStreamChunk",
"description": "streamed completion response.\n\n<SchemaDefinition schemaRef=\"#/components/schemas/CompletionResponseStreamChunk\" />" "description": "streamed completion response.\n\n<SchemaDefinition schemaRef=\"#/components/schemas/CompletionResponseStreamChunk\" />"
}, },
{
"name": "ContentDelta",
"description": "<SchemaDefinition schemaRef=\"#/components/schemas/ContentDelta\" />"
},
{ {
"name": "CreateAgentRequest", "name": "CreateAgentRequest",
"description": "<SchemaDefinition schemaRef=\"#/components/schemas/CreateAgentRequest\" />" "description": "<SchemaDefinition schemaRef=\"#/components/schemas/CreateAgentRequest\" />"
@ -9392,6 +9437,7 @@
"CompletionRequest", "CompletionRequest",
"CompletionResponse", "CompletionResponse",
"CompletionResponseStreamChunk", "CompletionResponseStreamChunk",
"ContentDelta",
"CreateAgentRequest", "CreateAgentRequest",
"CreateAgentSessionRequest", "CreateAgentSessionRequest",
"CreateAgentTurnRequest", "CreateAgentTurnRequest",

View file

@ -150,6 +150,8 @@ components:
AgentTurnResponseStepProgressPayload: AgentTurnResponseStepProgressPayload:
additionalProperties: false additionalProperties: false
properties: properties:
delta:
$ref: '#/components/schemas/ContentDelta'
event_type: event_type:
const: step_progress const: step_progress
default: step_progress default: step_progress
@ -163,14 +165,11 @@ components:
- shield_call - shield_call
- memory_retrieval - memory_retrieval
type: string type: string
text_delta:
type: string
tool_call_delta:
$ref: '#/components/schemas/ToolCallDelta'
required: required:
- event_type - event_type
- step_type - step_type
- step_id - step_id
- delta
type: object type: object
AgentTurnResponseStepStartPayload: AgentTurnResponseStepStartPayload:
additionalProperties: false additionalProperties: false
@ -462,9 +461,7 @@ components:
additionalProperties: false additionalProperties: false
properties: properties:
delta: delta:
oneOf: $ref: '#/components/schemas/ContentDelta'
- type: string
- $ref: '#/components/schemas/ToolCallDelta'
event_type: event_type:
$ref: '#/components/schemas/ChatCompletionResponseEventType' $ref: '#/components/schemas/ChatCompletionResponseEventType'
logprobs: logprobs:
@ -571,6 +568,34 @@ components:
- delta - delta
title: streamed completion response. title: streamed completion response.
type: object type: object
ContentDelta:
oneOf:
- additionalProperties: false
properties:
text:
type: string
type:
const: text
default: text
type: string
required:
- type
- text
type: object
- additionalProperties: false
properties:
data:
contentEncoding: base64
type: string
type:
const: image
default: image
type: string
required:
- type
- data
type: object
- $ref: '#/components/schemas/ToolCallDelta'
CreateAgentRequest: CreateAgentRequest:
additionalProperties: false additionalProperties: false
properties: properties:
@ -2664,7 +2689,12 @@ components:
- $ref: '#/components/schemas/ToolCall' - $ref: '#/components/schemas/ToolCall'
parse_status: parse_status:
$ref: '#/components/schemas/ToolCallParseStatus' $ref: '#/components/schemas/ToolCallParseStatus'
type:
const: tool_call
default: tool_call
type: string
required: required:
- type
- content - content
- parse_status - parse_status
type: object type: object
@ -2672,8 +2702,8 @@ components:
enum: enum:
- started - started
- in_progress - in_progress
- failure - failed
- success - succeeded
type: string type: string
ToolChoice: ToolChoice:
enum: enum:
@ -2888,8 +2918,8 @@ components:
content: content:
$ref: '#/components/schemas/InterleavedContent' $ref: '#/components/schemas/InterleavedContent'
role: role:
const: ipython const: tool
default: ipython default: tool
type: string type: string
tool_name: tool_name:
oneOf: oneOf:
@ -5500,6 +5530,8 @@ tags:
<SchemaDefinition schemaRef="#/components/schemas/CompletionResponseStreamChunk" <SchemaDefinition schemaRef="#/components/schemas/CompletionResponseStreamChunk"
/>' />'
name: CompletionResponseStreamChunk name: CompletionResponseStreamChunk
- description: <SchemaDefinition schemaRef="#/components/schemas/ContentDelta" />
name: ContentDelta
- description: <SchemaDefinition schemaRef="#/components/schemas/CreateAgentRequest" - description: <SchemaDefinition schemaRef="#/components/schemas/CreateAgentRequest"
/> />
name: CreateAgentRequest name: CreateAgentRequest
@ -5939,6 +5971,7 @@ x-tagGroups:
- CompletionRequest - CompletionRequest
- CompletionResponse - CompletionResponse
- CompletionResponseStreamChunk - CompletionResponseStreamChunk
- ContentDelta
- CreateAgentRequest - CreateAgentRequest
- CreateAgentSessionRequest - CreateAgentSessionRequest
- CreateAgentTurnRequest - CreateAgentTurnRequest

View file

@ -132,7 +132,7 @@ class EventLogger:
delta = event.payload.delta delta = event.payload.delta
if delta.type == "tool_call": if delta.type == "tool_call":
if delta.parse_status == ToolCallParseStatus.success: if delta.parse_status == ToolCallParseStatus.succeeded:
yield ( yield (
event, event,
LogEvent( LogEvent(

View file

@ -415,7 +415,7 @@ class ChatAgent(ShieldRunnerMixin):
step_type=StepType.tool_execution.value, step_type=StepType.tool_execution.value,
step_id=step_id, step_id=step_id,
delta=ToolCallDelta( delta=ToolCallDelta(
parse_status=ToolCallParseStatus.success, parse_status=ToolCallParseStatus.succeeded,
content=ToolCall( content=ToolCall(
call_id="", call_id="",
tool_name=MEMORY_QUERY_TOOL, tool_name=MEMORY_QUERY_TOOL,
@ -511,7 +511,7 @@ class ChatAgent(ShieldRunnerMixin):
delta = event.delta delta = event.delta
if delta.type == "tool_call": if delta.type == "tool_call":
if delta.parse_status == ToolCallParseStatus.success: if delta.parse_status == ToolCallParseStatus.succeeded:
tool_calls.append(delta.content) tool_calls.append(delta.content)
if stream: if stream:
yield AgentTurnResponseStreamChunk( yield AgentTurnResponseStreamChunk(

View file

@ -431,7 +431,7 @@ class MetaReferenceInferenceImpl(
event_type=ChatCompletionResponseEventType.progress, event_type=ChatCompletionResponseEventType.progress,
delta=ToolCallDelta( delta=ToolCallDelta(
content="", content="",
parse_status=ToolCallParseStatus.failure, parse_status=ToolCallParseStatus.failed,
), ),
stop_reason=stop_reason, stop_reason=stop_reason,
) )
@ -443,7 +443,7 @@ class MetaReferenceInferenceImpl(
event_type=ChatCompletionResponseEventType.progress, event_type=ChatCompletionResponseEventType.progress,
delta=ToolCallDelta( delta=ToolCallDelta(
content=tool_call, content=tool_call,
parse_status=ToolCallParseStatus.success, parse_status=ToolCallParseStatus.succeeded,
), ),
stop_reason=stop_reason, stop_reason=stop_reason,
) )

View file

@ -215,7 +215,7 @@ async def convert_chat_completion_response_stream(
event_type=event_type, event_type=event_type,
delta=ToolCallDelta( delta=ToolCallDelta(
content=tool_call, content=tool_call,
parse_status=ToolCallParseStatus.success, parse_status=ToolCallParseStatus.succeeded,
), ),
) )
) )

View file

@ -501,7 +501,7 @@ async def convert_openai_chat_completion_stream(
event_type=next(event_type), event_type=next(event_type),
delta=ToolCallDelta( delta=ToolCallDelta(
content=_convert_openai_tool_calls(choice.delta.tool_calls)[0], content=_convert_openai_tool_calls(choice.delta.tool_calls)[0],
parse_status=ToolCallParseStatus.success, parse_status=ToolCallParseStatus.succeeded,
), ),
logprobs=_convert_openai_logprobs(choice.logprobs), logprobs=_convert_openai_logprobs(choice.logprobs),
) )

View file

@ -475,7 +475,7 @@ class TestInference:
last = grouped[ChatCompletionResponseEventType.progress][-1] last = grouped[ChatCompletionResponseEventType.progress][-1]
# assert last.event.stop_reason == expected_stop_reason # assert last.event.stop_reason == expected_stop_reason
assert last.event.delta.parse_status == ToolCallParseStatus.success assert last.event.delta.parse_status == ToolCallParseStatus.succeeded
assert last.event.delta.content.type == "tool_call" assert last.event.delta.content.type == "tool_call"
call = last.event.delta.content call = last.event.delta.content

View file

@ -245,7 +245,7 @@ async def process_chat_completion_stream_response(
event_type=ChatCompletionResponseEventType.progress, event_type=ChatCompletionResponseEventType.progress,
delta=ToolCallDelta( delta=ToolCallDelta(
content="", content="",
parse_status=ToolCallParseStatus.failure, parse_status=ToolCallParseStatus.failed,
), ),
stop_reason=stop_reason, stop_reason=stop_reason,
) )
@ -257,7 +257,7 @@ async def process_chat_completion_stream_response(
event_type=ChatCompletionResponseEventType.progress, event_type=ChatCompletionResponseEventType.progress,
delta=ToolCallDelta( delta=ToolCallDelta(
content=tool_call, content=tool_call,
parse_status=ToolCallParseStatus.success, parse_status=ToolCallParseStatus.succeeded,
), ),
stop_reason=stop_reason, stop_reason=stop_reason,
) )