適用対象: すべての API Management レベル
Azure OpenAI API 要求への応答のセマンティック キャッシュを有効にすると、バックエンド API の帯域幅および処理の要件が低減され、API コンシューマーによって認識される遅延が小さくなります。 セマンティック キャッシュを使用すると、同一のプロンプトや、テキストは同一でなくても意味が似ているプロンプトに対してキャッシュされた応答を返すことができます。 バックグラウンドの場合は、「チュートリアル: セマンティック キャッシュとして Azure Cache for Redis を使用する」を参照してください。
メモ
この記事の構成手順では、Azure OpenAI API のセマンティック キャッシュを有効にします。 これらの手順を一般化して、 Azure AI モデル推論 API を通じて利用できる対応する大規模言語モデル (LLM) API のセマンティック キャッシュを有効にするか、サードパーティの推論プロバイダーを介して提供される OpenAI 互換モデルを使用できます。
前提条件
Foundry Models API の 1 つ以上の Azure OpenAI を API Management インスタンスに追加する必要があります。 詳細については、 Azure API Management への Azure OpenAI API の追加に関するページを参照してください。
Azure OpenAI インスタンスには、次のデプロイが必要です。
- チャット完了 API - API コンシューマー呼び出しに使用されるデプロイ
- Embeddings API - セマンティック キャッシュに使用されるデプロイ
API Management インスタンスは、Azure OpenAI API に対してマネージド ID 認証を使用するように構成する必要があります。 詳細については、「Azure API Management を使用して Azure OpenAI API に対するアクセスの認証と認可を行う」を参照してください。
Azure Managed Redis インスタンス。 RediSearch モジュールが Redis キャッシュに対して有効になっている必要があります。
メモ
RediSearch モジュールを有効にできるのは、Azure Redis Enterprise または Azure Managed Redis のキャッシュを新規に作成する場合に限られます。 既存のキャッシュにモジュールを追加することはできません。 詳細情報
Azure API Management インスタンスに構成された外部キャッシュ。 手順については、「Azure API Management で 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 での埋め込み 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/
を入力します。
[Test backend](バックエンドのテスト)
バックエンドをテストするには、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.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 ポリシーを追加します。
メモ
他の大規模言語モデル API のセマンティック キャッシュを有効にする場合は、代わりに llm-semantic-cache-store ポリシーを使用します。
例:
<azure-openai-semantic-cache-store duration="60" />
キャッシュの確認
セマンティック キャッシュが期待どおりに動作していることを確認するには、ポータルのテスト コンソールを使用して、テストの完了またはチャットの完了操作をトレースします。 トレースを検査することで、その後の試行でキャッシュが使用されたことを確認します。 Azure API Management における API 呼び出しのトレースの詳細を確認する
たとえば、キャッシュが使用された場合、[出力] セクションには次のスクリーンショットに類似したエントリが含まれます。
関連するコンテンツ
- キャッシュ ポリシー
- Azure Cache for Redis
- Azure API Management の AI ゲートウェイ機能