Azure OpenAI Serviceを使う際にハマったこと
こんにちは!
SREチームの宮原(@TakashiMiyahara)です🙋
クラッソーネでは、工事現場の安全をAI技術で支援しています。
本日は、開発・運用している工事現場の安全確認AIシステム(crassone vista)で利用している大規模言語モデル(LLM)について、最近行った技術プラットフォームの移行経験を共有したいと思います。具体的には、OpenAIのAPIから、Azure OpenAI ServiceのAPIへの乗り換えについてです。
乗り換えの経緯
OpenAIのAPIからAzure OpenAI ServiceのAPIへの移行を決定した最大の理由は、前者のレートリミットの厳しさにありました。
crassone vistaでは毎分カメラから画像を受け取り、AIによる判定を行っておりますが、gpt-4-vision-preview
では一日あたり500リクエストの制約があります。10現場で稼働すると、朝のうちにレートリミットに達してしまうため、乗り換えを決断しました。
Azure OpenAI Serviceへのアクセス申請
Azure OpenAI Serviceを利用するためには、アクセス申請が必要です。申請フォームには、AzureサブスクリプションID、メールアドレス、ユースケースなどを記入する必要があります。
2024年2月に私が申請した際は翌日に許可されましたが、現在は審査に10営業日程度要することがありますので、辛抱強く待つ必要があります。
APIの使い方の違い
APIのエンドポイントをOpenAIからAzure OpenAIに切り替える必要があります。
OpenAIの場合
import os
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("OPENAI_API_KEY")
)
Microsoft Azure OpenAIの場合
import os
from openai import AzureOpenAI
client = AzureOpenAI(
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2023-12-01-preview",
azure_endpoint=os.getenv("AZURE_OPENAI_ENDPOINT")
)
GPT-4 Turbo with Visionを使う際の実装例
Chat Completion APIを呼び出す際のコード例です。deployment_nameの設定が初めての挑戦だったため、理解するまでに時間がかかりましたが、以下のように実装しました。
api_base = '<your_azure_openai_endpoint>' # APIキーと一緒に発行されたエンドポイント。 https://YOUR_RESOURCE_NAME.openai.azure.com/
api_key="<your_azure_openai_key>" # キーとエンドポイントで発行されたキー。
deployment_name = '<your_deployment_name>' # Azure OpenAI Studioのデプロイ名。
api_version = '2023-12-01-preview' # 2024年4月現在はこの値。将来は変わる可能性あり。
client = AzureOpenAI(
api_key=api_key,
api_version=api_version,
base_url=f"{api_base}openai/deployments/{deployment_name}/extensions",
)
response = client.chat.completions.create(
model=deployment_name,
messages=[
{ "role": "user", "content": [
{
"type": "text",
"text": "Describe this picture:"
},
{
"type": "image_url",
"image_url": {
"url": "<image URL>"
}
}
] }
],
max_tokens=300
)
レスポンスの取得方法
OpenAIのAPIを利用していたときは、以下のように結果を取得していました。
response.json()['choices'][0]['text']
下記のAPIレスポンスのように、messageのcontentに格納されているようです。この変更に気づかずエラーになり少々ハマりました。
response.choices[0].message.content
まとめ
いくつかハマったポイントはありましたが、なんとかAzure OpenAI Serviceへ移行することができました。
Microsoft Azureを業務で利用するのは初めてでしたが、OpenAIから触り始めることはAzureへ入門する良い入り口なのではと感じました。
おわりに
クラッソーネでは、引き続きプロダクトとチームの双方を改善していくために、共に働くエンジニアを募集しています。