作者注:深度解析 OpenAI API 调用时出现 field messages is required 错误的原因,详解 Responses API 与 Chat Completions API 的请求格式差异,提供正确的代码示例
调用 GPT-5-nano 等新模型时遇到 field messages is required 错误?这是许多开发者在迁移到 OpenAI 新版 API 时常见的问题。本文将深度解析 Responses API 与 Chat Completions API 的核心差异,帮助你快速定位并解决这类请求格式错误。
核心价值: 读完本文,你将理解两套 API 的请求格式差异,能够正确调用 GPT-5 系列模型,彻底解决 field messages is required 错误。

field messages is required 错误核心要点
| 问题 | 原因 | 解决方案 |
|---|---|---|
| field messages is required | 向 Responses API 端点发送了 Chat Completions 格式 | 使用 input 替代 messages |
| invalid_text_request | 请求格式与 API 端点不匹配 | 检查端点和参数格式是否对应 |
| shell_api_error | 内部路由错误,格式解析失败 | 确认使用正确的 API 版本 |
错误案例分析
根据您提供的错误信息:
{
"original_error": {
"status_code": 400,
"error": {
"message": "field messages is required",
"type": "shell_api_error",
"code": "invalid_text_request"
}
},
"request_params": {
"model": "gpt-5-nano",
"instructions": "# Role\n\nYou generate alt text..."
}
}
问题诊断: 请求中只有 model 和 instructions 参数,缺少了必需的 input 参数。Responses API 要求必须提供用户输入内容。
为什么会出现 field messages is required 错误
OpenAI 目前有两套主要的文本生成 API:
- Chat Completions API (
/v1/chat/completions) – 使用messages数组 - Responses API (
/v1/responses) – 使用input+instructions分离式参数
当你的请求格式与目标 API 端点不匹配时,就会触发 field messages is required 或类似错误。GPT-5 系列模型(包括 gpt-5-nano)默认推荐使用 Responses API。

Responses API 正确请求格式
极简示例
以下是调用 GPT-5-nano 的正确方式:
import openai
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://vip.apiyi.com/v1"
)
# Responses API 正确格式
response = client.responses.create(
model="gpt-5-nano",
instructions="You generate alt text for images.",
input="Describe the sunset photo"
)
print(response.output_text)
查看完整代码示例(含错误处理)
import openai
from typing import Optional
def call_responses_api(
input_text: str,
model: str = "gpt-5-nano",
instructions: Optional[str] = None
) -> str:
"""
正确调用 OpenAI Responses API
Args:
input_text: 用户输入内容 (必需!)
model: 模型名称
instructions: 系统指令
Returns:
模型响应内容
"""
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://vip.apiyi.com/v1"
)
try:
# Responses API 格式: input + instructions (分离式)
response = client.responses.create(
model=model,
input=input_text, # 必需参数!
instructions=instructions
)
return response.output_text
except Exception as e:
return f"Error: {str(e)}"
# 正确调用示例
result = call_responses_api(
input_text="A golden sunset over the ocean with waves",
model="gpt-5-nano",
instructions="You generate alt text for HTML img tags. Keep it concise, under 125 characters."
)
print(result)
建议: 通过 API易 apiyi.com 获取免费测试额度,平台同时支持 Chat Completions 和 Responses API 格式,便于调试和验证。
Chat Completions API 请求格式
如果你更熟悉 Chat Completions API,也可以继续使用,但需要正确的格式:
import openai
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://vip.apiyi.com/v1"
)
# Chat Completions API 正确格式
response = client.chat.completions.create(
model="gpt-5-nano",
messages=[
{
"role": "system",
"content": "You generate alt text for HTML img tags."
},
{
"role": "user",
"content": "Describe the sunset photo"
}
]
)
print(response.choices[0].message.content)
两套 API 参数对比

| 特性 | Chat Completions | Responses API |
|---|---|---|
| 用户输入参数 | messages 数组 |
input 字符串或数组 |
| 系统指令参数 | messages[system] |
instructions |
| 端点 | /v1/chat/completions |
/v1/responses |
| 状态管理 | 无状态 | 支持 previous_response_id |
| 推荐场景 | 现有项目兼容 | 新项目首选 |
常见错误及解决方案
错误 1: field messages is required
原因: 向 Responses API 端点发送了 Chat Completions 格式的请求
解决:
- 方案 A: 使用
input+instructions替代messages - 方案 B: 改用
/v1/chat/completions端点配合messages
错误 2: invalid_text_request
原因: 请求体格式与目标 API 不匹配
解决: 检查是否遗漏了必需参数(如 Responses API 的 input)
错误 3: Missing required parameter: tools[0].function
原因: Chat Completions 和 Responses API 的工具定义格式不同
解决: 参考对应 API 的工具定义规范重新编写
常见问题
Q1: GPT-5-nano 应该用哪个 API?
推荐使用 Responses API (/v1/responses)。GPT-5 系列模型针对 Responses API 进行了优化,支持更多内置功能如 web_search、code_interpreter 等。
Q2: 现有的 Chat Completions 代码需要迁移吗?
不强制迁移。Chat Completions API 仍然支持 GPT-5 系列模型。但如果需要使用状态管理、内置工具等新功能,建议迁移到 Responses API。
Q3: 如何快速测试两种 API 格式?
推荐使用 API易平台进行测试:
- 访问 API易 apiyi.com 注册账号
- 获取 API Key 和免费测试额度
- 平台同时支持 Chat Completions 和 Responses API
- 使用本文代码示例快速验证
GPT-5-nano 模型规格
| 规格 | 数值 |
|---|---|
| 发布日期 | 2025-08-07 |
| 上下文窗口 | 27.2 万 tokens (输入) |
| 最大输出 | 12.8 万 tokens |
| 输入价格 | $0.05/百万 tokens |
| 输出价格 | $0.40/百万 tokens |
| 知识截止 | 2024-05-30 |
| 推理级别 | minimal / low / medium / high |
🎯 性价比提示: GPT-5-nano 是 GPT-5 系列中最便宜的模型,适合分类、摘要、简单问答等任务。通过 API易平台调用可享受额外优惠。
总结
field messages is required 错误的核心要点:
- 根本原因: 向 Responses API 发送了 Chat Completions 格式的请求,或缺少必需的
input参数 - 解决方案: 使用正确的参数格式 —— Responses API 用
input+instructions,Chat Completions 用messages - 最佳实践: GPT-5 系列新项目推荐使用 Responses API,现有项目可继续使用 Chat Completions
遇到 API 格式问题时,首先确认目标端点,然后检查参数是否与该端点匹配。
推荐通过 API易 apiyi.com 快速验证效果,平台同时支持两种 API 格式,提供免费测试额度。
参考资料
⚠️ 链接格式说明: 所有外链使用
资料名: domain.com格式,方便复制但不可点击跳转,避免 SEO 权重流失。
-
OpenAI Responses API 文档: 官方 Responses API 使用指南
- 链接:
platform.openai.com/docs/api-reference/responses - 说明: 了解 Responses API 完整参数和用法
- 链接:
-
OpenAI API 迁移指南: 从 Chat Completions 迁移到 Responses API
- 链接:
platform.openai.com/docs/guides/migrate-to-responses - 说明: 官方迁移指南和参数映射说明
- 链接:
-
GPT-5 nano 模型文档: GPT-5-nano 规格和最佳实践
- 链接:
platform.openai.com/docs/models/gpt-5-nano - 说明: 了解模型能力和适用场景
- 链接:
作者: 技术团队
技术交流: 欢迎在评论区讨论,更多资料可访问 API易 apiyi.com 技术社区
