適用対象: すべての API Management レベル
LLM API 要求への応答のセマンティック キャッシュを有効にして、バックエンド API に課せられる帯域幅と処理要件を減らし、API コンシューマーが認識する待機時間を短縮します。 セマンティック キャッシュを使用すると、同一のプロンプトに対してキャッシュされた応答を返すことができます。また、テキストが同一でない場合でも、意味が似たプロンプトを返すことができます。 背景については、「 チュートリアル: セマンティック キャッシュとして Azure Managed Redis を使用する」を参照してください。
メモ
この記事の構成手順では、Microsoft Foundry モデルの Azure OpenAI から API Management に追加された API のセマンティック キャッシュを有効にする方法を示します。 同様の手順を適用して、 Azure AI モデル推論 API を通じて利用できる対応する大規模言語モデル (LLM) API またはサードパーティの推論プロバイダーを介して提供される OpenAI 互換モデルのセマンティック キャッシュを有効にすることができます。
前提条件
API Management インスタンスに、API として Microsoft Foundry モデル デプロイに 1 つ以上の Azure OpenAI を追加します。 詳細については、 Azure API Management への Azure OpenAI API の追加に関するページを参照してください。
次の API のデプロイを作成します。
- チャット完了 API - API コンシューマー呼び出しに使用されるデプロイ
- Embeddings API - セマンティック キャッシュに使用されるデプロイ
Azure OpenAI API に対するマネージド ID 認証を使用するように API Management インスタンスを構成します。 詳細については、「Azure API Management を使用して Azure OpenAI API に対するアクセスの認証と認可を行う」を参照してください。
Redis Cache で RediSearch モジュールが有効になっている Azure Managed Redis インスタンス。
メモ
RediSearch モジュールは、新しい Azure Managed Redis キャッシュを作成するときにのみ有効にできます。 既存のキャッシュにモジュールを追加することはできません。 詳細情報
Azure API Management インスタンスの外部キャッシュとして Azure Managed Redis インスタンスを構成します。 手順については、「Azure API Management で Redis と互換性がある外部キャッシュを使用する」を参照してください。
チャット API のデプロイをテストする
まず、Azure OpenAI デプロイをテストして、チャット完了 API またはチャット API が期待どおりに動作することを確認します。 手順については、「Azure OpenAI API を Azure API Management にインポートする」を参照してください。
たとえば、要求本文にプロンプトを指定して API エンドポイントに POST 要求を送信し、Azure OpenAI チャット API をテストします。 応答には、プロンプトの完了を含める必要があります。 要求の例:
POST https://my-api-management.azure-api.net/my-api/openai/deployments/chat-deployment/chat/completions?api-version=2024-02-01
要求本文:
{"messages":[{"role":"user","content":"Hello"}]}
要求が成功すると、応答にはチャット メッセージの完了が含まれます。
埋め込み API のバックエンドを作成する
次の設定を使用して、埋め込み API デプロイ用の バックエンド リソースを作成します。
名前 - 埋め込みバックエンドなど、選択した名前。 ポリシーでバックエンドを参照するにはこの名前を使用します。
Type - カスタム URL を選択します。
ランタイム URL - Azure OpenAI での埋め込み API デプロイの URL。
https://my-aoai.openai.azure.com/openai/deployments/embeddings-deployment/embeddings(クエリ パラメーターなし) と同様です。承認資格情報 - [マネージド ID ] タブに移動します。
- クライアント ID - [システム割り当て ID] を 選択するか、ユーザー割り当てマネージド ID クライアント ID を入力します。
-
リソース ID - Azure OpenAI の
https://cognitiveservices.azure.com/を入力します。
埋め込みバックエンドをテストする
埋め込みバックエンドをテストするには、Azure OpenAI API の API 操作を作成します。
- API の [デザイン] タブで、[操作の追加] を選択します。
- [埋め込み] などの表示名を入力し、必要に応じて操作の名前を入力します。
-
[フロントエンド] セクションの [URL] で [POST] を選択し、パス
/を入力します。 -
[ヘッダー] タブで、名前
Content-Typeと値application/jsonを持つ必須ヘッダーを追加します。 - 保存 を選択します。
API 操作の [受信処理] セクションで、次のポリシーを構成します。 set-backend-service ポリシーで、作成したバックエンドの名前を代入します。
<policies>
<inbound>
<set-backend-service backend-id="embeddings-backend" />
<authentication-managed-identity resource="https://cognitiveservices.azure.com/" />
[...]
</inbound>
[...]
</policies>
[テスト] タブで、api-version などの値を持つ 2024-02-01 クエリ パラメーターを追加して操作をテストします。 有効な要求の本文を指定します。 次に例を示します。
{"input":"Hello"}
要求が成功した場合、応答には入力テキストのベクター表現が含まれます。 応答の例:
{
"object": "list",
"data": [{
"object": "embedding",
"index": 0,
"embedding": [
-0.021829502,
-0.007157768,
-0.028619017,
[...]
]
}]
}
セマンティック キャッシュ ポリシーを構成する
Azure API Management で Azure OpenAI API のセマンティック キャッシュを有効にするには、次のポリシーを適用します。1 つは要求を送信する前にキャッシュを確認し (lookup)、もう 1 つは将来再利用するために応答を格納する (store) ポリシーです。
API の [受信処理] セクションに azure-openai-semantic-cache-lookup ポリシーを追加します。
embeddings-backend-id属性に、作成した埋め込み API バックエンドを指定します。メモ
他の大規模言語モデル API のセマンティック キャッシュを有効にする場合は、代わりに llm-semantic-cache-lookup ポリシーを使用します。
例:
<azure-openai-semantic-cache-lookup score-threshold="0.15" embeddings-backend-id="embeddings-backend" embeddings-backend-auth="system-assigned" ignore-system-messages="true" max-message-count="10"> <vary-by>@(context.Subscription.Id)</vary-by> </azure-openai-semantic-cache-lookup> <rate-limit calls="10" renewal-period="60" />API の [送信処理] セクションに azure-openai-semantic-cache-store ポリシーを追加します。
メモ
他の大規模言語モデル API のセマンティック キャッシュを有効にする場合は、代わりに llm-semantic-cache-store ポリシーを使用します。
例:
<azure-openai-semantic-cache-store duration="60" />
キャッシュの確認
セマンティック キャッシュが期待どおりに動作することを確認するには、ポータルのテスト コンソールを使用して、テスト完了操作またはチャット完了操作をトレースします。 後続の試行でキャッシュが使用されていることを確認するには、トレースを調べます。 Azure API Management における API 呼び出しのトレースの詳細を確認する
ルックアップ ポリシーの score-threshold 属性を調整して、格納されている応答を返すために、受信プロンプトがキャッシュされたプロンプトとどの程度一致する必要があるかを制御します。 スコアのしきい値が低いということは、キャッシュされた応答を返すには、プロンプトのセマンティック類似性が高い必要があることを意味します。 しきい値を超えるスコアのプロンプトでは、キャッシュされた応答は使用されません。
たとえば、キャッシュが使用されている場合、[ 出力 ] セクションには、次のスクリーンショットのようなエントリが含まれます。
関連するコンテンツ
- キャッシュ ポリシー
- Azure Managed Redis
- Azure API Management の AI ゲートウェイ機能