git コミット メッセージの生成は、開発者にとってすぐに古典的な GenAI アプリケーションになりました。
これを支援するために、GenAIScript スクリプトを作成します。
スクリプトは通常のnode.js自動化スクリプトとして機能し、runPromptを使用します
LLM に呼び出しを発行し、生成されたテキストを確認するようユーザーに求めます。
スクリプトは、@inquirer/prompts から必要な関数をインポートすることから始まります。
import { select, input, confirm } from "@inquirer/prompts"
これらの関数は、アクションの確認やデータの入力を求めるユーザーとの対話に使用されます。
次に、Git リポジトリに段階的な変更があるかどうかを確認します。
let { stdout } = await host.exec("git", ["diff", "--cached"])
変更がステージングされていない場合は、すべての変更をステージングするかどうかをユーザーに尋ねます。ユーザーが確認すると、すべての変更がステージングされます。そうでない場合は救済します。
const stage = await confirm({ message: "No staged changes. Stage all changes?", default: true, }) if (stage) { await host.exec("git", ["add", "."]) stdout = (await host.exec("git", ["diff", "--cached"])).stdout } if (!stdout) cancel("no staged changes")
段階的な変更を使用して最初のコミット メッセージを生成します。
message = ( await runPrompt( (_) => { _.def("GIT_DIFF", stdout, { maxTokens: 20000 }) _.$`GIT_DIFF is a diff of all staged changes, coming from the command: \`\`\` git diff --cached \`\`\` Please generate a concise, one-line commit message for these changes. - do NOT add quotes` }, { cache: false, temperature: 0.8 } ) ).text
上記のプロンプト構成は、メッセージが簡潔である必要があることを示しています。
「git diff --cached」出力に関連するものであり、引用符を含めないでください。
ユーザーは、生成されたメッセージの処理方法を選択します:
choice = await select({ message, choices: [ { name: "commit", value: "commit", description: "accept message and commit" }, ... ], })
メッセージを編集または再生成するためのオプションが提供されます。ユーザーがメッセージの編集を選択した場合は、新しいメッセージを入力するように求められます:
if (choice === "edit") { message = await input({ message: "Edit commit message", required: true, }) choice = "commit" }
ユーザーがメッセージをコミットすることを選択した場合、変更をコミットします。
if (choice === "commit" && message) { console.log((await host.exec("git", ["commit", "-m", message])).stdout) }
このスクリプトは CLI を使用して実行できます。
genaiscript run gcm
@inquirer/prompts パッケージを使用するため、最初にこのパッケージをインストールする必要があります:
npm install --save-dev @inquirer/prompts
npx を使用している場合は、
npx -p @inquirer/prompts genaiscript -p genaiscript -- genaiscript run gcm
このコマンドはスクリプトを実行し、AI を使用して Git メッセージを生成してコミットするプロセスを案内し、コミットの情報量と一貫性を高めます。
このコマンドは、gcm.sh ファイルまたは package.json のパッケージ スクリプト セクションでラップできます。
{ "devDependencies": { "@inquirer/prompts": "...", "genaiscript": "..." }, "scripts": { "gcm": "genaiscript run gcm" } }
次に、次を使用してスクリプトを実行できます。
npm run gcm
このスクリプトは、Karpathy のコミット メッセージ ジェネレーターからインスピレーションを得たものです。
以上がGenAI Git コミットの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。