BLOGAzureブログ
Azure OpenAI ServiceのAPIにリクエストを送る体験をしてみよう
Azure相談センターSB C&Sは、Microsoft Azureを推奨します。
Azure OpenAI ServiceのAPIにリクエストを送る体験をしてみよう
皆さまこんにちは、SB C&Sの八釼です。
過去に掲載したこの記事ではモデルが使用できる環境をBicepコードから作成しましたが、今回は実際にそれを使ってみようと思います。といっても、Azure OpenAI Studio/プレイグランド(GUI)から使ってもあまり面白くないので、CUIからAPIリクエストを送ってみようと思います。
モデルのデプロイまで終わったら正常性の確認など含めてまずはAzure OpenAI Studioにアクセスしましょう。今回はChatGPT(gpt3.5turbo)をデプロイしていますので、チャット プレイグラウンドを使って確認してみましょう。
まずAzure OpenAI Studioを見てみます。以下のコードからデプロイを作成していますので、デプロイ名もモデル名も'gpt-35-turbo'になっているハズです。
resource gpt35Model
'Microsoft.CognitiveServices/accounts/deployments@2023-10-01-preview' = {
parent: cognitiveService
name: 'gpt-35-turbo'
sku: {
name: 'Standard'
capacity: gpt35ModelCapacity
}
properties: {
model: {
format: 'OpenAI'
name: 'gpt-35-turbo'
version: gpt35ModelVersion
}
versionUpgradeOption: 'OnceNewDefaultVersionAvailable'
raiPolicyName: 'Microsoft.Default'
}
}
指定した通りの値が確認できます。
念のためデプロイの状態も見てみると、当然ではありますが問題ないことが確認できました。
今回作成したデプロイが選択されていることを念のため確認し、各種パラメターなどはすべて既定のままとして投げました。
「Azure portalについて教えて」と聞いてみました。問題なく出力が返ってきましたね。
ここからが実際にやりたいことです。しかしどのようなコマンドを打てばよいかわかりますか?結論わからなくても大丈夫です、安心してください。
「コードの表示」ボタンをクリックしてプルダウンを'curl'にしてください。
するとどうでしょう、サンプルコードが表示されました。先ほど入力したプロンプトと、それに対するコンプリーションもコードとして表示されていますね。
APIにアクセスするにはキーとエンドポイントが必要になりますが、ご丁寧にエンドポイントは直に書いてくれています。下部のエンドポイントというところからコピーして貼り付けても良いですが、表示されているコードをコピーして使うのが楽です。
キーについては、YOUR_API_KEYと伏せられているので実際にコマンドを打つ際にコピーした値を記述してください。
サンプルコードの通りcurlコマンドを使ってモデルに対してREST APIアクセスを行います。そのためcurlコマンドが使えるCUI環境を用意してください。手元のPCで使えるならそれで問題ありません。詳細は割愛しますがWindowsだと少々ややこしいので、LinuxやMacが良いでしょう。
いやいやWindows以外の環境は調達が難しいですという方、Azure Cloud Shellを使うと一番楽ですよ。Azure(サブスクリプション)が利用できるのであれば簡単に環境を用意できますし、Azure portalから簡単に使えます。
公式ドキュメント | Azure Cloud Shell とは
シェル環境はBashを選択しましょう。
これで先ほどのサンプルコードをほぼそのまま活用してAPIリクエストができる環境が整いました。
まずはサンプルコードをコードエディタにそのまま貼り付けましょう。そしてコンプリーションの部分(,{\"role\":\"assistant\"・・・\"})を削除し、YOUR_API_KEYの部分にコピーしたキーの値を上書きします。
curl "https://japaneast.api.cognitive.microsoft.com/openai/deployments/gpt-35-turbo/chat/completions?api-version=2023-07-01-preview" \
-H "Content-Type: application/json" \
-H "api-key: YOUR_API_KEY" \
-d "{
\"messages\": [{\"role\":\"system\",\"content\":\"You are an AI assistant that helps people find information.\"},{\"role\":\"user\",\"content\":\"Azure portalについて教えて\"}],
\"max_tokens\": 800,
\"temperature\": 0.7,
\"frequency_penalty\": 0,
\"presence_penalty\": 0,
\"top_p\": 0.95,
\"stop\": null
}"
そして、せっかくなので'Azure portalについて教えて'の文字列を投げたいプロンプトの内容に書き換えましょう。今回は「Azure以外のマイクロソフト社が提供するクラウドサービスを一つ教えて」にしました。
コードエディタで作成したコマンドをそのまま貼り付けました。以下の実行が貼り付けた内容そのままです。
yusuke_yatsurugi@Azure:~$
curl "https://japaneast.api.cognitive.microsoft.com/openai/deployments/gpt-35-turbo/chat/completions?api-version=2023-07-01-preview" \
-H "Content-Type: application/json" \
-H "api-key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-d "{
\"messages\": [{\"role\":\"system\",\"content\":\"You are an AI assistant that helps people find information.\"},{\"role\":\"user\",\"content\":\"Azure以外のマイクロソフト社が提供するクラウドサービスを一つ教えて\"}],
\"max_tokens\": 800,
\"temperature\": 0.7,
\"frequency_penalty\": 0,
\"presence_penalty\": 0,
\"top_p\": 0.95,
\"stop\": null
}"
実際には一行で返ってきますが、視認性が低いので整形しました。
{
"id": "chatcmpl-8YRuuFayz6nazdqDgBWCxwsq2QoDf",
"object": "chat.completion",
"created": 1703221156,
"model": "gpt-35-turbo",
"prompt_filter_results": [
{
"prompt_index": 0,
"content_filter_results": {
"hate": {
"filtered": false,
"severity": "safe"
},
"self_harm": {
"filtered": false,
"severity": "safe"
},
"sexual": {
"filtered": false,
"severity": "safe"
},
"violence": {
"filtered": false,
"severity": "safe"
}
}
}
],
"choices": [
{
"finish_reason": "stop",
"index": 0,
"message": {
"role": "assistant",
"content": "マイクロソフト社が提供するAzure以外のクラウドサービスの一つとしては、「Microsoft 365」があります。Microsoft 365は、オンラインで利用できるさまざまなアプリケーションやサービスを提供するクラウドベースのサービスです。Microsoft Word、Excel、PowerPointなどのオフィスアプリケーションを含むさまざまなコラボレーションツールやストレージ、メール、コミュニケーションツールなどを提供しています。"
},
"content_filter_results": {
"hate": {
"filtered": false,
"severity": "safe"
},
"self_harm": {
"filtered": false,
"severity": "safe"
},
"sexual": {
"filtered": false,
"severity": "safe"
},
"violence": {
"filtered": false,
"severity": "safe"
}
}
}
],
"usage": {
"prompt_tokens": 54,
"completion_tokens": 166,
"total_tokens": 220
}
}
M365について教えてくれましたね。あと、
"usage": {
"prompt_tokens": 54,
"completion_tokens": 166,
"total_tokens": 220
}
という情報も返してくれており、消費したトークン数も確認できますね。
ということで、問題なくChatGPTにAPIリクエストできました!
実際にコマンドからAPIにリクエストを送ってみることでChatGPT(LLM)アプリケーションの裏側の一部が垣間見れたのではないでしょうか?別に生成AIでなくても皆様が普段お使いのWebアプリケーションでも同じことで、このような感じのことが裏側では行われているのです。例えばWebブラウザに表示されている(アプリに対して何かしらの指示をする)ボタンをクリックすると、裏側ではAPIに対してリクエストを送っていたりするわけです。厳密に言うとそのアプリケーションがSDKを使ってAPIにリクエストを送っています。少々語弊はありますが、アプリがcurlコマンドを打っていると考えて頂いて差し支えないです。
Azure OpenAI LLMアプリケーション開発にあたってはAPIアクセス以外にも色々とお困りごとが出てくるかもしれませんが、その際にはぜひとも法人でのAzure導入前の相談窓口であるAzure相談センターまでお気軽にお問い合わせいただけますと幸いです。弊社では、ユーザー様のご状況やご要望を踏まえて最適な形でのAzureの導入のご支援を提供しており、Azure に精通したスタッフが丁寧にご回答させていただきますし皆様のAOAIを活用したサービス開発の一助となるべく尽力いたします。
Azureの導入や運用に関するお悩みは SoftBankグループのSB C&Sにご相談ください
SoftBankグループのSB C&Sは、さまざまな分野のエキスパート企業との協力なパートナーシップによって、多岐にわたるAzure関連ソリューションをご提供しています。
「Azureのサービスを提供している企業が多すぎて、どの企業が自社にベストか分からない」
「Azure導入のメリット・デメリットを知りたい」
「Azureがどういう課題を解決してくれるのか知りたい」
など、Azureに関するお悩みならお気軽にお問い合わせください。
中立的な立場で、貴社に最適なソリューションをご提案いたします。
クラウドサーバーご検討中の方必見
お役立ち資料一覧
そのようなお悩みはありませんか?
Azure相談センターでは、上記のようなお悩みを解決する
ダウンロード資料を豊富にご用意しています。
是非、ご覧ください。
オンプレミスからクラウドへの移行を検討している方のために、安心・スムーズな移行を実現する方法を解説し、
運用コストの削減に有効な「リザーブドインスタンス」もご紹介するホワイトペーパーです。
導入から活用まで専門スタッフが回答いたします。
お気軽にお問い合わせください。