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创想者)