Maison > interface Web > js tutoriel > GenAI Git valide

GenAI Git valide

WBOY
Libérer: 2024-08-28 06:08:33
original
1001 Les gens l'ont consulté

GenAI Git Commits

Générer un message de commit git est rapidement devenu une application GenAI classique pour les développeurs.

Pour vous aider, nous allons créer un script GenAIScript.

Le script agit comme un script d'automatisation node.js classique et utilise runPrompt
pour émettre des appels au LLM et demander à l'utilisateur de confirmer le texte généré.

? Expliquer le script

Le script commence par importer les fonctions nécessaires depuis @inquirer/prompts :

import { select, input, confirm } from "@inquirer/prompts"
Copier après la connexion

Ces fonctions seront utilisées pour interagir avec l'utilisateur, lui demandant de confirmer des actions ou de saisir des données.

Ensuite, nous vérifions s'il y a des modifications par étapes dans le référentiel Git :

let { stdout } = await host.exec("git", ["diff", "--cached"])
Copier après la connexion

Si aucune modification n'est effectuée, nous demandons à l'utilisateur s'il souhaite organiser toutes les modifications. Si l'utilisateur confirme, nous effectuons toutes les modifications. Sinon, nous renflouons.

    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")
Copier après la connexion

Nous générons un message de validation initial en utilisant les modifications échelonnées :

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
Copier après la connexion

La configuration de l'invite ci-dessus indique que le message doit être concis,
lié à la sortie "git diff --cached", et ne doit pas inclure de guillemets.

L'utilisateur choisit comment procéder avec le message généré :

    choice = await select({
        message,
        choices: [
            { name: "commit", value: "commit", description: "accept message and commit" },
            ...
        ],
    })
Copier après la connexion

Des options sont proposées pour modifier ou régénérer le message. Si l'utilisateur choisit de modifier le message, nous lui demandons de saisir un nouveau message :

    if (choice === "edit") {
        message = await input({
            message: "Edit commit message",
            required: true,
        })
        choice = "commit"
    }
Copier après la connexion

Si l'utilisateur choisit de valider le message, nous validons les modifications :

    if (choice === "commit" && message) {
        console.log((await host.exec("git", ["commit", "-m", message])).stdout)
    }
Copier après la connexion

? Exécuter le script

Vous pouvez exécuter ce script à l'aide de la CLI.

genaiscript run gcm
Copier après la connexion

Comme il utilise le package @inquirer/prompts, vous devrez d'abord installer ce package :

npm install --save-dev @inquirer/prompts
Copier après la connexion

Si vous utilisez npx,

npx -p @inquirer/prompts genaiscript -p genaiscript  -- genaiscript run gcm
Copier après la connexion

Cette commande exécutera le script et vous guidera tout au long du processus de génération et de validation d'un message Git à l'aide de l'IA, rendant vos validations plus informatives et cohérentes.

Vous pouvez envelopper cette commande dans un fichier gcm.sh ou dans la section de script de votre package dans package.json :

{
    "devDependencies": {
        "@inquirer/prompts": "...",
        "genaiscript": "..."
    },
    "scripts": {
        "gcm": "genaiscript run gcm"
    }
}
Copier après la connexion

Ensuite, vous pouvez exécuter le script en utilisant :

npm run gcm
Copier après la connexion

Remerciements

Ce script a été inspiré du générateur de messages de commit de Karpathy.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal