Appearance
GPT-5.4 系列(gpt-5.4、gpt-5.4-pro、gpt-5.3-codex)在助手消息上新增 phase 字段,用于标识当前输出是中间评论(commentary)还是最终答案(final_answer)。该字段仅在 Responses API 中支持,Chat Completions API 无法表达多阶段输出。保留 phase 是多轮 agentic 工作流性能的关键——丢失 phase 会导致模型提前终止或性能明显下降。本迁移无 Breaking Change,phase 是纯新增字段。
GPT-5.4、GPT-5.4 Pro 和 GPT-5.3 Codex 在助手消息上引入了 phase 字段,这是 OpenRouter 对这批模型迁移所需关注的核心变化。
官方说明:Prompt Guidance for GPT-5.4
phase 字段说明
phase 出现在助手输出消息上,有三个可能的值:
| 值 | 含义 |
|---|---|
null | 未指定阶段(默认) |
"commentary" | 中间助手消息(思考过程、分析步骤) |
"final_answer" | 最终关闭性输出 |
phase 只对助手消息有效,不能添加到用户或系统消息上。
为什么 phase 重要
对于 gpt-5.3-codex、gpt-5.4、gpt-5.4-pro,在多轮对话中正确保留 phase 是获得最佳性能的必要条件。如果重建对话历史时丢弃了 phase 元数据,可能导致:
- 模型在较长任务中提前停止
- 整体推理质量明显下降
用法
Responses API(支持 phase)
使用 Responses API 时,助手输出项会包含 phase,必须原样保留并在后续请求中回传:
json
// 初始请求
{
"model": "openai/gpt-5.4",
"input": [
{
"type": "message",
"role": "user",
"content": [{ "type": "input_text", "text": "Refactor the auth module" }]
}
]
}响应中的助手输出会包含 phase:
json
{
"output": [
{
"type": "message",
"role": "assistant",
"content": [{ "type": "output_text", "text": "I'll start by analyzing..." }],
"phase": "commentary"
},
{
"type": "message",
"role": "assistant",
"content": [{ "type": "output_text", "text": "Here's the refactored code..." }],
"phase": "final_answer"
}
]
}后续请求必须将上述助手消息(含 phase)完整传入 input。
Chat Completions API(不支持 phase)
Chat Completions API 每次响应只能包含一条消息,无法表示 commentary 和 final_answer 两种阶段输出。如果需要 phase 支持,必须使用 Responses API。
实现要点
- 保留助手消息上的 phase — 收到包含
phase的响应后,存储并在后续请求中传回 - 不要给用户消息加 phase —
phase只对助手消息有效,对用户消息会返回错误 - 不要丢弃 phase — 省略会降低模型性能
- 使用 Responses API — Chat Completions 无法表示多阶段输出
支持情况
| 模型 | phase 支持 |
|---|---|
openai/gpt-5.4 | 支持 |
openai/gpt-5.4-pro | 支持 |
openai/gpt-5.3-codex | 支持 |
| 其他 OpenAI 模型 | 静默忽略(传入安全) |
| 非 OpenAI 模型 | 不适用 |
向不支持 phase 的 OpenAI 模型(如 gpt-4o)传入 phase 是安全的,会被静默忽略,无需按模型过滤。
Breaking Changes
无 Breaking Change。 phase 是纯新增字段:
- 不含
phase的现有请求在所有模型上继续正常工作 - 不支持
phase的模型会静默忽略 - 无需修改现有代码,除非希望利用 GPT-5.3 Codex / GPT-5.4 / GPT-5.4 Pro 的改进多轮性能
相关文档
常见问题
Q: 如果我的代码用的是 Chat Completions API,需要迁移到 Responses API 吗?
A: 如果不使用多轮 agentic 工作流,无需迁移。phase 只影响多阶段推理场景——对话型应用或单轮任务不受影响。只有需要 commentary + final_answer 区分的长任务场景才需要切换到 Responses API。
Q: 为什么丢失 phase 会导致"提前停止"?
A: 这些模型通过 phase 判断哪些输出是中间思考、哪些是最终交付物。多轮对话时,如果历史消息缺少 phase,模型无法正确理解上下文状态,可能误判任务已完成从而提前停止输出。
Q: 向 gpt-4o 等旧模型传入 phase 会报错吗?
A: 不会报错,phase 会被静默忽略。可以在所有 OpenAI 模型的请求中统一携带 phase,不需要按模型版本区分处理逻辑。