本記事では、異なる推論エンジンやホスト型プロバイダ間でOpenAI互換API標準がどのように乖離し、静かな失敗や予期せぬ動作を引き起こすかについて、12の具体的な領域を詳述しています。コアとなるリクエストの形状と基本的なストリーミングは確実に機能しますが、パラメータ処理、エラーレスポンス、機能サポートにおける微妙な違いがアプリケーションを壊すことがあります。
- 不明なパラメータは400エラーで拒否されるのではなく、多くの場合静かにドロップされます。
- リーゾニングモデルでは `max_tokens` の代わりに `max_completion_tokens` が必要となる場合がありますが、その受け入れには一貫性がありません。
- ストリーミングレスポンスからトークン使用統計は、`stream_options` を明示的に指定しない限り頻繁に欠落しています。
- ツール呼び出しのサポートには大きなばらつきがあり、多くのサーバーがネイティブな並列呼び出しや厳格なスキーマ準拠を欠いています。
- JSONモードの実装は、基本的なオブジェクト検証とスキーマによる制約付きデコーディングの間で異なります。
- コンテキストオーバーフローの処理は、ハードな400エラーからシステムプロンプトの静かな切り捨てまで幅広いです。
- `finish_reason` の値には、標準的な stop、length、tool_calls に加えてプロバイダ固有の追加が含まれます。
- エラーエンベロープとレートリミティングレスポンス(429、503、またはボディエラーを含む200)は一貫していません。
- リーゾニングモデルにおける温度設定は、受け入れられていても内部で無視されることがあります。
- マルチモーダル入力の処理は、サイズ制限、MIMEタイプ、および `detail` パラメータにおいてばらつきがあります。
- 埋め込みエンドポイントは、次元数と正規化の違いのため移植性が欠如しています。
- 冪等性キーのサポートは稀であり、リクエストIDヘッダーの名前付けは一貫していません。
著者は、モデルバージョンが頻繁に変更され、静かな失敗は本番環境でデバッグが困難であるため、これらの特定の動作に対するプロバイダの適合性をテストするためにプローブスクリプトの使用を推奨しています。