AIコーディング 2026.06.07

ChatGPT APIの「InvalidRequestError: Unrecognized request argument」エラー原因と解決方法

タグ:ChatGPT API / openai-python / エラー解決 / API移行

このエラーで何が起きているか

ChatGPT APIの公式Python ライブラリを使う際に「InvalidRequestError: Unrecognized request argument」というエラーが発生する。このエラーは、旧バージョン(openai < 1.0.0)の書き方で新しいバージョン(openai >= 1.0.0)のライブラリを実行した時に起こります。

2023年11月のopenai 1.0.0リリースで、openai.ChatCompletion という使い方が廃止されました。それ以降、このレガシーな書き方を使うとPythonが「そんな引数は知りません」という意味のエラーを返すのです。

つまり、あなたのコードは古い方式で書かれているのに、インストールされているライブラリが新しい仕様だという「バージョンの不一致」が原因です。

原因の確認:自分のバージョンはどちらか

まずは今インストールされているopenai ライブラリのバージョンを確認しましょう。

pip show openai

実行結果がこんな感じで表示されます:

Name: openai
Version: 1.3.0
Summary: The official Python library for the OpenAI API
...

バージョンが 1.0.0 以上なら、コード側を新しい形式に書き直す必要があります。

エラーが起きるコード(旧形式)

この書き方だとエラーになります:

import openai

openai.api_key = "sk-xxxx..."

response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "user", "content": "こんにちは"}
    ]
)

print(response.choices[0].message.content)

上記を openai >= 1.0.0 で実行すると:

AttributeError: module 'openai' has no attribute 'ChatCompletion'

または:

InvalidRequestError: Unrecognized request argument supplied: messages

というエラーが出ます。

解決方法1:コードを新形式に書き直す(推奨)

openai >= 1.0.0 では、APIキーの設定方法と呼び出し方法が両方変わりました。以下が新しい正しい形式です:

from openai import OpenAI

client = OpenAI(api_key="sk-xxxx...")

response = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "user", "content": "こんにちは"}
    ]
)

print(response.choices[0].message.content)

何が変わったか

項目旧形式(< 1.0.0)新形式(>= 1.0.0)
インポートimport openaifrom openai import OpenAI
APIキー設定openai.api_key = "sk-..."client = OpenAI(api_key="sk-...")
呼び出しopenai.ChatCompletion.create()client.chat.completions.create()
結果の形式辞書形式オブジェクト形式

環境変数から自動でAPIキーを読み込む場合

from openai import OpenAI

# 環境変数 OPENAI_API_KEY が自動的に読み込まれます
client = OpenAI()

response = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "user", "content": "こんにちは"}
    ]
)

print(response.choices[0].message.content)

この場合、事前に以下のコマンドで環境変数を設定しておいてください:

Linux/Mac の場合:

export OPENAI_API_KEY='sk-xxxx...'

Windows PowerShell の場合:

$env:OPENAI_API_KEY='sk-xxxx...'

Windows コマンドプロンプト の場合:

set OPENAI_API_KEY=sk-xxxx...

解決方法2:旧バージョンを使い続ける

コードを修正できない理由がある場合は、openai ライブラリを旧バージョンに落とすことも可能です。ただ、セキュリティアップデートが適用されなくなるため、本来は推奨されません。

pip install 'openai<1.0.0'

旧バージョンであれば、最初に示したコード(openai.ChatCompletion.create())がそのまま動きます。

ただし、この方法は一時的な回避策と考えてください。 長期的には必ず新形式に書き直した方がいいです。

よくあるつまずきポイント

1. メッセージの結果を辞書として扱おうとするとエラー

新形式では結果がオブジェクトなので、こういう書き方は動きません:

# NG: 新形式ではこう書くと KeyError が出ます
message = response["choices"][0]["message"]["content"]

正しい書き方:

# OK: オブジェクトのドット記法で値を取得
message = response.choices[0].message.content

2. openai と openai >= 1.0.0 の混在コード

レガシーコードを使い続けるバージョン 0.27.x などと、新しい形式のコードが同じプロジェクトに混在していないか確認してください。プロジェクト全体で同じバージョンを使うのが原則です。

3. APIキーが間違っていないのにエラーが出る場合

“Unrecognized request argument” というメッセージの場合、実は API キーの問題ではなく、コードの書き方が問題です。再度上記の「新形式」コードと見比べて、形式が一致しているか確認しましょう。

移行チェックリスト

既存プロジェクトを新形式に移行するときは、以下を確認してください:

# 1. 現在のバージョンを確認
pip show openai

# 2. 最新の openai ライブラリにアップグレード
pip install --upgrade openai

# 3. コード内の以下を全て置き換え:
#  openai.api_key = ... → client = OpenAI()
#  openai.ChatCompletion.create(...) → client.chat.completions.create(...)
#  response["choices"][0]["message"]["content"] → response.choices[0].message.content

実装後は、簡単なテストコードで動作確認しましょう:

from openai import OpenAI

client = OpenAI(api_key="sk-xxxx...")

# テスト実行
response = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[{"role": "user", "content": "テスト"}]
)

# 正常に動作すればメッセージが表示される
print("成功:", response.choices[0].message.content)

応用:複数のエラーメッセージと対応表

ChatGPT API使用時に出るエラーはいくつかパターンがあります。このエラーが出た時の判断材料にしてください:

エラーメッセージ原因対処法
module 'openai' has no attribute 'ChatCompletion'openai >= 1.0.0で旧形式コード新形式に書き直す
InvalidRequestError: Unrecognized request argument引数の名前や形式が新仕様と異なるコード内の全引数を確認
AuthenticationError: Incorrect API keyAPIキーが無効または有効期限切れOpenAIダッシュボードで新しいキーを取得
RateLimitError: Rate limit exceededAPIの呼び出し回数が多すぎる呼び出し間隔を広げるか、待機処理を入れる

参考:公式ドキュメント対応

OpenAI公式ドキュメントでも、openai 1.0.0以降の新形式での実装が記載されています。古い書籍やオンライン記事を参考にする場合は、記事の公開日がいつか確認してから参考にするといいでしょう。

openai ライブラリが 1.0.0 以降に更新されたのは2023年11月なので、その以前の記事や解説は旧形式で書かれていることが多いです。

次のステップ

新形式への移行ができたら、以下の活用を検討してください:

  • 非同期処理への対応:AsyncOpenAIを使った高速化
  • エラーハンドリング強化:try-except で例外をキャッチ
  • トークン数管理:tiktoken ライブラリで入力文字数を事前計算
  • 複数モデルの使い分け:gpt-4 や gpt-4-turbo などの使い分け戦略

あわせて読みたい

参考ソース