چیت‌شیت

مقایسه‌ی الگوهای ارکستراسیون

Orchestration Patterns Compared

انتخاب سرپرست-کارگر، ازدحام، سلسله‌مراتبی، مناظره یا یک جریان کاری ساده. Python استاندارد از درس‌ها.

  • ۱۲ بخش
  • ۵ درس مرتبط
  • کد و دستورها عیناً از دوره‌ی اصلی
فهرست مطالب
  1. چهار توپولوژی در کنار هم
  2. ترتیب تصمیم‌گیری
  3. سرپرست با کارگران موازی
  4. زمان استفاده از هر الگو
  5. پنج الگوی جریان کاری در کد
  6. لید به تردها منشعب می‌شود
  7. کارگران ازدحام از یک صف کار می‌کشند
  8. محدودیت‌ها و سقف‌ها
  9. اعدادی که اهمیت دارند
  10. شکست‌ها و راهکارها
  11. جریان کاری یا ایجنت
  12. پرسش‌ها

چهار توپولوژی در کنار هم

مقایسه
فاکتورسرپرست-کارگرازدحامسلسله‌مراتبیمناظره
مسئول مسیریابییک LLM مرکزیبدون مسیریاب مرکزیسرپرست‌هایِ سرپرست‌هاپیشنهاددهندگان موازی
ارتباط ایجنت‌هافقط از طریق سرپرستتحویل وظیفه مستقیمفقط برگ‌ها کار انجام می‌دهندنقد متقابل
ردگیری محاسبات نمونهتمیزترینکوتاه‌ترینعمیق‌ترینگران‌ترین
مناسب برای2 تا 4 متخصصاولویت تاخیر بر وضوح استدلالجمعیت‌های بزرگ ایجنتاولویت دقت بر هزینه
نقطه‌ضعفسرپرست گلوگاه استتحلیل و استدلال دشوارانحراف در شکستن کارهزینه
فریم‌ورک‌هاcreate_supervisor در LangGraphتوپولوژی swarm در LangGraphزیرگراف‌ها یا کروهای تو‌در‌توسفارشی

ترتیب تصمیم‌گیری

گام‌به‌گام
  1. ایجنت تکشروع با الگوهای جریان کاری درس 12.
  2. سرپرست-کارگردر صورت داشتن 2 تا 4 متخصص.
  3. ازدحاموقتی تاخیر مهم‌تر از وضوح استدلال است.
  4. سلسله‌مراتبیفقط وقتی سقف بافتار سرپرست تمام می‌شود.
  5. مناظرهوقتی دقت مهم‌تر از هزینه است.

سرپرست با کارگران موازی

معماری
sub_qsub_qsub_qsummarysummarysummaryپرسش کاربرLead.plan3 زیرسوالکارگر 0بافتار تازهکارگر 1بافتار تازهکارگر 2بافتار تازهترکیب و جمع‌بندی توسط لیدفقط خلاصه‌ها

زمان استفاده از هر الگو

نکته‌ها
  • وقتی گام‌ها قابل شمارش‌اند از جریان کاری استفاده کنید.
  • وقتی گام بعدی به خروجی گام قبل بستگی دارد از ایجنت استفاده کنید.
  • برای پژوهش از سرپرست استفاده کنید: هر کارگر پنجره‌ی 200k توکنی خود را می‌گیرد.
  • برای کارهای مستقل متعدد با زمان اجرای متغیر از ازدحام استفاده کنید.
  • وقتی وظیفه زیرتیم‌های واقعاً مستقل دارد از سلسله‌مراتبی استفاده کنید.
  • وقتی گام 2 به خروجی گام 1 نیاز دارد از ترتیبی استفاده کنید.
  • وقتی بازبینی و بازپخش مهم‌تر از سازگاری هستند از گراف‌های ایستا استفاده کنید.
  • از CrewAI Flow به عنوان نقطه شروع محیط عملیاتی استفاده کنید. از Crew برای نقش‌های خودکار استفاده کنید.

پنج الگوی جریان کاری در کد

کار و کد
وظیفهکد
زنجیره‌سازی پرامپت: خروجی N خوراک فراخوانی N+1 استprompt_chain(input_text, llm, steps)
مسیریابی: دسته‌بندی و سپس ارسالroute(input_text, classifier, handlers)
موازی‌سازی: N اجرا، رای اکثریت برنده استparallel_vote(prompt, llm, n=5)
هماهنگ‌کننده-کارگرها: انتخاب کارگران، سپس ترکیبorchestrator_workers(task, workers, synth)
ارزیاب-بهینه‌ساز: حلقه تا زمان PASSevaluator_optimizer(task, proposer, evaluator, max_iter=5)
کنترل‌کننده طرح پشتیبان برای برچسب ناشناختهhandlers.get(label) or handlers.get("default")
اجرای هر پنج دموpython3 code/main.py

لید به تردها منشعب می‌شود

کد
python
sub_questions = self.plan(query)               # 3 زیرسوال
results: list[WorkerResult | None] = [None] * len(sub_questions)
threads: list[threading.Thread] = []
for i, sq in enumerate(sub_questions):
    w = Worker(worker_id=i, trace=self.trace)  # کارگر تازه به ازای هر زیرسوال
    th = threading.Thread(target=w.run, args=(sq, results, i))
    threads.append(th)
    th.start()                                 # اجرای هم‌زمان تمام کارگران
for th in threads:
    th.join()                                  # زمان واقعی نزدیک به بیشینه است، نه مجموع
synthesis = self.synthesize(query, [r for r in results if r is not None])

کارگران ازدحام از یک صف کار می‌کشند

کد
python
q: queue.Queue = queue.Queue()
for t in tasks:
    q.put(t)                  # هیچ هماهنگ‌کننده‌ای کار اختصاص نمی‌دهد
def worker(wid: int) -> None:
    while True:
        try:
            task = q.get_nowait()
        except queue.Empty:
            return            # تخلیه صف، خروج کارگر
        fake_work(task)
        with lock:
            counts[wid] += 1  # کارگران سریع کارهای بیشتری می‌کشند
        q.task_done()

محدودیت‌ها و سقف‌ها

پیش‌فرض‌ها
تنظیمپیش‌فرضنکته
Swarm hops3while hops < 3 پرش رفت و برگشتی از A به B به A را متوقف می‌کند
`parallel_vote` `n`5پرامپت یکسان، رای اکثریت
max_iter5ارزیاب-بهینه‌ساز پس از 5 تلاش متوقف می‌شود
Tree depth2سه لایه بیشتر خطاها را پنهان می‌کنند
Reconciliation rounds2سپس مدیر ارشد باید commit کند
Worker timeout2× median runtimeکشتن، سپس بازتولید محدودتر یا رد کردن
Worker token cap10×از ورودی مورد انتظار ترکیب
Supervisor specialists2-4گام 2 از ترتیب تصمیم‌گیری

اعدادی که اهمیت دارند

مفهوم‌ها
بهبود پژوهش
90.2%+ نسبت به Opus 4 تک‌ایجنتی در ارزیابی‌های پژوهشی داخلی.
سهم توکن
80% از واریانس BrowseComp فقط از مصرف توکن ناشی می‌شود.
هزینه توکن
چندایجنت حدوداً 15 برابر تک‌ایجنت توکن مصرف می‌کند.
میزان تلاش متناسب
پرسش‌های ساده از یک ایجنت و 3 تا 10 فراخوانی ابزار استفاده می‌کنند. پرسش‌های پیچیده از 10+ ایجنت.
زمان واقعی
سه کارگر 0.3 ثانیه‌ای در حدود 0.35 ثانیه تمام می‌شوند، نه 0.9 ثانیه.
دموی ازدحام
8 وظیفه، 4 تا کُند (0.4 ثانیه) و 4 تا سریع (0.1 ثانیه)، 4 کارگر.
اندازه الگو
هر الگوی جریان کاری حدود 10 تا 15 خط کد است.

شکست‌ها و راهکارها

عیب‌یابی
  • پاسخ‌های دقیق به پرسش نادرست

    علت
    توهم لید در طرح‌ریزی
    راه‌حل
    ثبت لاگ طرح و diff گرفتن از آن با پرسش
  • آلوده شدن خروجی ترکیب

    علت
    جست‌وجوی بیش از حد کارگران
    راه‌حل
    تعیین مرزهای دامنه‌ی صریح
  • کاربر هرگز تعارضی نمی‌بیند

    علت
    لید بی‌صدا یک طرف را انتخاب می‌کند
    راه‌حل
    پرسش مجدد یا اعلام عدم توافق
  • پاسخ شاخه به موضوع نادرست

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

    علت
    حلقه‌ی اجماع
    راه‌حل
    تعیین سقف حل تعارض
  • کارهای طولانی هرگز اجرا نمی‌شوند

    علت
    قحطی در صف
    راه‌حل
    صف اولویت‌دار با کهنه‌گی (aging)
  • اجرای دوباره وظیفه پس از کرش

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

جریان کاری یا ایجنت

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

پرسش‌ها

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