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 开发工具
285 每月下载量
74KB
1.5K SLoC
gptcommit
使用GPT-3编写提交消息的git prepare-commit-msg钩子。使用此工具,您可以轻松生成清晰、全面且描述性的提交消息,让您专注于编写代码。
查看公告博客文章。
演示
安装
- 使用
cargo
(推荐)在本地上安装此工具。
cargo install --locked gptcommit
或者在macOS上,使用homebrew
brew install zurawiki/brews/gptcommit
- 在您的
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