🤖

コマンドライン上でChatGPTを実行したい(playwright, パイプでテキスト渡せる)

2023/03/30に公開

今回はこれを使います。

https://github.com/mmabrouk/chatgpt-wrapper

有料でもよければAPIのキーを渡して使えますが、無料でやるために内部でヘッドレスブラウザを利用する方法もあるみたいなので、今回はそれを試してみます。

Setup

まずpipのモジュールをインストール

pip install git+https://github.com/mmabrouk/chatgpt-wrapper

次に、playwrightをインストールするのですが、公式のコマンドをそのまま使うとpackage.json等のファイルも生成されてしまうので、一時的につくったディレクトリに移動して実行してください。そのディレクトリは以後不要です。

cd ... # 適当なディレクトリに移動
npm init playwright@latest
playwright install firefox
chatgpt install

ブラウザが立ち上がるのでログインします。

chatgpt install
1> /exit

そして一度exitすると開いたブラウザが閉じます。以降は chatgpt コマンドを使うときには、ヘッドレスで実行されます。

ブラウザ上で実行されているので、ブラウザでChatGPTを開くとログが確認できます。

ですが、プロンプトを直接渡して実行した場合は、chatgptコマンドを実行する度に、新しくチャットが作成されているようです。

色々試してみる

パイプ

$ cat prompts.txt
こんにちわ
どーも
夕日はなんで赤いの?30文字で答えて

これをパイプで渡してみます。

cat prompts.txt | chatgpt

これは意外でしたが嬉しいことです。一つのコマンドプロンプト上で、パイプで渡した内容を順次実行してくれるので、前回の文脈を考慮してくれています。最高。

Youtubeの書き起こしの要約

例えば有名なスティーブ・ジョブズのスピーチを食わせてみます。
https://www.youtube.com/watch?v=VyzqHFdzBKg&ab_channel=jmicrotube

実行すると、以下の様に表示されました。

$ cat jobs.txt| chatgpt
Warning: Input is not a terminal (fd=0).

                              Provide a prompt for ChatGPT, or type /help or ? to list commands.

1> 以下のYoutubeの書き起こしを1行ずつ渡すので、それぞれ要約してください。要約する際は重要だと思われる箇所だけを箇条書きにしてく
ださい。それではこれから文章を渡します。要約する場合はすべて日本語で書いてください。 わかったらはいと言って下さい。

はい。準備ができています。お送りください。

2> (00:00) University since its founding 114 years ago and we are pleased to have him here today please join me in warmly welco
ming this year's commencement speaker Steve Jobs thank you I'm honored to be with you today for your commencement from
one of the finest universities in the world truth be told I never graduated from college and this is the closest I've ever
gotten to a college graduation today I want to tell you three stories from my life that's it no big deal just three stories
 the first story is

1. スタンフォード大学の卒業式でのスピーチ。
2. スティーブ・ジョブズが登壇し、自らの人生経験から学んだ3つのストーリーを紹介する。
3. ジョブズは、自分自身が大学を卒業していないことを明かし、ここが最も近い大学卒業式であると述べる。


<以下すべての文章が要約されるまで続く>

パイプで流したいテキストの最初にやってほしいことを書いておくのが味噌です。

以下のYoutubeの書き起こしを1行ずつ渡すので、それぞれ要約してください。要約する際は重要だと思われる箇所だけを箇条書きにしてく
ださい。それではこれから文章を渡します。要約する場合はすべて日本語で書いてください。 わかったらはいと言って下さい。

ファイルを読み込んで解説

普段 memolistでメモを取っていますが、それを無理やり読み込んで見ます。

$ chatgpt "以下は何を説明するメモですか?\n$(cat 2023-02-22-stable-diffusion-colab.md)"

これはすごい!!

ファイルを読み込んで解説 fzf編

fzf | xargs -L1 -I% sh -c 'cat % && chatgpt "以下のソースコードは何をやっていますか?\n$(cat %)"'

思いついたこと

実行すると特定のディレクトリ以下の文章からindexを自動で作成して、先頭に指定したプロンプトを付けて出力するだけのプロンプト生成コマンドを作成して、このchatgptコマンドに渡せるようにすれば、完全に勝ち確定なのでは??って思いました。

おわり

超便利🚀🚀🚀

Discussion