تدفق عملية مطالبة مستخدم GitHub Copilot

مكتمل

في هذه الوحدة، سنقسم كيف يحول GitHub Copilot مطالباتك إلى تعليمات برمجية ذكية وقابلة للاستخدام. بشكل عام، يتلقى GitHub Copilot مطالبات ويعيد اقتراحات التعليمات البرمجية أو الاستجابات في تدفق البيانات الخاص به. تقترح هذه العملية تدفقا واردا وصادرا.

التدفق الوارد:

رسم توضيحي لتدفق GitHub Copilot الوارد.

دعونا نستعرض جميع الخطوات التي يتخذها Copilot لمعالجة مطالبة المستخدم في اقتراح التعليمات البرمجية.

1. تأمين الإرسال الفوري وجمع السياق

تبدأ العملية مع الإرسال الآمن لمطالبة المستخدم عبر HTTPS. وهذا يضمن إرسال تعليق لغتك الطبيعية إلى خوادم GitHub Copilot بشكل آمن وسري، مما يحمي المعلومات الحساسة.

يتلقى GitHub Copilot مطالبة المستخدم بشكل آمن، والتي يمكن أن تكون دردشة Copilot أو تعليق لغة طبيعية توفره لك ضمن التعليمات البرمجية الخاصة بك.

في الوقت نفسه، يجمع Copilot تفاصيل السياق:

  • التعليمات البرمجية قبل موضع المؤشر وبعده، مما يساعده على فهم السياق الفوري للمطالبة.
  • اسم الملف ونوع الملف الذي يتم تحريره، مما يسمح له بتخصيص اقتراحات التعليمات البرمجية لنوع الملف المحدد.
  • معلومات حول علامات التبويب المفتوحة المجاورة، مما يضمن محاذاة التعليمات البرمجية التي تم إنشاؤها مع مقاطع التعليمات البرمجية الأخرى في نفس المشروع.
  • معلومات حول بنية المشروع ومسارات الملفات
  • معلومات عن لغات البرمجة وأطر العمل
  • المعالجة المسبقة باستخدام تقنية Fill-in-the-Middle (FIM) للنظر في سياق التعليمات البرمجية السابق واللاحق، وتوسيع فهم النموذج بشكل فعال مما يسمح ل Copilot بإنشاء اقتراحات تعليمات برمجية أكثر دقة و صلة من خلال الاستفادة من سياق أوسع.

تترجم هذه الخطوات طلب المستخدم عالي المستوى إلى مهمة ترميز ملموسة.

2. عامل تصفية الوكيل

بمجرد جمع السياق وإنشاء المطالبة، فإنها تمر بأمان إلى خادم وكيل مستضاف في مستأجر Microsoft Azure مملوك ل GitHub. يقوم الوكيل بتصفية نسبة استخدام الشبكة، وحظر محاولات اختراق المطالبة أو معالجة النظام في الكشف عن تفاصيل حول كيفية إنشاء النموذج لاقتراحات التعليمات البرمجية.

3. تصفية السمية

يتضمن Copilot آليات تصفية المحتوى قبل المتابعة مع استخراج الهدف وإنشاء التعليمات البرمجية، للتأكد من أن التعليمات البرمجية والاستجابات التي تم إنشاؤها لا تتضمن أو تعزز:

  • خطاب الكراهية والمحتوى غير المناسب: يستخدم Copilot خوارزميات للكشف عن ومنع تناول خطاب الكراهية أو اللغة المسيئة أو المحتوى غير المناسب الذي قد يكون ضارا أو مهينا.
  • البيانات الشخصية: تقوم Copilot بتصفية أي بيانات شخصية، مثل الأسماء أو العناوين أو أرقام التعريف، بشكل نشط لحماية خصوصية المستخدم وأمان البيانات.

4. إنشاء التعليمات البرمجية باستخدام LLM

وأخيرا، يتم تمرير المطالبة التي تمت تصفيتها وتحليلها إلى نماذج LLM، والتي تنشئ اقتراحات التعليمات البرمجية المناسبة. تستند هذه الاقتراحات إلى فهم Copilot للمطالبة والسياق المحيط، مما يضمن أن التعليمات البرمجية التي تم إنشاؤها ذات صلة وظيفية ومتوافقة مع المتطلبات الخاصة بالمشروع.

التدفق الصادر:

رسم توضيحي لتدفق GitHub Copilot الصادر.

5. ما بعد المعالجة والتحقق من صحة الاستجابة

بمجرد أن ينتج النموذج استجاباته، يزيل عامل تصفية السمية أي محتوى ضار أو مسيء تم إنشاؤه. ثم يطبق الخادم الوكيل طبقة نهائية من الفحوصات لضمان جودة التعليمات البرمجية والأمان والمعايير الأخلاقية. تتضمن هذه الفحوصات ما يلي:

  • جودة التعليمات البرمجية: يتم التحقق من الاستجابات بحثا عن الأخطاء أو الثغرات الأمنية الشائعة، مثل البرمجة النصية عبر المواقع (XSS) أو حقن SQL، ما يضمن أن التعليمات البرمجية التي تم إنشاؤها قوية وآمنة.
  • مطابقة التعليمات البرمجية العامة (اختياري): اختياريا، يمكن للمسؤولين تمكين عامل تصفية يمنع Copilot من إرجاع اقتراحات تزيد عن 150 حرفا تقريبا إذا كانت تشبه التعليمات البرمجية العامة الموجودة على GitHub بشكل وثيق. يمنع ذلك اقتراح التطابقات المتزامنة كمحتوى أصلي. إذا فشل أي جزء من الاستجابة في عمليات التحقق هذه، يتم اقتطاعه أو تجاهله.

6. تقديم الاقتراحات وبدء حلقة الملاحظات

يتم تسليم الاستجابات التي تمرر جميع عوامل التصفية فقط إلى المستخدم. ثم يبدأ Copilot حلقة ملاحظات استنادا إلى إجراءاتك لتحقيق ما يلي:

  • تنمية معرفتها من الاقتراحات المقبولة.
  • تعلم وتحسين من خلال التعديلات ورفض اقتراحاتها.

7. كرر المطالبات اللاحقة

تتكرر العملية أثناء توفير المزيد من المطالبات، مع معالجة Copilot لطلبات المستخدم باستمرار وفهم هدفها وإنشاء التعليمات البرمجية استجابة لذلك. بمرور الوقت، يطبق Copilot التعليقات التراكمية وبيانات التفاعل، بما في ذلك تفاصيل السياق، لتحسين فهمه لنية المستخدم وتحسين قدرات إنشاء التعليمات البرمجية الخاصة به.