برنامه نویسی

مدیریت مشکلات GitHub با هوش مصنوعی 🦾

چیزی که من ساختم

من یک GitHub Action خلاقانه توسعه داده ام که مشکلات GitHub را با قدرت هوش مصنوعی بهبود می بخشد. کارکردهای اولیه آن شامل یافتن مسائل مرتبط، ارائه خلاصه مختصر مسائل و همه نظرات مرتبط، ایجاد به‌روزرسانی‌های پیشرفت، توصیه برچسب‌های مناسب و موارد دیگر است.

ارسال دسته:

موارد ضروری نگهدارنده: زندگی نگهبانان منبع باز را آسان تر کنید.

لینک برنامه

https://github.com/marketplace/actions/clarify-and-improve-issues-with-openai-gpt

اسکرین شات ها

https://github.com/MaurerKrisztian/issue-improver-action-demo/issues/2

توضیحات تصویر

توضیحات تصویر

توضیحات تصویر

شرح

این اکشن GitHUb می‌تواند برای جمع‌آوری داده‌های مربوطه، ارائه نظرات/پیشنهادات مفید با مدل‌های OpenAI GPT فعال شود.

اساساً به این صورت عمل می‌کند: درخواست‌ها به یک مدل GPT ارسال می‌شوند و پاسخ آن به عنوان یک نظر در مورد یک مشکل ظاهر می‌شود. متن درخواستی می تواند حاوی متغیرهایی مانند {{issueTitle}}، {{issueBody}}، {{allComments}}و غیره. این مکان‌گردان‌ها با داده‌های واقعی از شماره فعلی جایگزین می‌شوند، اما می‌توانند اطلاعات دیگری را نیز شامل شوند، نه فقط محدود به خود موضوع.

    "summary": {
      "title": "Summary",
      "prompt": "Provide a concise summary of the main points and objectives presented in the issue '{{issueTitle}}' and its content: {{issueBody}}."
    },
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

یکی از اجزای کلیدی “بخش ها” است. هر بخش باید حداقل یک عنوان و پارامتر prompt داشته باشد. در yml اکشن گردش کار، می توانید مشخص کنید به کدام بخش نیاز دارید. در طول اجرای عملیات، اعلان‌های بخش‌های انتخابی با استفاده از مدل OpenAI GPT پردازش می‌شوند. درخواست‌ها مقادیر پیش‌فرض دارند (به src/config/default-config.ts مراجعه کنید)، اما می‌توانید آنها را کاملاً سفارشی کنید و بخش‌های خود را ایجاد کنید. پاسخ های ایجاد شده به عنوان نظرات به موضوع اضافه می شود.

ساخته شده در بخش ها و ورودی ها:

ورودی ضروری پیش فرض اطلاعات
openai-key آره N/A کلید OpenAI API
فایل پیکربندی خیر issue-improver-config.json فایل پیکربندی
بخش add-related-issues خیر نادرست یک بخش مسائل مرتبط ایجاد کنید.
افزودن-خلاصه-بخش خیر نادرست یک بخش خلاصه ایجاد کنید.
افزودن-نظر-خلاصه-بخش خیر نادرست ایجاد خلاصه نظر
افزودن بخش سفارشی خیر N/A عنوان بخش سفارشی / شناسه رشته جدا شده با کاما. “*” به معنای شامل همه است.
افزودن-برچسب-بخش خیر نادرست ایجاد پیشنهاد برچسب
مدل خیر ‘text-davinci-003’ مدل OpenAI
حداکثر توکن خیر 150 حداکثر_توکن های OpenAI (طول پاسخ)
حالت اشکال زدایی خیر نادرست فعال کردن حالت اشکال زدایی: نظر ایجاد نکنید
  • بخش مربوط به مسائل
    مسائل مرتبط را در میان موضوعات باز پیدا کنید. برخی از مسائل تکراری هستند، در حالی که برخی دیگر به یکدیگر مرتبط هستند. این جزئیات برای نگهدارنده مفید است.

  • بخش برچسب
    این اقدام، مشکل و همه برچسب‌ها، توضیحات و داده‌های موجود را برای پیشنهاد برچسب‌های مرتبط تجزیه و تحلیل می‌کند.

  • خلاصه-بخش
    متن موضوع را خلاصه کنید.

  • بخش سفارشی
    در فایل پیکربندی، به طور خاص در زیر sections.custom بخش، شما توانایی ایجاد بخش های سفارشی با درخواست های خود را دارید.

  • نظر-خلاصه-بخش
    همه نظرات مربوط به شماره فعلی را خلاصه کنید، گزارش پیشرفت تهیه کنید و غیره. گاهی اوقات، برخی از مشکلات GitHub می تواند با انبوهی از نظرات غلبه کند و درک وضعیت را دشوار کند. برای رسیدگی به این موضوع، من یک ویژگی خلاصه نظرات را توسعه داده ام.

حالت اشکال زدایی

اگر حالت اشکال زدایی را روشن کنید، موارد زیر را انجام می دهد: دستورات را حل کند، گزارش های دقیق تری از آنچه اتفاق می افتد به شما ارائه دهد و نظر ایجاد نکنید. برای فعال کردن این، تنظیم کنید debug-mode ورودی به true.

اگر می‌خواهید این عمل را بدون اظهار نظر در مورد هیچ مشکلی آزمایش کنید، روشن کردن حالت اشکال‌زدایی مفید است. این به شما امکان می دهد گزارش ها را مشاهده کنید و ببینید اگر حالت اشکال زدایی خاموش شود چه نظری ایجاد می شود. هنگامی که از نتایج راضی شدید، می توانید حالت اشکال زدایی را خاموش کنید.

مثال عمل:

این عمل هنگامی که شماره جدید باز می شود فعال می شود،
و یک نظر ایجاد می کند از جمله: مربوط به مسائل-بخش، خلاصه-بخش، برچسب-بخش، بخش سفارشی

name: Improve issues

on:
  issues:
    types: [opened]

jobs:
  gpt-comment:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Create useful comment with AI
        uses: MaurerKrisztian/issue-improver-action@v1
        with:
          openai-key: ${{ secrets.GPT_KEY }}
          max-tokens: 400
          add-related-issues-section: true
          add-summary-section: true
          add-label-section: true
          add-custom-section: "my_custom_section1,my_custom_section2"
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

خلاصه نظر

کد YAML زیر نحوه فعال کردن خلاصه نظرات، گزارش پیشرفت را با استفاده از دستور “!summarize” نشان می دهد.

on:
  issue_comment:

jobs:
  comment-summary:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Comment summary
        uses: MaurerKrisztian/issue-improver-action@v1
        if: contains(github.event.comment.body, '!summarize')
        with:
          openai-key: ${{ secrets.GPT_KEY }}
          max-tokens: 400
          add-comment-summary-section: true
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بخش سفارشی:

تمام دستورات بخش کاملاً قابل تنظیم است.
برای ایجاد بخش‌ها/اعلان‌های سفارشی، به سادگی یک فایل JSON ایجاد کنید (موقعیت مکانی است config-file ورودی) و دستورات و عناوین بخش را به دلخواه تغییر دهید. این تنظیمات پیش فرض را حذف می کند (نگاه کنید به: src/config/default-config.ts).

علاوه بر این، می توانید بخش های سفارشی جدیدی را به آن اضافه کنید sections.custom آرایه در فایل پیکربندی

پیکربندی مثال:

{
  "sections": {
    "custom": [
      {
        "title": "Joke",
        "prompt": "Make a joke about this: {{issueTitle}}"
      },
      {
        "title": "Poem",
        "prompt": "Write a short poem about this: {{issueTitle}}"
      }
    ],
    "relatedIssues": {
      "title": "Related Issues",
      "prompt": "From the list of open issues: {{openIssues}}, identify the most relevant ones related to '{{issueTitle}}' and provide a brief description of their similarities. Just the very simmilar related issues to '{{issueTitle}}' shoud be included in the answer, if none is very similar, andwer with 'none',"
    },
    "summary": {
      "title": "Summary",
      "prompt": "Provide a concise summary of the main points and objectives presented in the issue '{{issueTitle}}' and its content: {{issueBody}}."
    },
    "commentSummary": {
      "title": "Comment summary",
      "prompt": "Review the comments in {{issueComments}} for the issue '{{issueTitle}}' and its content: {{issueBody}}. Extract the key takeaways, notable updates, and any consensus reached, and provide a concise summary of the discussion."
    },
    "labelSuggestion": {
      "title": "Label Suggestion",
      "prompt": "Analyze the issue '{{issueTitle}}' and its content: {{issueBody}}, and suggest appropriate labels from the available labels {{allLabels}} that accurately represent the topic, scope, and complexity of the issue. The response shoud only include a label and why its suitable."
    }
  }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

متغیرهای موجود:

نام شرح
{{issueTitle}} عنوان موضوع
{{issueBody}} بدن موضوع
{{issueComments}} همه نظر موضوع
{{issueAuthor}} ایجاد کننده موضوع
{{allLabels}} تمام برچسب های موجود در مخزن
{{openIssues}} همه مسائل باز در مخزن

برای بهینه سازی استفاده از زمان اکشن GitHub، وضوح متغیرهای نگهدارنده در حافظه پنهان ذخیره می شود و تنها در صورت لزوم حل می شود. این به جلوگیری از هدر رفتن بی مورد منابع ارزشمند GitHub Action کمک می کند.

اگر به متغیر دیگری نیاز دارید، موضوعی را باز کنید یا یک PR ارسال کنید.

من یک مخزن دمو با عمل پیکربندی شده راه اندازی کرده ام. با مراجعه به لینک زیر می توانید آن را کاوش و امتحان کنید: https://github.com/MaurerKrisztian/issue-improver-action-demo

پیوند به کد منبع

https://github.com/MaurerKrisztian/issue-improver-action

مجوز مجاز

با

پس زمینه (چه چیزی باعث شد تصمیم به ساخت این برنامه خاص بگیرید؟ چه چیزی الهام بخش شما شد؟)

الهام بخش من برای ایجاد این برنامه خاص از کنجکاوی در مورد روش هایی که هوش مصنوعی می تواند به ما در انجام وظایف و ساده سازی فرآیندها کمک کند، نشات گرفت. من می خواستم پتانسیل هوش مصنوعی در بهبود بهره وری و کارایی را کشف کنم.

من متوجه شده ام که بسیاری از پروژه های منبع باز دارای نگهدارنده های کمی هستند و مشکلات زیادی دارند. برخی از مسائل تکراری هستند، در حالی که برخی دیگر به یکدیگر مرتبط هستند، برخی نظرات زیادی دارند و پیگیری آن دشوار است. این جزئیات برای نگهدارنده مفید است. با کمک هوش مصنوعی، این اقدام سعی در حل این مشکلات خواهد داشت.

چگونه آن را ساختم (چگونه از GitHub Actions یا GitHub Codespaces استفاده کردید؟ آیا در طول مسیر چیز جدیدی یاد گرفتید؟ مهارت جدیدی را انتخاب کردید؟)

این اولین اکشن سفارشی GitHub من است، من چیزهای زیادی در مورد نحوه عملکرد آن یاد گرفتم. من دریافتم که GitHub Actions یک ابزار بسیار مفید برای خودکار کردن بسیاری از وظایف است. پروژه من از API GitHub و OpenAI API استفاده می کند.

آزمایش یک GitHub Action سفارشی می تواند سخت باشد. برخلاف کدهای معمولی، برای اینکه به درستی کار کند نیاز به اتفاقات خاصی در GitHub دارد. این امر بررسی اینکه آیا همه چیز خوب کار می کند یا نه، سخت تر می کند، به خصوص زمانی که فقط می توانید برای اشکال زدایی به گزارش های موجود در GitHub اعتماد کنید. خوشبختانه، پس از چند مبارزه، ابزاری به نام act را کشف کردم. این ابزار به شما امکان می‌دهد تا اکشن‌های GitHub خود را به صورت محلی اجرا کنید، که آزمایش را بسیار آسان‌تر و سریع‌تر می‌کند. این یک تغییر دهنده واقعی بازی برای توسعه GitHub Actions است.

من همچنین از GitHub Actions در مخزن پروژه خود برای ساختن کد TypeScript و فشار دادن آن به “آخرین” شاخه استفاده کردم. چون نمی خواستم node_modules و dist را در شاخه اصلی نگه دارم. من همچنین یک گردش کار انتشار و آزمایش ایجاد کردم.

فرآیند توسعه پر از یادگیری و چالش بود. این به من درک عمیق تری از GitHub Actions، هوش مصنوعی و پتانسیل آنها در بهبود بهره وری و کارایی داد.

منابع/اطلاعات اضافی

من پیشنهادات بهبود ارزشمندی از کریس دریافت کردم، متشکرم!

برنامه های آینده:

  • متغیرهای بیشتری اضافه کنید
  • برای مدل‌های OpenAI بیشتر پشتیبانی اضافه کنید
  • با تقسیم کردن آن به چند تکه، پشتیبانی از زمینه طولانی را اضافه کنید
  • برای گسترش دامنه کاربردها، موارد استفاده دیگر را آزمایش کنید
  • به طور مستمر دستورات را برای بهبود تجربه کاربر بهبود دهید

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا