3.1K+ Star!code2prompt:一个代码转提示的命令行工具

欢迎关注我,持续获取更多内容,感谢&在看~

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 描述。
  • 性能提升:使用模板查找优化机会并提供具体建议。

项目使用

安装方法

  1. 二进制发布版

从 Releases[3] 下载适合自己操作系统的最新二进制文件。

  1. 源码构建
  • 需要安装Git、Rust和 Cargo。
  • 运行以下命令:
git clone https://github.com/mufeedvh/code2prompt.git
cd code2prompt/
cargo build --release
  1. 通过 cargo 安装
  • 从 crates.io 注册表安装:
cargo install code2prompt
  • 安装未发布的构建版本:
cargo install --git https://github.com/mufeedvh/code2prompt
  1. 通过 AUR 安装

code2prompt 可在 AUR[4] 中找到,可通过任何 AUR 助手安装,例如:

paru/yay -S code2prompt
  1. 通过 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 有:cl100kp50kp50k_editr50k_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 页面的最新说明。

欢迎关注&点赞&在看,感谢你的阅读~


资源列表
[1] 

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

欢迎分享

发表评论