【python】OpenAIのChatGPTを利用してテキスト生成を行ってみる

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のリポジトリーも用意した。

コメント