"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > التزامات GenAI Git

التزامات GenAI Git

تم النشر بتاريخ 2024-11-07
تصفح:677

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

سيعمل هذا الأمر على تشغيل البرنامج النصي، وسيرشدك خلال عملية إنشاء رسالة 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