OpenAIテキスト生成モデルガイド

  • 1633単語
  • 8分
  • 27 Jun, 2024

OpenAIのテキスト生成モデル(通常は生成プリトレーニング変換器または大規模言語モデルと呼ばれる)は、自然言語、コード、画像を理解するように訓練されています。これらのモデルは入力に基づいてテキストを生成します。入力は通常「プロンプト」と呼ばれます。プロンプトの設計は本質的に大規模言語モデルを「プログラム」する方法であり、通常は指示を提供することで実現されます。

応用シナリオ

OpenAIのテキスト生成モデルを使用して、以下のようなアプリケーションを構築できます:

  • ドキュメントのドラフト作成
  • コンピューターコードの作成
  • ナレッジベースに関する質問への回答
  • テキストの分析
  • ソフトウェアに自然言語インターフェースを提供
  • 各種学問のチュータリング
  • 言語の翻訳
  • ゲームキャラクターのシミュレーション

gpt-4-turboのリリースにより、画像を処理し理解するシステムも構築できるようになりました。

モデルの使用方法

これらのモデルをOpenAI APIを通じて使用するには、入力とAPIキーを含むリクエストを送信し、モデルの出力を含むレスポンスを受け取る必要があります。最新のモデルであるgpt-4oやgpt-4などは、Chat Completions APIを通じてアクセスできます。

モデルとAPI

モデルAPI
新モデル(2023年及び以降)gpt-4o, gpt-4, gpt-3.5-turbo https://api.openai.com/v1/chat/completions
更新された従来のモデル(2023年)gpt-3.5-turbo-instruct, babbage-002, davinci-002 https://api.openai.com/v1/completions

さまざまなモデルをチャットプレイグラウンドで試すことができます。どのモデルを使用するか迷った場合は、gpt-3.5-turboまたはgpt-4oを使用することをお勧めします。

Chat Completions API

チャットモデルは一連のメッセージを入力として受け取り、モデルが生成したメッセージを出力として返します。チャット形式は多輪対話に適していますが、対話のない単一タスクにも同様に適用できます。

呼び出し例

1
from openai import OpenAI
2
client = OpenAI()
3
4
response = client.chat.completions.create(
5
model="gpt-3.5-turbo",
6
messages=[
7
{"role": "system", "content": "You are a helpful assistant."},
8
{"role": "user", "content": "Who won the world series in 2020?"},
9
{"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
10
{"role": "user", "content": "Where was it played?"}
11
]
12
)

主な入力はmessagesパラメータです。メッセージはメッセージオブジェクトの配列であり、各オブジェクトには役割(「system」、「user」または「assistant」)と内容があります。対話は1つのメッセージから複数の往復にわたることができます。

JSONモード

一般的な使用法は、モデルが常に特定のユースケースに適したJSONオブジェクトを返すように指示することです。システムメッセージでこれを指定することができます。response_format{ "type": "json_object" }に設定することでJSONモードを有効にできます。

呼び出し例

1
from openai import OpenAI
2
client = OpenAI()
3
4
response = client.chat.completions.create(
5
model="gpt-3.5-turbo-0125",
6
response_format={ "type": "json_object" },
7
messages=[
8
{"role": "system", "content": "You are a helpful assistant designed to output JSON."},
9
{"role": "user", "content": "Who won the world series in 2020?"}
10
]
11
)
12
print(response.choices[0].message.content)

この例では、レスポンスは以下のようなJSONオブジェクトを含みます:

1
"content": "{\"winner\": \"Los Angeles Dodgers\"}"

トークンの管理

言語モデルはトークンと呼ばれる単位でテキストを読み書きします。英語では、トークンは1文字から1単語(例:「a」や「apple」)までの長さがあります。API呼び出しの総トークン数は以下に影響します:

  • API呼び出しのコスト(トークンごとに料金が発生します)
  • API呼び出しの時間(より多くのトークンを書くにはより多くの時間がかかります)
  • API呼び出しの成功(総トークン数がモデルの最大制限を超えない必要があります。gpt-3.5-turboの場合は4097トークン)

パラメータの詳細

頻度と存在ペナルティ

frequencypresenceペナルティパラメータは、サンプリングされたトークンシーケンスの繰り返しの可能性を減少させるために使用できます。適切なペナルティ係数値は0.1から1の範囲であり、繰り返しサンプルをわずかに減少させることを目的としています。繰り返しを強く抑制する場合は、係数を2に増やすことができますが、これによりサンプルの品質が大幅に低下する可能性があります。

Completions API

completions APIエンドポイントは2023年7月に最終更新され、新しいchat completionsエンドポイントとは異なるインターフェースを持っています。入力は自由形式のテキスト文字列であり、プロンプト(prompt)と呼ばれます。

呼び出し例

1
from openai import OpenAI
2
client = OpenAI()
3
4
response = client.completions.create(
5
model="gpt-3.5-turbo-instruct",
6
prompt="Write a tagline for an ice cream shop."
7
)

Chat Completions vs. Completions

Chat Completions形式は、単一のユーザーメッセージを使用するリクエストを構築することで、completions形式に似せることができます。違いは、基礎となるモデルの利用可能性にあります。chat completions APIは、最も強力なモデル(gpt-4o)および最もコスト効率の高いモデル(gpt-3.5-turbo)のインターフェースです。

どのモデルが適しているか?

通常、gpt-4oまたはgpt-3.5-turboを使用することをお勧めします。どちらを使用するかは、モデルを使用するタスクの複雑さによります。gpt-4oは広範な評価でより優れたパフォーマンスを示し、特に複雑な指示に従う際に優れています。一方、gpt-3.5-turboは複雑な多部分指示の一部にしか従わない可能性があります。gpt-4oは情報を捏造する可能性が低く、この行動は「幻覚」と呼ばれます。gpt-4oは最大128,000トークンのより大きなコンテキストウィンドウを持っていますが、gpt-3.5-turboは4,096トークンです。しかし、gpt-3.5-turboは出力の遅延が低く、トークンごとのコストもはるかに低いです。

よくある質問

温度パラメータの設定方法は?

温度値が低い(例:0.2)はより一貫した出力を生成し、温度値が高い(例:1.0)はより多様で創造的な結果を生成します。具体的なアプリケーションに応じて温度値を選択し、一貫性と創造性のバランスを取ります。温度の範囲は0から2です。

最新のモデルは微調整可能ですか?

現在、gpt-3.5-turboおよびベースモデル(babbage-002およびdavinci-002)は微調整可能です。

ChatGPTを使用するべきか、APIを使用するべきか?

ChatGPTはモデルにチャットインターフェースを提供し、統合ブラウジング、コード実行、プラグインなどの一連の機能を内蔵しています。一方、OpenAIのAPIを使用することで、より多くの柔軟性が得られますが、コードを記述するか、プログラム的にモデルにリクエストを送信する必要があります。