2 个稳定版本
1.1.0 | 2024年4月15日 |
---|---|
1.0.0 | 2024年3月11日 |
#501 在 命令行工具
每月下载量 347
44KB
756 代码行
code2prompt
一个 CLI 工具,可以将您的代码库转换为单个 LLM 提示,包括源树、提示模板和令牌计数。
您可以在整个目录上运行此工具,它会生成一个格式良好的 Markdown 提示,详细说明源树结构和所有代码。然后,您可以将此文档上传到 GPT 或 Claude 模型,并请求它
- 将代码重写为另一种语言。
- 查找错误/安全漏洞。
- 记录代码。
- 实现新功能。
您可以根据需要自定义提示模板。它本质上遍历代码库,创建包含所有源文件的提示。简而言之,它自动化了将多个源文件复制粘贴到您的提示中,并格式化它们,同时让您知道您的代码消耗了多少令牌。
我最初写这个是为了个人使用,以便利用 Claude 3.0 的 200K 上下文窗口,这已经被证明非常有用,所以我决定开源它!
目录
功能
- 快速从任何大小的代码库生成 LLM 提示。
- 使用 Handlebars 模板自定义提示生成。(请参阅 默认模板)
- 遵循
.gitignore
。 - 按扩展名过滤和排除文件。
- 显示生成的提示的令牌计数。(有关更多信息,请参阅 分词器)
- 可选地包括 Git diff 输出(暂存文件)在生成的提示中。
- 在生成时将生成的提示复制到剪贴板。
- 将生成的提示保存到输出文件。
- 按名称或路径排除文件和文件夹。
- 向源代码块添加行号。
安装
从发行版下载您操作系统上最新的二进制文件,或者使用cargo
进行安装
cargo install code2prompt
用法
从代码库目录生成提示
code2prompt path/to/codebase
使用自定义的Handlebars模板文件
code2prompt path/to/codebase -t path/to/template.hbs
按扩展名过滤文件
code2prompt path/to/codebase -f rs,toml
按扩展名排除文件
code2prompt path/to/codebase -e txt,md
按名称排除文件
code2prompt path/to/codebase --exclude-files "file1.txt,file2.txt"
按文件夹/目录路径排除文件
code2prompt path/to/codebase --exclude-folders "tests,docs"
显示生成的提示的标记数
code2prompt path/to/codebase --tokens
指定标记数的分词器
code2prompt path/to/codebase --tokens --encoding p50k
支持的分词器:cl100k
,p50k
,p50k_edit
,r50k_base
。
[!注意]
有关更多详细信息,请参阅分词器。
将生成的提示保存到输出文件
code2prompt path/to/codebase -o output.txt
生成git提交消息(用于暂存文件)
code2prompt path/to/codebase --diff -t "templates/write-git-commit.hbs"
向源代码块添加行号
code2prompt path/to/codebase --line-number
模板
code2prompt
附带一组内置模板,用于常见用例。您可以在templates
目录中找到它们。
文档-的-代码.hbs
使用此模板生成用于记录代码的提示。它将为代码库中的所有公共函数、方法、类和模块添加文档注释。
查找-安全-漏洞.hbs
使用此模板生成用于在代码库中查找潜在安全漏洞的提示。它将查找常见的安全问题,并提供有关如何修复或缓解它们的建议。
清理-up-代码.hbs
使用此模板生成用于清理和改进代码质量的提示。它将寻找改进可读性、遵循最佳实践、效率、错误处理等的机会。
修复-bug.hbs
使用此模板生成用于修复代码库中bug的提示。它将帮助诊断问题,提供修复建议,并使用建议的修复更新代码。
编写-github-readme.hbs
使用此模板生成适用于GitHub托管的项目高质量的README文件。它将分析代码库以了解其目的和功能,并以Markdown格式生成README内容。
编写-git-commit.hbs
使用此模板从您的git目录中的暂存文件生成git提交。它将分析代码库以了解其目的和功能,并以Markdown格式生成git提交消息内容。
提高-性能.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 提示以进行代码分析、生成和其他任务的过程。
从源码构建
先决条件
要从源代码构建 code2prompt
,您需要安装以下工具
$ git clone https://github.com/mufeedvh/code2prompt.git
$ cd code2prompt/
$ cargo build --release
第一个命令将 code2prompt
仓库克隆到您的本地计算机上。接下来的两个命令将切换到 code2prompt
目录,并以发布模式构建它。
贡献
贡献方式
- 建议一个功能
- 报告一个错误
- 修复某事并打开一个拉取请求
- 帮助我记录代码
- 传播消息
许可证
许可协议为 MIT 许可,有关更多信息,请参阅 LICENSE
喜欢这个项目吗?
如果您喜欢这个项目并认为它很有用,请给它一个 ⭐ 并考虑支持作者!
依赖关系
~30–48MB
~715K SLoC