Azure OpenAI

Azure OpenAI Service の GPT のモデル操作 Chat Completion と ChatML について

はじめに

GPT ででモデルを操作する方法としてChat Completion と ChatMLがあります。これはGPTを利用するアプリケーション開発において方向性を決める重要な箇所となります。

GPT-35-Turbo および GPT-4 モデルの操作 - Azure OpenAI Service | Microsoft Learn
GPT-35-Turbo および GPT-4 モデルの操作 - Azure OpenAI Service | Microsoft Learn

GPT-35-Turbo および GPT-4 モデルを使用する方法のオプションについて説明します。

learn.microsoft.com

これら2つ手法によりGPTにアクセスできます。

ただし、ここで注目すべき点としてはGPT-4ではChat Completionを操作する唯一の方法となります。そのため、ChatMLよりChat Completionを優先的に利用するのが良いと思います。

それぞれ特徴を簡単まとめています。

Chat Completion

Chat Completion はJson形式

massages内に設定します。

response = openai.ChatCompletion.create(
    engine="gpt-35-turbo",
    messages=[
             {"role": "system", "content": "Assistant is a large language model trained by OpenAI."},
             {"role": "user", "content": "What's the difference between garbanzo beans and chickpeas?"},
       ]
)

ChatML

ChatMLはマークアップ言語です。

prompt内に設定します。改行を\nで入力して一行で書き込む必要があります。またそれぞれタグ<|im_start|><|im_end|>で要素をマークアップします。

response = openai.Completion.create(
  engine="gpt-35-turbo",
  prompt="<|im_start|>system\nAssistant is a large language model trained by OpenAI.\n<|im_end|>\n<|im_start|>user\nWhat's the difference between garbanzo beans and chickpeas?\n<|im_end|>\n<|im_start|>assistant\n",
  temperature=0,
  max_tokens=500,
  top_p=0.5,
  stop=["<|im_end|>"])

モデル操作

モデル操作を行うにはChat Completion と ChatMLがあります。そして、両方で共通することとして、会話形式で入力を受け入れるようにメッセージパラメーターがロール別になっています。

システム ロール

システム ロールは、システム メッセージとも呼ばれ、配列の先頭に含まれます。 このメッセージは、モデルに最初の指示を与えます。

つまり、作成するChatシステムの方向性を決める重要な部分となります。例として以下のような指定ができます。

  • アシスタントの簡単な説明
  • アシスタントの性格的な特性
  • アシスタントに従ってもらいたい手順またはルール
  • FAQ からの関連する質問など、モデルに必要なデータまたは情報

それぞれフォーマットは以下のようになります。system で指定します。

Chat Completion
{"role": "system", "content": "Provide some context and/or instructions to the model"},
ChatML
<|im_start|>system
Provide some context and/or instructions to the model.
<|im_end|>

メッセージ

メッセージはユーザーが入力する部分です。システム ロールの後に、ユーザーとアシスタントの間の一連のメッセージを含められることができます。

ChatGPTなどのChat部分で自身が入力する部分です。user で指定します。

Chat Completion
 {"role": "user", "content": "What is thermodynamics?"}
ChatML
<|im_start|>user
What is thermodynamics?
<|im_end|>

GPTからの返答

返答の部分はメッセージで入力した値に対してGPTからレスポンスが定義されます。

Chat Completion
{"role": "assistant", "content": "In 2023, you will need to file your taxes by April 18th. The date falls after the usual April 15th deadline because April 15th falls on a Saturday in 2023. For more details, see https://www.irs.gov/filing/individuals/when-to-file."},
ChatML
<|im_start|>assistant
You can check the status of your tax refund by visiting https://www.irs.gov/refunds
<|im_end|>

 まとめ

Azure OpenAI Service の GPT のモデル操作を簡単に解説しました。ただしもっと奥が深いです。これらも含めAI周りを一通り学習していくと良いでしょう。

-Azure, OpenAI
-,