このページの内容は Apigee に適用されます。Apigee ハイブリッドには適用されません。
Apigee Edge のドキュメントを表示する。
概要
Apigee の LLM トークン ポリシーは、LLM トークンの使用状況とユーザー プロンプト トークンの指標を活用して上限を適用し、リアルタイム モニタリングを提供することで、費用管理、パフォーマンスの最適化、プラットフォームの安定化に不可欠です。
このドキュメントでは、次の LLM トークン ポリシーの使用を開始する方法について説明します。
- PromptTokenLimit ポリシー: ユーザー プロンプト メッセージに基づいてトークンを調整することで、トークンの不正使用からターゲットを保護します。PromptTokenLimit ポリシーは、AI プロンプトのスパイク抑制のようなものです。ユーザー プロンプトからのトークン使用率を制御して不正使用を防ぎ、バックエンド サービスが過負荷にならないようにします。
- LLMTokenQuota ポリシー: LLM の費用を制御し、API プロダクトに基づいてきめ細かい割り当て管理を適用します。LLMTokenQuota ポリシーを使用すると、特定の 期間(分、時間、日、月など)に LLM API のトークン消費量の上限を適用できます。これは、費用を管理し、AI サービスの公正な使用を確保するために不可欠です。
PromptTokenLimit ポリシー
ユーザー プロンプトからのトークン使用量の急増からバックエンド サービスを保護する場合は、PromptTokenLimit ポリシーを使用します。たとえば、1 分あたりのトークン数を妥当な数に制限して、1 人のユーザーがサービスを過負荷にしないようにすることができます。
このポリシーを API プロキシのリクエスト フローに追加します。
次の PromptTokenLimit ポリシーの例では、 トークンレートを 1 分あたり 1,000 トークンに制限しています:
<PromptTokenLimit continueOnError="false" enabled="true" name="PTL-limitTokens-1">
<DisplayName>Limit Prompt Tokens</DisplayName>
<!-- The rate at which to limit tokens. Here, 1,000 per minute -->
<Rate>1000pm</Rate>
<!-- Specifies where to get the user's prompt from the request -->
<UserPromptSource>{jsonPath('$.contents[-1].parts[-1].text',request.content,true)}</UserPromptSource>
</PromptTokenLimit>ここで
<Rate>: トークンを制限するレート。<UserPromptSource>: リクエストからユーザーのプロンプトを取得する場所を指定します。
PromptTokenLimit ポリシーのリファレンス ページで、次の内容を確認してください。
次のタスクを実行するときに、Apigee UI で PromptTokenLimit ポリシーを構成します。
LLMTokenQuota ポリシー
さまざまな API プロダクト、デベロッパー、アプリのトークン消費量の割り当てを設定して適用する場合は、LLMTokenQuota ポリシーを使用します。たとえば、サブスクリプション レベルごとに異なるトークン割り当てを提供できます。
このポリシーは、主に次の 2 つの方法で使用できます。
-
トークンのカウント:
CountOnly設定を使用して、 トークンの使用状況をハードリミットを適用せずにトラッキングします。これは、モニタリング とレポートに役立ちます。 -
割り当ての適用: トークン割り当てを超えたら API 呼び出しを拒否するには、
EnforceOnly設定を使用します。
割り当てを超えているかどうかを確認するには、リクエスト フローに EnforceOnly ポリシーを追加します。LLM レスポンスで使用されるトークンをカウントするには、レスポンス フローに CountOnly ポリシーを追加します。
次の LLMTokenQuota ポリシーの例では、 1 時間あたり 10,000 トークンの割り当てを適用し、設定は API プロダクトから動的に取得されます:
<LLMTokenQuota name="Quota-Enforce-Only" type="rollingwindow"> <EnforceOnly>true</EnforceOnly> <!-- The interval and time unit for the quota --> <Interval ref="verifyapikey.verify-api-key.apiproduct.developer.llmQuota.interval">1</Interval> <TimeUnit ref="verifyapikey.verify-api-key.apiproduct.developer.llmQuota.timeunit">hour</TimeUnit> <!-- The number of tokens allowed in the interval --> <Allow count="10000" countRef="verifyapikey.verify-api-key.apiproduct.developer.llmQuota.limit"/> <!-- Specifies where to get the token usage from the LLM's response --> <LLMTokenUsageSource>{jsonPath('$.usageMetadata.candidatesTokenCount',response.content,true)}</LLMTokenUsageSource> <!-- Specifies where to get the model name from the LLM's response --> <LLMModelSource>{jsonPath('$.model',response.content,true)}</LLMModelSource> </LLMTokenQuota>
ここで
<EnforceOnly>:trueに設定すると、この 要素はトークン割り当てを超えたら API 呼び出しを拒否するために使用されます。これにより、API プロバイダは、定義された間隔でアプリケーションが消費するトークン数に厳格な上限を設定できます。<Interval>: この要素は、LLM レスポンスからのトークン数が計算される時間間隔 を指定します。<TimeUnit>および<Allow>と組み合わせて、トークン割り当てを定義します。<TimeUnit>: この要素は、<Interval>の時間単位を定義します。有効な値は、minute、hour、day、monthです。<Allow>: この要素は、 で許可されるトークン数を定義します。<Interval><LLMTokenUsageSource>: この要素は、LLM レスポンスからのトークン使用量のソースを提供します。トークン使用量の単一の値を提供するメッセージ テンプレートにする必要があります。<LLMModelSource>: この要素は、LLM レスポンスまたはリクエストからのモデルのソースを提供します。モデル名の単一の値を提供するメッセージ テンプレートにする必要があります。
LLMTokenQuota ポリシーのリファレンス ページで、次の内容を確認してください。
次のセクションで説明するように、Apigee UI で LLMTokenQuota ポリシーを構成します。
制限事項
LLM トークン ポリシーには次の制限があります。
- LLMTokenQuota ポリシーの制限事項
- 現在、このポリシーはテキストベースのトークンのみをサポートしています。
- 最後に許可されたリクエストが、残りの割り当てよりも多くのトークンを消費する可能性があります。
- このポリシーでは、レスポンス ペイロードで消費される LLM トークンの正確な JSON パスが必要であり、自動的に検出することはできません。
- PromptTokenLimit ポリシーの制限事項
- 現在、このポリシーはテキストベースのトークンのみをサポートしています。
- このポリシーでは、トークンをカウントするために標準ライブラリを使用します。これは、一部の LLM プロバイダがトークンをカウントする方法とは異なる場合があります。
- このポリシーでは、プロンプト テキストの正確な JSON パスが必要です。動的に検索することはできません。 動的に検索することはできません。