「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > GenAI Git コミット

GenAI Git コミット

2024 年 9 月 12 日に公開
ブラウズ:636

GenAI Git Commits

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 のコミット メッセージ ジェネレーターからインスピレーションを得たものです。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/pelikhan/genai-git-commits-38m5?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3