はじめに

今回はChatGPTやGeminiなどに代表される生成AIを利用することのできるAzure OpenAI Serviceについて紹介します。Azure OpenAI Serviceを使った生成AIの活用方法やアプリケーションへの生成AIの組み込み方を説明します。

Azure OpenAI Serviceとは

Azure OpenAI Serviceは、OpenAIの提供するAIモデルをAzure上で使用できるサービスです。このAzure OpenAI Serviceを使うことで、自然言語処理、画像生成、プログラムコードの生成や補完、テキストの要約、翻訳など、さまざまなAI機能をアプリケーションに統合することができるようになります。

OpenAIとは

まずはサービス名にも入っているOpenAIについて簡単に説明します。OpenAIは人工知能(AI)の研究と開発を行う企業であり、最も有名なサービスとしてChatGPTを提供しています。 OpenAIが開発しているAIモデルとしては主に以下のものがあります。

・GPT(Generative Pre-trained Transformer)  自然言語を処理するAIモデルで、文章作成や質問応答、翻訳などを行うことができる。有名なChatGPTはこのGPTをチャット形式で利用することのできるWebサービス。
 GPTにはGPT-3、GPT-4、GPT-4o、o1などのシリーズが存在し、それぞれのシリーズで性能や得意分野が異なるため、用途に応じたシリーズの選択が大事になる。

・Codex
 GPTシリーズをベースとしたソースコード生成用のAIモデル。自然言語による指示からコードを生成することができる。有名なところでは、GitHub CopilotがCodexを使用している。

・DALL-E
 自然言語から画像を生成するAIモデル。ユーザーが入力したテキストの内容に基づいて独自の画像を生成することができる。

これらのOpenAIが提供するAIモデルを使用することで、ビジネスやアプリケーション開発における生産性の向上や、これまでになかった創造的なコンテンツの生成などに期待が寄せられています。
また、OpenAIはMicrosoftとのパートナーシップを結んでおり、多額の投資を受けるだけでなく研究や製品開発のためにAzureのリソースを使用しています。こういった背景からMicrosoftが優先的にOpenAIのAIモデルを利用したサービスを提供できるようになっています。

Azure OpenAI Serviceの活用方法

Azure OpenAI Serviceでは前述したOpenAIの提供するAIモデルを使用したアプリケーションの開発を行うことができます。現在さまざまな活用方法が模索されていますが、主に以下のような用途に活用することができます。

カスタマーサポートの自動化
 GPTを利用して、顧客の質問に対応するチャットボットを作成することができる。例えば企業内のナレッジベースやドキュメントから特定の情報を検索し、質問内容に応じた回答を自動生成することができる

コンテンツ生成とデザイン
 ブログ記事やメール、広告コピーのような文章の作成やWebサイトのデザインなど、コンテンツ制作の効率を向上させることができる。

翻訳・テキスト分析
 Webサイトやメールなどの内容を自動で翻訳、分析して要約したり、内容に応じた特定のアクションを自動で実行したりすることができる。

コードの生成、レガシーコードの移行
 Codexを利用することでコードやコメントの内容に応じたコードの生成・補完を行ったり、レガシーコードを特定のバージョンに対応するコードに書き換えることなどができる。

Azure OpenAI Serviceによる生成AIと既存のアプリケーションや他のAzureサービスを組み合わせることで、アプリケーションの新しい活用方法が見出されています。

Azure AI Studioを使ってAzure OpenAI Serviceを操作してみよう

ここからは具体的にAzure OpenAI Serviceを使用する方法について説明していきます。今回はAzureが提供する「Azure AI Studio」上での操作方法を主に紹介します。

Azure AI StudioからAzure OpenAI Serviceのリソースを作成する

Azure AI Studioとは、Webブラウザ上で操作できるAIアプリケーションの開発とデプロイを行うことができる統合プラットフォームです。Azure OpenAI Serviceのリソース作成から、AIモデルの動作確認、AIモデルを組み込んだアプリケーションのデプロイまで行うことができるようになっています。

まずはAzure AI Studioを表示し、Azure OpenAI Serviceのリソースを作成するところまで行います。Webブラウザから「https://ai.azure.com/」にアクセスします。画面が表示されたら右上の「新しいプロジェクト」ボタンを選択します。

  • Azure AI Studioのトップページ

プロジェクト作成のダイアログが表示されるので、ハブとプロジェクトを作成していきます。Azure AI Studioではプロジェクト単位でAIモデルやアプリケーションの構築を行っていきます。ハブは複数のプロジェクトをまとめる上位の概念で、プロジェクトに必要なリソースやセキュリティ設定などについて管理を行います。
ここでは「プロジェクト名」に任意の名称を入力し、「ハブ」は「新しいハブの作成」のままとして「次へ」ボタンを選択します。

  • プロジェクトの新規作成画面①

ハブの作成画面に移るので、内容を入力していきます。「ハブ名」に任意の名称を入力し、「サブスクリプション」と「リソースグループ」は任意のものを選択します。「場所」ではリソースを配置するリージョンを選択しますが、執筆時点では日本のリージョンでは画像生成のAIモデルが使用できないため、今回は「East US」を選択しています。
「Azure AI サービスまたは Azure OpenAIを接続する」という項目でAzure OpenAI Serviceのリソースを作成することができます。プルダウン右上にある「新しいAIサービスの作成」を選択して任意の名称を入力します。
「Azure AI検索に接続する」は、Azure AI Searchというサービスを使用して独自の検索エンジンをプロジェクトに組み込むオプションです。今回は使用しないため「接続をスキップする」を選択し、「次へ」ボタンを選択します。

  • プロジェクトの新規作成画面②

最後にプレビュー画面が表示されるので、内容に問題がないことを確認して「プロジェクトを作成する」ボタンを選択します。

  • プロジェクトの新規作成画面③

リソース類の作成が完了すると、プロジェクトのダッシュボード画面に遷移します。

  • プロジェクトのダッシュボード

これでプロジェクトの作成は完了です。今後はこのダッシュボードから各種AIモデルを操作していきます。

プレイグラウンドからAIモデルを試してみる(チャット)

プロジェクトが作成でき、ダッシュボード画面が表示されるようになったら早速AIモデルを試してみましょう。画面左側のメニュー欄内に「プロジェクトのプレイグラウンド」というセクションがあります。プレイグラウンドでは各種AIモデルをAzure AI Studio上でインタラクティブに試すことのできる機能です。
セクション内の「チャット」を選択してみます。

  • チャットプレイグラウンドの初期画面

チャットを選択すると、デプロイが必要と表示されます。プレイグラウンドを使用するためには、対象となるAIモデルをプロジェクトにデプロイする手順が初めに必要となります。「新しいデプロイの作成」または「デプロイの作成」ボタンを選択します。

  • チャット用のAIモデルの選択

デプロイの作成を選択すると「チャット完了モデルの選択」というダイアログが表示され、チャット機能に使用できるAIモデルの一覧が表示されます。ここで用途に適したAIモデルを選択してデプロイを行っていきます。今回は「gpt-35-turbo」というモデルを選択して「確認」ボタンを選択します。

  • AIモデルのデプロイのカスタマイズと実行

gpt-35-turboのデプロイ確認画面に遷移します。「カスタマイズ」ボタンを選択して、デプロイの詳細設定ができるようにして2か所設定を変更します。「デプロイの種類」はデプロイしたAIモデルのパフォーマンスやコストを決定する要素です。今回はデフォルトである「Standard」を選択します。「モデルバージョン」は選択したAIモデルの詳細なバージョンを指定できる項目です。今回はデフォルトのままとします。「接続されているAIリソース」はこのAIモデルをデプロイする対象となるAzure OpenAI Serviceを指定する項目です。こちらもデフォルトのままとします。
「1分あたりのトークン数レート制限」という項目のスライダーを操作し、値が「5K」となるようにします。Azure OpenAI ServiceにおけるトークンとはGPTモデルへの入力と出力の基本単位です。入出力したテキストを単語や記号などに分割したものがトークンとして扱われます。今回はこの値を抑えることで短時間で多くのトークンを処理しないように抑制し、必要以上のコストを発生させないようにします。
「コンテンツフィルター」はAIモデルに送信されるテキストに不適切な内容が含まれる場合にそれをフィルタリングするための機能です。今回はデフォルトのまま「DefaultV2」を選択します。最後に「動的クォータを有効にする」は、必要なリソース量を自動的に調整するための機能で、急激なアクセス増加などに対応して可用性を維持するための仕組みです。今回は「オフ」に変更します。
カスタマイズが完了したら「デプロイ」ボタンを選択してデプロイを実行します。

  • チャットプレイグラウンドの初期画面

デプロイが完了すると、チャットのプレイグラウンドが使用可能になります。画面左側の「セットアップ」というセクションに先ほど作成したデプロイが表示されます。「モデルに指示とコンテキストを与える」というセクションは、モデルに書式設定などの応答方法を指示したり、チャットで会話する際のテーマの背景であったり前提条件などを事前にインプットさせる領域です。今回は日本語で応答してもらうような指示を入力しています。
画面右側にはチャットエリアが表示されているので、ここでChatGPTのようにチャットを行うことができます。

  • チャットプレイグラウンドの使用例

ChatGPTのように好きなテーマについてテキストで質問を投げることで、GPTによって生成された回答を得ることができます。

プレイグラウンドからAIモデルを試してみる(画像生成)

チャットのプレイグラウンドを試してみたら、次は画像生成のプレイグラウンドを試してみます。Azure AI Studioの左側のメニューから「イメージ」を選択します。

  • 画像プレイグラウンドの初期画面

画像プレイグラウンドを表示すると、使用例のプロンプトと生成された画像が表示されます。「Prompt」と表記のあるところに生成したい画像の説明文を入力し「Generate」ボタンを選択することで画像を生成します。
なお画像プレイグラウンドでは、デプロイにはあらかじめ画像生成モデルである「DALL-E 2」が用意されているため、新たにデプロイを作成する必要はありません。

  • 画像プレイグラウンドの使用例

執筆時点ではプロンプトに日本語を入力しても期待する画像が生成されにくい場合があります。その際は同じ内容を英語でプロンプトに入力すると期待に近い画像が生成されることがあるため翻訳ツールなどを使用しつつ英語での入力も試してみることをお勧めします。

Webアプリケーションのデプロイ

プレイグラウンドの使い方が分かったら、次はAzure OpenAI Serviceの機能を含んだアプリケーションのデプロイ方法について説明します。今回はチャットプレイグラウンドからWebアプリケーションをApp Serviceにデプロイする方法を紹介します。
Azure AI Studioでチャットプレイグラウンドの画面を表示し、画面上部にあるメニューから「デプロイ」を選択して表示された「...Webアプリとして」を選択します。

  • チャットプレイグラウンドからWebアプリをデプロイする

Webアプリのデプロイ用ダイアログが表示されるので、必要事項を入力します。「名前」にはApp Serviceの名称となる任意の名前を入力します。「サブスクリプション」と「リソースグループ」は任意のものを選択し、「場所」は「Japan East」を選択します。「価格プラン」は「Free(F1)」を選択します。最後に「展開」ボタンを選択してデプロイを実行します。

  • Webアプリのデプロイ画面

Webアプリケーションのデプロイ状況は、左側メニューの「デプロイ」を選択し、「アプリのデプロイ」タブで確認することができます。Webアプリのデプロイには少々時間がかかりますが、この画面で「デプロイ状態」が「成功」となり、「Webアプリの状態」が実行中となればデプロイは成功です。

  • Webアプリのデプロイ状態の確認

Webアプリ名を選択することで、アプリケーションのWebページに遷移することができます。

  • デプロイされたWebアプリケーションの画面

Webアプリ内にチャット画面が埋め込まれており、プレイグランドの時と同様にGPTとのチャットを行うことができます。今回はAzure AI Studioの基本的な操作方法を中心に説明したため詳細に触れませんでしたが、このWebアプリケーションをカスタマイズしたり既存のWebアプリケーションにAzure OpenAI Serviceの機能を追加することももちろん可能です。

コマンドラインからAzure OpenAI Serviceの機能を呼び出してみる

最後に補足的ではありますが、コマンドラインからAzure OpenAI ServiceのGPT機能を呼び出してみてみます。Azure OpenAI Serviceの機能はREST APIで公開されているのでcurlコマンドを使ってチャットのやり取りができることを確認していきます。
まずはコマンドを実行するために必要な情報をAzure AI Studioから取得します。左側のメニューから「デプロイ」を選択し、チャットプレイグラウンド用に作成したデプロイを選択します。デプロイの詳細画面の「エンドポイント」セクションに表示されている「ターゲットURI」にあるURIと「キー」をコピーして控えておきます。

  • Azure AI Studioのデプロイ情報

これらの情報をもとにcurlコマンドを作成します。なお、以下のcurlコマンドはWSLにて実行しています。お使いのターミナルによってはコマンドの形式が異なる場合があります。

curlによるGPT機能の呼び出し例

curl "<チャット用のターゲットURI・・・①>" \
  -H "Content-Type: application/json" \
  -H "api-key: <APIキー・・・②>" \
  -d '{
    "messages":[
        {"role": "system", "content": "あなたはMicrosoft Azureのエキスパートです。ユーザーの指示に日本語で応答してください。"},
        {"role": "user", "content": "Azure OpenAI Serviceとは?"}
    ],
    "max_tokens": 800,
    "temperature": 0.7
  }'

curlコマンドの初めに設定するURIには、先ほど取得したターゲットURIを設定します(①)。これがAzure OpenAI ServiceのGPT機能用のREST APIのエンドポイントとなります。続くオプションの設定のうちHTTPヘッダに「api-key」を設定しますが、ここで先ほど取得した「キー」の文字列を設定します(②)。
「-d」オプションで質問内容をJSON形式でリクエストボディに設定しています。「messages」リストに会話の設定と具体的な質問内容が含まれています。「"role": "system"」の項目ではシステム向けのメッセージを設定します。チャットプレイグランドで「モデルに指示とコンテキストを与える」というセクションがありましたが、それと同じ用途になります。「"role": "user"」の項目が実際のチャットメッセージです。このメッセージに対する応答が、curlコマンドのレスポンスとして返ってくることになります。「max_tokens」と「temperature」はAPIの補足的なパラメータで、「max_tokens」は生成されるトークンを最大数を指定するもので、「temperature」は応答の創造性やランダム性を制御するパラメータで、0に近いほど応答が確定的になり、1に近いほどランダム性が増す仕組みとなっています。
①と②を自身の環境に合わせた内容に置き換えてcurlコマンドを実行すると、以下のようなレスポンスが取得できます。

curlによるGPT機能の呼び出しの応答例

{
    "choices": [
        {
            ・・・中略
            "index": 0,
            "message": {
                "content": "Azure OpenAIサービスは、人工知能(AI)に関する幅広い機能を提供するAzure上のサービスです。これには、自然言語処理、会話型AI、ビジョンAI、機械学習などが含まれます。Azure OpenAIサービスを利用することで、開発者は自分たちのアプリケーションにAI機能を簡単に統合することができます。また、Azure OpenAIサービスは、高度な機能を提供するための豊富なAPI群を提供しており、さまざまなプログラミング言語で利用することができます。",
                "role": "assistant"
            }
        }
    ],
    "created": 1729576218,
    "id": "chatcmpl-AL24Y88ybCFEyooC4oyKOogAyRuEH",
    "model": "gpt-35-turbo",
    "object": "chat.completion",
    ・・・中略
}

「choices」リスト内の「message」項目内に質問に対する応答が含まれています。今回はcurlコマンドを使ってチャット用のREST APIを呼び出しましたが、同様の仕組みで各プログラミング言語向けのSDKを使用することでプログラム内にチャット機能を組み込むことができるようになります。

まとめ

今回はAzureが提供するAIサービスであるAzure OpenAI Serviceについて紹介しました。様々な生成AIモデルをAzure AI Studioを使用することで気軽に試し、アプリケーションに組み込むことができることが分かったかと思います。
ここまで「ゼロからはじめるAzure」としてAzureの各サービスについて初心者向けの紹介をしていた本連載ですが、今回で連載は終了となります。これまでの本連載がAzureをはじめる際の皆さんの一助になっていれば幸いです。

WINGSプロジェクト 秋葉龍一(著) 山田 祥寛(監修)
有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。現在も執筆メンバーを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。
RSS
X:@WingsPro_info(公式)@WingsPro_info/wings(メンバーリスト)
Facebook