初めてのAzure OpenAI(リソース作成、モデルデプロイ、Logic Appsから利用)

Azure,Logic Apps,OpenAI

今回は初めてのAzure OpenAIという事で利用開始する為の手順を中心に纏めてみました。
最初にAzure OpenAIのリソース作成、モデルのデプロイ、Azure OpenAI Studio上での利用までの手順を纏めてます。
Azure OpenAIのREST APIを呼び出す手順はロジックアプリ(Logic Apps)のワークフローを使って確認します。

    • Azure OpenAIのリソース作成
    • Azure OpenAI Studio使ったモデルのデプロイ
    • ロジックアプリ(Logic Apps)のワークフローでAzure OpenAIのRest API呼び出し、実行結果表示

※リソース作成前に事前申請が必要です。(2023年7月現在)

スポンサーリンク

Azure Open AIをはじめてみる

Azure OpenAIの利用開始には事前申請が必要

2023年7月現在、Azure OpenAIの利用開始時には事前申請が必要となっています。

事前申請

早ければ申請から1日~2日後にマイクロソフト社より完了連絡が届きます。

※サブスクリプション単位(複数指定可能)で申請が必要です。利用開始時のみ必要です。1度申請すれば大丈夫です。

Azure OpenAIのリソースを作成

Cognitive ServicesにAzure OpenAIは含まれます。
メニューでAzure OpenAIと入力、選択すると表示されます。
主な設定内容は下記の通りになります。

    • 基本
      • リージョン
      • 名前
      • 価格レベル
    • ネットワーク
      • 種類(アクセス制御)

リソース名はazure-open-ai-testでEast USリージョンにデプロイしています。

※今回は検証目的なのでパブリックアクセスを許可しています。

リソース作成
作成を選択します。

基本タブです。
名前や価格レベルを選択します。

Azure OpenAIの価格

※価格レベルは1つしかなくなっています。(2023年7月現在)

ネットワークタブです。
Azure OpenAIへのアクセスについて設定します。

※リソース作成後に変更可能です。

 

確認画面が表示されます。
作成を選択します。

※タグは適時設定します。

モデルのデプロイ

Azure OpenAIのモデルをデプロイします。
言語処理したい内容に応じてモデルを選択します。
今回はGPT-3の最新モデル(gpt-35-turbo)を選択しています。

Azure OpenAI Service モデル

Azure OpenAI Studioを使うとGUIでAzure OpenAIにアクセスする事が出来ます。

Azure OpenAI Service とは

Azure OpenAI Studioを使ってモデルをデプロイします。

※モデル名はazure-open-ai-gpt35としています。

モデルのデプロイ

作成したAzure OpenAIのリソースを選択します。

Azure OpenAI Studioに移動するを選択します。
Azure OpenAI Studio新しいデプロイの作成を選択します。

モデルのデプロイ画面が表示されます。
モデルやデプロイ名を選択します。
レート制限値を設定します。

※リソース作成時の最新GPT-3 モデルを選択しています。

リソースが作成されている事が確認出来ます。

Azure OpenAI Studioを使ってチャット

Azure OpenAI Studioを使うとGUIでチャットする事が出来ます。

※”Azure OpenAIの使い方について教えて下さい。”と質問してみました。

チャット
チャットのメニューを選択するとチャットセクションが表示されます。
文字を入力するとそれに対応した答えが戻ってきます。

コードを表示

チャットの結果はコード表示する事が出来ます。

Azure OpenAI Service の REST API リファレンス

※このコードを参照しながらロジックアプリのワークフローを作成します。

コードを表示

先ほどのチャット結果をコード表示します。
messagesに質問(role:user)と回答(role:assistant)に表示されている事が確認出来ます。

※コード結果はcurlだけではなくPythonなどでも表示可能です。

curl “https://azure-open-ai-test.openai.azure.com/openai/deployments/azure-open-ai-gpt35/chat/completions?api-version=2023-03-15-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 Open AIの使い方について教えて下さい。\"},{\"role\":\"assistant\",\"content\":\"Azure Open AIは、Microsoft Azureクラウドプラットフォーム上で提供されるAIサービスです。以下にAzure Open AIの使い方の一般的な手順を説明します。\n\n1. Azureポータルにサインインするか、Azureアカウントを作成します。\n\n2. Azureポータルにログインしたら、左側のメニューから「AI + Machine Learning」セクションを選択します。\n\n3. 「AI + Machine Learning」セクションで、「Cognitive Services」または「Machine Learning」を選択します。Azure Open AIは、これらのカテゴリの中に含まれています。\n\n4. 「Cognitive Services」を選択した場合、利用したいAIサービス(例:テキスト解析、音声認識、顔認識など)を選択します。その後、必要な設定やリソースの作成を行います。\n\n5. 「Machine Learning」を選択した場合、Azure Machine Learning Studioを使用してモデルの作成やトレーニング、デプロイを行います。または、Azure Machine Learning SDKを使用してPythonを介してモデルを作成およびトレーニングすることもできます。\n\n6. サービスの作成が完了したら、必要な情報(エンドポイントURL、認証キーなど)を取得し、アプリケーションやシステムに統合します。\n\n以上が一般的なAzure Open AIの使い方の手順ですが、実際の利用方法は具体的な目的やニーズによって異なります。詳細な手順やリファレンスドキュメントについては、Microsoftの公式ドキュメントやチュートリアルを参照してください。\"}],
\"max_tokens\": 800,
\"temperature\": 0.7,
\"frequency_penalty\": 0,
\"presence_penalty\": 0,
\"top_p\": 0.95,
\"stop\": null
}"

ロジックアプリからAzure OpenAIを利用する

リソース作成

ロジックアプリのリソースを作成します。

※ロジックアプリ名はopen-ai-checkとしています。

リソース作成

ロジックアプリのリソースを作成します。
Azure OpenAIと同じリージョンを選択しています。
プランは消費レベルを選択しています。

※検証目的なのでゾーン冗長やログ分析は無効にしています。

確認画面で作成を選択します。

ワークフロー作成

ロジックアプリデザイナーを使ってワークフローを作成します。
今回はトリガーにHTTP要求の受信時を利用します。
サンプルペイロードのJSONを使ってAzure OpenAIへの質問文字列を入力します。

ワークフロー作成
トリガーとしてHTTP要求受信時を選択します。
サンプルのペイロードを使用してスキーマを生成するを選択します。

サンプルのJSONペイロードは検索の文字列を入力するものを設定しています。

{
 "messages": {
  "content":"ここに検索文字列を入力する。"
 }
}

要求本文のJSONスキーマが生成されます。
入力した文字列をinput_textとし変数化しています。
Azure OpenAIのコネクタは準備されていません。
HTTPのアクションを介してAzure OpenAIのREST APIを利用します。

確認したチャットのコードやリファレンスを参考に設定します。
role userに入力した文字列を設定します。

Azure OpenAI Service の REST API リファレンス

※API KeyはAzure OpenAIリソース管理にあります。
※今回は検証なのでapi-keyを直接設定しています。利用時はセキュリティ面を考慮してKey Vault等に保管するようにします。

{
 "frequency_penalty": 0,
 "max_tokens": 800,
 "messages": [
  {
   "content": “You are an AI assistant that helps people find information.",
   "role": “system"
  },
  {
   "content": “@{variables('input_text’)}",
   "role": “user"
  }
 ],
 "presence_penalty": 0,
 "stop": null,
 "temperature": 0.7,
 "top_p": 0.95
}

※今回はAzure OpenAI Studioで確認したコードをベースに設定しています。
※ロジックアプリ(Logic Apps)でのテキスト翻訳についてはこちらに纏めています。

ロジックアプリ(Logic Apps)からキーコンテナー(Key Vault)のシークレットを参照する手順についてはこちらに纏めています。

Azure OpenAIのキー確認方法

REST API利用時にはAzure OpenAIのキーをAPI Keyとして設定する必要があります。
設定値はAzure OpenAIのリソース管理で確認します。

※キーはKey Vaultなどに保管し利用するようにします。

APIキーの確認

Azure OpenAIのキーとエンドポイントで確認出来ます。

ワークフロー実行

トリガーの実行(ペイロードで実行)を使って確認してみます。

ワークフロー実行
サンプルのJSONペイロードで利用した内容を本文に貼り付けます。
実行します。

{
 "messages": {
  "content":"Azure Open AIの使い方について教えて下さい。"
 }
}

ロジックアプリの実行結果を確認します。
正常に実行できた場合は成功(グリーンのチェック)が表示されます。

出力の本文に回答が表示されている事が確認出来ます。

回答を抽出

REST APIの実行結果はJSON形式で回答以外の項目も含まれます。
結果の出力(変数)としてAzure OpenAIの回答を抽出します。

    • 変数
      • 回答:REST APIの実行結果を入力
      • 結果の出力:回答の文字列を入力
ワークフロー作成

REST APIの実行結果を保管する為の変数を初期化します。
REST APIの実行結果はHTTPアクションの本文に出力されます。
初期値として設定します。

※JSON形式なので変数の種類はオブジェクトを選択します。

アクションでデータの操作でJSONの解析を選択します。
回答(変数)をコンテンツ(入力値)に設定します。
サンプルのペイロードJSONはロジックアプリの実行結果を設定します。

※ロジックアプリの実行結果はトリガーの実行(ペイロードで実行)で得られたHTTPアクションの本文になります。

Azure OpenAIの回答を入力する変数を作成します。
変数の初期化の種類は文字列を設定します。
初期値は空にします

変数の設定を選択します。
値にJSONの解析のcontentを選択します。

 

 

回答を確認

ロジックアプリを実行(ペイロードで実行)して結果を確認します。

ワークフロー実行
正常終了している事が確認出来ます。
結果の出力(変数)を確認すると回答だけを抽出出来ている事が確認出来ます。

HTMLテーブルを使って質問と回答を表形式で表示

質問と回答でHTMLを作成する事も出来ます。

HTMLテーブル作成

HTMLテーブルの作成アクションを選択します。
開始にJSONの解析のchoicesを選択します。
質問にinput_text、回答にcontentを選択します。

サンプルペイロードを使ってワークフローを実行します。
HTMLテーブルの作成の出力を見ると表形式で質問と回答が表示されている事が確認出来ます。

最後に

今回は初めてのAzure OpenAIという事でリソース作成、モデルデプロイ、ロジックアプリからAzure OpenAIの利用までの一連の手順を纏めてみました。
考えていたよりも簡単に利用開始する事が出来ました。

ワークフローのトリガー(入力)やアクション(出力)をSlackやTeamsを利用するとTeamsやSlackで自動応答させる事も可能です。
今回は利用開始までの手順を中心でしたが引き続き色々試してみたいと思います。

ロジックアプリ(Logic Apps)でLog Analyticsクエリ実行結果をメール送信する方法についてはこちら。