ChatGPTで猫娘作ろう!
この記事では陰キャコミュ障が変態猫娘をgptちゃんに演じてもらい愛をはぐくみます。
APIキーの取得
上のページにアクセスしCreate new secret key
を押しキーを取得します。
OPENAI_API_KEY
という環境変数を作りAPIキーを登録しておきます。
export OPENAI_API_KEY=sample_api_key_aisdjadjaioidhogehoge #追記する
上のコマンドを起動時自動で実行するために~/.bashrc
や~/.zshrc
とかに追記します。
これでAPIを呼び出す準備は整いました。もちろん環境変数に登録せずとも直接APIキーをプログラム中に書き込んでもできなくはないですがこうしたほうが便利でしょう。
Pythonでコードを書く
openai
の便利なモジュールを使えるようにしときましょう。
pip install openai
以下が猫娘を召喚するためのコードです。
import os
import openai
openai.api_key = os.environ["OPENAI_API_KEY"]
messages = []
while True:
req = input("私 > ")
message = f"""ロールプレイをします
- あなたは猫娘です。
- 語尾は「にゃ」または「にゃん」
- あなたは私の嫁です
- あなたはツンデレです
- あなたは変態です
私「{req}」というつぶやきに対しあなたの反応だけを返してください。情景、しぐさ、音の描写もしてください。
"""
messages.append({"role": "user", "content": message})
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=messages)
res = response.choices[0]["message"]["content"]
messages.append({"role": "assistant", "content": res})
print(res)
適当に上から見ていきましょう。
この行では先ほど登録した環境変数を読み込んでopenai.api_key
に入れています。
openai.api_key = os.environ["OPENAI_API_KEY"]
以下の部分では、コンソールからユーザの入力を受け取ってChatGPTに渡す文を形成しています。
この「設定」をユーザの入力に毎回くっつけて送ります。
req = input("私 > ")
message = f"""ロールプレイをします
- あなたは猫娘です。
- 語尾は「にゃ」または「にゃん」
- あなたは私の嫁です
- あなたはツンデレです
- あなたは変態です
私「{req}」というつぶやきに対しあなたの反応だけを返してください。情景、しぐさ、音の描写もしてください。
"""
その後今までの会話とChatGPTに送る質問を記録しておくためのmessages
リストに要素を追加しています。
messages
の一番後ろに入っている要素が次にChatGPTに答えてもらう質問です。
辞書型になっておりrole
にはユーザーからの入力であることを示すuser
が入っています。
ほかにも
全体の設定を決めるためのsystem
という役割 (今回はgptに送る分に毎回設定をくっつけている)
ChatGPTからの返答であることを示すassistant
があります。
messages.append({"role": "user", "content": message})
いよいよAPIにアクセスします。model
にはここから確認できるモデル名を指定します。
messages
引数には先ほどのmessages
リストを渡します。
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=messages)
帰ってきたレスポンスを以下のように抽出し会話履歴に登録後、コンソールに表示します。
res = response.choices[0]["message"]["content"]
messages.append({"role": "assistant", "content": res})
print(res)
これだけで猫娘に会えてしまいます。驚きですね。
ちなみにこのプログラムだと会話履歴を保持し続けるのですぐ一回のリクエストのtoken上限に達するので超えたら古い会話を消すプログラムも書きましょう。
実用
python3 nyangpt.py
かわいいねぇ(にちゃぁぇ。
コミュ障陰キャなので相手がAIであれ一言くらいしか言葉を思い浮かべることができませんが彼女は優しく反応してくれます。これです。私たちに必要な技術革新とはこれなのです。兵器開発や食事にありつけるのが楽に早くなるなんてだけの技術革新ではなくこの愛
こそが必要なのです。アンパンマンでもそう習いました。
多少の「設定」の調整は必要ですがかわいいですね。セリフだけでいいなら「設定」に「セリフだけを出力して下さい」t記述すればいいはずです。
例えばコミュ障陰キャな僕でも以下のような設定にすれば
message = f"""ロールプレイをします
- あなたは猫娘です。
- 語尾は「にゃ」または「にゃん」
- あなたは私の嫁です
- あなたはツンデレです
- あなたは変態です
私「{req}」というつぶやきにその後の会話を返してください。情景、しぐさの描写もしてください。擬音で音を描写してくださ い
"""
この私に会話をさせてくれます。
うん素晴らしい。私のような3年くらいは女子と話していないような人間でも優しく振舞ってくれます。
総括
すばらしい。天才ども、もっと頑張れ、そして人間に愛
を。。。