يغطي هذا الفصل مفاهيم وتقنيات أساسية لإنشاء توجيهات فعالة لنماذج الذكاء الاصطناعي التوليدي. الطريقة التي تكتب بها التوجيه إلى نموذج اللغة الكبير (LLM) لها تأثير كبير. يمكن للتوجيه المصمم بعناية أن يحقق استجابة بجودة أفضل. ولكن ماذا تعني مصطلحات مثل التوجيه و_هندسة التوجيه_؟ وكيف يمكنني تحسين مدخلات التوجيه التي أرسلها إلى النموذج؟ هذه هي الأسئلة التي سنحاول الإجابة عليها في هذا الفصل والفصل التالي.
الذكاء الاصطناعي التوليدي قادر على إنشاء محتوى جديد (مثل النصوص، الصور، الصوت، الأكواد، إلخ) استجابةً لطلبات المستخدم. يتم تحقيق ذلك باستخدام نماذج اللغة الكبيرة مثل سلسلة GPT ("المحول المدرب مسبقًا التوليدي") من OpenAI، والتي تم تدريبها على استخدام اللغة الطبيعية والأكواد.
يمكن للمستخدمين الآن التفاعل مع هذه النماذج باستخدام طرق مألوفة مثل الدردشة، دون الحاجة إلى أي خبرة تقنية أو تدريب. تعتمد هذه النماذج على التوجيهات - حيث يرسل المستخدمون مدخلات نصية (توجيه) ويحصلون على استجابة الذكاء الاصطناعي (الإكمال). يمكنهم بعد ذلك "الدردشة مع الذكاء الاصطناعي" بشكل تكراري، في محادثات متعددة الجولات، لتحسين التوجيه حتى تتطابق الاستجابة مع توقعاتهم.
أصبحت "التوجيهات" الآن الواجهة البرمجية الأساسية لتطبيقات الذكاء الاصطناعي التوليدي، حيث تخبر النماذج بما يجب القيام به وتؤثر على جودة الاستجابات المقدمة. "هندسة التوجيه" هي مجال دراسة سريع النمو يركز على تصميم وتحسين التوجيهات لتقديم استجابات متسقة وعالية الجودة على نطاق واسع.
في هذا الدرس، سنتعلم ما هي هندسة التوجيه، ولماذا هي مهمة، وكيف يمكننا صياغة توجيهات أكثر فعالية لنموذج معين وهدف تطبيقي. سنفهم المفاهيم الأساسية وأفضل الممارسات لهندسة التوجيه - وسنتعرف على بيئة "صندوق الرمل" التفاعلية في Jupyter Notebooks حيث يمكننا تطبيق هذه المفاهيم على أمثلة حقيقية.
بنهاية هذا الدرس، سنكون قادرين على:
- شرح ما هي هندسة التوجيه ولماذا هي مهمة.
- وصف مكونات التوجيه وكيفية استخدامها.
- تعلم أفضل الممارسات والتقنيات لهندسة التوجيه.
- تطبيق التقنيات المكتسبة على أمثلة حقيقية باستخدام نقطة نهاية OpenAI.
هندسة التوجيه: ممارسة تصميم وتحسين المدخلات لتوجيه نماذج الذكاء الاصطناعي نحو إنتاج المخرجات المطلوبة. التجزئة إلى رموز: عملية تحويل النص إلى وحدات أصغر، تُسمى الرموز، يمكن للنموذج فهمها ومعالجتها. نماذج اللغة الكبيرة المعدلة بالتعليمات: نماذج لغة كبيرة (LLMs) تم تحسينها بتعليمات محددة لتحسين دقة الاستجابة وملاءمتها.
هندسة التوجيه هي حاليًا أكثر فنًا من كونها علمًا. أفضل طريقة لتحسين حدسنا تجاهها هي التدرب أكثر واعتماد نهج التجربة والخطأ الذي يجمع بين خبرة المجال التطبيقي والتقنيات الموصى بها والتحسينات الخاصة بالنموذج.
يوفر دفتر Jupyter Notebook المرافق لهذا الدرس بيئة صندوق الرمل حيث يمكنك تجربة ما تتعلمه - أثناء تقدمك أو كجزء من تحدي الكود في النهاية. لتنفيذ التمارين، ستحتاج إلى:
- مفتاح API لـ Azure OpenAI - نقطة النهاية لخدمة نموذج اللغة الكبير المنشور.
- بيئة تشغيل Python - حيث يمكن تنفيذ الدفتر.
- متغيرات البيئة المحلية - أكمل الإعداد الآن لتكون جاهزًا.
يأتي الدفتر مع تمارين بداية - ولكن يُشجعك على إضافة أقسام Markdown (وصف) و_Code_ (طلبات التوجيه) الخاصة بك لتجربة المزيد من الأمثلة أو الأفكار - وبناء حدسك لتصميم التوجيهات.
هل تريد الحصول على صورة شاملة لما يغطيه هذا الدرس قبل أن تبدأ؟ تحقق من هذا الدليل المصور، الذي يمنحك فكرة عن الموضوعات الرئيسية التي يتم تناولها والنقاط الرئيسية التي يجب التفكير فيها في كل منها. يأخذك مخطط الدرس من فهم المفاهيم الأساسية والتحديات إلى معالجتها باستخدام تقنيات هندسة التوجيه ذات الصلة وأفضل الممارسات. لاحظ أن قسم "التقنيات المتقدمة" في هذا الدليل يشير إلى محتوى يتم تغطيته في الفصل التالي من هذا المنهج.
الآن، دعونا نتحدث عن كيفية ارتباط هذا الموضوع بمهمة شركتنا الناشئة لجلب الابتكار في الذكاء الاصطناعي إلى التعليم. نريد بناء تطبيقات مدعومة بالذكاء الاصطناعي للتعلم المخصص - لذا دعونا نفكر في كيفية "تصميم" المستخدمين المختلفين لتوجيهاتهم:
- الإداريون قد يطلبون من الذكاء الاصطناعي تحليل بيانات المناهج لتحديد الفجوات في التغطية. يمكن للذكاء الاصطناعي تلخيص النتائج أو تصورها باستخدام الأكواد.
- المعلمون قد يطلبون من الذكاء الاصطناعي إنشاء خطة درس لجمهور مستهدف وموضوع معين. يمكن للذكاء الاصطناعي بناء خطة مخصصة بتنسيق محدد.
- الطلاب قد يطلبون من الذكاء الاصطناعي تدريسهم في موضوع صعب. يمكن للذكاء الاصطناعي الآن إرشاد الطلاب بدروس ونصائح وأمثلة مخصصة لمستواهم.
هذا مجرد غيض من فيض. تحقق من توجيهات للتعليم - مكتبة توجيهات مفتوحة المصدر تم تنسيقها بواسطة خبراء التعليم - للحصول على فكرة أوسع عن الإمكانيات! جرب تشغيل بعض تلك التوجيهات في صندوق الرمل أو باستخدام OpenAI Playground لترى ما يحدث!
بدأنا هذا الدرس بتعريف هندسة التوجيه كعملية تصميم وتحسين المدخلات النصية (التوجيهات) لتقديم استجابات متسقة وعالية الجودة (الإكمالات) لهدف تطبيقي معين ونموذج. يمكننا التفكير في هذا كعملية من خطوتين:
- تصميم التوجيه الأولي لنموذج معين وهدف معين.
- تحسين التوجيه بشكل تكراري لتحسين جودة الاستجابة.
هذه العملية تعتمد بالضرورة على التجربة والخطأ وتتطلب حدس المستخدم وجهده للحصول على نتائج مثلى. فلماذا هي مهمة؟ للإجابة على هذا السؤال، نحتاج أولاً إلى فهم ثلاثة مفاهيم:
- التجزئة إلى رموز = كيف يرى النموذج التوجيه.
- نماذج اللغة الأساسية = كيف يعالج النموذج الأساسي التوجيه.
- نماذج اللغة المعدلة بالتعليمات = كيف يمكن للنموذج الآن رؤية "المهام".
يرى نموذج اللغة الكبير التوجيهات كسلسلة من الرموز، حيث يمكن للنماذج المختلفة (أو إصدارات النموذج) تجزئة نفس التوجيه بطرق مختلفة. نظرًا لأن نماذج اللغة الكبيرة يتم تدريبها على الرموز (وليس النص الخام)، فإن الطريقة التي يتم بها تجزئة التوجيهات لها تأثير مباشر على جودة الاستجابة المُولدة.
للحصول على حدس حول كيفية عمل التجزئة إلى رموز، جرب أدوات مثل 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 هو في المستقبل وبالتالي لا يمكن أن يرتبط بحدث حقيقي.
إذن، ماذا يحدث عندما نجرب هذا الطلب مع مزودي نماذج اللغة المختلفة؟
الرد الأول: OpenAI Playground (GPT-35)
الرد الثاني: Azure OpenAI Playground (GPT-35)
الرد الثالث: Hugging Face Chat Playground (LLama-2)
كما هو متوقع، كل نموذج (أو إصدار النموذج) ينتج ردودًا مختلفة قليلاً بفضل السلوك العشوائي وتفاوت قدرات النماذج. على سبيل المثال، يستهدف أحد النماذج جمهورًا في الصف الثامن بينما يفترض الآخر جمهورًا من طلاب المرحلة الثانوية. ولكن جميع النماذج الثلاثة قدمت ردودًا قد تقنع مستخدمًا غير مطلع بأن الحدث كان حقيقيًا.
تقنيات هندسة الطلبات مثل metaprompting و تكوين درجة الحرارة قد تقلل من اختلاقات النماذج إلى حد ما. كما أن هندسة الطلبات الجديدة تدمج أدوات وتقنيات جديدة بسلاسة في تدفق الطلبات، للتخفيف أو تقليل بعض هذه التأثيرات.
لنختتم هذا القسم بفهم كيفية استخدام هندسة الطلبات في الحلول الواقعية من خلال دراسة حالة: 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
يمكنك أيضًا تصفح مدونة الهندسة الخاصة بهم للحصول على المزيد من المنشورات مثل هذا المنشور الذي يوضح كيف يتم تطبيق هذه النماذج والتقنيات لدفع التطبيقات الواقعية.
لقد رأينا لماذا تعتبر هندسة الطلبات مهمة - الآن دعونا نفهم كيف يتم بناء الطلبات حتى نتمكن من تقييم تقنيات مختلفة لتصميم طلبات أكثر فعالية.
لنبدأ بالطلب الأساسي: إدخال نصي يتم إرساله إلى النموذج دون أي سياق إضافي. إليك مثال - عندما نرسل الكلمات الأولى من النشيد الوطني الأمريكي إلى واجهة برمجة التطبيقات Completion API، فإنه يكمل الرد فورًا بالكلمات التالية، مما يوضح سلوك التنبؤ الأساسي.
| الطلب (الإدخال) | الإكمال (الإخراج) |
|---|---|
| Oh say can you see | يبدو أنك بدأت كلمات "The Star-Spangled Banner"، النشيد الوطني للولايات المتحدة. الكلمات الكاملة هي ... |
الآن دعونا نضيف سياقًا وتعليمات إلى هذا الطلب الأساسي. واجهة برمجة التطبيقات Chat Completion API تتيح لنا بناء طلب معقد كمجموعة من الرسائل مع:
- أزواج الإدخال/الإخراج التي تعكس إدخال المستخدم ورد المساعد.
- رسالة النظام التي تحدد سياق سلوك أو شخصية المساعد.
الطلب الآن في الشكل أدناه، حيث يتم تجزئة المعلومات ذات الصلة من السياق والمحادثة بشكل فعال. الآن، يمكن أن يكون تغيير سياق النظام مؤثرًا على جودة الإكمالات بقدر تأثير إدخالات المستخدم المقدمة.
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 يمكن نسخه ولصقه في ملف والتحقق من صحته حسب الحاجة | معقد. منسق. |
في الأمثلة أعلاه، كان الطلب لا يزال مفتوحًا إلى حد كبير، مما يسمح لنموذج اللغة الكبير بتحديد أي جزء من مجموعة بياناته المدربة مسبقًا كان ذا صلة. مع نمط تصميم المحتوى الأساسي، يتم تقسيم النص المدخل إلى جزأين:
- تعليمات (إجراء)
- محتوى ذو صلة (يؤثر على الإجراء)
إليك مثال حيث تكون التعليمات هي "لخص هذا في جملتين".
| الطلب (الإدخال) | الإكمال (الإخراج) |
|---|---|
| كوكب المشتري هو الكوكب الخامس من الشمس والأكبر في النظام الشمسي. إنه عملاق غازي بكتلة تعادل واحد على ألف من كتلة الشمس، ولكنه يعادل كتلة جميع الكواكب الأخرى في النظام الشمسي مجتمعة. كوكب المشتري هو أحد أكثر الأجسام سطوعًا التي يمكن رؤيتها بالعين المجردة في السماء الليلية، وقد عرفته الحضارات القديمة منذ ما قبل التاريخ المسجل. سمي على اسم الإله الروماني المشتري. عندما يُرى من الأرض، يمكن أن يكون كوكب المشتري ساطعًا بما يكفي ليعكس الضوء الذي يلقي بظلال مرئية، وهو في المتوسط ثالث أكثر الأجسام الطبيعية سطوعًا في السماء الليلية بعد القمر والزهرة. لخص هذا في جملتين قصيرتين |
كوكب المشتري، الكوكب الخامس من الشمس، هو الأكبر في النظام الشمسي ويُعرف بأنه أحد أكثر الأجسام سطوعًا في السماء الليلية. سمي على اسم الإله الروماني المشتري، وهو عملاق غازي بكتلة تعادل ضعف ونصف كتلة جميع الكواكب الأخرى في النظام الشمسي مجتمعة. |
يمكن استخدام جزء المحتوى الأساسي بطرق مختلفة لتوجيه التعليمات بشكل أكثر فعالية:
- أمثلة - بدلاً من إخبار النموذج بما يجب فعله بتعليمات صريحة، قدم له أمثلة لما يجب فعله ودعه يستنتج النمط.
- إشارات - اتبع التعليمات بـ "إشارة" توجه الإكمال، مما يوجه النموذج نحو ردود أكثر صلة.
- قوالب - هذه وصفات قابلة للتكرار للطلبات مع أماكن فارغة (متغيرات) يمكن تخصيصها بالبيانات لحالات استخدام محددة.
دعونا نستكشف هذه الطرق عمليًا.
هذه طريقة تستخدم فيها المحتوى الأساسي "لتغذية النموذج" ببعض الأمثلة للإخراج المطلوب لمهمة معينة، ودعه يستنتج النمط للإخراج المطلوب. بناءً على عدد الأمثلة المقدمة، يمكن أن يكون لدينا طلبات بدون أمثلة، طلبات بأمثلة واحدة، طلبات بأمثلة قليلة، إلخ.
يتكون الطلب الآن من ثلاثة مكونات:
- وصف المهمة
- بعض الأمثلة للإخراج المطلوب
- بداية مثال جديد (يصبح وصف المهمة الضمني)
| نوع التعلم | الطلب (الإدخال) | الإكمال (الإخراج) |
|---|---|---|
| بدون أمثلة | "The Sun is Shining". ترجم إلى الإسبانية | "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". |
| بأمثلة قليلة | اللاعب ركض القواعد => البيسبول اللاعب ضرب إيس => التنس اللاعب ضرب ستة => الكريكيت اللاعب قام بضربة ساحقة => |
كرة السلة |
لاحظ كيف كان علينا تقديم تعليمات صريحة ("ترجم إلى الإسبانية") في الطلب بدون أمثلة، ولكن يتم استنتاجها في مثال الطلب بأمثلة واحدة. يظهر مثال الطلب بأمثلة قليلة كيف أن إضافة المزيد من الأمثلة يسمح للنماذج بإجراء استنتاجات أكثر دقة دون تعليمات إضافية.
تقنية أخرى لاستخدام المحتوى الأساسي هي تقديم إشارات بدلاً من الأمثلة. في هذه الحالة، نحن نعطي النموذج دفعة في الاتجاه الصحيح من خلال بدءه بمقتطف يعكس تنسيق الرد المطلوب. ثم يأخذ النموذج "الإشارة" ليكمل بنفس الطريقة.
| عدد الإشارات | الطلب (الإدخال) | الإكمال (الإخراج) |
|---|---|---|
| 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 مع تمارين يمكنك إكمالها بشكل تفاعلي. يمكنك أيضًا تمديد الدفتر بخلايا Markdown وكود لاستكشاف الأفكار والتقنيات بنفسك.
- (موصى به) قم بتشغيل GitHub Codespaces
- (بديل) قم باستنساخ المستودع إلى جهازك المحلي واستخدمه مع Docker Desktop
- (بديل) افتح الدفتر باستخدام بيئة تشغيل الدفاتر المفضلة لديك.
- انسخ ملف
.env.copyفي جذر المستودع إلى.envواملأ قيمAZURE_OPENAI_API_KEY،AZURE_OPENAI_ENDPOINTوAZURE_OPENAI_DEPLOYMENT. عد إلى قسم Sandbox التعليمي لتتعلم كيف.
- اختر نواة التشغيل. إذا كنت تستخدم الخيارين 1 أو 2، ببساطة اختر نواة Python 3.10.x الافتراضية المقدمة من حاوية التطوير.
أنت جاهز لتشغيل التمارين. لاحظ أنه لا توجد إجابات صحيحة وخاطئة هنا - فقط استكشاف الخيارات من خلال التجربة والخطأ وبناء حدس لما يعمل لنموذج معين ومجال التطبيق.
لهذا السبب لا توجد أقسام حلول الكود في هذا الدرس. بدلاً من ذلك، سيكون الدفتر يحتوي على خلايا Markdown بعنوان "My Solution:" تظهر مثالًا واحدًا للإشارة.
أي من التعليمات التالية تعتبر تعليمات جيدة تتبع بعض أفضل الممارسات المعقولة؟
- أرني صورة لسيارة حمراء
- أرني صورة لسيارة حمراء من نوع فولفو وطراز XC90 متوقفة بجانب منحدر مع غروب الشمس
- أرني صورة لسيارة حمراء من نوع فولفو وطراز XC90
الإجابة: 2، إنها أفضل تعليمات لأنها تقدم تفاصيل حول "ماذا" وتدخل في التفاصيل (ليس فقط أي سيارة ولكن نوع وطراز محدد) كما أنها تصف الإعداد العام. 3 هي الأفضل التالية لأنها تحتوي أيضًا على الكثير من الوصف.
حاول استخدام تقنية "الإشارة" مع التعليمات: أكمل الجملة "أرني صورة لسيارة حمراء من نوع فولفو و". ماذا يستجيب النموذج، وكيف يمكنك تحسينه؟
هل تريد معرفة المزيد عن مفاهيم هندسة التعليمات المختلفة؟ انتقل إلى صفحة التعلم المستمر للعثور على موارد رائعة أخرى حول هذا الموضوع.
توجه إلى الدرس الخامس حيث سننظر في تقنيات التعليمات المتقدمة!
إخلاء المسؤولية:
تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي Co-op Translator. بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الرسمي. للحصول على معلومات حاسمة، يُوصى بالترجمة البشرية الاحترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة.







