BLOGAzureブログ

Azure OpenAI ServiceのAPIにリクエストを送る体験をしてみよう

2024.03.01

クラウドサーバーご検討中の方必見 お役立ち資料一覧

皆さまこんにちは、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'
                      }
                    }
                

指定した通りの値が確認できます。

aoaiStudio-deploy.png

念のためデプロイの状態も見てみると、当然ではありますが問題ないことが確認できました。

edited_deploy-status.png

プレイグラウンドからプロンプトを投げてみる

今回作成したデプロイが選択されていることを念のため確認し、各種パラメターなどはすべて既定のままとして投げました。

Playground-deploy-param.png

「Azure portalについて教えて」と聞いてみました。問題なく出力が返ってきましたね。

Playground-chatSession.png

CUIからAPIリクエストを送る

ここからが実際にやりたいことです。しかしどのようなコマンドを打てばよいかわかりますか?結論わからなくても大丈夫です、安心してください。

「コードの表示」ボタンをクリックしてプルダウンを'curl'にしてください。

edited_display-code.png

するとどうでしょう、サンプルコードが表示されました。先ほど入力したプロンプトと、それに対するコンプリーションもコードとして表示されていますね。

sampleCode.png

APIにアクセスするにはキーとエンドポイントが必要になりますが、ご丁寧にエンドポイントは直に書いてくれています。下部のエンドポイントというところからコピーして貼り付けても良いですが、表示されているコードをコピーして使うのが楽です。
キーについては、YOUR_API_KEYと伏せられているので実際にコマンドを打つ際にコピーした値を記述してください。

コマンド実行環境

サンプルコードの通りcurlコマンドを使ってモデルに対してREST APIアクセスを行います。そのためcurlコマンドが使えるCUI環境を用意してください。手元のPCで使えるならそれで問題ありません。詳細は割愛しますがWindowsだと少々ややこしいので、LinuxやMacが良いでしょう。

いやいやWindows以外の環境は調達が難しいですという方、Azure Cloud Shellを使うと一番楽ですよ。Azure(サブスクリプション)が利用できるのであれば簡単に環境を用意できますし、Azure portalから簡単に使えます。
公式ドキュメント |  Azure Cloud Shell とは

シェル環境はBashを選択しましょう。

cloudshell-bash.png

これで先ほどのサンプルコードをほぼそのまま活用して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 エヴァンジェリスト
    SB C&S株式会社 ICT事業本部 クラウド・ソフトウェア推進本部 クラウドプラットフォーム推進統括部 戦略推進室 販売企画課

yyatsurugi-image-v2.png

Azureの導入や運用に関するお悩みは SoftBankグループのSB C&Sにご相談ください

SoftBankグループのSB C&Sは、さまざまな分野のエキスパート企業との協力なパートナーシップによって、多岐にわたるAzure関連ソリューションをご提供しています。

「Azureのサービスを提供している企業が多すぎて、どの企業が自社にベストか分からない」
「Azure導入のメリット・デメリットを知りたい」
「Azureがどういう課題を解決してくれるのか知りたい」
など、Azureに関するお悩みならお気軽にお問い合わせください。
中立的な立場で、貴社に最適なソリューションをご提案いたします。

クラウドサーバーご検討中の方必見
お役立ち資料一覧

クラウドサーバーご検討中の方必見 お役立ち資料一覧
  • クラウドサーバーの導入を検討しているがオンプレミスとどう違うのか
  • AWSとAzureの違いについて知りたい
  • そもそもAzureについて基礎から知りたい
  • 今、話題の「WVD」って何?

そのようなお悩みはありませんか?
Azure相談センターでは、上記のようなお悩みを解決する
ダウンロード資料を豊富にご用意しています。
是非、ご覧ください。

Azureの導入・運用に役立つ資料を
無料でダウンロードしていただけますDOWNLOAD

オンプレミスからクラウドへの移行を検討している方のために、安心・スムーズな移行を実現する方法を解説し、
運用コストの削減に有効な「リザーブドインスタンス」もご紹介するホワイトペーパーです。

Azureのことなら、
SB C&Sにご相談を!

導入から活用まで専門スタッフが回答いたします。
お気軽にお問い合わせください。