LoginSignup
5
4

More than 1 year has passed since last update.

祝 Azure OpenAI Service GA! ② GPT-3 & ChatGPT を Rest API から使ってみる

Last updated at Posted at 2023-03-15

1/16 に GA (General Availability: 一般提供) になった Azure OpenAI Service は、Azure 上で OpenAI が稼働するサービスです。Cognitive Services の一員として & Web API として利用できる、Studio と呼ばれる GUI が用意されており、テストや調整などが可能です。

Azure OpenAI Studio からお試し してみたので、今度は Rest API で利用してみます。

3/10 現在、GA したとはいえ、Azure OpenAI Service を利用するには Web から利用申請が必要です。Text and Code Model (GPT-3) と Dall-E 2 の申し込みができますが、とりあえず Text and Code Model だけ申請するのがおススメ!ChatGPT は Text Model の権限があれば利用できます。また、申請時には有効な Azure サブスクリプション (のID) が必要です。

Azure OpenAI Service 自体は GA ですが、3/10~ 利用可能になった ChatGPT は現在プレビュー中です。

準備

  • Azure OpenAI Studio からお試し の記事を参考に、
    • Azure OpenAI Service のプレビュー申込 & Azure Portal からのサービス作成を行い、キーとエンドポイントをローカルに保存しておきます。
    • GTP-3 モデルの text-davinch-003、ChatGPT モデルの gpt-35-turbo をデプロイしておきます。
  • Rest API を POST 送信できるツール (こちらでは Postman を使います)

Azure OpenAI Service の GPT-3 ベースのモデルを Rest API から使ってみる

Abstractive Summarization (趣旨要約)

GPT-3 モデルへの Rest API Call に必要な情報を確認

Azure OpenAI Studio: Abstraction Summarization の手順の通り、GPT-3 プレイグラウンドで AIモデルへの投入データ (AIモデルへの指示と分析したい文章) を入力した状態で、[コードの表示] をクリックします。

スクリーンショット 2023-03-13 104122.png

python | curl | json のサンプルコードが表示できます。ここでは curl で Rest API からコールするのに必要な内容を確認します。URL 部分を選択してコピーし、ローカルに保存しておきます。

スクリーンショット 2023-03-13 104211.png

Rest API コールの Body 部分は JSON のサンプルコードを見たほうがわかりやすいです。
画面下の [コピー] をクリックして、json の中身をそのままコピー、こちらもローカルに保存しておきます。

スクリーンショット 2023-03-13 104212.png

GPT-3 モデルへ Rest API で Post してみる

Rest API ツール (ここでは Postman) を開き、情報をセットします。

  • Type: POST
  • URL: 上記の手順でコピーしたURL (https://XXXXXXX.openai.azure.com/openai/....)
  • Header:
    • Content-Type: application/json
    • api-key: Azure Portal からコピーしておいた Azure OpenAI サービスのキー
  • Body: 上記の手順でコピーしたjson

スクリーンショット 2023-03-13 104213.png
スクリーンショット 2023-03-13 104214.png

入力できたら、[Send] をクリックして POST してみます。
返答が戻り、Body部分に text に要約文が表示されます。

スクリーンショット 2023-03-13 104215.png

返答 Text が途中で切れているようですが、返答 Body の json に含まれる "finish_reason""length" となっているので、もう少し返答トークンの上限値 ("max_token") を増やす必要がありそうです。

Azure OpenAI Service の ChatGPT ベースのモデル を Rest API から使ってみる

Azure OpenAI Studio: ChatGPT モデルをお試し の手順で、ChatGPT プレイグラウンドを開き、チャットセッション のエリア下部にある入力欄に質問を入力します。すると回答が生成されて表示されます。

スクリーンショット 2023-04-23 132825.png

回答が表示された状態で、チャットセッション のエリアにある Show raw JSON を ON にします。

スクリーンショット 2023-04-23 132829.png

下図の赤枠の部分が ChatGTP のモデルで生成された回答なので、Web API で利用するときはこの部分を削除して (=この部分の回答を作成するように) POSTすることになります。

スクリーンショット 2023-04-23 132843.png

チャットセッション のエリアにある コードの表示 をクリックします

スクリーンショット 2023-04-23 132845.png

GPT-3 モデルと同様に、python | C# | curl | json のサンプルコードが表示されます。
curl で Rest API からコールするのに必要な内容を確認します。

  • URL:
    • https://(作成した Azure OpenAI Service 名).openai.azure.com/openai/deployments/(作成した gtp-35-turbo のデプロイ名)/completions?api-version=2023-03-15-preview
  • Header
    • Content-type: application/json
    • api-key: (Azure Portal で取得したキー)
  • Body
    • messages: 前の手順で確認した JSON
    • ほかのパラメーターはとりあえずそのままでOKです

URL 部分を選択してコピーし、ローカルに保存しておきます。

スクリーンショット 2023-04-23 132920.png

Rest API コールの Body 部分は JSON のサンプルコードを確認します。
画面下の [コピー] をクリックしてローカルに保存しておきます。

やはり ChatGPT が生成した回答も入ってしまっているので、実際に POST するときは、この部分を削除 (=この部分の回答を作成するように) して使います。

スクリーンショット 2023-04-23 135603.png

ChatGPT モデルへ Rest API で Post してみる

Rest API ツール (ここでは Postman) を開き、情報をセットします。

  • Type: POST
  • URL: 上記の手順でコピーしたURL (https://XXXXXXX.openai.azure.com/openai/....)
  • Header:
    • Content-Type: application/json
    • api-key: Azure Portal からコピーしておいた Azure OpenAI サービスのキー

スクリーンショット 2023-04-23 141034.png

  • Body: 上記の手順でコピーした JSON を一旦そのまま貼り付け、content の項目を加工します。

gtp-35-turbo モデルによるチャット生成は、ユーザーまたはボットの会話が
{"role":"ユーザー名", "content":"会話の内容"} のフォーマットで示され、
{"role":"ユーザー名", "content":""} のように content が空になっている ユーザーの会話を生成する仕組みになっています。

変更前(例)

{
      "role": "assistant",
      "content": "ChatGPTは、情報検索に役立つ機能を持つAIアシスタントです。以下のようなことができます。\n\n1. 質問に答える:ChatGPTは、あらゆるトピックに関する質問に答えることができます。例えば、歴史、地理、科学、テクノロジー、エンターテインメントなど。\n\n2. 検索結果の提供:ChatGPTは、特定のトピックに関する情報を検索して、それに関する検索結果を提供することができます。\n\n3. 翻訳:ChatGPTは、多言語に対応しており、テキストを他の言語に翻訳することができます。\n\n4. カレンダーの管理:ChatGPTは、予定を管理するためのカレンダーアプリケーションと連携して、予定の追加や削除などの操作を行うことができます。\n\n5. その他のタスク:ChatGPTは、他にも多くのタスクを実行することができます。例えば、音楽の再生、天気情報の提供、ニュースの配信、ユーザーの健康状態を追跡するなど。"
    }

↓ ChatGTPが作成した回答を削除します。
変更後(例)

{
      "role": "assistant",
      "content": ""
    }

スクリーンショット 2023-04-23 141124.png

入力できたら、[Send] をクリックして POST してみます。
返答が戻り、Body部分の content に返答文が表示されます。

スクリーンショット 2023-04-23 141804.png

さらに同じコンテキストで会話を続けたい場合は、生成された回答と質問を追加して POST します。

...{ "role":"assistant", "content":"(ChatGPTが生成した回答)" },{ "role":"user", "content": "(追加の質問)", "role": "assistant", "content":""} となるように Body の JSON を修正します。

スクリーンショット 2023-04-23 142007.png

初めの質問と回答を加味した、追加質問に対する回答が生成されます。

スクリーンショット 2023-04-23 142043.png

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4