使用OpenAI的GPT-3
自动化git提交消息您是否曾经努力为您的更改提出一个很好的提交信息?还是您发现自己一遍又一遍地编写相同类型的提交信息?使用OpenAI的GPT-3语言模型,您现在可以自动化为更改生成提交消息的过程。
此博客文章将指导您使用一个简单的Python脚本,该脚本使用OpenAI的GPT-3根据对代码的更改生成提交消息。
github repo
此博客文章的代码可以在github上的gpt-commit-message-helper找到。
脚本用Python编写,并使用OpenAI API生成提交消息。在使用脚本之前,您需要设置OpenAI API键并安装OpenAI Python库。
脚本的概述
脚本通过生成对每个文件进行的更改的摘要,然后将这些摘要作为OpenAI API提示。 API基于提示生成提交消息,然后将其返回到脚本。
这是脚本的高级概述:
获取已更改的文件列表(使用git)。
对于每个文件,生成所做更改的摘要。
使用摘要作为OpenAI API生成提交消息的提示。
打印建议的提交消息,并提示用户批准或输入自定义消息。
使用选定的提交消息提交更改。
让我们研究代码。
导入必要的库并设置OpenAI API键
脚本的前几行导入必要的库并设置OpenAI API密钥:
import openai
import os
import sys
import subprocess
from requests.exceptions import RequestException
openai.api_key = os.environ.get(“ openai_api_key”)
OpenAI库用于与OpenAI API进行交互。 OS,系统和子过程库用于与操作系统和GIT进行交互。从请求库导入requestException类,以处理API请求时处理错误。
OpenAI API密钥是从环境变量加载的,该变量应在运行脚本之前设置。
设置OpenAI API参数的默认值
接下来,脚本设置OpenAI API参数的默认值:
openai_engine = os.getenv("OPENAI_ENGINE", "text-davinci-002")
openai_max_tokens = int(os.getenv("OPENAI_MAX_TOKENS", "60"))
openai_temperature = float(os.getenv("OPENAI_TEMPERATURE", "0.7"))
openai_stop = os.getenv("OPENAI_STOP", None)
这些参数控制OpenAI API如何生成提交消息。 OpenAI_Engine参数选择要使用的OpenAI模型。 OpenAI_MAX_TOKENS参数控制消息中生成了多少个令牌(单词或标点)。 OpenAI_Temperature参数控制消息的“创造力”。 OpenAI_STOP参数可用于添加自定义停止单词,这将导致API停止生成文本。
生成对文件进行更改的摘要
generate_summary函数采用文件路径作为输入,并生成了对文件所做的更改的摘要:
def generate_summary(file_path):
# Get git diff of the file
output = subprocess.run(['git', 'diff', '--cached', file_path], capture_output=True, text=True)
# Extract added/modified/deleted lines from git diff
added_lines = []