ChatGPT APIをPythonで実行する方法を説明していきます。
この記事で行うこと
- APIキーを取得する
- pythonで定義した文字列からChatGPTの回答を得る
対象者
- ChatGPTのアカウントを持っている
- Python自体を実行したことがある
必要なもの
- クレジットカード(APIの実行は従量課金となります)
手順
open aiをインストールする
コマンドプロンプトまたはターミナルにて以下のコマンドを実行します
pip install openai
OpenAIにアクセスする
https://platform.openai.com/overview
支払い先登録がまだの方は Manage account>Billing から登録します。
View API Keysの画面を開く
APIキーを取得する
「Create new secret key」から生成します。
この文字列はアカウントに紐づきますので、厳重に扱ってください。
Pythonファイルを作る
chatGPT_test.py のような名前でファイルを作り、次のコマンドを書き込みます。
# -*- coding: utf-8 -*-
import openai
# APIキーの設定
openai.api_key = "YOUR API KEY"
def generate_response(prompt):
response = openai.Completion.create(
engine="text-davinci-002",
prompt=prompt,
temperature=0.7,
max_tokens=150,
top_p=1,
frequency_penalty=0,
presence_penalty=0,
)
return response.choices[0].text.strip()
# ユーザーからの入力
user_input = "海はなぜ青いの?"
# ChatGPTからの回答を生成
response = generate_response(user_input)
# 結果を表示
print(response)
取得したAPIキーを代入する
プログラム内の「YOUR API KEY」を消して生成したAPIキーを入力します。
実行する
python chatGPT_test.py
文字列を変えて遊ぶ
「user_input = “海はなぜ青いの?”」の部分を変更してみましょう。
パラメータ調整する
ドキュメントはこちら→https://platform.openai.com/docs/guides/chat
よく分からなければChatGPTに聞きながらパラメータ調整しましょう。
とりあえず今聞きたいことの回答を貼っておきます。
engine
: 使用するGPTエンジンの名前です。例えば、”text-davinci-002″や”text-curie-002″など。エンジンによって性能や応答速度が異なります。Davinciエンジンは最もパワフルですが、レイテンシが高く、コストがかかります。prompt
: GPTに与えるテキスト入力です。このテキストを元にモデルが回答を生成します。temperature
: 生成されるテキストの多様性とランダム性を制御する値です。値が高いほど、より多様でランダムなテキストが生成され、値が低いほど、より一貫性のあるテキストが生成されます。通常、0.7から1.0の範囲で設定されます。max_tokens
: 生成されるテキストの最大トークン数を指定します。1つのトークンは、単語や句読点など、テキストの一部分を表します。この値を設定することで、返されるテキストの長さを制限できます。top_p
: 生成されるテキストのトークン選択において、累積確率でフィルタリングする際に使用される値です。top_p
は0から1の間で設定し、1に近いほど多様な結果が得られます。実用的な値は0.9や0.95などです。トークン選択において、モデルが予測確率が高いものからtop_p
の値までの確率のトークンを選択します。frequency_penalty
: 生成されるテキストのトークンにペナルティを適用することで、一般的な(頻出する)トークンの出現頻度を制御します。値は-2.0から2.0の範囲で設定でき、正の値は一般的なトークンの出現頻度を減らし、負の値は一般的なトークンの出現頻度を増やします。presence_penalty
: 生成されるテキストのトークンにペナルティを適用することで、繰り返し出現するトークンの頻度を制御します。値は-2.0から2.0の範囲で設定でき、正の値は繰り返し出現するトークンの出現頻度を減らし、負の値は繰り返し出現するトークンの出現頻度を増やします。
以上です。頑張ってください。
ブログを書いてる人