最近、世間では、ChatGPT が話題になっています。
自分も色々と触ってみましたが、
- ユーザー数が多いのもあってアクセスできない時がある
- 簡単にcsvなどに保存できない
- アプリに組み込めない
などがあったので、簡単にアクセスできるようにコードを書いてみました。
※今回アクセスするのは「ChatGPT」そのものではなく、OpenAIが作成しているほぼ同じ機能を持つモデルです。
OpenAI API の free trial のクレジットを利用します。
実行に関しては全て自己責任でお願いします。
準備
API KEY の取得
まず初めに、https://beta.openai.com/account/api-keys にアクセスして、アカウントを作成し、「Create new secret key」というボタンからAPIを取得してください。
ここは詳しく書いてある記事がたくさんあるので省略します。
ライブラリのインストール
pip install openai
openai の api に簡単にアクセスできるようにするためのライブラリです。
コード
以下のようなコードで簡単に使えます。
csvへの保存や配列の使い方などはお好きにどうぞ!
import os
import openai
import csv
# API_KEY は直書きしてしまうことが多いですが、環境変数に設定することを推奨。
openai.api_key = os.getenv("OPENAI_API_KEY")
# 対話モデルを設定(多分これがGPT-3)
engine = "text-davinci-003"
def interact_gpt3_once(prompt):
response = openai.Completion.create(
engine=engine,
prompt=prompt,
temperature=0.5, # 0〜1。大きいほどクリエイティブで小さいほど明確な応答をする。
max_tokens=1024, # 生成されるトークン(文字列をトークンに変換して処理しているらしく、英語ならword数の3/4程度の値になるそう)の最大数
# ここの引数は様々あります。
# https://beta.openai.com/docs/api-reference/completions/create を確認してください。
)
# 結果を取得
result_text = response.choices[0]["text"]
print(result_text)
# csvに保存(任意)
with open("data/chat-gpt.csv", "a", encoding="utf-8", newline="") as f:
writer = csv.writer(f)
writer.writerow([prompt, result_text])
if __name__ == "__main__":
# 今回は一つの prompt を 10 回繰り返しているが、ここはお好きにどうぞ!
prompts = [ """エンジニアの心構えを教えて。""" for _ in range(10)]
for prompt in prompts:
interact_gpt3_once(prompt)
print("\n〜〜〜〜〜〜〜〜\n")