مبانی مهندسی پرسش (Prompt Engineering)
مقدمه
این درس به بررسی مفاهیم و تکنیکهای اساسی در ایجاد پرسشهای مؤثر در مدلهای هوش مصنوعی مولد میپردازد. شیوهی نگارش پرسش برای یک مدل زبانی بزرگ (LLM) نیز حائز اهمیت است. یک پرسش که بهخوبی طراحیشده باشد میتواند کیفیت پاسخ بهتری را به همراه داشته باشد. اما اصطلاحاتی چون پرسش و مهندسی پرسش به چه معنا هستند؟ و چگونه میتوان ورودی پرسش ارسالی به LLM را بهبود بخشید؟ اینها سوالهایی هستند که در این فصل و فصل بعدی به آنها پاسخ خواهیم داد.
هوش مصنوعی مولد قادر به خلق محتوای جدید (مانند متن، تصویر، صوت، کد و غیره) در پاسخ به درخواستهای کاربران است. این امر با بهرهگیری از مدلهای زبانی بزرگ مانند سری GPT (Generative Pre-trained Transformer) اوپنایآی که برای استفاده از زبان طبیعی و کد آموزش دیدهاند، امکانپذیر میباشد.
اکنون کاربران میتوانند با استفاده از الگوهای آشنا نظیر گفتوگو، بدون آنکه نیازی به تخصص فنی یا آموزش داشته باشند، با این مدلها در ارتباط باشند. این مدلها مبتنی بر پرسش هستند؛ بهگونهای که کاربران یک ورودی متنی (پرسش) ارسال میکنند و پاسخ هوش مصنوعی (تکمیل) را دریافت مینمایند. سپس میتوانند بهطور تدریجی با هوش مصنوعی "گفتوگو" کنند و پرسش خود را اصلاح نمایند تا پاسخ به انتظاراتشان نزدیکتر شود.
پرسشها اکنون به عنوان رابط اصلی برنامهنویسی برای برنامههای هوش مصنوعی مولد شناخته میشوند که به مدلها میگویند چه اقداماتی را انجام دهند و بر کیفیت پاسخهای ارائه شده تأثیر میگذارند. "مهندسی پرسش" به عنوان یک حوزه مطالعاتی در حال رشد، بر روی طراحی و بهینهسازی پرسشها تأکید دارد تا پاسخهای با کیفیت و مداوم را در مقیاس گسترده ارائه نماید.
اهداف یادگیری
در این درس، ما به بررسی مهندسی پرسش، اهمیت آن و چگونگی طراحی پرسشهای مؤثر برای یک مدل و هدف کاربردی خاص خواهیم پرداخت. ما مفاهیم اصلی و بهترین روشهای مهندسی پرسش را درک خواهیم نمود.
در پایان این درس، ما قادر خواهیم بود:
- توضیح دهیم که مهندسی پرسش چیست و چرا حائز اهمیت است.
- اجزای یک پرسش را توصیف نماییم و چگونگی استفاده از آنها را شرح دهیم.
- بهترین شیوهها و تکنیکهای مربوط به مهندسی پرسش را بیاموزیم.
- تکنیکهای آموخته شده را در مثالهای واقعی با استفاده از OpenAI به کار ببریم.
اصطلاحات کلیدی
مهندسی پرسش (Prompt Engineering): عمل طراحی و بهبود ورودیها برای هدایت مدلهای هوش مصنوعی به سمت تولید خروجیهای مطلوب.
نشانهگذاری (Tokenization): فرایند تبدیل متن به واحدهای کوچکتر، به نام توکنها، که مدل میتواند آنها را درک و پردازش کند.
مدلهای زبانی بزرگ تنظیم شده با دستور (Instruction-Tuned LLMs): مدلهای زبانی بزرگی که به طور خاص برای بهبود دقت و ارتباط پاسخ خود آموزش داده شدهاند.
راهنمای تصویری
آیا مایلید قبل از ورود به مباحث این درس، دید جامعی از محتوای آن داشته باشید؟ به این راهنمای تصویری توجه فرمایید که تصوری از موضوعات اصلی مورد بررسی و نکات کلیدی هر یک به شما ارائه میدهد. نقشهراه درس شما را از درک مفاهیم اصلی و چالشهای آن به سمت حل این چالشها با استفاده از تکنیکها و بهترین شیوههای مرتبط با مهندسی پرسش هدایت میکند. شایان ذکر است که بخش "تکنیکهای پیشرفته" در این راهنما به محتوایی اشاره دارد که در فصل بعدی این برنامه درسی مطرح خواهد شد.
استارتاپ ما
اکنون اجازه دهید درباره ارتباط این موضوع با مأموریت استارتاپ ما در راهبرد نوآوری هوش مصنوعی در آموزش صحبت کنیم. هدف ما توسعه برنامههای کاربردی مبتنی بر هوش مصنوعی برای یادگیری شخصیسازیشده است. بنابراین، بیایید بررسی کنیم که چگونه کاربران مختلف برنامه ما ممکن است "پرسشها" را طراحی نمایند:
- مدیران ممکن است از هوش مصنوعی درخواست کنند که دادههای آموزشی را تحلیل کند تا شکافهای موجود در پوشش را شناسایی نماید. هوش مصنوعی میتواند نتایج را خلاصهسازی کرده یا آنها را با استفاده از کد بصریسازی نماید.
- معلمان ممکن است از هوش مصنوعی بخواهند که یک طرح درس برای گروه هدف و موضوع مورد نظر تولید کند. هوش مصنوعی قادر است طرح شخصیسازیشده را در قالب مشخصی ارائه دهد.
- دانشآموزان ممکن است از هوش مصنوعی بخواهند که در یک موضوع دشوار به آنها آموزش دهد. هوش مصنوعی اکنون میتواند با ارائه درسها، نکات و مثالهای متناسب با سطح آنها، راهنماییهای لازم را انجام دهد.
این تنها آغاز مسیر است. پیشنهاد میشود نگاهی به پرسشهای آموزشی بیفکنید - کتابخانهای متن باز از پرسشها که توسط کارشناسان آموزشی گردآوری شده است - تا با دامنه وسیعتری از امکانات آشنا شوید! توصیه میشود برخی از این پرسشها را در محیط آزمایشی یا با استفاده از OpenAI Playground اجرا کرده و نتایج را مشاهده کنید!
مهندسی پرسش چیست؟
این درس را با تعریف مهندسی پرسش به عنوان فرآیند طراحی و بهینهسازی ورودیهای متنی (پرسشها) به منظور ارائه پاسخهای یکپارچه و با کیفیت (پاسخها) برای دستیابی به یک هدف خاص و استفاده از مدل خاص آغاز میکنیم. میتوان این فرآیند را به عنوان یک فرآیند دو مرحلهای در نظر گرفت:
- طراحی پرسش اولیه برای یک مدل و هدف مشخص
- تکمیل پرسش به طور تدریجی به منظور بهبود کیفیت پاسخ
این فرآیند به طور طبیعی تجربی است و نیازمند شهود و تلاش کاربر به منظور دستیابی به نتایج بهینه میباشد. بنابراین، چرا این فرآیند حائز اهمیت است؟ برای پاسخ به این سوال، ابتدا باید سه مفهوم زیر را درک کنیم:
- نشانهگذاری = چگونگی "دیدن" پرسش توسط مدل
- مدلهای پایه LLM = چگونگی "پردازش" یک پرسش توسط مدل بنیادین
- مدلهای LLM تنظیمشده با دستور = چگونگی درک "وظایف" توسط مدل
نشانهگذاری (Tokenization)
یک LLM پرسشها را به عنوان یک توالی از نشانهها میبیند. مدلهای مختلف (یا نسخههای مختلف یک مدل) میتوانند یک پرسش را به شیوههای متفاوتی نشانهگذاری کنند. از آنجا که LLMها بر اساس نشانهها آموزش دیدهاند (و نه بر اساس متن خام)، نحوه نشانهگذاری پرسشها تأثیر مستقیمی بر کیفیت پاسخ تولید شده دارد.
برای درک بهتر نحوه نشانهگذاری، میتوانید از ابزارهایی نظیر نشانهگذار OpenAI استفاده کنید. متنی را که میخواهید بررسی کنید کپی کنید و ببینید چگونه به نشانهها تبدیل میشود و به نحوهی برخورد با کاراکترهای فاصله و علامتهای نگارشی دقت کنید. توجه داشته باشید که این مثال مربوط به یک LLM قدیمی (GPT-3) است؛ بنابراین آزمایش این فرایند با یک مدل جدیدتر ممکن است نتایج متفاوتی به همراه داشته باشد.
مفهوم: مدلهای پایه (Foundation Models)
پس از نشانهگذاری یک پرسش، عملکرد اصلی "مدل LLM پایه" (یا مدل بنیادین) پیشبینی نشانهای در آن توالی است. از آنجا که مدلهای زبانی بزرگ (LLM) بر روی مجموعههای داده متنی عظیم آموزش دیدهاند، درک خوبی از روابط آماری میان نشانهها دارند و میتوانند این پیشبینی را با اطمینان انجام دهند. لازم به ذکر است که این مدلها معنی کلمات موجود در پرسش یا نشانه را درک نمیکنند؛ بلکه تنها الگویی را مشاهده میکنند که میتوانند آن را با پیشبینی بعدی خود "تکمیل" کنند. آنها میتوانند پیشبینی توالی را تا زمانی که کاربر مداخله کند یا شرایط از پیش تعیینشدهای وجود داشته باشد، ادامه دهند.
اما اگر کاربر بخواهد چیزی مشخص که با برخی معیارها یا اهداف وظیفهای همخوانی داشته باشد، مشاهده کند، در این صورت مدلهای زبانی مدلهای LLM تنظیمشده با دستور به کمک میآیند.
مفهوم: مدلهای LLM تنظیمشده با دستور
مدل LLM آموزشی با دستور با شروع از مدل بنیادین و تنظیمات نهایی با نمونهها یا جفتهای ورودی/خروجی (مانند "پیامهای" چند دورهای) که میتوانند شامل دستورالعملهای واضح باشند، توسعه مییابد - و پاسخ از هوش مصنوعی سعی میکند تا آن دستور را دنبال کند.
این فرآیند از تکنیکهایی نظیر یادگیری تقویتی با بازخورد انسانی (RLHF) استفاده میکند که میتواند مدل را برای پیروی از دستورالعملها و یادگیری از بازخورد آموزش دهد تا پاسخهایی که بهتر متناسب با کاربردهای عملی و اهداف کاربر هستند، تولید کند.
بیایید این کار را آزمایش کنیم - دوباره به پرسش فوق برگردید، اما حالا پیام سیستم را تغییر دهید و دستور زیر را به عنوان زمینه ارائه دهید:
محتوایی که به شما ارائه میشود را برای یک دانشآموز پایه دوم خلاصه کنید. نتیجه را در یک پاراگراف با ۳-۵ نکته کلیدی حفظ نمایید.
آیا میبینید که نتیجه چگونه اکنون برای بازتاب هدف و قالب مورد نظر تنظیم شده است؟ یک معلم میتواند به آسانی از این پاسخ در اسلایدهای آن کلاس استفاده کند.
چرا به مهندسی پرسش نیاز داریم؟
حال که میدانیم چگونه پرسشها توسط مدلهای زبانی بزرگ پردازش میشوند، بیایید درباره چرا به مهندسی پرسش نیاز داریم صحبت کنیم. پاسخ به این سؤال در واقعیت نهفته است که مدلهای زبانی بزرگ کنونی چالشهای قابل توجهی را به همراه دارند که دستیابی به پاسخهای قابل اعتماد و سازگار را بدون صرف تلاش در تهیه و بهینهسازی پرسشها دشوارتر میسازد. به عنوان مثال:
-
پاسخهای مدل تصادفی هستند. یک پرسش مشابه احتمالاً با مدلها یا نسخههای مختلف پاسخهای متفاوتی تولید میکند. همچنین ممکن است در زمانهای مختلف و با همان مدل نتایج متفاوتی ایجاد شود. تکنیکهای مهندسی پرسش به ما کمک میکنند تا این تغییرات را با ارائه راهکارهای بهتر به حداقل برسانیم.
-
مدلها ممکن است پاسخهای نادرست ایجاد کنند. مدلها با مجموعههای دادههای بزرگ اما محدود آموزش دیدهاند، به این معنی که اطلاعاتی در مورد مفاهیم خارج از گستره آموزشی خود ندارند. بنابراین ممکن است پاسخهایی ارائه دهند که نادرست، تخیلی یا به طور مستقیم با حقایق شناختهشده متناقض باشند. تکنیکهای مهندسی پرسش به کاربران کمک میکند تا چنین نادرستیها را شناسایی و کاهش دهند، به عنوان مثال، با درخواست از هوش مصنوعی برای ارائه مدارک یا دلایل.
-
قابلیتهای مدلها متفاوت خواهد بود. مدلها یا نسلهای جدیدتر دارای قابلیتهای بیشتری هستند، اما همچنین ویژگیها و پیچیدگیهای خاص خود را در هزینه و پیچیدگی به ارمغان میآورند. مهندسی پرسش میتواند به ما کمک کند تا بهترین شیوهها و فرآیندهای کاری را توسعه دهیم که تفاوتها را پنهان کرده و به طور هموار به نیازهای خاص مدلها تطبیق یابند.
بیایید این مفاهیم را در عمل در OpenAI یا Azure OpenAI Playground مشاهده کنیم:
- از همان پرسش با استفاده از پیادهسازیهای مختلف مدلهای زبانی بزرگ (به عنوان مثال، OpenAI، Azure OpenAI، Hugging Face) استفاده کنید - آیا تغییرات را مشاهده کردید؟
- از همان پرسش به طور مکرر با همان پیادهسازی مدلهای زبانی بزرگ (به عنوان مثال، Azure OpenAI Playground) استفاده کنید - این تغییرات چگونه متفاوت بودند؟
مثالهای جعل
در این دوره، ما از اصطلاح "جعل" برای اشاره به پدیدهای استفاده میکنیم که در آن مدلهای زبانی بزرگ (LLM) گاهی اطلاعات نادرست واقعنگر تولید میکنند به دلیل محدودیتهای موجود در آموزش آنها یا سایر محدودیتها. ممکن است شما این پدیده را در مقالات یا تحقیقات بهعنوان "توهم" شنیده باشید. با این حال، ما به شدت توصیه میکنیم که از "جعل" بهعنوان اصطلاح استفاده کنیم تا بهطور تصادفی رفتار را انسانواره نکرده و ویژگی انسانی را به یک نتیجهای که بهطور ماشینی تولید شده است، نسبت ندهیم. این همچنین اصول هوش مصنوعی مسئول را از نظر واژگان تقویت میکند و اصطلاحاتی را که ممکن است در برخی زمینهها توهینآمیز یا غیرشامل باشند، حذف میکند.
آیا میخواهید درک بهتری از نحوه عملکرد جعل داشته باشید؟ به یک پرسش فکر کنید که از AI میخواهد محتوا را برای یک موضوع غیر واقعی تولید کند (تا اطمینان حاصل شود که در مجموعه دادههای آموزشی موجود نیست). بهعنوان مثال - من این پرسش را امتحان کردم:
پرسش: generate a lesson plan on the Martian War of 2076. (یک طرح درس در مورد جنگ مریخی ۲۰۷۶ تولید کنید.)
یک جستجوی وب به من نشان داد که حسابهای داستانی (مانند سریالها یا کتابها) در مورد جنگهای مریخی وجود دارد - اما هیچکدام در سال ۲۰۷۶ وجود ندارد. عقل سلیم همچنین به ما میگوید که ۲۰۷۶ در آینده است و بنابراین نمیتواند به یک رویداد واقعی مربوط باشد.
پس هنگام اجرای این پرسش با تامینکنندگان مختلف LLM چه اتفاقی میافتد؟
پاسخ ۱: OpenAI Playground (GPT-35)
پاسخ ۲: Azure OpenAI Playground (GPT-35)
پاسخ ۳: Hugging Face Chat Playground (LLama-2)
همانطور که انتظار میرفت، هر مدل (یا نسخه مدل) پاسخهای کمی متفاوتی تولید میکند که بهدلیل رفتار تصادفی و تغییرات قابلیت مدل است. بهعنوان مثال، یک مدل به یک مخاطب کلاس هشتمی هدفگذاری میکند در حالی که دیگری فرض میکند که دانشآموز دبیرستانی است. اما همه سه مدل پاسخهایی تولید کردند که میتواند کاربر ناآگاه را متقاعد کند که این رویداد واقعی است.
تکنیکهای مهندسی پرسش مانند متاپرامپت و تنظیم دما ممکن است تا حدی جعلهای مدل را کاهش دهد. معماریهای جدید مهندسی پرسش همچنین ابزارها و تکنیکهای جدید را بهطور یکپارچه در جریان پرسش ترکیب میکنند تا برخی از این اثرات را کاهش دهند یا به حداقل برسانند.
مطالعه موردی: GitHub Copilot
بیایید این بخش را با درک چگونگی استفاده از مهندسی پرسش در راهکارهای دنیای واقعی با نگاهی به یک مطالعه موردی: GitHub Copilot به پایان برسانیم.
GitHub Copilot به عنوان "برنامهنویس همیار هوش مصنوعی" شما عمل میکند - این ابزار درخواستهای متنی را به تکمیلهای کد تبدیل میکند و در محیط توسعه شما (مانند Visual Studio Code) ادغام شده است تا تجربه کاربری بینظیری را به ارمغان آورد. همانطور که در سری وبلاگهای زیر مستند شده است، نسخه اولیه بر اساس مدل OpenAI Codex طراحی شده بود - با این حال مهندسان به سرعت به نیاز به بهینهسازی این مدل و توسعه تکنیکهای بهتر مهندسی پرسش پی بردند تا کیفیت کد را بهبود ببخشند. در ماه جولای، آنها مدل هوش مصنوعی بهبودیافتهای را معرفی کردند که فراتر از Codex میرود تا پیشنهادات سریعتری ارائه دهد.
مقالات را به ترتیب بخوانید تا مسیر یادگیری آنها را دنبال کنید.
- مه 2023 | GitHub Copilot بهتر در درک کد شما میشود
- مه 2023 | درون GitHub: کار با LLMهای پشت GitHub Copilot
- ژوئن 2023 | چگونه میتوان پرسشهای بهتری برای GitHub Copilot نوشت
- جولای 2023 | GitHub Copilot فراتر از Codex با مدل هوش مصنوعی بهبودیافته است
- جولای 2023 | راهنمای برنامهنویس برای مهندسی پرسش و LLMها
- سپتامبر 2023 | چگونه اپلیکیشن LLM شرکتی بسازیم: درسهایی از GitHub Copilot
شما همچنین میتوانید وبلاگ مهندسی آنها را مرور کنید تا پستهای بیشتری مانند این یکی را ببینید که نشان میدهد چگونه این مدلها و تکنیکها برای ایجاد کاربردهای واقعی به کار گرفته میشوند.
ساختار پرسش
ما اهمیت مهندسی پرسش را دیدهایم - حالا بیایید بفهمیم که چگونه پرسشها ساخته میشوند تا بتوانیم تکنیکهای مختلفی را برای طراحی مؤثرتر پرسش ارزیابی کنیم.
پرسش پایه
بیایید با پرسش پایه شروع کنیم: یک ورودی متنی که به مدل ارسال میشود بدون هیچ زمینه دیگری. این یک مثال است - وقتی ما چند کلمهی اول سرود ملی را به OpenAI API ارسال میکنیم، این مدل بهسرعت پاسخ را با چند خط بعدی تکمیل میکند و رفتار پیشبینی پایه را نشان میدهد.
پرسش (ورودی) | تکمیل (خروجی) |
---|---|
سر زد از افق مهر خاوران | بیت "سر زد از افق مهر خاوران" آغاز سرود ملی جمهوری اسلامی ایران است. این سرود در ابتدای جشنها و مراسمهای رسمی در کشور پخش میشود و بیانکننده مفاهیم وطندوستی و افتخار به پیشینه انقلابی و اسلامی کشور است. سرود ملی کنونی ایران پس از انقلاب اسلامی در سال ۱۹۸۹/۱۳۶۸ به تصویب رسید و جایگزین سرود ملی پیشین شد. معنای بیت آغازین سرود این است که نوری (مهر) از سوی شرق (خاوران) طلوع کرده است که نمادی از هوشیاری و بیداری ملت ایران پس از انقلاب بهشمار میآید. |
پرسش پیچیده
حال بیایید به آن پرسش پایهایی، زمینه و دستورالعملها را اضافه کنیم. API به ما اجازه میدهد که یک پرسش پیچیده را به عنوان یک مجموعه از پیامها تشکیل دهیم که شامل:
- جفتهای ورودی/خروجی که منعکس کننده ورودی کاربر و پاسخ دستیار هستند.
- پیام سیستمی که زمینهسازی برای رفتار یا شخصیت دستیار را تنظیم میکند.
درخواست اکنون به صورت زیر است، جایی که نشانهگذاری به طور مؤثر اطلاعات مرتبط از زمینه و گفتگو را ضبط میکند. اکنون، تغییر زمینه سیستم میتواند به اندازه ورودیهای کاربر بر کیفیت تکمیلها تأثیرگذار باشد.
response = openai.chat.completions.create(
model="gpt-4o-mini",
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?"}
]
)
پرسش دستوری
در مثالهای فوق، پرسش کاربر یک پرسش متنی ساده بود که میتواند به عنوان درخواستی برای اطلاعات تفسیر شود. با پرسشهای دستوری، میتوانیم از آن متن استفاده کنیم تا یک وظیفه را با جزئیات بیشتری مشخص کنیم و راهنمایی بهتری به هوش مصنوعی ارائه دهیم. در اینجا یک مثال وجود دارد:
پرسش (ورودی) | تکمیل (خروجی) | نوع پرسش |
---|---|---|
Write a description of the Civil War | یک پاراگراف ساده | ساده |
Write a description of the Civil War. Provide key dates and events and describe their significance | یک پاراگراف همراه با لیستی از وقایع کلیدی شامل تاریخ و توضیحاتشان | پیچیده |
Write a description of the Civil War in 1 paragraph. Provide 3 bullet points with key dates and their significance. Provide 3 more bullet points with key historical figures and their contributions. Return the output as a JSON file | جزئیات گسترده تری را در یک کادر متنی با فرمت JSON برمی گرداند که می توانید در یک فایل کپی-پیست کنید و در صورت نیاز اعتبار سنجی کنید. | پیچیده. فرمت شده. |
محتوای اصلی
در مثالهای بالا، پرسش هنوز نسبتاً باز بود و به مدل زبانی بزرگ (LLM) اجازه میداد که تصمیم بگیرد کدام قسمت از مجموعه دادههای پیشآموزشدادهشدهاش مرتبط است. با الگوی طراحی محتوای اصلی، متن ورودی به دو بخش تقسیم میشود:
- یک دستور (عمل)
- محتوای مرتبط (که بر عمل تأثیر میگذارد)
در اینجا یک مثال وجود دارد که در آن دستور "این را در ۲ جمله خلاصه کن" است.
پرسش (ورودی) | تکمیل (خروجی) |
---|---|
Jupiter is the fifth planet from the Sun and the largest in the Solar System. It is a gas giant with a mass one-thousandth that of the Sun, but two-and-a-half times that of all the other planets in the Solar System combined. Jupiter is one of the brightest objects visible to the naked eye in the night sky, and has been known to ancient civilizations since before recorded history. It is named after the Roman god Jupiter.[19] When viewed from Earth, Jupiter can be bright enough for its reflected light to cast visible shadows,[20] and is on average the third-brightest natural object in the night sky after the Moon and Venus. Summarize this in 2 short sentences | Jupiter, the fifth planet from the Sun, is the largest in the Solar System and is known for being one of the brightest objects in the night sky. Named after the Roman god Jupiter, it's a gas giant whose mass is two-and-a-half times that of all other planets in the Solar System combined. |
بخش محتوای اصلی میتواند به روشهای مختلفی برای ارائه دستورالعملهای مؤثرتر استفاده شود:
- نمونهها - به جای اینکه مدل را با یک دستور صریح راهنمایی کنید، به آن مثالهایی از آنچه باید انجام دهد بدهید و بگذارید الگو را استنتاج کند.
- نشانهها - دستور العمل را با یک "نشانه" دنبال کنید که تکمیل را آماده میکند و مدل را به سمت پاسخهای مرتبطتر راهنمایی میکند.
- قالبها - اینها 'دستور العمل'های تکراری برای پرسشها هستند که دارای جایگزینها (متغیرها) هستند و میتوانند با دادهها برای موارد خاص سفارشیسازی شوند.
بیایید اینها را در عمل بررسی کنیم.
استفاده از مثالها
این یک روش است که با استفاده از محتوای اولیه، "مدل" را با برخی مثالها از خروجی مورد نظر برای یک دستورالعمل خاص تغذیه میکنید و به آن اجازه میدهید الگوی خروجی مورد نظر را استنباط کند. بر اساس تعداد مثالهای ارائه شده، میتوانیم از پرسش بدون مثال، پرسش با یک مثال، پرسش با چند مثال و غیره استفاده کنیم.
پرسش اکنون شامل سه مؤلفه است:
- توصیف وظیفه
- چند مثال از خروجی مورد نظر
- شروع یک مثال جدید (که به یک توصیف وظیفه ضمنی تبدیل میشود)
نوع آموزش | پرسش (ورودی) | تکمیل (خروجی) |
---|---|---|
Zero-shot | "The Sun is Shining". Translate to Spanish | "El Sol está brillando". |
One-shot | "The Sun is Shining" => ""El Sol está brillando". "It's a Cold and Windy Day" => | "Es un día frío y ventoso". |
Few-shot | 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 |
توجه داشته باشید که ما باید دستور صریحی ("به اسپانیایی ترجمه کنید") را در نمونهی zero-shot ارائه دهیم، اما در مثال one-shot این موضوع استنباط میشود. نمونهی few-shot نشان میدهد که افزودن مثالهای بیشتر به مدلها اجازه میدهد تا با هیچ دستور اضافی استدلالهای دقیقتری انجام دهند.
نشانههای پرسش
دیگر تکنیک برای استفاده از محتوای اصلی، ارائه نشانهها به جای نمونهها است. در این حالت، ما با ارائه یک تکه که منعکسکننده فرمت پاسخ مورد نظر است، به مدل کمک میکنیم تا در مسیر درست حرکت کند. سپس مدل "نشانه" را دریافت کرده و به همین شکل ادامه میدهد.
تعداد نشانهها | پرسش (ورودی) | تکمیل (خروجی) |
---|---|---|
0 | Jupiter is the fifth planet from the Sun and the largest in the Solar System. It is a gas giant with a mass one-thousandth that of the Sun, but two-and-a-half times that of all the other planets in the Solar System combined. Jupiter is one of the brightest objects visible to the naked eye in the night sky, and has been known to ancient civilizations since before recorded history. Summarize This | Jupiter is the largest planet in our Solar System and the fifth one from the Sun. It is a gas giant with a mass 1/1000th of the Sun's, but it is heavier than all the other planets combined. Ancient civilizations have known about Jupiter for a long time, and it is easily visible in the night sky.. |
1 | Jupiter is the fifth planet from the Sun and the largest in the Solar System. It is a gas giant with a mass one-thousandth that of the Sun, but two-and-a-half times that of all the other planets in the Solar System combined. Jupiter is one of the brightest objects visible to the naked eye in the night sky, and has been known to ancient civilizations since before recorded history. Summarize This What we learned is that Jupiter | is the fifth planet from the Sun and the largest in the Solar System. It is a gas giant with a mass one-thousandth that of the Sun, but two-and-a-half times that of all the other planets combined. It is easily visible to the naked eye and has been known since ancient times. |
2 | Jupiter is the fifth planet from the Sun and the largest in the Solar System. It is a gas giant with a mass one-thousandth that of the Sun, but two-and-a-half times that of all the other planets in the Solar System combined. Jupiter is one of the brightest objects visible to the naked eye in the night sky, and has been known to ancient civilizations since before recorded history. Summarize This Top 3 Facts We Learned: | 1. Jupiter is the fifth planet from the Sun and the largest in the Solar System. 2. It is a gas giant with a mass one-thousandth that of the Sun... 3. Jupiter has been visible to the naked eye since ancient times ... |
قالبهای پرسش
قالب پرسش یک دستورالعمل پیشتعریفشده برای یک پرسش است که میتواند ذخیره و در صورت نیاز مجدداً استفاده شود تا تجربههای کاربری مداوم و سازگار را در مقیاس گستردهتر ایجاد کند. به سادگی، این قالب در واقع مجموعهای از نمونههای پرسش است، مانند این نمونه از OpenAI که هر دو مؤلفههای قابل تعامل پرسش (پیامهای کاربر و سیستم) و فرمت درخواست مبتنی بر API را برای پشتیبانی از استفاده مجدد فراهم میکند.
در فرم پیچیدهتر، مانند این مثال از LangChain، شامل جایگزینها است که میتوانند با دادههایی از منابع مختلف (ورودی کاربر، زمینه سیستم، منابع دادهای خارجی و غیره) جایگزین شوند تا یک پرسش بهطور دینامیک تولید شود. این به ما اجازه میدهد تا یک کتابخانه از پرسشهای قابل استفاده مجدد ایجاد کنیم که میتواند بهطور برنامهنویسی و در مقیاس بزرگ، تجربههای کاربری مداوم را ایجاد کند.
در نهایت، ارزش واقعی قالبها در توانایی ایجاد و انتشار کتابخانههای پرسش برای حوزههای کاربردی نهفته است - جایی که قالب پرسشهای بهینهسازی شده یا نمونههای خاص کاربردی را منعکس کند که پاسخها را برای مخاطب هدف موردنظر مرتبطتر و دقیقتر میسازد. مخزن Prompts For Edu مثال بسیار خوبی از این رویکرد است که یک کتابخانه از پرسشها برای حوزه آموزش را با تأکید بر اهداف کلیدی مانند برنامهریزی درسی، طراحی برنامه درسی، تدریس به دانشآموزان و غیره گردآوری کرده است.
محتوای پشتیبانی
اگر به ساخت پرسش به عنوان داشتن یک دستور (وظیفه) و یک هدف (محتوای اصلی) فکر کنیم، سپس محتوای ثانویه مانند زمینه اضافی است که ما برای تأثیرگذاری بر خروجی به نوعی فراهم میکنیم. این میتواند پارامترهای تنظیمی، دستورالعملهای قالببندی، طبقهبندیهای موضوعی و غیره باشد که میتواند به مدل کمک کند تا پاسخ خود را متناسب با اهداف یا انتظارات مورد نظر کاربر تنظیم کند.
به عنوان مثال: با توجه به یک فهرست دوره با متادادههای گسترده (نام، توضیح، سطح، برچسبهای متادیتا، مدرس و غیره) در مورد تمام دورههای موجود در برنامه آموزشی:
- ما میتوانیم یک دستور را تعریف کنیم که "فهرست دوره برای پاییز 2023 را خلاصه کن"
- ما میتوانیم از محتوای اصلی برای ارائه چند مثال از خروجی مطلوب استفاده کنیم
- ما میتوانیم از محتوای ثانویه برای شناسایی 5 "برچسب" برتر مورد علاقه استفاده کنیم.
اکنون، مدل میتواند خلاصهای را به فرمت نشان داده شده توسط چند مثال ارائه دهد - اما اگر نتیجه چندین برچسب داشته باشد، میتواند بر روی 5 برچسب شناسایی شده در محتوای ثانویه اولویت بدهد.
بهترین شیوههای پرسشگری
حالا که میدانیم چگونه میتوان پرسشها را ساختاریافته کرد، میتوانیم به فکر طراحی آنها باشیم تا بهترین شیوهها را منعکس کنند. میتوانیم این موضوع را به دو بخش تقسیم کنیم - داشتن ذهنیت صحیح و بهکارگیری تکنیکهای مناسب.
ذهنیت مهندسی پرسش
مهندسی پرسش یک فرایند آزمایش و خطا است، بنابراین سه عامل کلی را در ذهن داشته باشید:
-
درک حوزه اهمیت دارد. دقت و ارتباط پاسخ تابعی از حوزه است که آن برنامه یا کاربر در آن عمل میکند. از شهود و تجربه حوزهای خود برای سفارشیسازی تکنیکها بیشتر استفاده کنید. به عنوان مثال، شخصیتهای خاص حوزه را در پرسش های سیستم خود تعریف کنید یا از الگوهای خاص حوزه در پرسشهای کاربر خود استفاده کنید. محتواهای ثانویهای که زمینههای خاص حوزه را منعکس میکنند ارائه دهید یا از اشارات و مثالهای خاص حوزه برای هدایت مدل به سمت الگوهای استفاده آشنا استفاده کنید.
-
درک مدل اهمیت دارد. ما میدانیم که مدلها به طور طبیعی تصادفی هستند. اما پیادهسازیهای مدل نیز میتوانند از نظر دادههای آموزشی که استفاده میکنند (دانش پیشآموزش داده شده)، قابلیتهایی که ارائه میدهند (مثلاً از طریق API یا SDK) و نوع محتوایی که بهینهسازی شدهاند (مثلاً کد یا تصاویر یا متن) متفاوت باشند. نقاط قوت و محدودیتهای مدلی که استفاده میکنید را درک کنید و از آن دانش برای اولویتبندی وظایف یا ایجاد الگوهای سفارشیشده که بهینهسازی شده برای قابلیتهای مدل هستند استفاده کنید.
-
تکرار و اعتبارسنجی اهمیت دارد. مدلها به سرعت در حال تحول هستند و همچنین تکنیکهای مهندسی پرسش نیز. به عنوان یک کارشناس حوزه، ممکن است زمینه یا معیارهایی که در برنامه خاص شما کاربرد دارد، وجود داشته باشد که برای جامعه گستردهتر اعمال نمیشود. از ابزارها و تکنیکهای مهندسی پرسش برای "راهاندازی" ساخت پرسش استفاده کنید، سپس نتایج را با استفاده از شهود و دانش حوزهای خود تکرار و اعتبارسنجی کنید. بینشهای خود را ضبط کنید و یک پایگاه دانش (مانند کتابخانه پرسش) ایجاد کنید که میتواند به عنوان یک پایه جدید توسط دیگران استفاده شود، برای تکرارات سریعتر در آینده.
بهترین شیوهها
حال بیایید به بهترین شیوههای رایج که توسط OpenAI و متخصصان Azure OpenAI توصیه میشود، بپردازیم.
چی | چرا |
---|---|
مدلهای جدید را ارزیابی کنید. | نسلهای جدید مدل احتمالاً دارای ویژگیها و کیفیت بهبود یافتهتری خواهند بود - اما ممکن است هزینههای بالاتری نیز داشته باشند. آنها را از نظر تأثیر ارزیابی کنید و سپس تصمیمات مهاجرت را اتخاذ کنید. |
دستورالعملها و زمینهها را جدا کنید | بررسی کنید که آیا مدل/ارائهدهنده شما تقسیمکنندهها را برای تمایز بین دستورالعملها، محتوای اولیه و ثانویه به وضوح تعریف کرده است یا خیر. این میتواند به مدلها کمک کند تا وزنها را بهطور دقیقتری به توکنها اختصاص دهند. |
خاص و واضح باشید | جزئیات بیشتری در مورد زمینه، نتیجه، طول، فرمت، سبک و غیره که مورد نظر دارید، ارائه دهید. این کار کیفیت و ثبات پاسخها را بهبود خواهد بخشید. دستورالعملها را در قالبهای قابل استفاده مجدد ضبط کنید. |
توصیفی باشید، از مثالها استفاده کنید | مدلها ممکن است به رویکرد "نمایش و گفتن" بهتر پاسخ دهند. با رویکرد zero-shot شروع کنید، جایی که به آن یک دستور میدهید (اما هیچ مثالی ارائه نمیدهید) و سپس به عنوان یک اصلاح، از few-shot استفاده کنید و چند مثال از خروجی مورد نظر را ارائه دهید. از تشبیهات استفاده کنید. |
از نشانهها برای شروع تکمیلها استفاده کنید | با ارائه برخی کلمات یا عبارات پیشرو، مدل را به سمت یک نتیجه مطلوب هدایت کنید که بتواند به عنوان نقطه شروع پاسخ از آن استفاده کند. |
تکرار کنید | گاهی اوقات ممکن است لازم باشد خودتان را برای مدل تکرار کنید. قبل و بعد از محتوای اصلیتان دستورالعملهایی را ارائه دهید، از یک دستورالعمل و یک نشانه استفاده کنید و غیره. تکرار و تأیید کنید تا ببینید چه چیزی بهترین نتیجه را ارائه میدهد. |
ترتیب مهم است | ترتیب اطلاعاتی که به مدل ارائه میدهید ممکن است بر خروجی تأثیر بگذارد، حتی در مثالهای یادگیری. سعی کنید گزینههای مختلفی را امتحان کنید و ببینید کدام یک بهترین نتیجه را دارد. |
به مدل یک "راه خروج" بدهید | به مدل یک پاسخ تکمیلی پشتیبان بدهید که بتواند در صورتی که نتواند کار را به اتمام برساند، ارائه دهد. این میتواند احتمال تولید پاسخهای نادرست یا جعل شده توسط مدلها را کاهش دهد. |
همانطور که در مورد هر بهترین شیوهای، به یاد داشته باشید که کارایی شما ممکن است متفاوت باشد و بستگی به مدل، وظیفه و دامنه دارد. از این موارد به عنوان نقطه شروع استفاده کنید و ادامه دهید تا آنچه که برای شما بهترین است را پیدا کنید. فرآیند مهندسی پرسش خود را به طور مداوم دوباره ارزیابی کنید و با توجه به دسترسی به مدلها و ابزارهای جدید، بر کیفیت فرآیند و پاسخها تمرکز کنید.