GenAI Git コミット

WBOY
リリース: 2024-08-28 06:08:33
オリジナル
1001 人が閲覧しました

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

以上がGenAI Git コミットの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート