JA ▾
API キーを取得

LLM Inference APIガイド

AIチャットAPIのよくあるミス

AIチャットAPIの統合デバッグは、ヘッダーの設定ミス、トークン制限の誤解、またはストリーミング処理の不備により失敗することがよくあります。このガイドでは、OpenAI互換エンドポイントの統合時に開発者が直面する最も一般的な実装エラーを取り上げ、本番環境でコードが確実に動作するようにします。

更新日:

主要ポイント

  1. コンテキストウィンドウのオーバーフローを避けるため、文字数だけでなく、特定のモデルのトークナイザーに基づいてトークン使用量を常に計算してください。
  2. ストリーミングエラーは、JSONストリームを解析する前にHTTPステータスコードを確認することで処理してください。ネットワークの切断により、ストリームが不整合な状態になることがあります。
  3. API仕様に厳密に一致するようリクエストヘッダーを確認してください。特にContent-TypeとAuthorizationフィールドを正しく設定することで、静かに発生する400や401エラーを防ぐことができます。
  4. レート制限のバックオフ戦略を直ちに実装してください。1分あたりのリクエスト数が300を超えると、429エラーが発生し、アプリケーションが停止する可能性があります。

コンテキストウィンドウの理解

API障害の最も一般的な理由の一つは、コンテキストウィンドウを超えてしまうことです。コンテキストウィンドウは、入力プロンプトと生成された補完の両方を含む、単一のリクエストで許可されるトークンの総数を定義します。この制限に達すると、APIはリクエストを拒否し、多くの場合、シーケンスが長すぎると示すエラーを返します。

開発者は、文字数をトークン数と誤解することがよくあります。1つの単語は、トークナイザーに応じて複数のトークンを表す場合があります。例えば、当社の推論APIが提供する100,000トークンのコンテキストウィンドウは、大量の会話履歴や大規模なドキュメント処理を可能にしますが、無限ではありません。

  • トークン使用量を監視する: リクエストを送信する前に、モデルの公式トークナイザーを使用してトークンを正確にカウントしてください。
  • インテリジェントに切り捨てる: 制限を超えた場合は、最新のメッセージではなく、会話履歴から最も古いメッセージを削除してください。
  • オーバーヘッドを考慮する: モデルの応答用にいくつかのトークンを確保してください。プロンプトが63,000トークンを使用する場合、補完には1,000トークンしか残りません。

この制限を管理しないと、接続が切断されたり、応答が不完全になったりします。本番環境にデプロイする前に、モデルのドキュメントに基づいてトークン数を常に確認してください。

ストリーミングエラーの処理

Server-Sent Events (SSE)によるストリーミング応答は、優れたユーザー体験に不可欠ですが、エラー処理の複雑さを引き起こします。標準的なJSON応答とは異なり、ストリームは途中で切断される可能性があります。ネットワークエラーが発生すると、クライアントは部分的なデータを受け取り、ストリームが未定義の状態になることがあります。

ストリームコンシューマーを実装する際は、ストリームのライフサイクルを慎重に処理する必要があります。ストリームを解析する前にHTTPステータスコードを確認してください。接続が切断された場合は、エラーをログに記録し、再試行するかユーザーにメッセージを表示するかを判断してください。

さらに、クライアントがストリームの終了マーカーを正しく処理していることを確認してください。一部のライブラリは特定の終了イベントを期待しますが、他のライブラリは接続の終了に依存します。これを誤解すると、プロセスがハングしたりメモリリークが発生したりする可能性があります。

ストリームリクエストには必ずタイムアウトを実装してください。APIが合理的な時間内に応答を送信しない場合は、リクエストを中止してリソースを解放してください。これは高同時実行環境での安定性を維持するために重要です。

トークンカウントと制限

トークンカウントは、コンテキストウィンドウ内に収まることだけでなく、コスト管理にも関係します。各トークンには特定の価格があり、使用量の計算ミスは予期しない請求につながります。当社の価格は透明で、入力と出力のトークンあたりのレートがありますが、使用量を正確に追跡する必要があります。

ほとんどの開発者はトークン数を数えるためにライブラリを使用しますが、使用しているモデルの正しいトークナイザーを使用することが重要です。異なるモデルは異なるトークナイザーを使用しており、間違ったものを使用すると、カウントされたトークンの大きな乖離につながります。例えば、英語テキスト用にトレーニングされたトークナイザーは、コード用にトレーニングされたトークナイザーとは異なる方法で句読点を処理する可能性があります。

使用制限に注意を払ってください。当社のAPIは、キーごとに1分あたり300リクエストを許可しています。これを超えると、429 Too Many Requestsエラーが返されます。アプリケーション内で単純なカウンターを実装することで、これらの制限内に収まり、サービスの中断を避けることができます。

最後に、トークンカウントは同じトークナイザーの異なる実装間でわずかに異なる可能性があることを覚えておいてください。一貫性を確保するために、いくつかの既知の入力でトークンカウントロジックをテストしてください。

ヘッダー設定の落とし穴

ヘッダーはAPIリクエストの設定レイヤーです。それらの設定ミスは、400 Bad Requestや401 Unauthorizedエラーの一般的な原因です。最も重要な2つのヘッダーはContent-TypeとAuthorizationです。

Content-Typeヘッダーはapplication/jsonに設定する必要があります。これが欠落しているか正しくない場合、APIはリクエスト本文を正しく解析できない可能性があります。Authorizationヘッダーには、Bearer YOUR_API_KEYの形式でAPIキーを含める必要があります。よくあるミスは、Bearerプレフィックスを忘れることで、これにより認証エラーが発生します。

  • タイプミスを確認する: APIキーが正しくコピーされていることを確認してください。末尾のスペースや改行も含みます。
  • ヘッダーを検証する: curlやPostmanなどのツールを使用して、送信されるヘッダーを調べます。
  • 大文字と小文字の区別を処理する: 一部のAPIはヘッダー名で大文字と小文字を区別しますが、最新のAPIのほとんどは区別しません。

リクエストを送信する前にヘッダーを常に確認してください。ヘッダーの小さなミスが、リクエスト全体を失敗させ、混乱とデバッグ時間の浪費を引き起こす可能性があります。

レート制限の管理

レート制限は、公平な使用と不正使用の防止のために設けられています。当社のAPIは、キーごとに1分あたり300リクエストを許可しています。この制限を超えると、429 Too Many Requestsエラーが返されます。このエラーには、別のリクエストを行う前に待機する時間を示すRetry-Afterヘッダーが含まれます。

レート制限を効果的に管理するには、バックオフ戦略を実装してください。すぐに再試行するのではなく、再試行ごとに指数関数的に増加する期間待機します。これにより、ピーク時にアプリケーションがAPIを圧倒するのを防ぎます。

使用状況メトリクスを監視してください。ほとんどのAPIは、リクエストボリュームを追跡するためのダッシュボードまたはAPIエンドポイントを提供しています。このデータを使用して、アプリケーションのリクエストパターンを最適化してください。小さなリクエストが多すぎる場合は、それらをバッチ処理することを検討してください。

レート制限はアカウントごとではなくキーごとであることを覚えておいてください。複数のキーがある場合、各キーには独自の制限があります。予期しない制限のヒットを避けるために、キーの配布を計画してください。

エラーコードの解釈

エラーコードを理解することは、デバッグに不可欠です。遭遇する最も一般的なエラーは、400 Bad Request、401 Unauthorized、429 Too Many Requests、および500 Internal Server Errorです。

  • 400 Bad Request: これは通常、リクエスト本文に問題があることを示します。例えば、必須フィールドの不足や無効なJSONなどです。どのフィールドが正しくないかについては、エラーメッセージをご確認ください。
  • 401 Unauthorized: これはAPIキーの問題を示します。キーが正しいか、取り消されていないかを確認してください。
  • 429 Too Many Requests: これはレート制限を超えたことを示します。これを適切に処理するには、バックオフ戦略を実装してください。
  • 500 Internal Server Error: これはサーバー側の問題を示します。短い遅延後にリクエストを再試行してください。

エラーレスポンス本文を常にログに記録してください。エラーの原因となった特定のフィールドなど、何が間違っていたかについての貴重な情報が含まれていることがよくあります。これにより、何時間ものデバッグ時間を節約できます。

リクエストボディの最適化

リクエストボディはAPI連携の中核です。これを最適化することで、パフォーマンスの向上とコストの削減が期待できます。よくあるミスは、1回のリクエストで送信するデータが多すぎることです。プロンプトが大きすぎると、コンテキストウィンドウを超えたり、コストが増加したりする可能性があります。

JSONは慎重に構成してください。必須フィールドがすべて存在し、オプションフィールドは必要な場合のみ含まれていることを確認してください。例えば、ストリーミングが必要ない場合は、streamパラメータを含めないでください。これによりペイロードサイズが削減され、レスポンスが簡素化されます。

curlやPostmanなどのツールを使用して、リクエストボディをテストしてください。これにより、JSONが有効であり、APIが正しく解釈していることを確認できます。また、送信されている不要なデータを特定するのにも役立ちます。

最後に、同一のリクエストに対してレスポンスをキャッシュすることを検討してください。同じプロンプトを複数回送信する場合は、レスポンスをローカルに保存し、API呼び出しを再度行わないようにします。これにより、反復的なタスクのレイテンシとコストを大幅に削減できます。

ツール呼び出しのデバッグ

ツール呼び出しにより、モデルはユーザー入力に基づいて関数を実行できます。ツール呼び出しのデバッグは、リクエストの送信、ツール呼び出しの受信、関数の実行、結果をモデルに戻す送信など、複数のステップが含まれるため、困難な場合があります。

関数の定義が正確であることを確認してください。スキーマは実際の関数のシグネチャと一致している必要があります。スキーマが正しくない場合、モデルが無効な引数を生成し、関数を実行する際にエラーが発生する可能性があります。

ツール呼び出しの引数と関数の出力をログに記録してください。これにより、モデルが正しい引数を生成していること、および関数が期待どおりに実行されていることを確認できます。エラーが発生した場合、ログは問題の特定に役立ちます。

エラーを適切に処理してください。関数の実行に失敗した場合は、モデルにエラーメッセージを送信して、レスポンスを調整できるようにします。これにより、ユーザーエクスペリエンスが向上し、モデルがエラーから回復できるようになります。

質問と回答

APIリクエストのトークン使用量はどのように計算しますか?

特定のモデル用に提供されている公式のトークナイザーライブラリを使用してください。文字数はトークン数の信頼できる指標ではありません。異なる文字が異なる数のトークンを表す可能性があるためです。ほとんどのSDKには、トークンを正確に数えるためのユーティリティ関数が用意されています。

レート制限を超えた場合どうなりますか?

429 Too Many Requestsエラーを受け取ります。レスポンスには、再試行する前に待機する必要がある時間を示す<code>Retry-After</code>ヘッダーが含まれます。これを適切に処理するには、指数バックオフ戦略の実装をお勧めします。

このAPIには任意のOpenAI互換SDKを使用できますか?

はい、OpenAI API形式をサポートするSDKであれば、<code>base_url</code>と<code>API_KEY</code>環境変数を変更するだけで使用できます。これにはPython、Node.js、その他の人気のある言語が含まれます。

アプリケーションでストリーミングエラーをどのように処理しますか?

ストリームを解析する前にHTTPステータスコードを確認してください。接続が切れた場合は、エラーをログに記録し、再試行するかユーザーにメッセージを表示するかを判断します。プロセスがハングしないようにタイムアウトを実装してください。

キーはフォーム 1 つで手に入ります

アカウントを作成し、キーをコピーし、ベースURLを変更します。セットアップはこれだけです。

API キーを取得