ChatGPTをコマンドラインから使うためのCLIツールを作る by ChatGPT
ChatGPT を使用するための準備
まず、ChatGPT を使用するために必要な Python ライブラリをインストールします。最新の ChatGPT は Python3.6 以降をサポートしており、次のコマンドを使用して必要なライブラリをインストールできます。
pip install openai
ChatGPT を使用する Python スクリプトの作成
次に、Python スクリプトを作成して、ChatGPT を初期化し、コマンドラインから文を入力して問い合わせるための CLI ツールを作成します。
import openai
import os
openai.api_key = os.environ["OPENAI_SECRET_KEY"]
prompt = input("Enter a prompt: ")
completions = openai.Completion.create(
engine="text-davinci-002",
prompt=prompt,
max_tokens=1024,
n=1,
stop=None,
temperature=0.5,
)
for choice in completions.choices:
print(choice.text)
上記のスクリプトは、ChatGPT を初期化し、コマンドラインから入力されたプロンプトに対して1つの回答を生成します。
openai.completion.create
メソッドの引数を変更することで、生成される回答の数や、生成される回答の詳細な特性を変更することができます。
Python スクリプトの実行
最後に、作成した Python スクリプトを実行するためのコマンドを作成します。次のようなコマンドを作成することで、上記の Python スクリプトを実行できます。
python chatgpt-cli.py
以上が、ChatGPT をコマンドラインから効率的に使用するための CLI ツールの作り方です。
複数回の会話を実現する
ChatGPT のコマンドラインから使用するための CLI ツールであれば、複数回の会話が可能です。例えば、次のような Python スクリプトを作成することで、ChatGPT との無限に続く会話が可能になります。
import openai
import os
openai.api_key = os.environ["OPENAI_SECRET_KEY"]
prompt = ""
while True:
prompt = input("Enter a prompt: ")
completions = openai.Completion.create(
engine="text-davinci-002",
prompt=prompt,
max_tokens=1024,
n=1,
stop=None,
temperature=0.5,
)
for choice in completions.choices:
print(choice.text)
このスクリプトでは、無限に続く while
ループ内で、ユーザーからの入力を受け取り、ChatGPT からの回答を出力します。このようにすることで、ChatGPT と複数回会話することができます。
おわりに
ここまでが ChatGPT が書いてくれた ChatGPT を CLI ツールで使用するための記事です。以下がその際のやりとり。
おもむろに聞いてみた。ちゃんと pip のインストールから書いてくれて感動
いちいち起動するのが面倒なので、連続して使えるようにしてもらう
せっかくなので記事にしたくて、記事も依頼してみる
文字制限で、途切れたので続きを依頼
凄すぎる...
Discussion
これはChatGPTとは大きく異なる技術ですので、クオリティかなり落ちると思いますが、どうでしょう?
コメントありがとうございます!
なるほど...!
出力の検証していなかったので、その点最初に注記を入れました 🙏
お返事ありがとうございます。
すみません、いま見返すと私のコメントが雑でしたので、補足します。
そもそもChatGPTのAPIを叩くということが不可能です。Web APIとして公開されているのはtext-davinci-002および003のみで、ChatGPTは別の独自モデルによって運用されています。
よって、kawamataさんの認識がどうというよりは、ChatGPTの回答が誤っています。ChatGPTの学習時にはChatGPTが存在しないのですから、当然ですが。
具体的な部分としては、記事中で
engine="text-davinci-002"
と記述されていますが、この記述の時点でもうChatGPTを叩けていないことがわかります。text-davinci-002は昔からあるもので、あまり賢くないですね。
以上です。駄文失礼しました。