Azure API Management で Azure OpenAI API のセマンティック キャッシュを有効にする
適用対象: Basic v2 | Standard v2
Azure OpenAI API 要求への応答のセマンティック キャッシュを有効にすると、バックエンド API の帯域幅および処理の要件が低減され、API コンシューマーによって認識される遅延が小さくなります。 セマンティック キャッシュを使用すると、同一のプロンプトや、テキストは同一でなくても意味が似ているプロンプトに対してキャッシュされた応答を返すことができます。 バックグラウンドの場合は、「チュートリアル: セマンティック キャッシュとして Azure Cache for Redis を使用する」を参照してください。
Note
この記事の構成手順では、Azure OpenAI API のセマンティック キャッシュを有効にします。 これらの手順を応用することで、Azure AI Model Inference API を通して利用できる類似の大規模言語モデル (LLM) API のセマンティック キャッシュを有効にできます。
前提条件
- 1 つ以上の Azure OpenAI Service API を API Management インスタンスに追加する必要があります。 詳細については、「Azure API Management に Azure OpenAI Service API を追加する」を参照してください。
- Azure OpenAI Service には、次のデプロイが必要です。
- Chat Completion API (またはCompletion API) - API コンシューマー呼び出しに使用されるデプロイ
- Embeddings API - セマンティック キャッシュに使用されるデプロイ
- API Management インスタンスは、Azure OpenAI API に対してマネージド ID 認証を使用するように構成する必要があります。 詳細については、「Azure API Management を使用して Azure OpenAI API に対するアクセスの認証と認可を行う」を参照してください。
- Azure Cache for Redis Enterprise。 RediSearch モジュールが Redis Enterprise キャッシュで有効になっている必要があります。
Note
RediSearch モジュールを有効にできるのは、新しい Redis Enterprise キャッシュを作成する場合のみです。 既存のキャッシュにモジュールを追加することはできません。 詳細情報
- Azure API Management インスタンスに構成された外部キャッシュ。 手順については、「Azure API Management で外部の Azure Cache for Redis を使用する」を参照してください。
チャット API のデプロイをテストする
まず、Azure OpenAI のデプロイをテストして、Chat Completion 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 デプロイ用のバックエンド リソースを構成します。
- Name -
embeddings-backend
などの任意の名前。 ポリシーでバックエンドを参照するにはこの名前を使用します。 - Type - カスタム URL を選択します。
- ランタイム URL - Azure OpenAI Service 内の埋め込み API デプロイの URL。例:
https://my-aoai.openai.azure.com/openai/deployments/embeddings-deployment/embeddings
[Test backend](バックエンドのテスト)
バックエンドをテストするには、Azure OpenAI Service 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>
[テスト] タブで、2024-02-01
などの値を持つ api-version
クエリ パラメーターを追加して操作をテストします。 有効な要求の本文を指定します。 次に例を示します。
{"input":"Hello"}
要求が成功すると、応答には入力テキストのベクトル表現が含まれます。
{
"object": "list",
"data": [{
"object": "embedding",
"index": 0,
"embedding": [
-0.021829502,
-0.007157768,
-0.028619017,
[...]
]
}]
}
セマンティック キャッシュ ポリシーを構成する
Azure API Management で Azure OpenAI API のセマンティック キャッシュを有効にするために、次のポリシーを構成します。
API の [受信処理] セクションに azure-openai-semantic-cache-lookup ポリシーを追加します。
embeddings-backend-id
属性に、作成した埋め込み API バックエンドを指定します。Note
他の大規模言語モデル API のセマンティック キャッシュを有効にする場合は、代わりに llm-semantic-cache-lookup ポリシーを使用します。
例:
<azure-openai-semantic-cache-lookup score-threshold="0.8" embeddings-backend-id="embeddings-deployment" 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>
API の [送信処理] セクションに azure-openai-semantic-cache-store ポリシーを追加します。
Note
他の大規模言語モデル API のセマンティック キャッシュを有効にする場合は、代わりに llm-semantic-cache-store ポリシーを使用します。
例:
<azure-openai-semantic-cache-store duration="60" />
キャッシュの確認
セマンティック キャッシュが期待どおりに動作していることを確認するには、ポータルのテスト コンソールを使用して、テストの完了またはチャットの完了操作をトレースします。 トレースを検査することで、その後の試行でキャッシュが使用されたことを確認します。 Azure API Management における API 呼び出しのトレースの詳細を確認する
たとえば、キャッシュが使用された場合、[出力] セクションには次のスクリーンショットに類似したエントリが含まれます。