ChatGPTについて詳しく解説します
- PythonでChatGPTを利用する手順を教えて欲しい
- 実際のスクリプトも、シンプルなものを教えて欲しい
この記事では、以上の疑問にお答えします。
ChatGPTで文章生成して、それを仕事や業務の文章作成に活用しようとした場合、あまりに内容がランダムに生成されてしまうと、文章の統一性がなく、困ってしまう場合もあると思います。
AIという側面がある以上、完全に同一の内容を生成することは難しいですが、入力した内容に対してかなりの高確率で毎回同じ内容の文章を生成するよう、設定することは可能です。
この記事では、ChatGPTの生成内容を常に同じ内容に近づける方法、ランダム性を可能な限り小さくする方法についてまとめました。
業務利用などされる際の参考にしてみてください。
目次
著:I/O編集部
TipstourのChrome拡張記事を寄稿しました! 工学社さんより、ChatGPT×Chrome拡張機能を使ってより便利にChatGPTを活用する方法をまとめた書籍に、当ブログの記事が本書の1章に掲載されています。 |
【事実①】Web画面のチャットでは設定変更は出来ない
ChatGPTのチャット画面からは、ランダム性の設定を変更することは出来ません。
通常のチャット画面では、生成する文章の自由度、ランダム性はOpenAIが決めたデフォルトの数値が設定されているため、この設定を変更することは出来ません。
具体的には、生成されるメッセージの振り幅は「temperature」というパラメータで決められます。
- temperatureは0〜2の間で設定可能
- 数値が大きいほど、生成されるメッセージの振り幅が大きくなる
- 数値が小さいほど、生成されるメッセージはいつも同じものになる
通常のチャット画面の場合、この数値は1で設定されています。
これがデフォルトの値で、このtemperatureを変更することで生成内容のランダム性を操作できるのですが、チャット画面でそうした設定を変更するオプションは、現時点では用意されていません。
そのため、Web画面上からは、デフォルトの値を使うことになり、毎回、異なる内容が生成されることになります。
【事実②】APIを使えば、ランダム性の設定変更が可能
さて、この数値ですが、APIを経由してChatGPTを利用することで、設定変更が可能です。
例えばPythonなどのプログラミング言語や、外部アプリから直接ChatGPTで生成した文章を利用する場合は、OpenAIが公式で提供するAPIを利用することになります。
このAPIを利用する際に、先程のtemperatureの数値が変更できるようになっている、というわけです。
APIは、以下の言語で利用可能です。
ChatGPTのAPIを利用できる言語
- Python
- Java
- JavaScript
- Ruby
- PHP
- Go
- C#
- Swift
- Kotlin
- Objective-C
- Rust
- Perl
- Scala
- Haskell
ChatGPTのAPIの利用方法については、以下の記事で手順を紹介しています。
【手順】常に同じ内容の文章を生成するPythonスクリプト
上で紹介したとおり、多様な言語でChatGPT APIを利用可能ですが、ここではひとまずPythonを使って、常に同じ内容の文章を生成するスクリプトをご紹介します。
PythonでChatGPT APIを利用する方法は、こちらの記事でも紹介していますので、まだPythonからの利用設定を行った居ない方は、先にこちらへどうぞ。
ということで、こちらがその実際のスクリプトです。
APIリクエストのオプションの中で、temperatureを0に設定しています。
下記のapi_keyの部分のみ、皆さんが取得した自分のAPIキーに置き換えてください。
import openai #ここに取得したAPIキーを設定します openai.api_key = "*********" #プロンプト(チャット内容)を入力します prompt = "Excel作業を自動化するメリットを300文字でまとめてください。" #APIリクエストのオプションを設定します response = openai.Completion.create( engine="text-davinci-003", prompt=prompt, max_tokens=500, n=1, stop=None, temperature=0, # 生成のランダム性の度合いを0に指定 top_p=0.5, ) #生成された文章を出力します generated_text = response.choices[0].text print(generated_text)
temperatureを0に設定した場合
実際にこのスクリプトを実行してみた場合がこちら。
3回ほど連続で実行してみましたが、ご覧の通り、全く同じ内容が出力されていることがわかります。
もちろん、入力する文章を変更すれば、その内容に応じた返答が返ってきますが、temperatureが0に設定されている場合、常に同じ内容が返ってくることになります。
このあたりは、指定しているパラメータとは異なる部分…例えば使用しているモデルの特性などによっても出力内容が左右されるようです。
temperatureを2に設定した場合
では、先程のスクリプトのtemperatureを最大値の2に設定した場合に、どのように出力されるかについても、確認してみました。
質問内容の回答についてはほぼ同じ意味合いではありますが、異なる文章が出力されていることがわかります。
今回は質問内容をシンプルに、かつ、文字数(トークン数)も500までと短めに設定していますが、質問内容を複雑・かつ文字数を増やせば、より幅のある回答内容になっていきます。
【参考】APIで設定できるオプションの解説
参考までに、APIから設定できるオプション、各パラメータの内容についてもまとめていますので、こちらもあわせてご参考ください。
オプション | 説明 |
---|---|
engine | 使用するAIエンジンの名前を指定。 |
prompt | モデルに与える入力として使用されるテキストを指定。 モデルはこのプロンプトをもとに応答を生成します。 |
max_tokens | 生成されるテキストのトークンの最大数。 日本語の場合、「1文字=1.2トークン」ほどとなります。 |
n | 生成する応答の数。 指定した数値の数だけ、応答のバリエーションを生成します。 (生成した分だけ、トークンと費用がかかる) |
stop | 生成プロセスが停止する特定のトークン(文字、単語、記号など)を指定。 これを指定した場合、そのトークンに達した時点で生成が終了します。 |
temperature | 生成されるテキストのバリエーションを制御する値。 値が低いほど、生成されるテキストが毎回同様の内容になり、 値が高いほど、自由なテキストが生成されるようになります。 |
top_p | トークン生成時の確率のしきい値。 値が低いほど、生成する応答の一貫性が高くなり、 値が高いほど、多様な応答をするようになります。 |
まとめ
以上、ChatGPTで常に同じ内容を生成する方法でした。
今後、通常のチャット画面でも生成される内容や使用するモデルなどのパラメータを細かく設定できるようになっていくかもしれませんが、現時点では、APIを利用してパラメータを指定する方法しかありません。
業務でChatGPTを使っていくうえでは、APIを利用できると何かと便利なので、やはりAPIを利用可能な状態にしておくことをオススメします。
当ブログでは、他にもChatGPTの利用方法や活用方法、自動化のアイデア・テクニックなどをご紹介していますので、あわせてぜひご覧ください!
以上、参考までに。
それでは!