Core prompt engineering techniques — روش‌های اصلی مهندسی پرامپت

From Systems analysis Wiki
Jump to navigation Jump to search

مهندسی پرامپت (Prompt Engineering) شامل تکنیک‌ها و روش‌های گوناگونی است که هدف آن‌ها بهینه‌سازی تعامل با مدل‌های زبانی بزرگ (LLM) برای دستیابی به نتایج مطلوب است. این روش‌ها به ساختاردهی درخواست‌ها، ارائه زمینه، مدیریت سبک خروجی و بهبود توانایی استدلال مدل مربوط می‌شوند. از آنجا که LLMها پاسخ را با پیش‌بینی token‌های بعدی بر اساس پرامپت ورودی تولید می‌کنند، کیفیت و ساختار این پرامپت مستقیماً بر نتیجه تأثیر می‌گذارد. روش‌های اصلی مهندسی پرامپت به توسعه‌دهندگان و کاربران امکان می‌دهد رفتار مدل را به شکل مؤثری کنترل کنند، خطاها را کاهش دهند و مدل را بدون نیاز به تغییر پارامترهای داخلی آن با وظایف خاص تطبیق دهند.

اصول پایه و ساختار پرامپت

هرچند پیاده‌سازی‌های مشخص متفاوتند، پرامپت‌های مؤثر اغلب با توجه به اصول و ساختار مشترکی ساخته می‌شوند:

  • راهنماهای تجربی: به عنوان یکی از ساختارهای عملی (نه استاندارد صنعتی) پیشنهاد می‌شود که اصول زیر رعایت شوند: دادن جهت، مشخص کردن قالب، ارائه نمونه، ارزیابی کیفیت و تقسیم وظیفه.
  • یک پرامپت مؤثر اغلب شامل اجزای زیر است:
    • مقدمه/نقش: زمینه وظیفه یا نقش/شخصیت مدل را تعیین می‌کند.
    • دستورالعمل‌ها: راهنمایی‌های روشن درباره کاری که باید انجام شود.
    • زمینه: اطلاعات ضروری (ایستا یا به‌صورت پویا از طریق RAG استخراج‌شده).
    • نمونه‌ها (Few-shot): نمایش قالب/سبک مطلوب.
    • درخواست پاسخ: تصریح صریح آنچه مدل باید تولید کند.
  • پیام سیستمی (System Prompt): در رابط‌های چت API (مانند مدل‌های OpenAI، Anthropic) امکان تعریف دستورالعمل‌های کلی و نقش برای کل نشست را فراهم می‌کند.
  • قالب‌بندی: استفاده از Markdown، JSON، XML یا YAML به ساختاردهی پرامپت کمک می‌کند و تجزیه پاسخ را ساده‌تر می‌سازد. جداکننده‌ها (```, `"""`, تگ‌های XML) برای جداسازی دستورالعمل‌ها از داده‌ها اهمیت دارند.

تکنیک‌های اصلی دستورالعمل و نمونه

  • دستورالعمل‌های واضح و مشخص: توصیف دقیق وظیفه، نتیجه مطلوب و محدودیت‌ها. پرهیز از ابهام.
  • نقش‌آفرینی (Role Prompting): تخصیص نقش به مدل («تو یک متخصص در ... هستی») برای کنترل لحن، سبک و پایگاه دانش.
  • Zero-shot Prompting: درخواست بدون نمونه. برای وظایف ساده یا آشنا برای مدل مؤثر است.
  • Few-Shot Prompting: ارائه چند نمونه (معمولاً ۲ تا ۵) به شکل «سؤال-جواب» برای نمایش وظیفه. حالت خاص آن One-shot Prompting با یک نمونه است. برای قالب‌ها یا سبک‌های پیچیده بسیار مفید است. نیازمند احتیاط برای جلوگیری از سوگیری (anchoring) یا شناسایی الگوهای کاذب از نمونه‌هاست.

تکنیک‌های مدیریت زمینه

  • Retrieval-Augmented Generation (RAG): افزودن پویای اطلاعات مرتبط از پایگاه‌های دانش خارجی به پرامپت پیش از ارسال به LLM. این روش که نخستین بار توسط Meta AI در سال ۲۰۲۰ معرفی شد، برای مبارزه با توهمات و تضمین به‌روز بودن داده‌ها کلیدی است.
  • چانکینگ (Chunking): تقسیم متون طولانی به بخش‌های کوچک‌تر (chunk) برای جا گرفتن در پنجره زمینه مدل. استراتژی‌ها شامل تقسیم بر اساس جملات، پاراگراف‌ها یا token‌ها (با همپوشانی) می‌شوند.
  • خلاصه‌سازی: فشرده‌سازی متون طولانی یا تاریخچه گفتگو برای انتقال معنای اصلی در زمینه محدود.

تکنیک‌های بهبود استدلال (Reasoning)

این تکنیک‌ها هدفشان واداشتن مدل به «فکر کردن» دقیق‌تر و ساختارمندتر است. اثربخشی بسیاری از آن‌ها، به‌ویژه CoT، در مدل‌های بزرگ‌مقیاس (معمولاً بیش از ۱۰۰ میلیارد پارامتر) نمود پیدا می‌کند.

  • Chain-of-Thought (CoT): دستورالعمل به مدل برای تولید استدلال گام‌به‌گام پیش از پاسخ نهایی. نتایج را در ریاضیات، منطق و وظایف چندمرحله‌ای به شکل قابل توجهی بهبود می‌دهد.
    • Zero-shot CoT: ساده‌ترین شکل که نیازی به نمونه ندارد. افزودن عبارتی مانند «بیایید گام‌به‌گام استدلال کنیم» (Let's think step by step) به پرامپت می‌تواند زنجیره استدلال را فعال کند.
  • تغییرات CoT:
    • Auto-CoT: تولید خودکار نمونه‌های استدلال برای few-shot prompting.
    • Self-Consistency: تولید چندین زنجیره استدلال و انتخاب پرتکرارترین پاسخ از طریق «رأی‌گیری»، که قابلیت اطمینان را افزایش می‌دهد.
    • Tree-of-Thoughts (ToT): کاوش در چندین مسیر استدلال به شکل درخت، با امکان بازگشت و ارزیابی گام‌های میانی. این تکنیک در وظایف پیچیده کارایی بالایی نشان می‌دهد؛ برای مثال، موفقیت در حل «Game of 24» را از حدود ۴٪ به حدود ۷۴٪ افزایش می‌دهد.
    • Graph-of-Thought (GoT)، LogiCoT و دیگر تکنیک‌هایی که برای استدلال‌های پیچیده‌تر یا تأییدشده از نظر منطقی طراحی شده‌اند.
  • ReAct (Reason and Act): تکنیکی که CoT را توسعه می‌دهد. یک چرخه تکراری را نمایش می‌دهد که در آن مدل گام‌های استدلال (Thought) و اقدام با استفاده از ابزارها (Act) را به تناوب انجام می‌دهد و درک خود را بر اساس مشاهدات (Observation) به‌روز می‌کند.
  • Self-Refine: فرایند تکراری که در آن مدل ابتدا پاسخی تولید می‌کند، سپس آن را نقد می‌کند و در نهایت بر اساس نقد خود بهبود می‌دهد. این چرخه «تولید-نقد-بهبود» می‌تواند چندین بار تکرار شود.
  • Take a Step Back Prompting: مدل ابتدا اصول کلی یا انتزاعات را صورت‌بندی می‌کند، سپس آن‌ها را بر وظیفه مشخص اعمال می‌نماید.

تکنیک‌های پیشرفته: عامل‌ها و ابزارها

  • استفاده از ابزار (Tool Usage) / فراخوانی تابع (Function Calling): فراهم کردن امکان فراخوانی APIهای خارجی (جستجو، ماشین‌حساب، پایگاه داده) برای LLM. مدل یک درخواست ساختارمند برای فراخوانی ابزار تولید می‌کند که توسط برنامه اجرا می‌شود و نتیجه به مدل بازگردانده می‌شود. LLMهای مدرن (GPT-4، Claude 3) از این قابلیت به‌صورت داخلی پشتیبانی می‌کنند.
  • عامل‌ها (Agents): سیستم‌هایی مبتنی بر LLM که می‌توانند به‌طور خودمختار برنامه‌ریزی کنند، از ابزارها استفاده کنند و برای رسیدن به هدف عمل کنند. اغلب از چرخه‌های مشابه ReAct استفاده می‌کنند. فریمورک‌ها (LangChain، AutoGen، CrewAI) ساخت آن‌ها را ساده می‌کنند.
  • سیستم‌های چندعاملی: تعامل چندین عامل تخصصی برای حل وظایف پیچیده.

تکنیک‌های کاهش خطا و توهم

  • RAG: لنگر انداختن پاسخ‌ها به داده‌های واقعی استخراج‌شده.
  • دستورالعمل‌های محدودسازی پاسخ: الزام به پاسخ‌دهی تنها بر اساس زمینه ارائه‌شده یا اشاره به عدم اطمینان («اگر پاسخ مشخص نیست، بگو نمی‌دانم»).
  • درخواست ارجاع: الزام مدل به ذکر منابع یا استناد به بخش‌هایی از زمینه که پاسخ بر آن‌ها مبتنی است.
  • تأیید و خودانتقادی: استفاده از تکنیک‌هایی مانند Chain-of-Verification (CoVe) (تولید پاسخ با تأیید و اصلاح بعدی آن)، Self-Refine یا درخواست مستقیم از مدل برای بررسی پاسخ خود از نظر خطا.
  • CoT: استدلال گام‌به‌گام به‌خودی‌خود می‌تواند خطاهای منطقی را کاهش دهد.

تکنیک‌های ارزیابی و تکرار

هرچند ارزیابی فرایندی جداگانه است، برخی جنبه‌های آن بخشی از مهندسی پرامپت هستند:

  • آزمایش A/B پرامپت‌ها: مقایسه اثربخشی نسخه‌های مختلف پرامپت روی وظایف یکسان.
  • استفاده از LLM برای ارزیابی: به‌کارگیری یک مدل قوی (مانند GPT-4) برای ارزیابی کیفیت پاسخ‌های تولیدشده توسط پرامپت یا مدل دیگر (LLM-as-a-Judge).

الگوهای پرامپت

ساختارهای متداول و قابل استفاده مجدد:

  • الگوی شخصیت (Persona Pattern)
  • الگوی سفارشی‌سازی خروجی (Output Customization Pattern)
  • الگوی درخواست توضیح (Question Refinement Pattern)
  • الگوی تأیید شناختی / خودانتقادی (Cognitive Verifier / Self-Critique Pattern)
  • الگوی استدلال گام‌به‌گام (Step-by-Step / Chain-of-Thought Pattern)
  • الگوی قالب (Template Pattern)

همچنین ببینید

  • مدل‌های زبانی بزرگ
  • Chain-of-Thought Prompting
  • توهمات و پاسخ‌های نادرست LLM

منابع

  • Radford, A. et al. (2019). Language Models are Unsupervised Multitask Learners. PDF.
  • Brown, T. B. et al. (2020). Language Models are Few-Shot Learners. arXiv:2005.14165.
  • Lewis, P. et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. arXiv:2005.11401.
  • Li, X. L.; Liang, P. (2021). Prefix-Tuning: Optimizing Continuous Prompts for Generation. arXiv:2101.00190.
  • Liu, Y. et al. (2021). Fantastically Ordered Prompts and Where to Find Them: Overcoming Few-Shot Prompt Order Sensitivity. arXiv:2104.08786.
  • Bai, Y. et al. (2022). Constitutional AI: Harmlessness from AI Feedback. arXiv:2212.08073.
  • Wei, J. et al. (2022). Chain-of-Thought Prompting Elicits Reasoning in Large Language Models. arXiv:2201.11903.
  • Wang, X. et al. (2022). Self-Consistency Improves Chain of Thought Reasoning in Language Models. arXiv:2203.11171.
  • Kojima, T. et al. (2022). Large Language Models are Zero-Shot Reasoners. arXiv:2205.11916.
  • Zhang, Z. et al. (2022). Automatic Chain of Thought Prompting in Large Language Models. arXiv:2210.03493.
  • Zhou, D. et al. (2022). Least-to-Most Prompting Enables Complex Reasoning in Large Language Models. arXiv:2205.10625.
  • Yao, S. et al. (2022). ReAct: Synergizing Reasoning and Acting in Language Models. arXiv:2210.03629.
  • Besta, M. et al. (2023). Graph of Thoughts: Solving Elaborate Problems with Large Language Models. arXiv:2308.09687.
  • Madaan, A. et al. (2023). Self-Refine: Iterative Refinement with Self-Feedback. arXiv:2303.17651.
  • Schick, T. et al. (2023). Toolformer: Language Models Can Teach Themselves to Use Tools. arXiv:2302.04761.
  • Rafailov, R. et al. (2023). Direct Preference Optimization: Your Language Model is Secretly a Reward Model. arXiv:2305.18290.
  • Wang, Y. et al. (2023). Self-Instruct: Aligning Language Models with Self-Generated Instructions. arXiv:2212.10560.
  • Yao, S. et al. (2023). Tree of Thoughts: Deliberate Problem Solving with Large Language Models. arXiv:2305.10601.
  • Chen, S. Y. et al. (2023). Extending Context Window of Large Language Models via Positional Interpolation. arXiv:2306.15595.
  • Chang, K. et al. (2024). Efficient Prompting Methods for Large Language Models: A Survey. arXiv:2404.01077.
  • Genkina, D. (2024). AI Prompt Engineering Is Dead. IEEE Spectrum. [۱].
  • Li, Z. et al. (2024). Prompt Compression for Large Language Models: A Survey. arXiv:2410.12388.
  • Liang, X. et al. (2024). Internal Consistency and Self-Feedback in Large Language Models: A Survey. arXiv:2407.14507.
  • Han, H. et al. (2025). Retrieval-Augmented Generation with Graphs (GraphRAG). arXiv:2501.00309.
  • Li, W. et al. (2025). A Survey of Automatic Prompt Engineering: An Optimization Perspective. arXiv:2502.11560.
  • Wu, Z. et al. (2025). The Dark Side of Function Calling: Pathways to Jailbreaking Large Language Models. EMNLP 2025. PDF.
  • Yang, B. et al. (2025). Hallucination Detection in Large Language Models with Metamorphic Relations. arXiv:2502.15844.