يغطي هذا الدرس مفاهيم وتقنيات أساسية لإنشاء توجيهات فعّالة لنماذج الذكاء الاصطناعي التوليدي. طريقة كتابتك للتوجيه (prompt) إلى نموذج اللغة الكبير (LLM) لها تأثير كبير أيضاً. التوجيه المصاغ بعناية يمكن أن يحقق جودة أفضل في الاستجابة. لكن ما معنى مصطلحات مثل التوجيه و هندسة التوجيه بالضبط؟ وكيف يمكنني تحسين مدخل التوجيه الذي أرسله إلى النموذج؟ هذه هي الأسئلة التي سنحاول الإجابة عليها في هذا الفصل والفصل التالي.
الذكاء الاصطناعي التوليدي قادر على إنشاء محتوى جديد (مثل النصوص، الصور، الصوت، الشيفرة البرمجية، وغيرها) استجابةً لطلبات المستخدمين. يتم ذلك باستخدام نماذج اللغة الكبيرة مثل سلسلة GPT ("المحوّل المدرب مسبقاً على التوليد") من OpenAI، والتي تم تدريبها على استخدام اللغة الطبيعية والشيفرة.
يمكن للمستخدمين الآن التفاعل مع هذه النماذج باستخدام طرق مألوفة مثل الدردشة، دون الحاجة لأي خبرة تقنية أو تدريب. هذه النماذج تعتمد على التوجيه - حيث يرسل المستخدم نصاً (توجيه) ويحصل على استجابة من الذكاء الاصطناعي (إكمال). يمكنهم بعد ذلك "الدردشة مع الذكاء الاصطناعي" بشكل تكراري، في محادثات متعددة الجولات، وتحسين التوجيه حتى تتوافق الاستجابة مع توقعاتهم.
أصبحت "التوجيهات" الآن هي واجهة البرمجة الأساسية لتطبيقات الذكاء الاصطناعي التوليدي، حيث تحدد للنماذج ما يجب فعله وتؤثر على جودة الاستجابات. "هندسة التوجيه" هي مجال سريع النمو يركز على تصميم وتحسين التوجيهات لتحقيق استجابات متسقة وعالية الجودة على نطاق واسع.
في هذا الدرس، سنتعرف على ماهية هندسة التوجيه، ولماذا هي مهمة، وكيف يمكننا صياغة توجيهات أكثر فعالية لنموذج وهدف تطبيقي معين. سنفهم المفاهيم الأساسية وأفضل الممارسات في هندسة التوجيه - ونتعرف على بيئة "صندوق الرمل" التفاعلية باستخدام Jupyter Notebooks حيث يمكننا رؤية هذه المفاهيم مطبقة على أمثلة واقعية.
بنهاية هذا الدرس سنكون قادرين على:
- شرح ما هي هندسة التوجيه ولماذا هي مهمة.
- وصف مكونات التوجيه وكيفية استخدامها.
- تعلم أفضل الممارسات والتقنيات في هندسة التوجيه.
- تطبيق التقنيات المكتسبة على أمثلة واقعية باستخدام نقطة نهاية OpenAI.
هندسة التوجيه: ممارسة تصميم وتحسين المدخلات لتوجيه نماذج الذكاء الاصطناعي نحو إنتاج المخرجات المطلوبة. التجزئة إلى رموز (Tokenization): عملية تحويل النص إلى وحدات أصغر تسمى الرموز (tokens) يمكن للنموذج فهمها ومعالجتها. نماذج اللغة الكبيرة المضبوطة بالتعليمات: نماذج لغة كبيرة تم تحسينها بتعليمات محددة لتحسين دقة وملاءمة الاستجابة.
هندسة التوجيه حالياً أقرب للفن منها للعلم. أفضل طريقة لتحسين حدسنا فيها هي الممارسة المستمرة واتباع أسلوب التجربة والخطأ الذي يجمع بين خبرة المجال والتقنيات الموصى بها والتحسينات الخاصة بالنموذج.
دفتر Jupyter المرفق مع هذا الدرس يوفر بيئة صندوق رمل حيث يمكنك تجربة ما تتعلمه - أثناء الدرس أو ضمن تحدي البرمجة في النهاية. لتنفيذ التمارين، ستحتاج إلى:
- مفتاح Azure OpenAI API - نقطة الخدمة لنموذج اللغة الكبير المنشور.
- بيئة تشغيل بايثون - لتشغيل الدفتر.
- متغيرات بيئة محلية - أكمل الآن خطوات الإعداد لتكون جاهزاً.
يحتوي الدفتر على تمارين بداية - لكن يُشجعك على إضافة أقسامك الخاصة من Markdown (وصف) و Code (طلبات التوجيه) لتجربة المزيد من الأمثلة أو الأفكار - وبناء حدسك في تصميم التوجيهات.
هل ترغب في الحصول على نظرة شاملة لما يغطيه هذا الدرس قبل أن تبدأ؟ اطلع على هذا الدليل المصور، الذي يمنحك فكرة عن المواضيع الرئيسية والنقاط الأساسية التي يجب التفكير فيها في كل جزء. خارطة الدرس تأخذك من فهم المفاهيم والتحديات الأساسية إلى معالجتها باستخدام تقنيات وأفضل ممارسات هندسة التوجيه المناسبة. لاحظ أن قسم "التقنيات المتقدمة" في هذا الدليل يشير إلى محتوى سيتم تغطيته في الفصل التالي من هذا المنهاج.
الآن، دعونا نتحدث عن كيف يرتبط هذا الموضوع بمهمتنا في الشركة الناشئة لجلب الابتكار في الذكاء الاصطناعي إلى التعليم. نرغب في بناء تطبيقات تعليمية مدعومة بالذكاء الاصطناعي للتعلم الشخصي - فلنفكر كيف يمكن لمستخدمي تطبيقنا المختلفين "تصميم" التوجيهات:
- المديرون قد يطلبون من الذكاء الاصطناعي تحليل بيانات المنهج الدراسي لتحديد الثغرات في التغطية. يمكن للذكاء الاصطناعي تلخيص النتائج أو عرضها بصرياً باستخدام الشيفرة.
- المعلمون قد يطلبون من الذكاء الاصطناعي إنشاء خطة درس لجمهور وموضوع محددين. يمكن للذكاء الاصطناعي بناء خطة شخصية بالتنسيق المطلوب.
- الطلاب قد يطلبون من الذكاء الاصطناعي مساعدتهم في مادة صعبة. يمكن للذكاء الاصطناعي الآن إرشاد الطلاب بدروس ونصائح وأمثلة تناسب مستواهم.
وهذا مجرد غيض من فيض. اطلع على توجيهات للتعليم - مكتبة توجيهات مفتوحة المصدر منسقة من خبراء التعليم - لتتعرف على المزيد من الإمكانيات! جرّب تنفيذ بعض هذه التوجيهات في صندوق الرمل أو باستخدام OpenAI Playground لترى النتائج بنفسك!
بدأنا هذا الدرس بتعريف هندسة التوجيه بأنها عملية تصميم وتحسين مدخلات النص (التوجيهات) لتحقيق استجابات متسقة وعالية الجودة (إكمالات) لهدف تطبيقي ونموذج معين. يمكننا اعتبارها عملية من خطوتين:
- تصميم التوجيه الأولي لنموذج وهدف معين
- تحسين التوجيه بشكل تكراري لتحسين جودة الاستجابة
هذه العملية تعتمد بالضرورة على التجربة والخطأ وتتطلب حدس وجهد المستخدم للحصول على أفضل النتائج. لماذا هي مهمة؟ للإجابة على هذا السؤال، نحتاج أولاً لفهم ثلاثة مفاهيم:
- التجزئة إلى رموز (Tokenization) = كيف "يرى" النموذج التوجيه
- نماذج اللغة الأساسية (Base LLMs) = كيف "يعالج" النموذج الأساسي التوجيه
- نماذج اللغة المضبوطة بالتعليمات (Instruction-Tuned LLMs) = كيف يمكن للنموذج الآن رؤية "المهام"
يرى نموذج اللغة الكبير التوجيهات كسلسلة من الرموز، حيث يمكن لنماذج مختلفة (أو إصدارات من نفس النموذج) أن تجزئ نفس التوجيه بطرق مختلفة. بما أن النماذج مدربة على الرموز (وليس النص الخام)، فإن طريقة تجزئة التوجيه تؤثر بشكل مباشر على جودة الاستجابة الناتجة.
لتكوين فكرة عن كيفية عمل التجزئة، جرب أدوات مثل OpenAI Tokenizer الموضحة أدناه. انسخ توجيهك وشاهد كيف يتحول إلى رموز، مع الانتباه لكيفية التعامل مع الفراغات وعلامات الترقيم. لاحظ أن هذا المثال يعرض نموذجاً قديماً (GPT-3) - لذا قد تحصل على نتيجة مختلفة مع نموذج أحدث.
بعد تجزئة التوجيه، الوظيفة الأساسية لـ "النموذج الأساسي" (أو نموذج الأساس) هي توقع الرمز التالي في السلسلة. بما أن النماذج مدربة على مجموعات ضخمة من النصوص، فهي تملك فهماً جيداً للعلاقات الإحصائية بين الرموز ويمكنها التنبؤ بذلك بثقة معينة. لاحظ أنها لا تفهم معنى الكلمات أو الرموز في التوجيه؛ بل ترى نمطاً يمكنها "إكماله" بتوقعها التالي. يمكنها الاستمرار في التنبؤ حتى يتوقف المستخدم أو يتحقق شرط محدد مسبقاً.
هل ترغب في رؤية كيف يعمل الإكمال بناءً على التوجيه؟ أدخل التوجيه أعلاه في Chat Playground في Azure OpenAI Studio بالإعدادات الافتراضية. النظام مضبوط على اعتبار التوجيهات طلبات معلومات - لذا يجب أن ترى إكمالاً يناسب هذا السياق.
لكن ماذا لو أراد المستخدم رؤية شيء محدد يحقق معايير أو هدف مهمة معينة؟ هنا تظهر أهمية نماذج اللغة المضبوطة بالتعليمات.
يبدأ نموذج اللغة المضبوط بالتعليمات من النموذج الأساسي ويتم تحسينه بأمثلة أو أزواج مدخلات/مخرجات (مثل "رسائل" متعددة الجولات) يمكن أن تحتوي على تعليمات واضحة - ويستجيب الذكاء الاصطناعي بمحاولة اتباع تلك التعليمات.
يستخدم ذلك تقنيات مثل التعلم المعزز بتغذية راجعة بشرية (RLHF) التي تدرب النموذج على اتباع التعليمات و التعلم من التغذية الراجعة ليقدم استجابات أكثر ملاءمة للتطبيقات العملية وأكثر ارتباطاً بأهداف المستخدم.
لنجرّب ذلك - أعد استخدام التوجيه أعلاه، لكن غيّر الآن رسالة النظام لتوفير التعليمات التالية كسياق:
لخص المحتوى المقدم لك لطالب في الصف الثاني. اجعل النتيجة في فقرة واحدة مع 3-5 نقاط رئيسية.
لاحظ كيف أصبحت النتيجة الآن مضبوطة لتعكس الهدف والشكل المطلوب؟ يمكن للمعلم الآن استخدام هذه الاستجابة مباشرة في شرائح الدرس.
الآن بعد أن عرفنا كيف تتم معالجة التوجيهات من قبل النماذج، دعونا نتحدث عن لماذا نحتاج إلى هندسة التوجيه. الجواب يكمن في أن النماذج الحالية تواجه عدداً من التحديات التي تجعل تحقيق إكمالات موثوقة ومتسقة أمراً صعباً بدون بذل جهد في بناء وتحسين التوجيهات. على سبيل المثال:
-
استجابات النماذج عشوائية. من المرجح أن ينتج نفس التوجيه استجابات مختلفة مع نماذج أو إصدارات مختلفة. وقد ينتج أيضاً نتائج مختلفة مع نفس النموذج في أوقات مختلفة. تقنيات هندسة التوجيه تساعدنا في تقليل هذه التباينات من خلال توفير ضوابط أفضل.
-
النماذج قد تختلق استجابات. النماذج مدربة مسبقاً على مجموعات بيانات كبيرة لكنها محدودة، ما يعني أنها تفتقر للمعرفة حول مفاهيم خارج نطاق التدريب. ونتيجة لذلك، قد تنتج إكمالات غير دقيقة أو متخيلة أو حتى متناقضة مع الحقائق المعروفة. تقنيات هندسة التوجيه تساعد المستخدمين على اكتشاف وتخفيف مثل هذه الاختلاقات، مثلاً بطلب مصادر أو تبريرات من الذكاء الاصطناعي.
-
قدرات النماذج تختلف. النماذج الأحدث أو الأجيال الجديدة منها تملك قدرات أغنى لكنها تجلب أيضاً خصائص فريدة ومقايضات في التكلفة والتعقيد. هندسة التوجيه تساعدنا في تطوير أفضل الممارسات وسير العمل التي تتجاوز الفروقات وتتكيف مع متطلبات كل نموذج بطريقة قابلة للتوسع وسلسة.
لنرَ ذلك عملياً في OpenAI أو Azure OpenAI Playground:
- استخدم نفس التوجيه مع عمليات نشر مختلفة للنماذج (مثل OpenAI، Azure OpenAI، Hugging Face) - هل لاحظت التباينات؟
- استخدم نفس التوجيه عدة مرات مع نفس النموذج (مثلاً في Azure OpenAI playground) - كيف اختلفت النتائج؟
في هذا المقرر، نستخدم مصطلح "الاختلاق" للإشارة إلى الظاهرة التي تنتج فيها النماذج أحياناً معلومات غير صحيحة بسبب قيود في تدريبها أو عوامل أخرى. ربما سمعت أيضاً بهذا تحت اسم "الهلوسة" في مقالات أو أبحاث. مع ذلك، نوصي بشدة باستخدام مصطلح "الاختلاق" حتى لا ننسب سلوكاً بشرياً إلى نتيجة آلية. هذا يعزز أيضاً إرشادات الذكاء الاصطناعي المسؤول من ناحية المصطلحات، ويزيل تعبيرات قد تعتبر مسيئة أو غير شاملة في بعض السياقات.
هل ترغب في فهم كيف تحدث الاختلاقات؟ فكّر في توجيه يطلب من الذكاء الاصطناعي إنشاء محتوى حول موضوع غير موجود (لضمان عدم وجوده في بيانات التدريب). على سبيل المثال - جربت هذا التوجيه:
- فهم الأسباب الرئيسية لنشوب حرب المريخ عام 2076.
- تحليل تأثير الحرب على سكان المريخ والأرض.
- مناقشة الدروس المستفادة من الصراع وكيف يمكن تطبيقها في المستقبل.
في عام 2076، اندلعت حرب كبيرة بين مستعمرات البشر على كوكب المريخ وقوات الأرض. كان هذا الصراع نقطة تحول في تاريخ الاستعمار الفضائي، حيث غيرت نتائج الحرب شكل العلاقات بين الكواكب.
قبل الحرب، شهدت مستعمرات المريخ نمواً سريعاً في عدد السكان والتكنولوجيا. ومع ذلك، ظهرت خلافات حول الموارد، والاستقلال السياسي، وطرق إدارة المستعمرات. تصاعدت التوترات بين قادة المريخ وحكومات الأرض، حتى وصلت إلى نقطة الانفجار في منتصف عام 2076.
- النزاع على الموارد الطبيعية في المريخ، مثل المياه والمعادن النادرة.
- رغبة سكان المريخ في الاستقلال عن سيطرة الأرض.
- اختلافات في السياسات الاقتصادية والتكنولوجية بين الكوكبين.
- بداية الحرب: هجوم مفاجئ من قوات المريخ على منشآت أرضية في المنطقة القطبية.
- معركة المدار: اشتباكات عنيفة بين السفن الفضائية في مدار المريخ.
- حصار المستعمرات: فرض حصار على أهم المدن المريخية، مما أدى إلى نقص في الإمدادات.
- نهاية الحرب: توقيع اتفاقية سلام بعد تدخل وسطاء من كواكب أخرى.
- حصول المريخ على استقلال جزئي وإقامة حكومة محلية.
- تطور تقنيات الدفاع الفضائي بشكل كبير.
- تعزيز التعاون بين الكواكب لتجنب صراعات مستقبلية.
- مناقشة جماعية حول أسباب الحرب وكيف كان يمكن تجنبها.
- كتابة مقال قصير عن تأثير الحرب على الحياة اليومية في المريخ.
- رسم خريطة توضح مواقع المعارك الرئيسية خلال الحرب.
- المشاركة في المناقشة الصفية.
- تقديم المقال القصير.
- عرض الخريطة وتفسيرها أمام الصف.
حرب المريخ عام 2076 كانت حدثاً مفصلياً في تاريخ البشرية، علمتنا أهمية الحوار والتعاون بين الكواكب، وأظهرت كيف يمكن أن تؤدي الخلافات إلى صراعات كبيرة إذا لم يتم التعامل معها بحكمة. أظهر لي البحث على الإنترنت أن هناك روايات خيالية (مثل المسلسلات التلفزيونية أو الكتب) عن حروب المريخ - لكن لا يوجد أي منها في عام 2076. المنطق أيضاً يخبرنا أن عام 2076 هو في المستقبل، وبالتالي لا يمكن ربطه بحدث حقيقي.
ماذا يحدث إذا جربنا هذا الطلب مع مزودي نماذج لغوية مختلفة؟
الرد 1: OpenAI Playground (GPT-35)
الرد 2: Azure OpenAI Playground (GPT-35)
الرد 3: : Hugging Face Chat Playground (LLama-2)
كما هو متوقع، كل نموذج (أو إصدار النموذج) ينتج ردوداً مختلفة قليلاً بسبب السلوك العشوائي واختلاف قدرات النماذج. على سبيل المثال، أحد النماذج يستهدف جمهور الصف الثامن بينما الآخر يفترض أنه يتعامل مع طالب في المرحلة الثانوية. لكن جميع النماذج الثلاثة قدمت ردوداً يمكن أن تقنع مستخدماً غير مطلع بأن الحدث كان حقيقياً.
تقنيات هندسة الطلبات مثل الميتابرومبتينغ و ضبط درجة الحرارة قد تقلل من اختلاق النماذج إلى حد ما. كما أن هندسات هندسة الطلبات الجديدة تدمج أدوات وتقنيات حديثة بسلاسة في تدفق الطلبات، للتقليل أو الحد من بعض هذه التأثيرات.
لنختم هذا القسم بإلقاء نظرة على كيفية استخدام هندسة الطلبات في حلول العالم الحقيقي من خلال دراسة حالة: GitHub Copilot.
GitHub Copilot هو "مساعدك البرمجي الذكي" - يحول الطلبات النصية إلى إكمالات برمجية ويتكامل مع بيئة التطوير الخاصة بك (مثل Visual Studio Code) لتجربة مستخدم سلسة. كما هو موضح في سلسلة المدونات أدناه، كان الإصدار الأول مبنياً على نموذج OpenAI Codex - حيث أدرك المهندسون بسرعة الحاجة إلى ضبط النموذج وتطوير تقنيات هندسة طلبات أفضل لتحسين جودة الكود. في يوليو، أطلقوا نموذج ذكاء اصطناعي محسن يتجاوز Codex لتقديم اقتراحات أسرع.
اقرأ المنشورات بالترتيب لتتابع رحلة تعلمهم.
- مايو 2023 | GitHub Copilot يتحسن في فهم الكود الخاص بك
- مايو 2023 | داخل GitHub: العمل مع النماذج اللغوية وراء GitHub Copilot.
- يونيو 2023 | كيف تكتب طلبات أفضل لـ GitHub Copilot.
- يوليو 2023 | .. GitHub Copilot يتجاوز Codex بنموذج ذكاء اصطناعي محسن
- يوليو 2023 | دليل المطور لهندسة الطلبات والنماذج اللغوية
- سبتمبر 2023 | كيف تبني تطبيق نماذج لغوية للمؤسسات: دروس من GitHub Copilot
يمكنك أيضاً تصفح مدونة الهندسة الخاصة بهم لمزيد من المنشورات مثل هذا المنشور الذي يوضح كيف يتم تطبيق هذه النماذج والتقنيات لدفع تطبيقات العالم الحقيقي.
لقد رأينا لماذا هندسة الطلبات مهمة - الآن دعونا نفهم كيف يتم بناء الطلبات حتى نتمكن من تقييم تقنيات مختلفة لتصميم طلبات أكثر فعالية.
لنبدأ بالطلب الأساسي: إدخال نصي يُرسل إلى النموذج بدون أي سياق إضافي. إليك مثال - عندما نرسل الكلمات الأولى من النشيد الوطني الأمريكي إلى واجهة برمجة تطبيقات الإكمال من OpenAI يكمل النموذج الرد فوراً بالسطر التالي، موضحاً سلوك التنبؤ الأساسي.
| الطلب (الإدخال) | الإكمال (الإخراج) |
|---|---|
| Oh say can you see | يبدو أنك بدأت كلمات "The Star-Spangled Banner"، النشيد الوطني للولايات المتحدة. الكلمات الكاملة هي ... |
الآن دعونا نضيف سياق وتعليمات لهذا الطلب الأساسي. تتيح لنا واجهة برمجة تطبيقات إكمال المحادثة بناء طلب مركب كمجموعة من الرسائل مع:
- أزواج إدخال/إخراج تعكس إدخال المستخدم ورد المساعد.
- رسالة نظام تحدد سياق سلوك أو شخصية المساعد.
يصبح الطلب الآن بالشكل التالي، حيث أن التقسيم إلى رموز يلتقط المعلومات ذات الصلة من السياق والمحادثة. الآن، يمكن أن يكون تغيير سياق النظام مؤثراً على جودة الإكمالات مثل إدخالات المستخدم المقدمة.
response = openai.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Who won the world series in 2020?"},
{"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
{"role": "user", "content": "Where was it played?"}
]
)في الأمثلة السابقة، كان طلب المستخدم عبارة عن استفسار نصي بسيط يمكن تفسيره كطلب معلومات. مع طلبات التعليمات، يمكننا استخدام هذا النص لتحديد المهمة بمزيد من التفصيل، وتقديم إرشادات أفضل للذكاء الاصطناعي. إليك مثالاً:
| الطلب (الإدخال) | الإكمال (الإخراج) | نوع التعليمات |
|---|---|---|
| اكتب وصفاً للحرب الأهلية | تم إرجاع فقرة بسيطة | بسيط |
| اكتب وصفاً للحرب الأهلية. قدم تواريخ وأحداث رئيسية ووضح أهميتها | تم إرجاع فقرة متبوعة بقائمة تواريخ الأحداث الرئيسية مع وصف لكل منها | مركب |
| اكتب وصفاً للحرب الأهلية في فقرة واحدة. قدم 3 نقاط رئيسية مع التواريخ وأهميتها. قدم 3 نقاط أخرى مع الشخصيات التاريخية الرئيسية ومساهماتهم. أرجع الناتج كملف JSON | تم إرجاع تفاصيل موسعة في مربع نص، منسقة كـ JSON يمكنك نسخها ولصقها في ملف والتحقق منها حسب الحاجة | مركب. منسق. |
في الأمثلة السابقة، كان الطلب لا يزال مفتوحاً إلى حد ما، مما يسمح للنموذج اللغوي باختيار الجزء المناسب من بياناته المدربة مسبقاً. مع نمط تصميم المحتوى الأساسي، يتم تقسيم النص المدخل إلى جزئين:
- تعليمات (إجراء)
- محتوى ذو صلة (يؤثر على الإجراء)
إليك مثالاً حيث التعليمات هي "لخص هذا في جملتين".
| الطلب (الإدخال) | الإكمال (الإخراج) |
|---|---|
| المشتري هو الكوكب الخامس من الشمس وأكبر كواكب المجموعة الشمسية. إنه عملاق غازي كتلته تعادل واحد بالألف من كتلة الشمس، لكنه يعادل اثنين ونصف من كتلة جميع الكواكب الأخرى مجتمعة. المشتري من أكثر الأجرام لمعاناً في السماء ليلاً ويمكن رؤيته بالعين المجردة، وكان معروفاً للحضارات القديمة قبل التاريخ. سمي على اسم الإله الروماني المشتري.[19] عند رؤيته من الأرض، يمكن أن يكون المشتري ساطعاً بما يكفي ليعكس الضوء ويلقي بظلال مرئية،[20] ويعتبر في المتوسط ثالث ألمع جرم طبيعي في السماء بعد القمر والزهرة. لخص هذا في جملتين قصيرتين |
المشتري، الكوكب الخامس من الشمس، هو الأكبر في المجموعة الشمسية ويشتهر بكونه من ألمع الأجرام في السماء ليلاً. سمي على اسم الإله الروماني المشتري، وهو عملاق غازي كتلته تعادل اثنين ونصف من كتلة جميع الكواكب الأخرى مجتمعة. |
يمكن استخدام جزء المحتوى الأساسي بطرق متنوعة لتقديم تعليمات أكثر فعالية:
- أمثلة - بدلاً من إخبار النموذج بما يجب فعله بتعليمات صريحة، قدم له أمثلة لما يجب فعله ودعه يستنتج النمط.
- إشارات - اتبع التعليمات بـ "إشارة" تمهد للإكمال، وتوجه النموذج نحو ردود أكثر صلة.
- قوالب - هذه وصفات قابلة للتكرار للطلبات مع متغيرات يمكن تخصيصها بالبيانات لحالات استخدام محددة.
دعونا نستكشف هذه الطرق عملياً.
هذه طريقة تستخدم فيها المحتوى الأساسي لـ "تغذية النموذج" ببعض الأمثلة على الإخراج المطلوب لمهمة معينة، وتدعه يستنتج النمط للإخراج المطلوب. بناءً على عدد الأمثلة المقدمة، يمكن أن يكون لدينا طلبات بدون أمثلة (zero-shot)، أو مع مثال واحد (one-shot)، أو مع عدة أمثلة (few-shot).
يتكون الطلب الآن من ثلاثة عناصر:
- وصف المهمة
- بعض الأمثلة على الإخراج المطلوب
- بداية مثال جديد (يصبح وصف مهمة ضمني)
| نوع التعلم | الطلب (الإدخال) | الإكمال (الإخراج) |
|---|---|---|
| بدون أمثلة | "The Sun is Shining". Translate to Spanish | "El Sol está brillando". |
| مثال واحد | "The Sun is Shining" => ""El Sol está brillando". "It's a Cold and Windy Day" => |
"Es un día frío y ventoso". |
| عدة أمثلة | The player ran the bases => Baseball The player hit an ace => Tennis The player hit a six => Cricket The player made a slam-dunk => |
Basketball |
لاحظ كيف اضطررنا لتقديم تعليمات صريحة ("Translate to Spanish") في الطلب بدون أمثلة، لكنها أصبحت مستنتجة في مثال المثال الواحد. ويظهر المثال بعدة أمثلة كيف أن إضافة المزيد من الأمثلة يسمح للنماذج باستنتاجات أدق دون تعليمات إضافية.
تقنية أخرى لاستخدام المحتوى الأساسي هي تقديم إشارات بدلاً من الأمثلة. في هذه الحالة، نعطي النموذج دفعة في الاتجاه الصحيح من خلال بدء الرد بمقطع يعكس تنسيق الرد المطلوب. ثم "يأخذ النموذج الإشارة" ليكمل بنفس الأسلوب.
| عدد الإشارات | الطلب (الإدخال) | الإكمال (الإخراج) |
|---|---|---|
| 0 | المشتري هو الكوكب الخامس من الشمس وأكبر كواكب المجموعة الشمسية. إنه عملاق غازي كتلته تعادل واحد بالألف من كتلة الشمس، لكنه يعادل اثنين ونصف من كتلة جميع الكواكب الأخرى مجتمعة. المشتري من أكثر الأجرام لمعاناً في السماء ليلاً ويمكن رؤيته بالعين المجردة، وكان معروفاً للحضارات القديمة قبل التاريخ. |
لخص هذا | كوكب المشتري هو أكبر كوكب في نظامنا الشمسي والخامس من حيث البعد عن الشمس. هو عملاق غازي كتلته تعادل واحد من ألف من كتلة الشمس، لكنه أثقل من جميع الكواكب الأخرى مجتمعة. عرفت الحضارات القديمة كوكب المشتري منذ زمن بعيد، ويمكن رؤيته بسهولة في السماء ليلاً. |
| 1 | كوكب المشتري هو الكوكب الخامس من الشمس والأكبر في النظام الشمسي. هو عملاق غازي كتلته تعادل واحد من ألف من كتلة الشمس، لكنه يعادل مرتين ونصف كتلة جميع الكواكب الأخرى في النظام الشمسي مجتمعة. كوكب المشتري من أكثر الأجرام لمعاناً التي يمكن رؤيتها بالعين المجردة في السماء ليلاً، وقد عرفته الحضارات القديمة منذ ما قبل التاريخ.
لخص هذا
ما تعلمناه هو أن كوكب المشتري | هو الكوكب الخامس من الشمس والأكبر في النظام الشمسي. هو عملاق غازي كتلته تعادل واحد من ألف من كتلة الشمس، لكنه يعادل مرتين ونصف كتلة جميع الكواكب الأخرى مجتمعة. يمكن رؤيته بسهولة بالعين المجردة ومعروف منذ العصور القديمة. |
| 2 | كوكب المشتري هو الكوكب الخامس من الشمس والأكبر في النظام الشمسي. هو عملاق غازي كتلته تعادل واحد من ألف من كتلة الشمس، لكنه يعادل مرتين ونصف كتلة جميع الكواكب الأخرى في النظام الشمسي مجتمعة. كوكب المشتري من أكثر الأجرام لمعاناً التي يمكن رؤيتها بالعين المجردة في السماء ليلاً، وقد عرفته الحضارات القديمة منذ ما قبل التاريخ.
لخص هذا
أهم 3 حقائق تعلمناها: | 1. كوكب المشتري هو الكوكب الخامس من الشمس والأكبر في النظام الشمسي.
2. هو عملاق غازي كتلته تعادل واحد من ألف من كتلة الشمس...
3. كوكب المشتري يمكن رؤيته بالعين المجردة منذ العصور القديمة ... |
| | | |
قالب التعليمات هو وصفة جاهزة للتعليمات يمكن حفظها وإعادة استخدامها عند الحاجة، لتوفير تجارب مستخدم أكثر اتساقاً على نطاق واسع. في أبسط أشكالها، هي مجرد مجموعة من أمثلة التعليمات مثل هذا المثال من OpenAI الذي يوفر مكونات التعليمات التفاعلية (رسائل المستخدم والنظام) وصيغة الطلب عبر الـ API - لدعم إعادة الاستخدام.
في شكلها الأكثر تعقيداً مثل هذا المثال من LangChain تحتوي على حقول قابلة للتبديل يمكن استبدالها ببيانات من مصادر متنوعة (إدخال المستخدم، سياق النظام، مصادر بيانات خارجية، إلخ) لإنشاء التعليمات بشكل ديناميكي. هذا يسمح لنا بإنشاء مكتبة من التعليمات القابلة لإعادة الاستخدام والتي يمكن استخدامها لتوفير تجارب مستخدم متسقة برمجياً على نطاق واسع.
وأخيراً، تكمن القيمة الحقيقية للقوالب في القدرة على إنشاء ونشر مكتبات تعليمات لمجالات تطبيقية محددة - حيث يتم الآن تحسين قالب التعليمات ليعكس سياق أو أمثلة خاصة بالتطبيق، مما يجعل الردود أكثر ملاءمة ودقة للجمهور المستهدف. مستودع Prompts For Edu هو مثال رائع على هذا النهج، حيث يجمع مكتبة تعليمات لمجال التعليم مع التركيز على أهداف رئيسية مثل تخطيط الدروس، تصميم المناهج، دعم الطلاب، وغيرها.
إذا اعتبرنا بناء التعليمات يتكون من مهمة (تعليمات) ومحتوى أساسي (المحتوى الرئيسي)، فإن المحتوى الثانوي هو سياق إضافي نقدمه لـ توجيه المخرجات بطريقة معينة. قد يكون ذلك عبر ضبط المعايير، تعليمات التنسيق، تصنيفات الموضوعات، إلخ، والتي تساعد النموذج على تخصيص رده ليتناسب مع أهداف أو توقعات المستخدم.
على سبيل المثال: إذا كان لدينا دليل دورات دراسية مع بيانات وصفية موسعة (الاسم، الوصف، المستوى، الوسوم، اسم المدرس، إلخ) لكل الدورات المتاحة في المنهج:
- يمكننا تحديد تعليمات "تلخيص دليل الدورات لخريف 2023"
- يمكننا استخدام المحتوى الرئيسي لتقديم بعض الأمثلة على المخرجات المطلوبة
- يمكننا استخدام المحتوى الثانوي لتحديد أهم 5 "وسوم" ذات اهتمام.
الآن، يمكن للنموذج أن يقدم ملخصاً بالتنسيق المعروض في الأمثلة، وإذا كان هناك نتيجة بها عدة وسوم، يمكنه إعطاء الأولوية للوسوم الخمسة المحددة في المحتوى الثانوي.
الآن بعد أن عرفنا كيف يمكن بناء التعليمات، يمكننا البدء في التفكير بكيفية تصميمها لتعكس أفضل الممارسات. يمكننا تقسيم ذلك إلى جزئين - امتلاك عقلية صحيحة وتطبيق تقنيات مناسبة.
هندسة التعليمات هي عملية تعتمد على التجربة والخطأ، لذا ضع في اعتبارك ثلاثة عوامل رئيسية:
-
فهم المجال مهم. دقة وملاءمة الرد تعتمد على المجال الذي يعمل فيه التطبيق أو المستخدم. استخدم حدسك وخبرتك في المجال لـ تخصيص التقنيات أكثر. على سبيل المثال، حدد شخصيات خاصة بالمجال في تعليمات النظام، أو استخدم قوالب خاصة بالمجال في تعليمات المستخدم. قدم محتوى ثانوي يعكس سياقات المجال، أو استخدم إشارات وأمثلة خاصة بالمجال لتوجيه النموذج نحو أنماط استخدام مألوفة.
-
فهم النموذج مهم. نعلم أن النماذج بطبيعتها احتمالية. لكن تطبيقات النماذج قد تختلف أيضاً من حيث مجموعة البيانات التي تم تدريبها عليها (المعرفة المسبقة)، والقدرات التي توفرها (مثلاً عبر API أو SDK) ونوع المحتوى الذي تم تحسينها له (مثل الكود أو الصور أو النصوص). افهم نقاط القوة والقيود في النموذج الذي تستخدمه، واستخدم هذه المعرفة لـ تحديد الأولويات أو بناء قوالب مخصصة تتناسب مع قدرات النموذج.
-
التكرار والتحقق مهمان. النماذج تتطور بسرعة، وكذلك تقنيات هندسة التعليمات. كخبير في المجال، قد يكون لديك سياق أو معايير أخرى خاصة بتطبيقك، قد لا تنطبق على المجتمع الأوسع. استخدم أدوات وتقنيات هندسة التعليمات لـ "إطلاق شرارة" بناء التعليمات، ثم كرر وحقق النتائج باستخدام حدسك وخبرتك. سجل ملاحظاتك وأنشئ قاعدة معرفة (مثل مكتبات التعليمات) يمكن للآخرين استخدامها كنقطة انطلاق جديدة لتسريع التكرار مستقبلاً.
لنلقِ نظرة الآن على أفضل الممارسات الشائعة التي يوصي بها OpenAI و Azure OpenAI.
| ماذا | لماذا |
|---|---|
| تقييم أحدث النماذج. | الأجيال الجديدة من النماذج غالباً ما تقدم ميزات وجودة محسنة - لكنها قد تكون أكثر تكلفة. قيّم تأثيرها ثم قرر بشأن الانتقال إليها. |
| فصل التعليمات عن السياق | تحقق مما إذا كان النموذج أو المزود يحدد فواصل لتمييز التعليمات، والمحتوى الأساسي والثانوي بشكل أوضح. هذا يمكن أن يساعد النماذج على إعطاء أوزان أدق للكلمات. |
| كن محدداً وواضحاً | قدم تفاصيل أكثر عن السياق المطلوب، النتيجة، الطول، التنسيق، الأسلوب، إلخ. هذا سيحسن جودة واتساق الردود. احفظ الوصفات في قوالب قابلة لإعادة الاستخدام. |
| كن وصفياً، واستخدم أمثلة | قد تستجيب النماذج بشكل أفضل لأسلوب "أرني وقل لي". ابدأ بأسلوب zero-shot حيث تعطيه تعليمات فقط (بدون أمثلة) ثم جرب few-shot كتحسين، مع تقديم بعض الأمثلة على المخرجات المطلوبة. استخدم التشبيهات. |
| استخدم إشارات لبدء الإكمال | وجه النموذج نحو النتيجة المطلوبة بإعطائه بعض الكلمات أو العبارات التي يمكن أن يستخدمها كنقطة انطلاق للرد. |
| كرر التعليمات | أحياناً قد تحتاج لتكرار التعليمات للنموذج. قدم التعليمات قبل وبعد المحتوى الأساسي، استخدم تعليمات وإشارة، إلخ. كرر وحقق لترى ما الذي يعمل. |
| الترتيب مهم | ترتيب تقديم المعلومات للنموذج قد يؤثر على المخرجات، حتى في أمثلة التعلم، بسبب انحياز الحداثة. جرب خيارات مختلفة لترى ما الأنسب. |
| أعطِ النموذج "مخرجاً" | قدم للنموذج رد افتراضي يمكنه استخدامه إذا لم يستطع إكمال المهمة لأي سبب. هذا قد يقلل من احتمالية إنتاج ردود خاطئة أو مختلقة. |
وكما هو الحال مع أي ممارسة جيدة، تذكر أن النتائج قد تختلف حسب النموذج والمهمة والمجال. استخدم هذه النقاط كنقطة انطلاق، وكرر حتى تجد ما يناسبك. أعد تقييم عملية هندسة التعليمات باستمرار مع توفر نماذج وأدوات جديدة، مع التركيز على قابلية التوسع وجودة الردود.
تهانينا! لقد وصلت إلى نهاية الدرس! حان الوقت لتطبيق بعض هذه المفاهيم والتقنيات على أمثلة واقعية!
في هذا الواجب، سنستخدم Jupyter Notebook مع تمارين يمكنك حلها بشكل تفاعلي. يمكنك أيضاً توسيع الـ Notebook بإضافة خلايا Markdown وكود خاصة بك لاستكشاف أفكار وتقنيات بنفسك.
- (موصى به) شغّل GitHub Codespaces
- (بديل) استنسخ المستودع إلى جهازك المحلي واستخدمه مع Docker Desktop
- (بديل) افتح الـ Notebook ببيئة التشغيل المفضلة لديك.
- انسخ ملف
.env.copyالموجود في جذر المستودع إلى.envواملأ قيمAZURE_OPENAI_API_KEYوAZURE_OPENAI_ENDPOINTوAZURE_OPENAI_DEPLOYMENT. عد إلى قسم Learning Sandbox لمعرفة الطريقة.
- اختر نواة التشغيل. إذا استخدمت الخيارين 1 أو 2، اختر نواة Python 3.10.x الافتراضية التي يوفرها dev container.
أنت الآن جاهز لحل التمارين. لاحظ أنه لا توجد إجابات صحيحة أو خاطئة هنا - فقط استكشاف الخيارات بالتجربة والخطأ وبناء حدسك لما يناسب النموذج ومجال التطبيق.
لهذا السبب لا توجد أقسام حل الكود في هذا الدرس. بدلاً من ذلك، سيحتوي الـ Notebook على خلايا Markdown بعنوان "الحل الخاص بي:" تعرض مثالاً واحداً للإجابة للرجوع إليه.
أي من التعليمات التالية تعتبر جيدة وتراعي بعض أفضل الممارسات؟
- أرني صورة لسيارة حمراء
- أرني صورة لسيارة حمراء من نوع فولفو وطراز XC90 متوقفة بجانب منحدر مع غروب الشمس
- أرني صورة لسيارة حمراء من نوع فولفو وطراز XC90
الإجابة: 2، فهي أفضل تعليمات لأنها تقدم تفاصيل عن "ما هو المطلوب" وتدخل في التفاصيل (ليست أي سيارة بل نوع وطراز محددين) كما تصف المشهد العام. 3 هي الأفضل بعدها لأنها أيضاً تحتوي على الكثير من الوصف.
جرب استخدام تقنية "الإشارة" مع التعليمات: أكمل الجملة "أرني صورة لسيارة حمراء من نوع فولفو و ". ماذا كان رد النموذج، وكيف يمكنك تحسينه؟
هل ترغب في معرفة المزيد عن مفاهيم هندسة التعليمات المختلفة؟ انتقل إلى صفحة التعلم المستمر للعثور على موارد رائعة أخرى حول هذا الموضوع.
توجه إلى الدرس الخامس حيث سنستعرض تقنيات متقدمة في كتابة التعليمات!
إخلاء المسؤولية:
تمت ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي Co-op Translator. بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الرسمي والموثوق. بالنسبة للمعلومات الحساسة أو الهامة، يُنصح بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسير خاطئ ينشأ عن استخدام هذه الترجمة.







