#prompt #llm #ai #gpt #code #language-model #git-directory

app code2prompt

一个命令行(CLI)工具,可以从任何大小的代码库中快速生成 LLM 提示

2 个稳定版本

1.1.0 2024年4月15日
1.0.0 2024年3月11日

#501命令行工具

Download history 32/week @ 2024-04-25 17/week @ 2024-05-02 14/week @ 2024-05-09 22/week @ 2024-05-16 31/week @ 2024-05-23 19/week @ 2024-05-30 173/week @ 2024-06-06 81/week @ 2024-06-13 70/week @ 2024-06-20 66/week @ 2024-06-27 143/week @ 2024-07-04 78/week @ 2024-07-11 126/week @ 2024-07-18 75/week @ 2024-07-25 61/week @ 2024-08-01 70/week @ 2024-08-08

每月下载量 347

MIT 许可证

44KB
756 代码行

code2prompt

一个 CLI 工具,可以将您的代码库转换为单个 LLM 提示,包括源树、提示模板和令牌计数。


您可以在整个目录上运行此工具,它会生成一个格式良好的 Markdown 提示,详细说明源树结构和所有代码。然后,您可以将此文档上传到 GPT 或 Claude 模型,并请求它

  • 将代码重写为另一种语言。
  • 查找错误/安全漏洞。
  • 记录代码。
  • 实现新功能。

您可以根据需要自定义提示模板。它本质上遍历代码库,创建包含所有源文件的提示。简而言之,它自动化了将多个源文件复制粘贴到您的提示中,并格式化它们,同时让您知道您的代码消耗了多少令牌。

我最初写这个是为了个人使用,以便利用 Claude 3.0 的 200K 上下文窗口,这已经被证明非常有用,所以我决定开源它!

crates.io LICENSE

code2prompt

目录

功能

  • 快速从任何大小的代码库生成 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

支持的分词器:cl100kp50kp50k_editr50k_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_pathsource_treefiles)的任何变量将被视为用户定义的变量。

在提示生成过程中,code2prompt将提示用户输入这些用户定义变量的值。这允许根据用户输入进一步自定义生成的提示。

例如,如果您的模板包括{{challenge_name}}{{challenge_description}},则在运行code2prompt时将提示您输入这些变量的值。

此功能允许创建可重用的模板,可以根据用户提供的信息适应不同的场景。

分词器

分词采用 tiktoken-rs 实现。 tiktoken 支持 OpenAI 模型使用的这些编码

编码名称 OpenAI 模型
cl100k_base ChatGPT 模型,text-embedding-ada-002
p50k_base 代码模型,text-davinci-002text-davinci-003
p50k_edit 用于编辑模型如 text-davinci-edit-001code-davinci-edit-001
r50k_base(或 gpt2 类似于 davinci 的 GPT-3 模型

有关不同分词器的更多信息,请参阅 OpenAI 烹饪书

它有什么用处?

code2prompt 使得从代码库生成 LLM 的提示变得简单。它遍历目录,构建树结构,并收集每个文件的信息。您可以使用 Handlebars 模板自定义提示生成。生成的提示将自动复制到您的剪贴板,并可以保存到输出文件中。 code2prompt 帮助简化创建 LLM 提示以进行代码分析、生成和其他任务的过程。

从源码构建

先决条件

要从源代码构建 code2prompt,您需要安装以下工具

  • Git
  • Rust
  • Cargo(在安装 Rust 时自动安装)
$ git clone https://github.com/mufeedvh/code2prompt.git
$ cd code2prompt/
$ cargo build --release

第一个命令将 code2prompt 仓库克隆到您的本地计算机上。接下来的两个命令将切换到 code2prompt 目录,并以发布模式构建它。

贡献

贡献方式

  • 建议一个功能
  • 报告一个错误
  • 修复某事并打开一个拉取请求
  • 帮助我记录代码
  • 传播消息

许可证

许可协议为 MIT 许可,有关更多信息,请参阅 LICENSE

喜欢这个项目吗?

如果您喜欢这个项目并认为它很有用,请给它一个 ⭐ 并考虑支持作者!

依赖关系

~30–48MB
~715K SLoC