毎度、ググっても出てこない小ネタを取り扱っております。
本記事は個人的な見解であり、筆者の所属するいかなる団体にも関係ございません。
0. はじめに
- Darrenさんがまた変なものを作った
- Darrenさんは、CloudStack、Rancher、K3S、Kine等など「その発想はなかったわ」というプロダクトを次々に生み出すプログラミングハッカー。
- 現在は、Acorn Labs社に所属
彼が最近ご執心なのがChatGPTです。
catgptというchatgptにメッセージのプロンプトをパイプして操作をする変なものを作っていましたが、それを使っていてもっと便利なものが作れると思ったようで、gptとscriptを融合させて動かすgptscriptを発表しました。
これがなかなかぶっ飛んだ代物だったので、遊んでみました。
gptscript-ai/gptscript: Natural Language Programming
1. インストール
gptscriptは、Linuxでも、macOSでも、Windowsでも動きます。
ここでは、Windows のWSL2で動かします。
下記のcurlスクリプトでインストールします。念のため中身は確認しておきましょう。
$ curl https://get.gptscript.ai/install.sh | sh
gptscript -v
でバージョンが返ってくればインストールされています。
$ gptscript -v
gptscript version v0.1.4-701b9c8e-dirty
/usr/local/binにインストールされるみたいですね。
$ which gptscript
/usr/local/bin/gptscript
2. 動かしてみる
動かすためには~~.gptなるファイルが必要なので、簡単に以下のファイルを作ります。
# example.gpt
Tools: sys.download, sys.exec, sys.remove
Download https://www.sqlitetutorial.net/wp-content/uploads/2018/03/chinook.zip to a
random file. Then expand the archive to a temporary location as there is a sqlite
database in it.
First inspect the schema of the database to understand the table structure.
Form and run a SQL query to find the artist with the most number of albums and output
the result of that.
When done remove the database file and the downloaded content.
何これ?全然プログラムじゃないですよね。。
でも動くんです。衝撃です。
さらにこれを動かすためにOpenAIのAPIを使いますので、
https://platform.openai.com
へログインして、APIキーを発行してください。
APIキーが「sk-hogehogehoge」の場合、以下のように環境変数にAPIキーを入れてください。
.bashrcとかに書いておくとよいかもしれません。
export OPENAI_API_KEY="sk-hogehogehoge"
では、動かしてみます。
一番重要なのは最後のOUTPUT部分
これは、SQLiteチュートリアルのchinook.zipに入っているアーティストのアルバムのデータベースから最もリリースされたアルバムの多いアーティストとして、アイアンメイデンが21アルバムを出しているという結果を出力しています。
3. なぜこんな事ができるか?
これは、ChatGPTのOpenAIのAPIを使って、example.gptの中身をスクリプトとして実行できる形式に変換し、gptscriptを実行したマシン上で実行しています。
この図の3番と4番が重要で一般的なプログラミング言語ではこの部分はありませんが、gptscriptではOpenAIのGPT-4を挟むことにより、自然言語からプログラミング言語への変換を行っています。
4. 日本語でもやってみる
英語でできるのなら、日本語でもできるはず。
上記のexample.gptと同じ事を日本語でも試してみました。
tools: sys.download, sys.exec, sys.remove
https://www.sqlitetutorial.net/wp-content/uploads/2018/03/chinook.zip のファイルを
ランダムなファイル名でダウンロードしてください。 次に、アーカイブを一時的な場所に展開する。
まず、データベースのスキーマを調べ、テーブル構造を理解してください。
フォームを作成し、SQLクエリを実行して、アルバム数の多いアーティストを見つけ、
その結果を出力してください。
完了したら、データベースファイルとダウンロードしたコンテンツを削除してください。
5. 実行結果
実行結果は以下のようになります。
6. まとめ
gptscriptは自然言語を使ってプログラミングできる画期的なインタプリターです。