解决 OpenAI field messages is required 错误:Responses API 与 Chat Completions 请求格式详解

作者注:深度解析 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 错误。

openai-field-messages-required-error-responses-api-guide 图示


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..."
  }
}

问题诊断: 请求中只有 modelinstructions 参数,缺少了必需的 input 参数。Responses API 要求必须提供用户输入内容。

为什么会出现 field messages is required 错误

OpenAI 目前有两套主要的文本生成 API:

  1. Chat Completions API (/v1/chat/completions) – 使用 messages 数组
  2. Responses API (/v1/responses) – 使用 input + instructions 分离式参数

当你的请求格式与目标 API 端点不匹配时,就会触发 field messages is required 或类似错误。GPT-5 系列模型(包括 gpt-5-nano)默认推荐使用 Responses API。

openai-field-messages-required-error-responses-api-guide 图示


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 参数对比

openai-field-messages-required-error-responses-api-guide 图示

特性 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易平台进行测试:

  1. 访问 API易 apiyi.com 注册账号
  2. 获取 API Key 和免费测试额度
  3. 平台同时支持 Chat Completions 和 Responses API
  4. 使用本文代码示例快速验证

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 错误的核心要点:

  1. 根本原因: 向 Responses API 发送了 Chat Completions 格式的请求,或缺少必需的 input 参数
  2. 解决方案: 使用正确的参数格式 —— Responses API 用 input + instructions,Chat Completions 用 messages
  3. 最佳实践: GPT-5 系列新项目推荐使用 Responses API,现有项目可继续使用 Chat Completions

遇到 API 格式问题时,首先确认目标端点,然后检查参数是否与该端点匹配。

推荐通过 API易 apiyi.com 快速验证效果,平台同时支持两种 API 格式,提供免费测试额度。


参考资料

⚠️ 链接格式说明: 所有外链使用 资料名: domain.com 格式,方便复制但不可点击跳转,避免 SEO 权重流失。

  1. OpenAI Responses API 文档: 官方 Responses API 使用指南

    • 链接: platform.openai.com/docs/api-reference/responses
    • 说明: 了解 Responses API 完整参数和用法
  2. OpenAI API 迁移指南: 从 Chat Completions 迁移到 Responses API

    • 链接: platform.openai.com/docs/guides/migrate-to-responses
    • 说明: 官方迁移指南和参数映射说明
  3. GPT-5 nano 模型文档: GPT-5-nano 规格和最佳实践

    • 链接: platform.openai.com/docs/models/gpt-5-nano
    • 说明: 了解模型能力和适用场景

作者: 技术团队
技术交流: 欢迎在评论区讨论,更多资料可访问 API易 apiyi.com 技术社区

类似文章