code2prompt
是一个命令行工具 (CLI),可将您的代码库转换为具有源代码树、提示模板和标记计数的单个 LLM 提示。
您可以在整个目录上运行此工具,它将生成格式良好的 Markdown 提示,详细说明源树结构和所有代码。然后,您可以将此文档上传到具有更高上下文窗口的 GPT 或 Claude 模型,并要求其:
.gitignore
。您可以自定义提示模板以实现任何所需的用例。它本质上是遍历代码库并创建包含所有源文件的提示。简而言之,它会自动将多个源文件复制粘贴到提示中并对其进行格式化,同时让您知道代码消耗了多少个令牌。
从发行版下载适用于您的操作系统的最新二进制文件。
要求:
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
禁用在 Markdown 代码块内包装代码:
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
使用此模板通过比较两个分支的 git diff 和 git log,在 markdown 中创建 GitHub pull request 描述。
write-github-readme.hbs
使用此模板为项目生成高质量的 README 文件,适合在 GitHub 上托管。它将分析代码库以了解其目的和功能,并生成 Markdown 格式的 README 内容。
write-git-commit.hbs
使用此模板从 git 目录中的暂存文件生成 git 提交。它将分析代码库以了解其目的和功能,并生成 Markdown 格式的 git 提交消息内容。
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 ) | GPT-3 模型如davinci |
有关不同标记器的更多背景信息,请参阅 OpenAI Cookbook
code2prompt
可以轻松地从您的代码库生成 LLM 提示。它遍历目录,构建树结构,并收集每个文件的信息。您可以使用 Handlebars 模板自定义提示生成。生成的提示会自动复制到剪贴板,也可以保存到输出文件。 code2prompt
有助于简化为代码分析、生成和其他任务创建 LLM 提示的过程。
贡献方式:
根据 MIT 许可证获得许可,请参阅许可证了解更多信息。
如果您喜欢该项目并发现它有用,请给它一个并考虑支持作者!