📖

OpenAI PythonライブラリをAzure API Managementと共に使うメモ

2023/08/25に公開

はじめに

OpenAI PythonライブラリはPythonからOpenAI APIやAzure OpenAI Serviceのモデルを利用できるライブラリです。

クライアントから直接Azure OpenAIを利用する場合は簡単だったのですが、間にAzure API Management (APIM)を挟んだ場合に一部設定を行う必要があったため、メモします。

前提

openai-python-enterprise-loggingのサンプルなどを参考にし、APIMのリソースやAzure OpenAIとの接続設定は済んでいる前提にします。

設定箇所

3つあります。

HTTPリクエストヘッダーの変更 [APIM]

HTTPリクエストのヘッダーが、OpenAI社APIやAzure OpenAIのデフォルトがapi-keyなのに対し、APIMはOcp-Apim-Subscription-Keyになってしまうため、設定変更が必要です。
手順

  1. APIMのPortal画面で、下図の手順で「Add policy」を選択します。

  2. ポリシーの一覧から、「Set headers」を選択します。

  3. 名前 (NAME)をapi-keyに変更し、Azure OpenAIのAPIキーをVALUEに記載します。

API URL suffixの変更 [APIM]

「Settings」タブのAPI URL suffix項目にopenaiと記載します。
他の文字列を入れる場合も、必ずBase URLの末尾は/openaiで終わるようにします (例:https://apim-openai-shohei.azure-api.net/gund-arm/hogehoge/openai)

api_keyapi_baseの変更 [OpenAI ライブラリ]

OpenAI ライブラリのapi_keyapi_baseをAPIMのサブスクリプションキーと、上記で設定したBase URLに変更します。

import openai

openai.api_type = "azure"
openai.api_key = "<YOUR API MANAGEMENT KEY>"
openai.api_base = "https://apim-openai-shohei.azure-api.net/"
openai.api_version = "2023-05-15"

OpenAI Pythonライブラリが、内部的にapi_baseの末尾に/openai/deployments/gpt-35-turbo/chat/completions?api-version=2023-05-15のような文字列をつけてURLを完成させ、Azure OpenAIモデルを呼び出す形になります。そのためAPIM側でAPI URL suffixの末尾にopenaiとつける必要があります。

おわりに

どこかに情報が載っているのかもしれませんが、API URL suffixの末尾にopenaiとつける情報が見つからず、APIM経由での呼び出しに手間取りました。皆様が同じ苦労を歩まないようにここに残します。

GitHubで編集を提案
Microsoft (有志)

Discussion