#git-commit #commit-message #git-hook #openai #git #git-config #ai

app gptcommit

使用LLM总结提交的git prepare-commit-msg钩子

41个版本

0.5.16 2024年1月30日
0.5.14 2023年10月17日
0.5.13 2023年9月2日
0.5.10 2023年7月5日
0.5.5 2023年3月31日

#618 in 开发工具

Download history 1/week @ 2024-05-15 6/week @ 2024-05-22 3/week @ 2024-06-05 4/week @ 2024-06-12 12/week @ 2024-07-17 273/week @ 2024-07-24

285 每月下载量

MIT 许可证

74KB
1.5K SLoC

Rust 1.5K SLoC // 0.0% comments Tera 111 SLoC PowerShell 57 SLoC // 0.1% comments Shell 27 SLoC // 0.4% comments

gptcommit

Github Contributors Github Stars CI

crates.io status crates.io downloads Rust dependency status

使用GPT-3编写提交消息的git prepare-commit-msg钩子。使用此工具,您可以轻松生成清晰、全面且描述性的提交消息,让您专注于编写代码。

查看公告博客文章

演示

asciicast

安装

  1. 使用cargo(推荐)在本地上安装此工具。
cargo install --locked gptcommit

或者在macOS上,使用homebrew

brew install zurawiki/brews/gptcommit
  1. 在您的git仓库中,运行以下命令将gptcommit安装为git prepare-commit-msg钩子。您需要提供一个OpenAI API密钥以完成安装。
gptcommit install

使用方法

要使用gptcommit,只需像平常一样运行git commit。钩子将自动为您使用类似GPT的大型语言模型生成提交消息。如果您对生成的消息不满意,您可以在提交之前编辑它。

注意:默认情况下,gptcommit使用GPT-3模型。请确保您的OpenAI账户中有足够的信用来使用它。

功能

gptcommit支持许多配置选项,这些选项从$HOME/.config/gptcommit/config.toml读取。配置按以下顺序应用

  • $HOME/.config/gptcommit/config.toml读取的用户设置。
  • $GIT_ROOT/.git/gptcommit.toml克隆的仓库中的设置。
  • GPTCOMMIT__*开头的环境变量。

查看所有可用的配置选项:gptcommit config keys

设置您的OpenAI API密钥

持久化您的OpenAI密钥

gptcommit config set openai.api_key sk-...

或仅为您本地仓库设置

gptcommit config set --local openai.api_key sk-...

您也可以通过 GPTCOMMIT__OPENAI__API_KEY 配置此设置。

为了与其他 OpenAI 客户端保持兼容性,我们支持 OPENAI_API_KEY 环境变量。这将具有最高优先级。

设置自定义 OpenAI API 基础 URL

持久化您的OpenAI密钥

gptcommit config set openai.api_base https://...

或仅为您本地仓库设置

gptcommit config set --local openai.api_base https://...

您也可以通过 GPTCOMMIT__OPENAI__API_BASE 或 . 配置此设置。

为了与其他 OpenAI 客户端保持兼容性,我们支持 OPENAI_API_BASE 环境变量。这将具有最高优先级。

尝试不同的 OpenAI 模型

gptcommit 默认使用 text-davinci-003。模型可以配置为使用其他模型,如下所示

gptcommit config set openai.model text-davinci-002

您也可以通过 GPTCOMMIT__OPENAI__MODEL 配置此设置。

有关公共 OpenAI 模型的列表,请参阅 OpenAI 文档。您还可以引入自己的微调模型。

设置总结语言

gptcommit 默认使用英语。语言可以配置为使用其他语言,如下所示

gptcommit config set output.lang zh-cn

现在,支持的语言有

区域代码 语言
en 英语
zh-cn 简体中文
zh-tw 繁體中文
ja 日本語

允许在修改提交时重新总结

gptcommit config set allow-amend true

代理配置支持

使用以下方式配置 OpenAI 代理

gptcommit config set openai.proxy "my_http_proxy...."

常见问题 / 常见问题解答

我如何减少我的 OpenAI 使用费?

在当前设计中,gptcommit 会发出 N+2 个提示,其中 N 是在 max_token_limit 下的具有差异的修改文件数量。其他提示是标题和摘要。

OpenAI 完成是通过“标记”计费的,这些标记既被发送又被生成。每标记的价格取决于使用的模型。生成的标记数量通常是可预测的(因为提交消息通常很小),但 gptcommit 可能会发送大量以差异数据形式存在的标记。

今天,我看到了两个降低成本的低挂解决方案

  • 使用 openai.model 配置选项切换到不同的模型
  • 减少发送给 OpenAI 的提示和差异数据的侧面

OpenAI 的定价页面可以在 https://openai.com/api/pricing/#faq-completions-pricing 找到

当我提交时,githook 没有运行

默认情况下,githook 仅在新的提交上运行。如果设置了模板或正在修改提交,则 githook 将默认跳过。

由于 githook 检测到用户正在提供自己的模板,我们确保不要用 GPT 覆盖它。您可以通过确保 git config --local commit.template 为空来删除提交模板。

您可以通过以下配置允许 gptcommit 总结修改后的提交。

在 GitHub codespaces 中安装

您首先需要安装 Rust 和 cargo 工具链。请记住配置您的 API 密钥。

curl https://sh.rustup.rs -sSf | sh
bash
cargo install --locked gptcommit

# insert your openai api key https://platform.openai.com/account/api-keys
gptcommit config set openai.api_key # sk-...

衍生作品

所有这些酷炫的项目都是使用 gptcommit 构建的。

遇到任何错误吗?

如果您遇到任何错误或有任何改进建议,请在存储库中打开一个问题。

许可

本项目采用 MIT 许可证 许可。


详细帮助用法

$ gptcommit -h
Usage: gptcommit [OPTIONS] <COMMAND>

Commands:
  install             Install the git hook
  uninstall           Uninstall the git hook
  config              Read and modify settings
  prepare-commit-msg  Run on the prepare-commit-msg hook
  help                Print this message or the help of the given subcommand(s)

Options:
  -v, --verbose  Enable verbose logging
  -h, --help     Print help
  -V, --version  Print version
$ gptcommit install -h
Install the git hook

Usage: gptcommit install [OPTIONS]

Options:
  -v, --verbose  Enable verbose logging
  -h, --help     Print help
  -V, --version  Print version
$ gptcommit uninstall -h
Uninstall the git hook

Usage: gptcommit uninstall [OPTIONS]

Options:
  -v, --verbose  Enable verbose logging
  -h, --help     Print help
  -V, --version  Print version
$ gptcommit config -h
Read and modify settings

Usage: gptcommit config [OPTIONS] <COMMAND>

Commands:
  keys    List all config keys
  list    List all config values
  get     Read a config value
  set     Set a config value
  delete  Clear a config value
  help    Print this message or the help of the given subcommand(s)

Options:
  -v, --verbose  Enable verbose logging
  -h, --help     Print help
  -V, --version  Print version
$ gptcommit config keys
allow_amend
file_ignore
model_provider
openai.api_base
openai.api_key
openai.model
openai.proxy
openai.retries
output.conventional_commit
output.conventional_commit_prefix_format
output.lang
output.show_per_file_summary
prompt.commit_summary
prompt.commit_title
prompt.conventional_commit_prefix
prompt.file_diff
prompt.translation

依赖项

~29–49MB
~653K SLoC