mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-12-03 01:48:05 +00:00
feat: add reasoning and reasoning_content fields to OpenAI message types
Add support for reasoning fields in OpenAI-compatible chat completion messages to enable compatibility with vLLM reasoning parsers. Changes: - Add `reasoning_content` and `reasoning` fields to OpenAIAssistantMessageParam - Add `reasoning` field to OpenAIChoiceDelta (reasoning_content already existed) Both field names are supported for maximum compatibility: - `reasoning_content`: Used by vLLM ≤ v0.8.4 - `reasoning`: New field name in vLLM ≥ v0.9.x vLLM documentation recommends migrating to the shorter `reasoning` field name, but maintains backward compatibility with `reasoning_content`. These fields allow reasoning models to return their chain-of-thought process alongside the final answer, which is crucial for transparency and debugging with reasoning models. References: - vLLM Reasoning Outputs: https://docs.vllm.ai/en/stable/features/reasoning_outputs/ - vLLM Issue #12468: https://github.com/vllm-project/vllm/issues/12468 Signed-off-by: Charlie Doern <cdoern@redhat.com>
This commit is contained in:
parent
618c03405c
commit
b1851dc9ef
6 changed files with 162 additions and 1 deletions
|
|
@ -4151,6 +4151,16 @@ components:
|
|||
type: array
|
||||
- type: 'null'
|
||||
nullable: true
|
||||
reasoning_content:
|
||||
anyOf:
|
||||
- type: string
|
||||
- type: 'null'
|
||||
nullable: true
|
||||
reasoning:
|
||||
anyOf:
|
||||
- type: string
|
||||
- type: 'null'
|
||||
nullable: true
|
||||
title: OpenAIAssistantMessageParam
|
||||
type: object
|
||||
OpenAIChatCompletionContentPartImageParam:
|
||||
|
|
@ -4880,6 +4890,11 @@ components:
|
|||
- type: string
|
||||
- type: 'null'
|
||||
nullable: true
|
||||
reasoning:
|
||||
anyOf:
|
||||
- type: string
|
||||
- type: 'null'
|
||||
nullable: true
|
||||
title: OpenAIChoiceDelta
|
||||
type: object
|
||||
OpenAIChunkChoice:
|
||||
|
|
@ -11747,6 +11762,14 @@ components:
|
|||
$ref: '#/components/schemas/OpenAIChatCompletionToolCall'
|
||||
type: array
|
||||
- type: 'null'
|
||||
reasoning_content:
|
||||
anyOf:
|
||||
- type: string
|
||||
- type: 'null'
|
||||
reasoning:
|
||||
anyOf:
|
||||
- type: string
|
||||
- type: 'null'
|
||||
type: object
|
||||
title: OpenAIAssistantMessageParam
|
||||
description: A message containing the model's (assistant) response in an OpenAI-compatible chat completion request.
|
||||
|
|
@ -11776,6 +11799,14 @@ components:
|
|||
$ref: '#/components/schemas/OpenAIChatCompletionToolCall'
|
||||
type: array
|
||||
- type: 'null'
|
||||
reasoning_content:
|
||||
anyOf:
|
||||
- type: string
|
||||
- type: 'null'
|
||||
reasoning:
|
||||
anyOf:
|
||||
- type: string
|
||||
- type: 'null'
|
||||
type: object
|
||||
title: OpenAIAssistantMessageParam
|
||||
description: A message containing the model's (assistant) response in an OpenAI-compatible chat completion request.
|
||||
|
|
|
|||
31
docs/static/deprecated-llama-stack-spec.yaml
vendored
31
docs/static/deprecated-llama-stack-spec.yaml
vendored
|
|
@ -994,6 +994,16 @@ components:
|
|||
type: array
|
||||
- type: 'null'
|
||||
nullable: true
|
||||
reasoning_content:
|
||||
anyOf:
|
||||
- type: string
|
||||
- type: 'null'
|
||||
nullable: true
|
||||
reasoning:
|
||||
anyOf:
|
||||
- type: string
|
||||
- type: 'null'
|
||||
nullable: true
|
||||
title: OpenAIAssistantMessageParam
|
||||
type: object
|
||||
OpenAIChatCompletionContentPartImageParam:
|
||||
|
|
@ -1723,6 +1733,11 @@ components:
|
|||
- type: string
|
||||
- type: 'null'
|
||||
nullable: true
|
||||
reasoning:
|
||||
anyOf:
|
||||
- type: string
|
||||
- type: 'null'
|
||||
nullable: true
|
||||
title: OpenAIChoiceDelta
|
||||
type: object
|
||||
OpenAIChunkChoice:
|
||||
|
|
@ -8590,6 +8605,14 @@ components:
|
|||
$ref: '#/components/schemas/OpenAIChatCompletionToolCall'
|
||||
type: array
|
||||
- type: 'null'
|
||||
reasoning_content:
|
||||
anyOf:
|
||||
- type: string
|
||||
- type: 'null'
|
||||
reasoning:
|
||||
anyOf:
|
||||
- type: string
|
||||
- type: 'null'
|
||||
type: object
|
||||
title: OpenAIAssistantMessageParam
|
||||
description: A message containing the model's (assistant) response in an OpenAI-compatible chat completion request.
|
||||
|
|
@ -8619,6 +8642,14 @@ components:
|
|||
$ref: '#/components/schemas/OpenAIChatCompletionToolCall'
|
||||
type: array
|
||||
- type: 'null'
|
||||
reasoning_content:
|
||||
anyOf:
|
||||
- type: string
|
||||
- type: 'null'
|
||||
reasoning:
|
||||
anyOf:
|
||||
- type: string
|
||||
- type: 'null'
|
||||
type: object
|
||||
title: OpenAIAssistantMessageParam
|
||||
description: A message containing the model's (assistant) response in an OpenAI-compatible chat completion request.
|
||||
|
|
|
|||
31
docs/static/experimental-llama-stack-spec.yaml
vendored
31
docs/static/experimental-llama-stack-spec.yaml
vendored
|
|
@ -859,6 +859,16 @@ components:
|
|||
type: array
|
||||
- type: 'null'
|
||||
nullable: true
|
||||
reasoning_content:
|
||||
anyOf:
|
||||
- type: string
|
||||
- type: 'null'
|
||||
nullable: true
|
||||
reasoning:
|
||||
anyOf:
|
||||
- type: string
|
||||
- type: 'null'
|
||||
nullable: true
|
||||
title: OpenAIAssistantMessageParam
|
||||
type: object
|
||||
OpenAIChatCompletionContentPartImageParam:
|
||||
|
|
@ -1588,6 +1598,11 @@ components:
|
|||
- type: string
|
||||
- type: 'null'
|
||||
nullable: true
|
||||
reasoning:
|
||||
anyOf:
|
||||
- type: string
|
||||
- type: 'null'
|
||||
nullable: true
|
||||
title: OpenAIChoiceDelta
|
||||
type: object
|
||||
OpenAIChunkChoice:
|
||||
|
|
@ -7582,6 +7597,14 @@ components:
|
|||
$ref: '#/components/schemas/OpenAIChatCompletionToolCall'
|
||||
type: array
|
||||
- type: 'null'
|
||||
reasoning_content:
|
||||
anyOf:
|
||||
- type: string
|
||||
- type: 'null'
|
||||
reasoning:
|
||||
anyOf:
|
||||
- type: string
|
||||
- type: 'null'
|
||||
type: object
|
||||
title: OpenAIAssistantMessageParam
|
||||
description: A message containing the model's (assistant) response in an OpenAI-compatible chat completion request.
|
||||
|
|
@ -7611,6 +7634,14 @@ components:
|
|||
$ref: '#/components/schemas/OpenAIChatCompletionToolCall'
|
||||
type: array
|
||||
- type: 'null'
|
||||
reasoning_content:
|
||||
anyOf:
|
||||
- type: string
|
||||
- type: 'null'
|
||||
reasoning:
|
||||
anyOf:
|
||||
- type: string
|
||||
- type: 'null'
|
||||
type: object
|
||||
title: OpenAIAssistantMessageParam
|
||||
description: A message containing the model's (assistant) response in an OpenAI-compatible chat completion request.
|
||||
|
|
|
|||
31
docs/static/llama-stack-spec.yaml
vendored
31
docs/static/llama-stack-spec.yaml
vendored
|
|
@ -3172,6 +3172,16 @@ components:
|
|||
type: array
|
||||
- type: 'null'
|
||||
nullable: true
|
||||
reasoning_content:
|
||||
anyOf:
|
||||
- type: string
|
||||
- type: 'null'
|
||||
nullable: true
|
||||
reasoning:
|
||||
anyOf:
|
||||
- type: string
|
||||
- type: 'null'
|
||||
nullable: true
|
||||
title: OpenAIAssistantMessageParam
|
||||
type: object
|
||||
OpenAIChatCompletionContentPartImageParam:
|
||||
|
|
@ -3901,6 +3911,11 @@ components:
|
|||
- type: string
|
||||
- type: 'null'
|
||||
nullable: true
|
||||
reasoning:
|
||||
anyOf:
|
||||
- type: string
|
||||
- type: 'null'
|
||||
nullable: true
|
||||
title: OpenAIChoiceDelta
|
||||
type: object
|
||||
OpenAIChunkChoice:
|
||||
|
|
@ -10417,6 +10432,14 @@ components:
|
|||
$ref: '#/components/schemas/OpenAIChatCompletionToolCall'
|
||||
type: array
|
||||
- type: 'null'
|
||||
reasoning_content:
|
||||
anyOf:
|
||||
- type: string
|
||||
- type: 'null'
|
||||
reasoning:
|
||||
anyOf:
|
||||
- type: string
|
||||
- type: 'null'
|
||||
type: object
|
||||
title: OpenAIAssistantMessageParam
|
||||
description: A message containing the model's (assistant) response in an OpenAI-compatible chat completion request.
|
||||
|
|
@ -10446,6 +10469,14 @@ components:
|
|||
$ref: '#/components/schemas/OpenAIChatCompletionToolCall'
|
||||
type: array
|
||||
- type: 'null'
|
||||
reasoning_content:
|
||||
anyOf:
|
||||
- type: string
|
||||
- type: 'null'
|
||||
reasoning:
|
||||
anyOf:
|
||||
- type: string
|
||||
- type: 'null'
|
||||
type: object
|
||||
title: OpenAIAssistantMessageParam
|
||||
description: A message containing the model's (assistant) response in an OpenAI-compatible chat completion request.
|
||||
|
|
|
|||
31
docs/static/stainless-llama-stack-spec.yaml
vendored
31
docs/static/stainless-llama-stack-spec.yaml
vendored
|
|
@ -4151,6 +4151,16 @@ components:
|
|||
type: array
|
||||
- type: 'null'
|
||||
nullable: true
|
||||
reasoning_content:
|
||||
anyOf:
|
||||
- type: string
|
||||
- type: 'null'
|
||||
nullable: true
|
||||
reasoning:
|
||||
anyOf:
|
||||
- type: string
|
||||
- type: 'null'
|
||||
nullable: true
|
||||
title: OpenAIAssistantMessageParam
|
||||
type: object
|
||||
OpenAIChatCompletionContentPartImageParam:
|
||||
|
|
@ -4880,6 +4890,11 @@ components:
|
|||
- type: string
|
||||
- type: 'null'
|
||||
nullable: true
|
||||
reasoning:
|
||||
anyOf:
|
||||
- type: string
|
||||
- type: 'null'
|
||||
nullable: true
|
||||
title: OpenAIChoiceDelta
|
||||
type: object
|
||||
OpenAIChunkChoice:
|
||||
|
|
@ -11747,6 +11762,14 @@ components:
|
|||
$ref: '#/components/schemas/OpenAIChatCompletionToolCall'
|
||||
type: array
|
||||
- type: 'null'
|
||||
reasoning_content:
|
||||
anyOf:
|
||||
- type: string
|
||||
- type: 'null'
|
||||
reasoning:
|
||||
anyOf:
|
||||
- type: string
|
||||
- type: 'null'
|
||||
type: object
|
||||
title: OpenAIAssistantMessageParam
|
||||
description: A message containing the model's (assistant) response in an OpenAI-compatible chat completion request.
|
||||
|
|
@ -11776,6 +11799,14 @@ components:
|
|||
$ref: '#/components/schemas/OpenAIChatCompletionToolCall'
|
||||
type: array
|
||||
- type: 'null'
|
||||
reasoning_content:
|
||||
anyOf:
|
||||
- type: string
|
||||
- type: 'null'
|
||||
reasoning:
|
||||
anyOf:
|
||||
- type: string
|
||||
- type: 'null'
|
||||
type: object
|
||||
title: OpenAIAssistantMessageParam
|
||||
description: A message containing the model's (assistant) response in an OpenAI-compatible chat completion request.
|
||||
|
|
|
|||
|
|
@ -448,12 +448,16 @@ class OpenAIAssistantMessageParam(BaseModel):
|
|||
:param content: The content of the model's response
|
||||
:param name: (Optional) The name of the assistant message participant.
|
||||
:param tool_calls: List of tool calls. Each tool call is an OpenAIChatCompletionToolCall object.
|
||||
:param reasoning_content: (Optional) The reasoning content from the model (for vLLM ≤ v0.8.4)
|
||||
:param reasoning: (Optional) The reasoning content from the model (for vLLM ≥ v0.9.x)
|
||||
"""
|
||||
|
||||
role: Literal["assistant"] = "assistant"
|
||||
content: OpenAIChatCompletionTextOnlyMessageContent | None = None
|
||||
name: str | None = None
|
||||
tool_calls: list[OpenAIChatCompletionToolCall] | None = None
|
||||
reasoning_content: str | None = None
|
||||
reasoning: str | None = None
|
||||
|
||||
|
||||
@json_schema_type
|
||||
|
|
@ -605,7 +609,8 @@ class OpenAIChoiceDelta(BaseModel):
|
|||
:param refusal: (Optional) The refusal of the delta
|
||||
:param role: (Optional) The role of the delta
|
||||
:param tool_calls: (Optional) The tool calls of the delta
|
||||
:param reasoning_content: (Optional) The reasoning content from the model (non-standard, for o1/o3 models)
|
||||
:param reasoning_content: (Optional) The reasoning content from the model (for vLLM ≤ v0.8.4)
|
||||
:param reasoning: (Optional) The reasoning content from the model (for vLLM ≥ v0.9.x)
|
||||
"""
|
||||
|
||||
content: str | None = None
|
||||
|
|
@ -613,6 +618,7 @@ class OpenAIChoiceDelta(BaseModel):
|
|||
role: str | None = None
|
||||
tool_calls: list[OpenAIChatCompletionToolCall] | None = None
|
||||
reasoning_content: str | None = None
|
||||
reasoning: str | None = None
|
||||
|
||||
|
||||
@json_schema_type
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue