GPT-5-nanoなどの新しいモデルを呼び出す際にfield messages is requiredエラーが発生していませんか?これは、OpenAIの新しいAPIに移行する際に開発者がよく遭遇する問題です。この記事では、Responses APIとChat Completions APIの核心的な違いを詳しく解説し、このようなリクエスト形式エラーを迅速に特定して解決する方法をご紹介します。
この記事で得られる価値: この記事を読めば、2つのAPIのリクエスト形式の違いを理解し、GPT-5シリーズのモデルを正しく呼び出せるようになり、field messages is requiredエラーを完全に解決できます。

field messages is requiredエラーの重要ポイント
| 問題 | 原因 | 解決方法 |
|---|---|---|
| field messages is required | Responses APIエンドポイントにChat Completions形式を送信 | messagesの代わりにinputを使用 |
| 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には現在、2つの主要なテキスト生成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の使用が推奨されています。

Chat Completions APIとResponses APIの詳細比較
Chat Completions API (/v1/chat/completions)
GPT-4、GPT-4o、GPT-3.5シリーズなどの従来のモデルで使用される標準的なAPIです。
基本的なリクエスト形式:
{
"model": "gpt-4o-mini",
"messages": [
{
"role": "system",
"content": "あなたはAltテキスト生成の専門家です"
},
{
"role": "user",
"content": "この画像のAltテキストを生成してください"
}
],
"temperature": 0.7
}
特徴:
messages配列形式を使用し、会話履歴全体を含めるroleはsystem、user、assistantをサポート- ステートレス、各リクエストで完全な会話コンテキストを送信する必要がある
- 広く使用され、ドキュメントが充実している
Responses API (/v1/responses)
GPT-5シリーズモデル向けに設計された新しいAPIで、よりシンプルで強力な機能を提供します。
基本的なリクエスト形式:
{
"model": "gpt-5-nano",
"instructions": "あなたはAltテキスト生成の専門家です。画像の内容を正確に説明し、アクセシビリティに配慮したテキストを生成してください。",
"input": "この画像のAltテキストを生成してください",
"temperature": 0.7
}
主な利点:
- シンプルな構造: システムプロンプトとユーザー入力を明確に分離
- ステートフル会話:
session_idパラメータで会話状態を維持可能 - ツール統合: 組み込みの関数呼び出しサポート
- パフォーマンス最適化: GPT-5シリーズモデル向けに最適化
正しいコード実装例
Python実装 – Responses API
from openai import OpenAI
client = OpenAI(api_key="your-api-key")
# 正しいResponses APIの呼び出し
response = client.responses.create(
model="gpt-5-nano",
instructions="あなたはAltテキスト生成の専門家です。画像の内容を正確に説明し、アクセシビリティに配慮したテキストを生成してください。",
input="猫が窓辺で日向ぼっこしている写真のAltテキストを生成してください"
)
print(response.text)
JavaScript/TypeScript実装 – Responses API
import OpenAI from 'openai';
const openai = new OpenAI({
apiKey: process.env.OPENAI_API_KEY
});
async function generateAltText(imageDescription: string) {
const response = await openai.responses.create({
model: 'gpt-5-nano',
instructions: 'あなたはAltテキスト生成の専門家です。画像の内容を正確に説明し、アクセシビリティに配慮したテキストを生成してください。',
input: imageDescription
});
return response.text;
}
// 使用例
const altText = await generateAltText(
'猫が窓辺で日向ぼっこしている写真のAltテキストを生成してください'
);
console.log(altText);
cURL実装 – Responses API
curl https://api.openai.com/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-5-nano",
"instructions": "あなたはAltテキスト生成の専門家です。画像の内容を正確に説明し、アクセシビリティに配慮したテキストを生成してください。",
"input": "猫が窓辺で日向ぼっこしている写真のAltテキストを生成してください"
}'
移行ガイド:Chat CompletionsからResponses APIへ
既存のChat Completions APIコードをResponses APIに移行する方法を見てみましょう。
移行前(Chat Completions API)
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{
"role": "system",
"content": "あなたはAltテキスト生成の専門家です"
},
{
"role": "user",
"content": "この画像のAltテキストを生成してください"
}
],
temperature=0.7
)
result = response.choices[0].message.content
移行後(Responses API)
response = client.responses.create(
model="gpt-5-nano",
instructions="あなたはAltテキスト生成の専門家です",
input="この画像のAltテキストを生成してください",
temperature=0.7
)
result = response.text
移行のポイント:
messages配列をinstructions(システムプロンプト)とinput(ユーザー入力)に分離response.choices[0].message.contentをresponse.textに変更- GPT-5シリーズモデルに更新
よくある間違いとトラブルシューティング
間違い1:inputパラメータの欠落
❌ 誤った例:
response = client.responses.create(
model="gpt-5-nano",
instructions="あなたは専門家です"
# inputパラメータが欠落 - エラーが発生!
)
✅ 正しい例:
response = client.responses.create(
model="gpt-5-nano",
instructions="あなたは専門家です",
input="質問内容をここに記入" # 必須パラメータ
)
間違い2:APIエンドポイントの混同
❌ 誤った例:
# Chat Completions形式をResponses APIエンドポイントに送信
response = client.responses.create(
model="gpt-5-nano",
messages=[...] # Responses APIではサポートされていない形式
)
✅ 正しい例:
# 正しいResponses API形式
response = client.responses.create(
model="gpt-5-nano",
instructions="システムプロンプト",
input="ユーザー入力"
)
間違い3:旧バージョンのSDKを使用
Responses APIを使用するには、最新バージョンのOpenAI SDKが必要です:
# Pythonの場合
pip install --upgrade openai
# Node.jsの場合
npm install openai@latest
高度な機能:ステートフル会話の実装
Responses APIの大きな利点の1つは、組み込みの会話状態管理機能です。
from openai import OpenAI
client = OpenAI(api_key="your-api-key")
# 最初の会話を開始
session_id = "user-session-123"
response1 = client.responses.create(
model="gpt-5-nano",
instructions="あなたは親切なアシスタントです",
input="私の名前はタロウです",
session_id=session_id # セッションIDで会話状態を管理
)
# 同じセッションで会話を継続
response2 = client.responses.create(
model="gpt-5-nano",
instructions="あなたは親切なアシスタントです",
input="私の名前は何でしたか?",
session_id=session_id # 同じセッションID
)
# response2は前の会話を記憶し、「タロウ」と回答します
print(response2.text)
パフォーマンスとコストの比較
| 指標 | Chat Completions API | Responses API |
|---|---|---|
| リクエスト構造 | 複雑(messages配列) | シンプル(input + instructions) |
| 会話状態管理 | 手動実装が必要 | 組み込みサポート(session_id) |
| トークン使用量 | 会話履歴全体を毎回送信 | 効率的な状態管理 |
| 応答速度 | 標準 | GPT-5向けに最適化、高速 |
| ツール呼び出し | サポート | よりシンプルな統合 |
ベストプラクティスと推奨事項
1. 適切なAPIの選択
- 新規プロジェクト: Responses APIを優先的に選択
- GPT-5シリーズモデル: Responses API必須
- 既存プロジェクト: 段階的に移行、両方のAPIを一時的に併用可能
2. エラーハンドリング
from openai import OpenAI, APIError
client = OpenAI()
try:
response = client.responses.create(
model="gpt-5-nano",
instructions="あなたは専門家です",
input="質問内容"
)
print(response.text)
except APIError as e:
if "field messages is required" in str(e):
print("エラー:Responses API形式を使用してください")
print("instructionsとinputパラメータを確認してください")
else:
print(f"APIエラー: {e}")
3. プロンプトの最適化
Responses APIのinstructionsパラメータには、詳細なシステムプロンプトを配置できます:
instructions = """
あなたはプロフェッショナルなAltテキスト生成の専門家です。
以下のガイドラインに従ってください:
1. 画像の主要な内容を正確に説明する
2. 視覚障害者が理解しやすい表現を使用する
3. 簡潔でありながら情報を含む(50-150文字を推奨)
4. 装飾的な表現を避け、客観的に描写する
5. 重要な文脈情報を含める
"""
response = client.responses.create(
model="gpt-5-nano",
instructions=instructions,
input="画像の説明内容"
)
まとめ
重要ポイント:
field messages is requiredエラーは、Responses APIエンドポイントに誤ったリクエスト形式を送信したことが原因- Responses APIは
inputとinstructionsパラメータを使用し、messages
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-55-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)
ヒント: APIYI 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)
2つの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:
messagesの代わりにinput+instructionsを使用する - 方法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: 2つの API 形式を素早くテストするには?
APIYIプラットフォームでのテストをお勧めします:
- APIYI apiyi.com にアクセスしてアカウント登録
- API Key と無料テストクレジットを取得
- プラットフォームは Chat Completions と Responses API の両方をサポート
- この記事のコード例を使って素早く検証
GPT-5-nano モデル仕様
| 仕様 | 値 |
|---|---|
| リリース日 | 2025-08-07 |
| コンテキストウィンドウ | 27.2万 tokens (入力) |
| 最大出力 | 12.8万 tokens |
| 入力価格 | $0.05/100万 tokens |
| 出力価格 | $0.40/100万 tokens |
| 知識カットオフ | 2024-05-30 |
| 推論レベル | minimal / low / medium / high |
🎯 コストパフォーマンスのヒント: GPT-5-nano は GPT-5 シリーズの中で最も低価格なモデルで、分類、要約、シンプルな Q&A などのタスクに適しています。APIYIプラットフォーム経由での利用で追加割引が受けられます。
まとめ
field messages is required エラーの重要ポイント:
- 根本原因: Responses APIにChat Completions形式のリクエストを送信した、または必須の
inputパラメータが欠けている - 解決方法: 正しいパラメータ形式を使用する — Responses APIは
input+instructions、Chat Completionsはmessages - ベストプラクティス: GPT-5シリーズの新規プロジェクトにはResponses APIの使用を推奨、既存プロジェクトはChat Completionsを継続可能
API形式の問題に遭遇した際は、まず対象エンドポイントを確認し、次にパラメータがそのエンドポイントと一致しているかチェックしましょう。
効果を素早く検証するにはAPIYI 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 - 説明: モデルの能力と適用シーンについて理解できます
- リンク:
著者: 技術チーム
技術交流: コメント欄でのディスカッションを歓迎します。より詳しい資料はAPIYI apiyi.com技術コミュニティでご覧いただけます
