ChatGPT実行時のトークン上限オーバについて

現在リリース済のAIドキュメント生成システムにて、プログラムソースから詳細設計書を作成するために、ChatGPT API(gpt-4oなど)経由にてプログラムソースを解析させていますが、大きめなソース(3,000step以上ぐらいか)の場合、以下のようなエラーメッセージに遭遇することがあります。

c03c60fb2cad45f385963232ef3db18e-1024x602-1 ChatGPT実行時のトークン上限オーバについて

Request too large for gpt-4o in organization org-XXXX on tokens per min (TPM): 
Limit 30000, Requested 34537. 
The input or output tokens must be reduced in order to run successfully.

これは、「一度のリクエストで使用されたトークン数が、組織に割り当てられた上限(TPM)を超えた」場合に発生するエラーです。その原因と対応方法を説明します。

💻エラーの意味

このエラーは、以下の2つの原因で発生する可能性があります:

  • トークン数超過:1回のリクエストにおける「入力 + 出力」トークンの合計が、許容範囲(TPM:Tokens Per Minute)を超えている。
  • 組織ごとのTPM制限:APIキーが所属する組織に与えられたTPM制限(例の場合は30,000)が適用されている。

例えば、以下のケースでは 34,537 トークンのリクエストに対して、制限 30,000 を超えたため、実行不可となっています:

💻 対応方法

1. トークン数を減らす

  • 入力プロンプトを短くする
    • 無駄な説明文やコメントを削除
    • 要約済みのテキストを使用する
  • 出力を制限する
    • max_tokens パラメータを 30002000 など適切な値に設定する
    • 「要点だけ」「箇条書きで」などとプロンプトに指示する

2. チャンクに分割して処理する

  • 長文や大量のファイルを扱う場合は、複数のチャンクに分割し、1チャンクごとにAPIへ送信する設計にする。

3. OpenAIの制限を確認・引き上げ申請

  • OpenAIでは、APIプランや組織によってトークンの上限値(TPM / RPM)が異となり、上限の申請ができます。
  • 上限の確認・増加申請は以下のページから可能の様です:
    👉 https://platform.openai.com/account/rate-limits

💡 TPM(Tokens Per Minute)とは?

TPMとは、「1分あたりに処理可能なトークン数」を指します。トークンは単語ではなく、単語の一部・記号・空白なども含まれた「文字列の断片」として計算されます。初期割当は、30,000トークン(分)です。最大入力は、gpt-4oでは 128,000 トークン(分)まで可能。

テキストトークン数(例)
“ChatGPT is great!”約5トークン
英単語(例:hello)約1トークン
日本語(例:こんにちは約5トークン
記号や空白(例:,.約1トークン
大規模な設計書全文数千〜数万トークン

💻測定方法(正確にトークン数を知りたい場合)

OpenAI公式が提供しているツール:

💻「最大128,000トークン」の制限は、各モデルでの 入力制限になる。

各種モデル:

モデル初期値トークン制限(最大コンテキスト長)
GPT-4o,GPT-4-turbo30,000 TPM128,000トークン

注意:128,000トークンは「1リクエストあたりの入力+出力の合計」例:入力が 100,000トークン → 出力は最大 28,000トークン まで(合計128,000以内)

💻利用条件

  • この上限(128,000トークン)は OpenAIの有料プラン/API使用時の gpt-4o / gpt-4-turbo 限定

💻このエラーの対応方法のまとめ

原因対処方法
入出力トークンの合計が多すぎる入力テキストや出力上限(max_tokens)を見直す
1チャットで長文を扱っているチャンク処理などで分割して実行
組織のTPM上限が低いOpenAIに引き上げ申請する

業務システムとAPI連携している際は、ユーザーの操作状況に応じて自動的に分割する仕組み上限チェック処理を組み込むと、エラーを未然に防ぐことができます。

💻サンプルロジック(トークンの取得方法 (C#))

プログラム上にてトークン数を計算するロジックは、以下の通りです。当ロジックを利用すると事前にエラーとなりそうな入力値は、エラーではじくことができます。又、当処理を実現する場合は、SharpTokenのライブラリを事前にインストール必要があります。:

using SharpToken;

var encoding = GptEncoding.GetEncoding("cl100k_base"); // gpt-4/gpt-4o用
int tokenCount = encoding.Encode(chunkText).Count;

Share this content:

コメントを送信

CAPTCHA