مجموعه‌های پرامپت (Prompt Ensembles) تکنیکی است که در آن، چند نسخه متفاوت از یک پرامپت طراحی و همزمان به مدل زبانی ارسال می‌شود و سپس خروجی‌ها با یک روش تجمیع، به یک پاسخ نهایی تبدیل می‌شوند.
این تکنیک، بر پایه اصل تجمیع آماری بنا شده است و در مسائل با عدم‌قطعیت بالا، دقت را به‌طور چشمگیری افزایش می‌دهد.
مجموعه‌های پرامپت می‌توانند از تنوع در نقش، زمینه، قالب و روش استدلال ساخته شوند.
روش تجمیع می‌تواند رأی‌گیری، شباهت معنایی یا مدل داور باشد.
این راهنما مکانیزم، طراحی و کاربردهای مجموعه‌های پرامپت را به‌صورت فنی بررسی می‌کند.

مجموعه‌های پرامپت (Prompt Ensembles) یکی از تکنیک‌های پیشرفته در حوزه پرامپت نویسی است که برای کاهش واریانس خروجی و افزایش دقت در مسائل پیچیده طراحی شده است. همان‌طور که در یادگیری ماشین کلاسیک، تجمیع چند مدل (Model Ensemble) به کاهش خطا منجر می‌شود، در پرامپت نویسی نیز تجمیع چند پرامپت می‌تواند کیفیت خروجی را بهبود دهد. برای درک این مفهوم، ابتدا باید با روش خودسازگاری در پرامپت نویسی و پرامپت نویسی چیست آشنا باشیم.

در پروژه‌هایی که به پاسخ‌های دقیق در حوزه‌های حساس مانند مالی و پزشکی نیاز داشتیم، مجموعه‌های پرامپت ابزار اصلی برای افزایش اطمینان خروجی بوده است. این تکنیک به‌جای تکیه بر یک پرامپت واحد، از تنوع به‌عنوان یک ابزار آماری برای کاهش خطا استفاده می‌کند. اگر با تفاوت پرامپت صفر-نمونه و چند-نمونه آشنا هستید، آماده‌اید تا وارد جزئیات این تکنیک شوید.

مجموعه‌های پرامپت را می‌توان با یک هیئت داوران مقایسه کرد: به‌جای اتکا به نظر یک داور، از نظر چند داور استفاده می‌شود و تصمیم نهایی بر اساس تجمیع نظرها گرفته می‌شود. در سامانه‌های LLM، این داوران همان پرامپت‌های متنوع هستند. برای مطالعه بیشتر درباره اصول تجمیع، می‌توانید صفحه Ensemble Learning را در ویکی‌پدیا ببینید.

مجموعه‌های پرامپت دقیقاً چیست؟

مجموعه‌های پرامپت، تکنیکی است که در آن چند نسخه متفاوت از یک پرامپت طراحی می‌شود، هر نسخه به‌صورت مستقل به مدل ارسال می‌شود و سپس خروجی‌ها با یک روش تجمیع، به یک پاسخ نهایی تبدیل می‌شوند.

این تکنیک، سه مؤلفه اصلی دارد:

  • تنوع: نسخه‌های مختلف پرامپت باید از نظر نقش، زمینه، قالب یا روش استدلال متفاوت باشند.
  • استقلال: هر نسخه باید به‌صورت مستقل اجرا شود تا خطاهای تصادفی هم‌بستگی پیدا نکنند.
  • تجمیع: خروجی‌ها باید با یک روش مشخص به یک پاسخ نهایی تبدیل شوند.

برای درک بهتر، فرض کنید می‌خواهید یک محصول را از نظر کیفیت ارزیابی کنید. به‌جای یک پرامپت واحد، می‌توانید سه نسخه متفاوت طراحی کنید:

  • نسخه اول: ارزیابی از دید یک مشتری معمولی.
  • نسخه دوم: ارزیابی از دید یک متخصص فنی.
  • نسخه سوم: ارزیابی از دید یک تحلیلگر بازار.

سپس خروجی‌ها را تجمیع می‌کنید و به یک ارزیابی جامع می‌رسید.

تفاوت با تکرار ساده

مجموعه‌های پرامپت با تکرار ساده یک پرامپت متفاوت است. در تکرار ساده، یک پرامپت چند بار اجرا می‌شود و خروجی‌ها یکسان یا نزدیک به هم هستند. در مجموعه‌ها، پرامپت‌ها متفاوت هستند و همین تنوع، دامنه پوشش را گسترده‌تر می‌کند.

مجموعه در مقابل خودسازگاری

روش خودسازگاری، نمونه‌گیری چندگانه از یک پرامپت واحد است. مجموعه‌های پرامپت، نمونه‌گیری از چند پرامپت متفاوت است. هر دو، به تجمیع منجر می‌شوند، اما منابع تنوع آن‌ها متفاوت است. برای تفاوت‌ها، بخش بعدی را ببینید.

مجموعه‌های پرامپت، از تنوع به‌عنوان یک ابزار آماری برای کاهش خطا استفاده می‌کنند.

چرا مجموعه‌ها کار می‌کنند؟

دلیل موفقیت مجموعه‌های پرامپت، در چند اصل آماری و شناختی نهفته است:

کاهش واریانس

هر اجرای مدل زبانی، حاوی نوعی نویز آماری است. اگر فقط به یک اجرا تکیه کنید، این نویز می‌تواند به خطا منجر شود. با تجمیع چند اجرا، نویز تا حد زیادی حذف می‌شود.

افزایش پوشش

هر پرامپت، به‌طور طبیعی برخی جنبه‌های مسئله را بهتر پوشش می‌دهد و برخی دیگر را ضعیف‌تر. با ترکیب چند پرامپت، پوشش کل مسئله افزایش می‌یابد.

کاهش خطای سیستماتیک

اگر یک پرامپت خاص، خطای سیستماتیک داشته باشد، پرامپت‌های دیگر می‌توانند آن را جبران کنند. این ویژگی، در مسائل حساس حیاتی است.

افزایش اطمینان

وقتی چند پرامپت مستقل به یک پاسخ مشابه می‌رسند، اطمینان به آن پاسخ افزایش می‌یابد. این اطمینان، در تصمیم‌گیری‌های حساس ارزش بالایی دارد.

ویژگیپرامپت واحدمجموعه پرامپت
واریانس خروجیبالاپایین
پوشش جنبه‌هامحدودگسترده
مقاومت به خطای سیستماتیکپایینبالا
اطمینان به خروجیمتوسطبالا
هزینهپایینبالا

تفاوت با خودسازگاری و درخت تفکر

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

مجموعه در مقابل خودسازگاری

خودسازگاری، از یک پرامپت واحد چند نمونه می‌گیرد و آن‌ها را تجمیع می‌کند. مجموعه‌های پرامپت، از چند پرامپت متفاوت نمونه می‌گیرد. بنابراین، منابع تنوع متفاوتی دارند. برای جزئیات، پست روش خودسازگاری در پرامپت نویسی را ببینید.

مجموعه در مقابل درخت تفکر

درخت تفکر، یک ساختار درختی از مسیرهای استدلال می‌سازد و بهترین مسیر را انتخاب می‌کند. مجموعه‌های پرامپت، چند مسیر موازی را دنبال می‌کنند و در پایان تجمیع می‌شوند. برای جزئیات، پست درخت تفکر در پرامپت نویسی را ببینید.

ترکیب سه رویکرد

این سه رویکرد می‌توانند ترکیب شوند. مثلاً، در هر شاخه از درخت تفکر، چند نمونه از خودسازگاری بگیرید و در نهایت، نتایج مجموعه‌ها را تجمیع کنید.

انواع مجموعه‌های پرامپت

مجموعه‌های پرامپت را می‌توان بر اساس منبع تنوع، دسته‌بندی کرد:

مجموعه بر اساس نقش

در این نوع، هر پرامپت از دید یک نقش متفاوت نوشته می‌شود. مثلاً، یک پرامپت از دید توسعه‌دهنده، یکی از دید مدیر محصول و یکی از دید مشتری.

مجموعه بر اساس زمینه

در این نوع، هر پرامپت با یک زمینه متفاوت ارائه می‌شود. این رویکرد، در مسائل چندبعدی مؤثر است.

مجموعه بر اساس قالب

در این نوع، هر پرامپت یک قالب خروجی متفاوت درخواست می‌کند. مثلاً، یکی JSON، یکی لیست و یکی جدول.

مجموعه بر اساس روش استدلال

در این نوع، هر پرامپت از یک روش استدلال متفاوت استفاده می‌کند. مثلاً، یکی زنجیره تفکر، یکی درخت تفکر و یکی مقایسه مستقیم.

مجموعه بر اساس زبان

در سامانه‌های چندزبانه، هر پرامپت به یک زبان متفاوت نوشته می‌شود و سپس خروجی‌ها تجمیع می‌شوند.

مجموعه ترکیبی

در عمل، بهترین نتایج از ترکیب چند منبع تنوع به دست می‌آید. مثلاً، ترکیب نقش و روش استدلال.

نوع مجموعهمنبع تنوعمناسب برای
نقش‌محورنقش‌های متفاوتارزیابی چندجانبه
زمینه‌محورزمینه‌های متفاوتمسائل چندبعدی
قالب‌محورقالب‌های متفاوتخروجی‌های چندگانه
استدلال‌محورروش‌های استدلالمسائل پیچیده
زبان‌محورزبان‌های متفاوتسامانه‌های چندزبانه

ایجاد تنوع در مجموعه

تنوع، قلب مجموعه‌های پرامپت است. بدون تنوع کافی، مجموعه‌ها فقط هزینه اضافه ایجاد می‌کنند.

اصول ایجاد تنوع

  • تنوع معنادار: تفاوت‌ها باید بر خروجی اثر داشته باشند.
  • پوشش جنبه‌ها: هر پرامپت باید یک جنبه متفاوت را پوشش دهد.
  • عدم تناقض: پرامپت‌ها نباید با یکدیگر متناقض باشند.
  • استقلال: هر پرامپت باید مستقل قابل اجرا باشد.
  • کنترل تعداد: تعداد پرامپت‌ها باید متناسب با پیچیدگی مسئله باشد.

نمونه‌ای از ایجاد تنوع

Prompt 1 (Role: Developer):
As a senior WordPress developer, evaluate this plugin for code quality.
Focus on: security, performance, maintainability.

Prompt 2 (Role: Security Expert):
As a security researcher, evaluate this plugin for vulnerabilities.
Focus on: input validation, authentication, data exposure.

Prompt 3 (Role: Business Analyst):
As a business analyst, evaluate this plugin for market fit.
Focus on: usability, documentation, pricing.

هر پرامپت از دید متفاوتی به مسئله نگاه می‌کند و در نهایت، تصویر کامل‌تری از محصول به دست می‌آید.

روش‌های تجمیع خروجی

پس از دریافت خروجی‌ها، باید آن‌ها را تجمیع کرد. روش‌های تجمیع متعددی وجود دارد:

رأی‌گیری اکثریت

اگر خروجی‌ها گسسته و قابل‌مقایسه باشند، رأی‌گیری اکثریت ساده‌ترین و سریع‌ترین روش است.

رأی‌گیری وزن‌دار

در این روش، هر خروجی با یک وزن متناسب با اطمینان مدل وزن‌دهی می‌شود.

شباهت معنایی

اگر خروجی‌ها باز و غیرقابل‌مقایسه باشند، می‌توان از شباهت معنایی برای خوشه‌بندی و انتخاب مرکز استفاده کرد. برای جزئیات، پست embedding چیست را ببینید.

مدل داور

در این روش، یک مدل زبانی جداگانه، خروجی‌ها را بررسی و بهترین را انتخاب می‌کند.

ترکیب خلاقانه

در برخی کاربردها، بهترین نتیجه از ترکیب بخش‌های مختلف خروجی‌ها به دست می‌آید. مثلاً، قوی‌ترین جنبه‌های هر پاسخ.

توافق‌محور

در این روش، خروجی نهایی، تنها بخش‌هایی از پاسخ‌ها را شامل می‌شود که همه پرامپت‌ها بر آن‌ها توافق دارند. این روش، در کاربردهای حساس استفاده می‌شود.

روش تجمیعمناسب برایهزینه
رأی‌گیری اکثریتپاسخ‌های گسستهپایین
رأی‌گیری وزن‌دارپاسخ‌های عددیپایین
شباهت معناییپاسخ‌های بازمتوسط
مدل داورمسائل پیچیدهبالا
ترکیب خلاقانهتولید محتوای غنیمتوسط
توافق‌محورکاربردهای حساسبالا

پیاده‌سازی گام‌به‌گام

پیاده‌سازی مجموعه‌های پرامپت شامل چند مرحله است:

import asyncio
from collections import Counter

async def run_prompt(prompt):
    response = await llm_call(prompt)
    return response

async def prompt_ensemble(prompts):
    results = await asyncio.gather(*[run_prompt(p) for p in prompts])
    answers = [extract_answer(r) for r in results]
    counter = Counter(answers)
    best, count = counter.most_common(1)[0]
    return best, count / len(answers), results

این پیاده‌سازی پایه، سه نکته کلیدی را نشان می‌دهد:

  • اجرای موازی پرامپت‌ها برای کاهش تأخیر.
  • استخراج پاسخ از هر خروجی.
  • رأی‌گیری اکثریت برای انتخاب پاسخ نهایی.

مدیریت استثناها

در محیط تولیدی، باید خطاها مدیریت شوند. اگر یک پرامپت شکست بخورد، نباید کل مجموعه را متوقف کند.

async def run_prompt_safe(prompt):
    try:
        return await run_prompt(prompt)
    except Exception as e:
        return {"error": str(e)}

کاربردهای عملی

مجموعه‌های پرامپت در چند سناریو کاربرد دارد:

ارزیابی چندجانبه

در ارزیابی محصول، کد یا ایده، ترکیب دیدگاه‌های مختلف به ارزیابی جامع‌تری منجر می‌شود.

تصمیم‌گیری حساس

در حوزه‌های مالی، پزشکی و حقوقی که تصمیم‌های حساس گرفته می‌شود، مجموعه‌های پرامپت اطمینان را افزایش می‌دهند.

تولید محتوای غنی

در تولید محتوای خلاقانه، ترکیب چند دیدگاه می‌تواند به محتوای غنی‌تر و متنوع‌تر منجر شود. برای جزئیات، پست پرامپت نویسی برای خلاقیت را ببینید.

تحلیل داده

در تحلیل داده، ترکیب تحلیل‌های مختلف به نتایج دقیق‌تری منجر می‌شود.

کدگذاری چندبعدی

در تولید کد، ترکیب دیدگاه‌های امنیتی، عملکردی و نگهداری‌پذیری به کد باکیفیت‌تری منجر می‌شود. برای جزئیات، پست پرامپت نویسی برای تولید کد را ببینید.

بازبینی کیفیت

در بازبینی خروجی مدل، مجموعه‌های پرامپت می‌توانند به شناسایی خطاها کمک کنند.

هزینه، تأخیر و بهینه‌سازی

هزینه و تأخیر، دو محدودیت اصلی مجموعه‌های پرامپت هستند. اگر n پرامپت داشته باشید، هزینه و تأخیر تقریباً n برابر می‌شود.

راهکارهای بهینه‌سازی

  • اجرای موازی: پرامپت‌ها را به‌صورت موازی اجرا کنید.
  • تعداد تطبیقی: تعداد پرامپت‌ها را بر اساس پیچیدگی مسئله تنظیم کنید.
  • کش کردن نتایج: نتایج تکراری را کش کنید.
  • استفاده از مدل‌های کوچک: در برخی مسائل، مدل‌های کوچک‌تر با مجموعه‌ها عملکرد مشابهی ارائه می‌دهند.
  • توقف زودهنگام: اگر اجماع سریع حاصل شد، ادامه را متوقف کنید.
  • فیلتر اولیه: خروجی‌های واضحاً نادرست را قبل از تجمیع حذف کنید.

برای استراتژی‌های بیشتر کاهش هزینه، پست بهینه‌سازی هزینه در پرامپت نویسی را ببینید.

محدودیت‌ها

مجموعه‌های پرامپت در همه سناریوها مؤثر نیستند:

  • مسائل ساده: در وظایف ساده، مجموعه‌ها فقط هزینه اضافه ایجاد می‌کنند.
  • محیط‌های Real-Time: تأخیر ناشی از چند اجرا، در سامانه‌های Real-Time مسئله‌ساز است.
  • تنوع ناکافی: اگر پرامپت‌ها تنوع کافی نداشته باشند، مجموعه بی‌اثر است.
  • خطای سیستماتیک مشترک: اگر همه پرامپت‌ها خطای مشترکی داشته باشند، تجمیع نمی‌تواند آن را جبران کند.
  • پیچیدگی تجمیع: در پاسخ‌های باز، تجمیع پیچیده و پرهزینه است.
  • مدیریت نسخه: با افزایش تعداد پرامپت‌ها، مدیریت نسخه‌ها پیچیده‌تر می‌شود. برای جزئیات، پست نسخه‌بندی پرامپت را ببینید.

پرسش‌های پرتکرار درباره مجموعه‌های پرامپت

مجموعه‌های پرامپت چه تفاوتی با خودسازگاری دارد؟

خودسازگاری از یک پرامپت واحد چند نمونه می‌گیرد. مجموعه‌های پرامپت از چند پرامپت متفاوت نمونه می‌گیرد. منبع تنوع متفاوت است.

چند پرامپت برای یک مجموعه کافی است؟

معمولاً ۳ تا ۵ پرامپت کافی است. تعداد بیشتر، هزینه را افزایش می‌دهد بدون بهبود معنادار دقت.

آیا مجموعه‌های پرامپت همیشه دقت را افزایش می‌دهند؟

خیر. اگر پرامپت‌ها تنوع کافی نداشته باشند یا خطای سیستماتیک مشترکی داشته باشند، مجموعه بی‌اثر است.

آیا مجموعه‌های پرامپت برای همه مدل‌ها مؤثر است؟

اثربخشی در مدل‌های بزرگ‌تر بیشتر است، اما مدل‌های کوچک‌تر نیز می‌توانند از تنوع بهره ببرند.

روش تجمیع مناسب چگونه انتخاب می‌شود؟

بر اساس نوع خروجی. برای پاسخ‌های گسسته، رأی‌گیری اکثریت. برای پاسخ‌های باز، شباهت معنایی یا مدل داور.

آیا مجموعه‌های پرامپت بر امنیت اثر دارند؟

مجموعه‌ها می‌توانند در برابر تزریق مقاومت ایجاد کنند، اما نمی‌توانند جایگزین لایه‌های دفاعی دیگر شوند. برای جزئیات، پست بهترین روش‌های امنیت پرامپت را ببینید.

آیا مجموعه‌ها با درخت تفکر قابل ترکیب هستند؟

بله. در هر شاخه از درخت، می‌توان چند پرامپت متفاوت اجرا کرد و در پایان تجمیع کرد. برای جزئیات، پست درخت تفکر در پرامپت نویسی را ببینید.

آیا مجموعه‌های پرامپت با فشرده‌سازی قابل ترکیب هستند؟

بله. می‌توان ابتدا پرامپت‌ها را فشرده کرد و سپس مجموعه ساخت. برای جزئیات، پست فشرده‌سازی پرامپت را ببینید.

چطور می‌توان مجموعه‌ها را در سامانه تولیدی پیاده کرد؟

با اجرای موازی، مدیریت استثناها و کش کردن نتایج. همچنین، پایش مستمر کیفیت برای اطمینان از عملکرد مطلوب.

آیا مجموعه‌ها برای سامانه‌های Real-Time مناسب هستند؟

در سامانه‌های با تأخیر حساس، مجموعه‌ها می‌توانند مسئله‌ساز باشند. راهکارهایی مانند اجرای موازی و توقف زودهنگام می‌تواند تأخیر را کاهش دهد.

آیا مجموعه‌ها بر حریم خصوصی اثر دارند؟

مجموعه‌ها می‌توانند داده را در چند درخواست ارسال کنند. این توزیع، می‌تواند نگرانی‌های حریم خصوصی ایجاد کند. برای جزئیات، پست حریم خصوصی در پرامپت نویسی را ببینید.

نتیجه‌گیری کاربردی

مجموعه‌های پرامپت، تکنیکی پیشرفته برای افزایش دقت و پایداری خروجی مدل‌های زبانی است که با ترکیب چند پرامپت متنوع و تجمیع خروجی‌ها، واریانس را کاهش می‌دهد و پوشش مسئله را گسترده‌تر می‌کند. این تکنیک، در مسائل حساس و پیچیده بیشترین اثر را دارد اما هزینه و تأخیر را نیز افزایش می‌دهد.

مجموعه‌های پرامپت نشان می‌دهند که در سامانه‌های LLM، تنوع می‌تواند به‌اندازه دقت مهم باشد.

در پروژه‌هایی که به اطمینان بالای خروجی نیاز داشتیم، مجموعه‌های پرامپت ابزار اصلی بوده است. توصیه می‌کنم این تکنیک را با خودسازگاری و درخت تفکر ترکیب کنید و روش تجمیع را بر اساس نوع خروجی انتخاب کنید. اگر تجربه‌ای در پیاده‌سازی مجموعه‌های پرامپت در پروژه‌های واقعی دارید، برای ما جالب است بدانید کدام منبع تنوع در دامنه شما بیشترین تأثیر را داشته است.