💬

ChatGPTをコマンドラインから使うためのCLIツールを作る by ChatGPT

2022/12/04に公開
3

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

tnktnk

これはChatGPTとは大きく異なる技術ですので、クオリティかなり落ちると思いますが、どうでしょう?

ryo_kawamataryo_kawamata

コメントありがとうございます!
なるほど...!
出力の検証していなかったので、その点最初に注記を入れました 🙏

tnktnk

お返事ありがとうございます。

すみません、いま見返すと私のコメントが雑でしたので、補足します。

そもそもChatGPTのAPIを叩くということが不可能です。Web APIとして公開されているのはtext-davinci-002および003のみで、ChatGPTは別の独自モデルによって運用されています。

よって、kawamataさんの認識がどうというよりは、ChatGPTの回答が誤っています。ChatGPTの学習時にはChatGPTが存在しないのですから、当然ですが。

具体的な部分としては、記事中で
engine="text-davinci-002"
と記述されていますが、この記述の時点でもうChatGPTを叩けていないことがわかります。text-davinci-002は昔からあるもので、あまり賢くないですね。

以上です。駄文失礼しました。