コマンド1つでコードベースからLLM用プロンプトを生成する
Introduction
すでに使わない日がない生成AI。
プログラム生成やリファクタリング、デバッグもやってもらってます。
そういったときには対象のコードをコピペしているのですが、
コードが複数ファイルになっていたり量が多かったりすると
プロンプトをつくることが面倒になってきます。
しかし、code2promptというツールを使えば、
指定したコードベースからLLM用プロンプトをコマンド1つで生成できます。
code2prompt?
Rust製のCLIツールです。
コードベースを指定することで、ディレクトリを走査して任意のファイル情報を取得します。
Handlebarsテンプレートを用意してプロンプトの生成を設定することも可能です。
他にも生成されたプロンプトは自動でクリップボードにコピーされますし、ファイル出力も可能です。
Environment
- MacBook Pro (13-inch, M1, 2020)
- OS : MacOS 14.3.1
- Rust : 1.76.0
Setup
Cargoでcode2promptをインストールするだけです。
簡単。
% cargo install code2prompt % code2prompt --version code2prompt 1.0.0
Try
試しにCLoudflare Workers(workers-rs)用の
ちょっとしたプログラムを対象につかってみます。
code2promptコマンドにプロジェクトのディレクトリを指定するだけです。
下記コマンドで、対象ディレクトリ以下のコードがすべてクリップボードにコピーされました。
% code2prompt /path/to/my-workers-project ▹▹▹▹▸ Done! [✓] Prompt copied to clipboard!
--tokensをつければトークン数がわかります。
% code2prompt /path/to/my-workers-project --tokens ▹▹▹▹▸ Done! [i] Token count: 92962, Model info: ChatGPT models, text-embedding-ada-002 [✓] Prompt copied to clipboard!
-fで指定した拡張子だけに限定できます。
あとは-eでexclude、-oでアウトプットファイル指定とかはよく使いそうです。
% code2prompt /path/to/my-workers-project -f rs,toml,json,js --tokens ▹▹▹▹▸ Done! [i] Token count: 81402, Model info: ChatGPT models, text-embedding-ada-002 [✓] Prompt copied to clipboard!
生成したプロンプトの内容は下記のような感じです。
ソースツリーや各ファイル内容がすべて生成されてます。
.gitignoreを見てくれるので、余計なコードがふくまれることもなさそうです。
Project Path: /path/to/my-workers-project Source Tree: ``` my-workers-project ├── Cargo.toml ├── hoge-test │ └── index.spec.js ├── dist ├── target ├── foo.json ├── package.json ├── build ├── wrangler.toml └── src ├── hoge.rs └── hoge2.rs ``` `/path/to/my-workers-project/something.toml`: ```````toml ## TOMLコードの内容 ``````` `/path/to/my-workers-project/hoge.json`: ```````json ## JSONコードの内容 ``````` `/path/to/my-workers-project/foo.rs`: ```````rust ## Rustコードの内容 ``````` #以下、コード内容が続く ・ ・
あとはHandlebarsテンプレートにも対応してます。
デフォルトではこれをみて生成しているので、
このファイルをコピーして↓のように指定すれば生成内容をカスタマイズできます。
% code2prompt path/to/my-workers-project -t path/to/my-template.hbs
コマンドの動作も速いし、コード生成が捗ります。