コマンド1つでコードベースからLLM用プロンプトを生成する

2024.03.12

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

コマンドの動作も速いし、コード生成が捗ります。

References