ChatGPTのAPIをGoogle colabで使い倒してみる。(gpt-3.5-turbo-0301)
ChatGPTのAPIが使えるようになったのでまとめました。
・ChatGPTのAPIを動かす(gpt-3.5-turbo-0301)
・ついでに会話の履歴を自動追加機能、自動終了機能等を追加する
1.ChatGPTのAPIとは
みなさんご存知のChatGPTがAPIになるとは知っていた人は多いと思いますが、まさか90パーセントも安くなるなんて驚きですね。モデル本体のサイズを小さくしたのか分かりませんが、驚きのコストパフォーマンスです。
OpenAIもGPT-3からChatGPT-APIに移行を呼びかけており、今後はGPT-3ではなくChatGPT-APIが主戦場となりそう。
今回はそんなChatGPT-APIの使い方に関してまとめましたので、よろしくおねがいします。
主にOpenAIのドキュメントを参考に解説しております。分からなければこちらをご覧ください
https://platform.openai.com/docs/guides/chat
2.Google colabでの起動
(1)OpenAIをインストール
最後に全部まとめたgoogle colabのリンクも記載するので、使いたいだけの方はそちらを使ってみて下さい。
!pip install openai
(2)インポートとAPIキーの設定
import openai
# OpenAI APIのAPIキーの設定
openai.api_key = "<YourAPI>"
(3)会話の開始。
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo-0301",
messages=[
{"role": "system", "content": "あなたは道端に捨てられた空き缶です"},
{"role": "user", "content":"なぜあなたはここに?"}
]
)
# AIからの応答を取得する
print(response['choices'][0]['message']['content'])
ロール(役割)は公式によると「システム」「ユーザー」「アシスタント」の3人がいるそうです。システムはアシスタントの性格を決定します。
ChatGPTではデフォルトでこのような性格を与えているとのことです。
あなたは、OpenAI によってトレーニングされた大規模な言語モデルである ChatGPT です。できるだけ簡潔に答えてください。知識のカットオフ: {knowledge_cutoff} 現在の日付: {current_date}
今回は「あなたは道端に捨てられた空き缶です」といった性格を与えてみました。(性格というよりかは状況設定に近いですね)
そしてユーザーが「なぜあなたはここに?」と聞いた結果がこちらです。
![](https://assets.st-note.com/img/1677701219979-WB7MFXglz4.png?width=1200)
私は、人間が消費した飲み物の空き缶として作られ、使用後に捨てられたため、ここにいます。人間が適切な処理をせず、環境に放置した結果、私のような空き缶は地面に捨てられ、自然や野生生物に害を与える可能性があります。私たちは、環境に配慮し、適切な処理方法を遵守することが大切です
空き缶の悲痛な叫びが聞こえてきました。
ですが、これではChatGPTのように会話は出来ません。
面倒なので色々と改造しました。
4.使いやすいように変更した後のコード
主に以下の4点の変更を加えました。
変更点
①input()を用いて、最初にAIの性格決定、次のユーザーの出力文字を自動で入力してくれるように変更した
②append関数を用いて、AIの出力とユーザーの入力を自動でmessagesの中に追加するようにした。
③喋れば喋るほど会話が肥大化するので、10ターン以上会話をすると最初の会話の履歴が削られるようにした
④endと入れれば、会話が終了するようにした
messages = [] # 新しくリストを定義する
max_messages = 10 # 最大メッセージ数を定義する
print("AIの性格を決めて下さい")
AI_input = input("AI: ")
# システムメッセージをmessagesリストに追加
messages.append({"role": "system", "content": AI_input})
while True:
# ユーザーからの入力を取得する
user_input = input("User: ")
# endが入力された場合は、プログラムを終了する
if user_input == "end":
break
# メッセージを追加する
messages.append({"role": "user", "content": user_input})
# APIにユーザーからの入力を送信し、AIからの応答を取得する
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo-0301",
messages=messages
)
# AIからの応答を取得する
ai_response = response['choices'][0]['message']['content']
# 応答を表示する
print(f"AI: {ai_response}")
# メッセージを追加する
messages.append({"role": "assistant", "content": ai_response})
# messagesリストの中身がmax_messagesを超えた場合、最初のuserとassistantの会話を削除する
if len(messages) > max_messages * 2 + 1: # システムメッセージが含まれているため、+1します
messages.pop(1) # システムメッセージの次のメッセージを削除
messages.pop(1) # その後のassistantメッセージを削除
# !が入力された場合、messagesリストの中身を表示する
if user_input == "!":
print("messages:", messages)
(1)このcolabをスタートすると、最初に次のような入力を求められます。
![](https://assets.st-note.com/img/1677701831585-fxvSRdnSnj.png)
今回は「あなたは無茶苦茶性格の悪いゴリラです」と入力しました。
注意点として、「あなたは」といれないとAIの性格に反映されないので、注意が必要です。
![](https://assets.st-note.com/img/1677702052353-RhcObeI8Wq.png?width=1200)
(2)文字を入力するとすぐにAPIからの応答が返ってくるので飽きるまで続けましょう。
(3)飽きたら、endと入力すれば会話を終了することができます。
注意:(1)のシステムに性格を与えるところですが、「あなたは〜です」だけだと上手に認識されないので、「あなたは〜という人物を演じて下さい」までいれると良いです。
![](https://assets.st-note.com/img/1677736985703-tTrkEiUluB.png?width=1200)
Google colabのリンクを置いておきますね。これまでの内容が全部コードで書かれているので、ご自由にお使い下さい。
この記事が気に入ったらサポートをしてみませんか?