適用対象: すべての API Management レベル
llm-emit-token-metric ポリシーは、LLM API を介した大規模言語モデル (LLM) トークンの使用に関するカスタム メトリックを Application Insights に送信します。 トークン数のメトリックには、合計トークン、プロンプト トークン、完了トークンが含まれます。
Note
ポリシーの要素と子要素を、ポリシー ステートメントで指定された順序で設定します。 API Management ポリシーを設定または編集する方法について説明します。
サポートされているモデル API
このポリシーは、次のいずれかの API スキーマに準拠する API Management に追加された LLM API で動作します。
- OpenAI チャットの完了または応答 API
- Anthropic Messages API (現在、API Management v2 レベルでサポートされています)
カスタム メトリックの制限
Azure Monitor では、API Management からメトリックを出力する機能に影響を与える可能性があるカスタム メトリックに対して使用制限が課されます。 たとえば、現在 Azure Monitor では、メトリックあたりで 10 ディメンション キーの制限と、サブスクリプション内のリージョンあたりでアクティブな時系列に合計 50,000 の制限 (12 時間以内) が設定されています。 API Management では、以下を含む既定のディメンションには、これらのうち 5 つが使用されます。
- Region
- サービス識別子
- サービス名
- サービスの種類
これらの制限により、API Management ポリシーでカスタム メトリック (emit-metric や azure-openai-emit-token-metric など) を構成する場合に次のような影響があります。
ポリシーごとに最大 5 つのカスタム ディメンションを構成できます。
12 時間以内に ポリシーで生成されるアクティブな時系列の数は、期間中に構成された各ディメンションで一意な値の数の積です。 たとえば、ポリシーで 3 つのカスタム ディメンションが構成され、各ディメンションが期間内に 10 の使用可能な値を持つ場合、 ポリシーは 1,000 (10 x 10 x 10) のアクティブな時系列を提供します。
サブスクリプション内の同じリージョンにある複数の API Management インスタンスで ポリシーを構成した場合、すべてのインスタンスがリージョンのアクティブな時系列の制限に影響します。
Azure Monitor のカスタム メトリックに関する設計上の制限事項と考慮事項の詳細については、こちらを参照してください。
Prerequisites
- 1 つ以上の LLM API を API Management インスタンスに追加する必要があります。
- API Management インスタンスを Application Insights と統合する必要があります。 詳細については、「Azure API Management と Azure アプリケーション Insights を統合する方法」を参照してください。
- LLM API で Application Insights ログを有効にする
- Application Insights でディメンションを使用してカスタム メトリックを有効にします。 詳細については、「カスタム メトリックを出力する」を参照してください。
ポリシー ステートメント
<llm-emit-token-metric
namespace="metric namespace" >
<dimension name="dimension name" value="dimension value" />
...additional dimensions...
</llm-emit-token-metric>
Attributes
| Attribute | Description | Required | 既定値 |
|---|---|---|---|
| 名前空間 | 文字列。 メトリックの名前空間。 ポリシー式は使用できません。 | No | API Management |
Elements
| Element | Description | Required |
|---|---|---|
| dimension | メトリックに含まれるディメンションごとに、これらの要素を 1 つ以上追加します。 | Yes |
ディメンション属性
| Attribute | Description | Required | 既定値 |
|---|---|---|---|
| name | 文字列またはポリシー式。 ディメンションの名前。 | Yes | N/A |
| value | 文字列またはポリシー式。 ディメンションの値。 省略できるのは、name が既定のディメンションのいずれかと一致する場合のみです。 その場合、ディメンション名に従って値が指定されます。 |
No | N/A |
値なしで使用できる既定のディメンション名
- API ID(API識別子)
- 操作 ID
- 製品ID
- ユーザーID
- サブスクリプション ID
- Location
- ゲートウェイ ID
- バックエンド ID
Usage
- ポリシー セクション: inbound
- ポリシー スコープ: グローバル、ワークスペース、製品、API、操作
- ゲートウェイ: クラシック、v2、従量課金、セルフホステッド、ワークスペース
使用に関する注記
- このポリシーは、ポリシー定義ごとに複数回使用できます。
- このポリシーには、最大 5 つのカスタム ディメンションを構成できます。
- 使用可能な場合は、LLM API からの応答の使用状況セクションの値を使用してトークン メトリックを判別します。
- 特定の LLM エンドポイントでは、応答のストリーミングがサポートされています。 ストリーミングを有効にするために API 要求で
streamがtrueに設定されている場合、トークン メトリックが推定されます。
Example
次の例では、既定のディメンションとして API ID と共に、LLM トークン数メトリックを Application Insights に送信します。
<policies>
<inbound>
<llm-emit-token-metric
namespace="MyLLM">
<dimension name="API ID" />
</llm-emit-token-metric>
</inbound>
<outbound>
</outbound>
</policies>
関連ポリシー
- Logging
- emit-metric ポリシー
- llm-token-limit ポリシー
関連するコンテンツ
ポリシーに対する処理の詳細については、次のトピックを参照してください。