code2prompt
、ソース ツリー、プロンプト テンプレート、およびトークン カウントを備えた単一の LLM プロンプトにコードベースを変換するコマンド ライン ツール (CLI) です。
このツールをディレクトリ全体で実行すると、ソース ツリー構造とすべてのコードの詳細を示す整形式の Markdown プロンプトが生成されます。次に、このドキュメントをより高いコンテキスト ウィンドウを備えた GPT モデルまたは Claude モデルにアップロードし、次のことを要求できます。
.gitignore
を尊重します。プロンプト テンプレートをカスタマイズして、目的のユースケースを実現できます。基本的にコードベースを走査し、すべてのソース ファイルを結合したプロンプトを作成します。つまり、複数のソース ファイルをコピーしてプロンプトに貼り付け、それらをフォーマットする作業を自動化し、コードが消費するトークンの数を知らせます。
リリースから OS の最新バイナリをダウンロードします。
必要:
git clone https://github.com/mufeedvh/code2prompt.git
cd code2prompt/
cargo build --release
crates.io
レジストリからインストールします。
cargo install code2prompt
未公開のビルドの場合:
cargo install --git https://github.com/mufeedvh/code2prompt
code2prompt
AUR
で使用できます。 AUR ヘルパーを介してインストールします。
paru/yay -S code2prompt
nix を使用している場合は、 nix-env
またはprofile
を使用してインストールできます。
# without flakes:
nix-env -iA nixpkgs.code2prompt
# with flakes:
nix profile install nixpkgs#code2prompt
コードベース ディレクトリからプロンプトを生成します。
code2prompt path/to/codebase
カスタムのハンドルバー テンプレート ファイルを使用します。
code2prompt path/to/codebase -t path/to/template.hbs
glob パターンを使用してファイルをフィルタリングします。
code2prompt path/to/codebase --include= " *.rs,*.toml "
glob パターンを使用してファイルを除外します。
code2prompt path/to/codebase --exclude= " *.txt,*.md "
除外パターンに基づいてソース ツリーからファイル/フォルダーを除外します。
code2prompt path/to/codebase --exclude= " *.npy,*.wav " --exclude-from-tree
生成されたプロンプトのトークン数を表示します。
code2prompt path/to/codebase --tokens
トークン数のトークナイザーを指定します。
code2prompt path/to/codebase --tokens --encoding=p50k
サポートされているトークナイザー: cl100k
、 p50k
、 p50k_edit
、 r50k_bas
。
注記
詳細については、「トークナイザー」を参照してください。
生成されたプロンプトを出力ファイルに保存します。
code2prompt path/to/codebase --output=output.txt
出力を JSON として印刷します。
code2prompt path/to/codebase --json
JSON 出力は次の構造になります。
{
"prompt" : " <Generated Prompt> " ,
"directory_name" : " codebase " ,
"token_count" : 1234 ,
"model_info" : " ChatGPT models, text-embedding-ada-002 " ,
"files" : []
}
Git コミット メッセージを生成します (ステージングされたファイルの場合)。
code2prompt path/to/codebase --diff -t templates/write-git-commit.hbs
ブランチ比較を使用してプル リクエストを生成します (ステージングされたファイルの場合):
code2prompt path/to/codebase --git-diff-branch ' main, development ' --git-log-branch ' main, development ' -t templates/write-github-pull-request.hbs
ソース コード ブロックに行番号を追加します。
code2prompt path/to/codebase --line-number
マークダウン コード ブロック内のコードのラッピングを無効にします。
code2prompt path/to/codebase --no-codeblock
私は当初、Claude 3.0 の 200K コンテキスト ウィンドウを利用するために個人使用のためにこれを作成しましたが、非常に便利であることが判明したため、オープンソースにすることにしました。
code2prompt
は、一般的なユースケース用の一連の組み込みテンプレートが付属しています。これらはtemplates
ディレクトリにあります。
document-the-code.hbs
このテンプレートを使用して、コードを文書化するためのプロンプトを生成します。コードベース内のすべてのパブリック関数、メソッド、クラス、モジュールにドキュメント コメントを追加します。
find-security-vulnerabilities.hbs
このテンプレートを使用して、コードベース内の潜在的なセキュリティ脆弱性を見つけるためのプロンプトを生成します。一般的なセキュリティ問題を探し、それらを修正または軽減する方法に関する推奨事項を提供します。
clean-up-code.hbs
このテンプレートを使用して、コードのクリーンアップと品質向上のためのプロンプトを生成します。読みやすさ、ベストプラクティスの順守、効率、エラー処理などを改善する機会を模索します。
fix-bugs.hbs
このテンプレートを使用して、コードベースのバグを修正するためのプロンプトを生成します。これは、問題を診断し、修正の提案を提供し、提案された修正でコードを更新するのに役立ちます。
write-github-pull-request.hbs
このテンプレートを使用して、2 つのブランチの git diff と git log を比較することにより、マークダウンで GitHub プル リクエストの説明を作成します。
write-github-readme.hbs
このテンプレートを使用して、GitHub でのホスティングに適したプロジェクトの高品質な README ファイルを生成します。コードベースを分析してその目的と機能を理解し、Markdown 形式で README コンテンツを生成します。
write-git-commit.hbs
このテンプレートを使用して、git ディレクトリ内のステージングされたファイルから git コミットを生成します。コードベースを分析してその目的と機能を理解し、Markdown 形式で git commit メッセージ コンテンツを生成します。
improve-performance.hbs
このテンプレートを使用して、コードベースのパフォーマンスを向上させるためのプロンプトを生成します。最適化の機会を探し、具体的な提案を提供し、変更を反映してコードを更新します。
これらのテンプレートを使用するには、 -t
フラグの後にテンプレート ファイルへのパスを渡します。例えば:
code2prompt path/to/codebase -t templates/document-the-code.hbs
code2prompt
Handlebars テンプレートでのユーザー定義変数の使用をサポートしています。デフォルトのコンテキスト ( absolute_code_path
、 source_tree
、 files
) の一部ではないテンプレート内の変数は、ユーザー定義変数として扱われます。
プロンプトの生成中に、 code2prompt
ユーザーにこれらのユーザー定義変数の値を入力するよう求めます。これにより、ユーザー入力に基づいて生成されたプロンプトをさらにカスタマイズできます。
たとえば、テンプレートに{{challenge_name}}
と{{challenge_description}}
が含まれている場合、 code2prompt
の実行時にこれらの変数の値を入力するように求められます。
この機能により、ユーザーが提供した情報に基づいてさまざまなシナリオに適応できる再利用可能なテンプレートを作成できます。
トークン化はtiktoken-rs
使用して実装されます。 tiktoken
OpenAI モデルで使用される次のエンコーディングをサポートしています。
エンコーディング名 | OpenAI モデル |
---|---|
cl100k_base | ChatGPT モデル、 text-embedding-ada-002 |
p50k_base | コードモデル、 text-davinci-002 、 text-davinci-003 |
p50k_edit | text-davinci-edit-001 、 code-davinci-edit-001 などの編集モデルに使用します。 |
r50k_base (またはgpt2 ) | davinci のようなGPT-3モデル |
さまざまなトークナイザーの詳細については、OpenAI クックブックを参照してください。
code2prompt
コードベースから LLM のプロンプトを簡単に生成できます。ディレクトリを走査し、ツリー構造を構築し、各ファイルに関する情報を収集します。 Handlebars テンプレートを使用してプロンプトの生成をカスタマイズできます。生成されたプロンプトは自動的にクリップボードにコピーされ、出力ファイルに保存することもできます。 code2prompt
、コード分析、生成、その他のタスクのための LLM プロンプトの作成プロセスを合理化するのに役立ちます。
貢献する方法:
MIT ライセンスに基づいてライセンスされています。詳細については、ライセンスを参照してください。
このプロジェクトが気に入って役に立ったと思われた場合は、ぜひ を与えて、作者をサポートすることを検討してください。