Azure OpenAI ServiceでChatGPTを使ってみた

本記事は、当社オウンドメディア「Doors」に移転しました。

約5秒後に自動的にリダイレクトします。


このたびブレインパッドは、LLM/Generative AIに関する研究プロジェクトを立ち上げ、この「Platinum Data Blog」を通じてLLM/Generative AIに関するさまざまな情報を発信をしています。
今回は、新登場したAzure OpenAI ServiceでChatGPTを使うまでの流れをまとめました。


こんにちは。データエンジニアリング本部 ソリューション開発部の山下です。

巷ではChatGPTの話題に事欠きませんが、もちろんブレインパッド社内もGPTなどのGenerative AIの話題でもちきりです。そんな中、当本部では、Foundation Model(FM)およびLarge Language Model(以下、LLM)の技術獲得を目的に、LLM技術獲得本部プロジェクトが発足し、複数のワーキンググループに分かれて活動をしています。

普段クロスファンクショナルチームのAzureチームとして活動をする私ですが、こちらのPJにも所属して技術検証やプロトタイプの作成を行っています。

今回はAzure OpenAI ServiceのAzureにおける構成の説明と、実際に使うまでの流れを記事にしました。

目次

1. Azure OpenAI Serviceの構成

Azure OpenAI Serviceの位置づけとWEB画面を確認します。
Azure OpenAI ServiceはAzure Cognitive Servicesの内の1つのサービスとして提供されています。Azure Cognitive Servicesの利用者は直接的な機械学習やデータサイエンスの知識がなくともAPIやSDKなどから簡単に扱うことができるサービス群です。

ですので、Azure Portalでは、Cognitive Servicesの画面の中にAzure OpenAI Serviceのメニューがあり、各OpenAIリソースが管理されています。
そして、リソース毎にOpenAIのモデルをデプロイする構造になっています。
また、UIとしてREST APIやPython SDKのほか、Webベースの「Azure OpenAI Studio」が用意されています。

Azure OpenAI Serviceの構成イメージ

Azure OpenAI Studioはリソース毎にURLが分かれており、「プレイグラウンド」と「管理」のメニューが用意されています。

  • プレイグラウンド
    プレイグランドでは、チャット形式のUIが用意されており、そのUIを通じてデプロイしたモデルに対してプロンプト(命令)を入力することができます。
  • 管理
    管理ではデプロイしたモデルの管理や、デプロイ可能なモデルの管理、ファインチューニング用のファイル(データセット)の管理を行うことができます。


次は実際にリソースを作成してみます。

2. Azure OpenAI Serviceの利用申請

Azure OpenAI Service を使い始める前に、Microsoft社に利用申請をする必要があります。まだ利用申請が済んでいない場合は、https://aka.ms/oaiapply から利用申請を行うことができます。私の場合申請から利用開始までに2〜3営業日かかったので、なるべく早めに申請をしておくことをお勧めします。また、GPT-4を利用したい場合は、上記利用申請に加えてhttps://aka.ms/oai/get-gpt4 からも利用申請が必要になります。

3. Azure OpenAI Serviceリソースの作成

Azure PortalにログインしたらCognitive Servicesの画面を開きます。

「Azure OpenAI」のメニューを選択します。


上部の「+作成」からリソースの作成を行います。

Azureではおなじみの項目のサブスクリプション、リソースグループ、リージョン、名前、価格レベルを入力します。

この時リージョンによって、利用可能なモデルが異なるため下記サイトで利用する予定のモデルがリージョンでサポートされているか確認が必要です。

https://learn.microsoft.com/ja-jp/azure/cognitive-services/openai/concepts/models

また、上記のメッセージが出ている場合、「3.Azure OpenAI Service利用申請」が済んでいないのでリンクから利用申請を行ってください。

続いてネットワークについてです。こちらも、おなじみの以下の項目から選ぶことができます。今回はAll networkにします。

  • All network
    どこからでもアクセス許可
  • Selected networks
    特定VNet(サービスエンドポイント)や特定のIPアドレスからアクセス許可
  • Disabled:プライベートエンドポイントからアクセス許可

必要に応じてタグを入力します。

最後に確認をして作成!数分でリソースができあがります。
作成済みリソース名のリンク先に遷移すると、個別のリソース管理画面が表示されます。

リソースができたら、リソースの管理画面を開きます。管理画面の上側に「Azure OpenAI Studioに移動する」というリンクがあるのでそちらを選択します。

4. Azure OpenAI Serviceのモデルをデプロイ

次はモデルのデプロイを行います。モデルのデプロイは、Azure PortalとAzure OpenAI Studioのどちらからでもできます。今回はAzure OpenAI Studioから行ってみたいと思います。

まずは、Azure OpenAI Studioに入り、左側の「デプロイ」を選択します。
デプロイの管理画面では、「+新しいデプロイの作成」を選択します。

「モデル名」のプルダウンからベースモデルを選びます。
2023年5月現在では「East US」では以下のベースモデルが選択できます。

  • code-davinci-002
  • gpt-35-turbo
  • text-ada-001
  • text-curie-001
  • text-davinci-002
  • text-davinci-003
  • text-embedding-ada-002
  • text-similarity-ada-001
  • text-similarity-curie-001

デプロイできるモデルの種類やバージョンについては「Azure OpenAI Service モデル」を参照してください。

今回のモデルは「gpt-35-turbo」にしてみました。モデルのバージョンは「0301」以外選択できませんでした。デプロイ名を入力して「作成」。

このようにモデルをデプロイすることができました。

5. Azure OpenAI Serviceでチャット

続いてデプロイしたモデルを使ってみます。左のプレイグランドの「チャット」もしくは中央の「ChatGPTプレイグランド(プレビュー)を選択します。

ChatGPTプレイグランドの画面に遷移しました。アシスタントのセットアップ、チャットセッション、パラメータのパネルが用意されています。

このパネルで設定した値が、APIのパラメータとなってAzure OpenAI Serviceに要求が送信されます。実際のコードはチャットセッションパネルの「コードの表示」から見ることができます。

まずはアシスタントのセットアップから行います。

AIの役割をセットアップします。今回は「Xbox customer support agent」を選択しました。

システム(AI)に送り込むメッセージの変更を聞かれるので「続行」を選択します。

システムメッセージや、ショットの例が更新されました。(サンプルがXboxカスタマーサポートにPS5について聞いているのは少し面白いですね。)

続いてチャットセッションで、「Xboxを買いたいと思っています」と入力してみました。

しっかり日本語で回答してくれました。

この状態で「コードの表示」でコードを見てみたいと思います。

#Note: The openai-python library support for Azure OpenAI is in preview.
import os
import openai
openai.api_type = "azure"
openai.api_base = "https://aoai-llmres-yamashita.openai.azure.com/"
openai.api_version = "2023-03-15-preview"
openai.api_key = os.getenv("OPENAI_API_KEY")
response = openai.ChatCompletion.create(
  engine="gpt35-llmres-yamashita",
  messages = [
  {
  "role": "system",
  "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."
  },
  {
  "role": "user",
  "content": "How much is a PS5?"
  },
  {
  "role": "assistant",
  "content": "I apologize, but I do not have information about the prices of other gaming devices such as the PS5. My primary focus is to assist with issues regarding Xbox devices. Is there a specific issue you are having with your Xbox device that I may be able to help with?"
  },
  {
  "role": "user",
  "content": "Xboxを買いたいと思っています"
  },
  {
  "role": "assistant",
  "content": "Xboxを購入することに決めたのですね。素晴らしい選択です!Xbox One SとXbox One Xの2つのモデルがあります。Xbox One Sはより手頃な価格で、4Kビデオストリーミング、HDR、および4K Ultra HD Blu-ray再生をサポートしています。Xbox One Xはより高価ですが、より高速なプロセッサー、より高速なグラフィックス、およびより高品質なビジュアルを提供します。どちらのモデルに興味がありますか?また、他に何か質問があればお答えします。"
  }
],
  temperature=0,
  max_tokens=350,
  top_p=0.95,
  frequency_penalty=0,
  presence_penalty=0,
  stop=None)
||< presence_penalty=0,
  stop=None)


言語は、json,python,c#,curlを選択できます。
このようにサンプルコードを確認することで、どの様にコードを書けばよいのかが分かります。

また、パラメーターパネルの一番下に「現在のトークン数」を表示してくれる機能があります。Azure OpenAI Service の料金はトークンあたりの課金が含まれますので、事前に確認出来るのはありがたいですね。

6. まとめ

今回はAzure OpenAI Serviceが新登場したということで、とりあえずリソースを作って、モデルをデプロイし、Azure OpenAI StudioからChatGPTを使ってみました。今回、実際にやってみることで比較的簡単に利用することができることが分かりました。
次回は、Azure OpenAI ServiceのAzure Portal上にはどのようなメニューが用意されているのか、何ができるかを調べて記事にしたいと思います。