code2prompt 简介
code2prompt[1] 是一款命令行工具(CLI),能够将代码库转换成一个单一的大型语言模型(LLM)提示符,同时包含源代码树、提示符模板以及令牌计数功能。

项目特点
主要特点
- 
快速生成提示符:可从任意大小的代码库中快速生成 LLM 提示符。  - 
自定义提示符生成:通过 Handlebars 模板自定义提示符生成(可查看 默认模板[2])。  - 
**遵循 .gitignore**:尊重.gitignore文件的设置。 - 
文件过滤与排除:使用 glob 模式过滤和排除文件。  - 
显示生成提示符的令牌计数:可查看生成提示符的令牌数量(详见 Tokenizers 部分)。  - 
可选包含 Git diff 输出:在生成的提示符中可选择性地包含已暂存文件的 Git diff 输出。  - 
自动复制提示符到剪贴板:自动生成的提示符会自动复制到剪贴板。  - 
保存生成的提示符到输出文件:可将生成的提示符保存到输出文件中。  - 
按名称或路径排除文件和文件夹:可根据名称或路径排除特定的文件和文件夹。  - 
为源代码块添加行号:可为源代码块添加行号。  
使用场景
- 
代码文档生成:使用特定模板为代码生成文档。  - 
安全漏洞检测:通过模板查找代码中的潜在安全漏洞并提供修复建议。  - 
代码清理与优化:利用模板提升代码质量,包括可读性、最佳实践遵循、效率、错误处理等方面。  - 
错误修复:借助模板诊断问题、提供修复建议并更新代码。  - 
生成 Git 提交信息:为暂存文件生成 Git 提交信息。  - 
创建 Pull Request:通过比较两个分支的 Git diff 和 Git log 来创建 GitHub pull request 描述。  - 
性能提升:使用模板查找优化机会并提供具体建议。  
项目使用
安装方法
- 
二进制发布版  
从 Releases[3] 下载适合自己操作系统的最新二进制文件。
- 
源码构建  
- 
需要安装Git、Rust和 Cargo。  - 
运行以下命令:  
git clone https://github.com/mufeedvh/code2prompt.git
cd code2prompt/
cargo build --release
- 
通过 cargo 安装  
- 
从 crates.io注册表安装: 
cargo install code2prompt
- 
安装未发布的构建版本:  
cargo install --git https://github.com/mufeedvh/code2prompt
- 
通过 AUR 安装:  
code2prompt 可在 AUR[4] 中找到,可通过任何 AUR 助手安装,例如:
paru/yay -S code2prompt
- 
通过 Nix 安装  
- 
未使用 flakes 时:  
nix-env -iA nixpkgs.code2prompt
- 
使用 flakes 时:  
nix profile install nixpkgs#code2prompt
使用命令
- 
生成代码库目录的提示符:  
code2prompt path/to/codebase
- 
使用自定义 Handlebars 模板文件:  
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
- 
指定令牌计数的 tokenizer:  
code2prompt path/to/codebase --tokens --encoding=p50k
支持的 tokenizer 有: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
- 
生成 Pull Request(针对暂存文件):  
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
参考文档
- 
默认模板[5]  - 
内置模板目录[6]  - 
OpenAI Cookbook(关于不同 tokenizer 的更多上下文)[7]  
注:本文内容仅供参考,具体项目特性请参照官方 GitHub 页面的最新说明。
欢迎关注&点赞&在看,感谢你的阅读~
Github地址: https://github.com/mufeedvh/code2prompt
[2]默认模板: https://github.com/mufeedvh/code2prompt/blob/main/src/default_template.hbs
[3]Releases: https://github.com/mufeedvh/code2prompt/releases
[4]AUR: https://aur.archlinux.org/packages?O=0&K=code2prompt
[5]默认模板: https://github.com/mufeedvh/code2prompt/blob/main/src/default_template.hbs
[6]内置模板目录: https://github.com/mufeedvh/code2prompt/blob/main/templates
[7]OpenAI Cookbook相关: https://github.com/openai/openai-cookbook/blob/66b988407d8d13cad5060a881dc8c892141f2d5c/examples/How_to_count_tokens_with_tiktoken.ipynb
(文:AIGC创想者)