0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OpenAI APIの「チャットモデルがv1/completionsでサポートされていない」エラーの解決法

0
Posted at

※この記事は、個人技術ブログ CodeArchPedia.com の技術メモ(要約)です。

OpenAI APIを触っていると、「This is a chat model and not supported in the v1/completions endpoint.」というエラーに遭遇することがある。特にプロジェクトの引き継ぎや、古いサンプルコードを流用したときによくハマるポイントだ。

何が起きたか(課題)

このエラーは、現在主流のチャットモデル(gpt-3.5-turbogpt-4)を、古い形式のCompletions APIエンドポイント(/v1/completions)経由で呼び出そうとしたときに発生する。

  • 原因: Chat Modelを使用しているのに、レガシーなエンドポイント(/v1/completions)を指定している、または入力形式がprompt文字列になっている。
  • 症状: APIリクエストが失敗し、上記のエラーメッセージが返ってくる。
  • リスク: 最新モデルの恩恵を受けられず、古い実装に依存したままになり、将来的なメンテナンスコストが増大する。

どう解決したか(概要)

解決の鍵は、OpenAI Python SDKのv1.0.0以降で推奨されている最新のChat Completions APIを使用することだ。

Chat Modelsを利用する場合、エンドポイントは/v1/chat/completionsが正しく、リクエストボディの入力形式も単なるprompt文字列ではなく、会話の履歴を示すmessagesリスト形式にする必要がある。

推奨される実装では、from openai import OpenAIでクライアントを初期化し、client.chat.completions.createメソッドを呼び出す。

from openai import OpenAI

client = OpenAI()
response = client.chat.completions.create(
    model="gpt-3.5-turbo", # Chat Modelを指定
    messages=[{
        "role": "user", 
        "content": "..."
    }]
)

Chat Completions APIとレガシーなCompletions APIのデータ構造の違いを理解することが重要だ。Chat Completions APIは、システム、ユーザー、アシスタントといった役割(role)を持つメッセージの履歴を渡す必要がある。

効果(Before/After)

このエラーが解消されたことで、プロジェクトは最新のOpenAIの仕様に準拠した。以前はレガシーなエンドポイント互換性のためにコードが複雑になっていたが、最新のクライアントベースの実装に移行したことで、コードの意図が明確になり、バグの温床を一つ減らせた。

項目 以前(エラー発生時) 変更後(解決策適用後)
エンドポイント /v1/completions(誤) /v1/chat/completions(正)
入力形式 prompt 文字列 messages リスト
安定性 低(誤設定のリスク) 高(最新仕様準拠)

🚀 詳細な設定とコードはこちら

具体的な非推奨パターン(旧SDKでの呼び出し方)や、デバッグのための詳細なチェックリスト、各APIの比較表など、完全なコードスニペットや詳細な確認事項は元のブログで公開しています。

👉 OpenAI APIの「チャットモデルがv1/completionsでサポートされていない」エラーの解決法

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?