ChatGPTと書いていますが、2023/01時点でAPIは提供されていないみたいですが、ほかのAPIを使用してみます。
※ChatGPTを使用した記事を書きました。
APIキーの発行は【openAI】openAIのChatGPTを利用するためのAPIキーを取得の記事を参考にしてみてください。
今回使用するAPIはtext completionというものです。
サイトにもpythonでの使用方法が書かれているので参考にする。
node版【node】OpenAIのChatGPTを利用してテキスト生成を行ってみる
準備
モジュールをインストールする必要があります。
pip install openai
使用例
chat.pyというファイルを作成して確認します。
※openai.pyというファイルにするとインストールしたopenaiと名前が競合するので避けましょう。
import openai
openai.api_key = "ここには自分で取得してAPIキー"
prompt = "こんにちは、自己紹介してください。"
response = openai.Completion.create(
model='text-davinci-003',
prompt=prompt,
temperature=0, # ランダム性の制御[0-1]
max_tokens=1000, # 返ってくるレスポンストークンの最大数
top_p=1.0, # 多様性の制御[0-1]
frequency_penalty=0.0, # 周波数制御[0-2]:高いと同じ話題を繰り返さなくなる
presence_penalty=0.0 # 新規トピック制御[0-2]:高いと新規のトピックが出現しやすくなる
)
texts = ''.join([choice['text'] for choice in response.choices])
print(texts)
実行した結果
「はじめまして。私の名前は○○です。大学では情報工学を専攻しています。趣味は映画鑑賞や読書などです。今までに海外旅行をしたこともあります。今後は色々なことに挑戦していきたいと思っています。よろしくお願いします。」
返ってきた。テキストを工夫するといろいろできそうです。
パラメーターについて
- temperature=0.4
ランダム性の制御下げるとランダム性の補完が少なくなる
「0.0-1.0」1だと完全にランダム
- max_tokens=64
生成するトークンの最大数
- top_p=1.0
サンプリングによる多様性の制御
「0.0-1.0」0.1だと確立の高い上位10%の候補から選択される
大きくすると様々な単語から選ぶようになる
- frequency_penalty=0.0
これまでのテキストでの既存の頻度に基づいて新しいトークンにどれだけのペナルティを課す
[0.0-2.0]出てきた回数が多いほどペナルティを課す、タイミングは使った回数に応じて
- presence_penalty=0.0
既に出てきた単語をもう一度使うかどうかを指定
[0.0-2.0]一度でも使ったかどうかに対してペナルティを加える
おわりに
こちらに実行確認できるgithubのリポジトリーも用意した。
コメント