چیتشیت
مقایسهی الگوهای ارکستراسیون
Orchestration Patterns Compared
انتخاب سرپرست-کارگر، ازدحام، سلسلهمراتبی، مناظره یا یک جریان کاری ساده. Python استاندارد از درسها.
فهرست مطالب
چهار توپولوژی در کنار هم
مقایسه| فاکتور | سرپرست-کارگر | ازدحام | سلسلهمراتبی | مناظره |
|---|---|---|---|---|
| مسئول مسیریابی | یک LLM مرکزی | بدون مسیریاب مرکزی | سرپرستهایِ سرپرستها | پیشنهاددهندگان موازی |
| ارتباط ایجنتها | فقط از طریق سرپرست | تحویل وظیفه مستقیم | فقط برگها کار انجام میدهند | نقد متقابل |
| ردگیری محاسبات نمونه | تمیزترین | کوتاهترین | عمیقترین | گرانترین |
| مناسب برای | 2 تا 4 متخصص | اولویت تاخیر بر وضوح استدلال | جمعیتهای بزرگ ایجنت | اولویت دقت بر هزینه |
| نقطهضعف | سرپرست گلوگاه است | تحلیل و استدلال دشوار | انحراف در شکستن کار | هزینه |
| فریمورکها | create_supervisor در LangGraph | توپولوژی swarm در LangGraph | زیرگرافها یا کروهای تودرتو | سفارشی |
ترتیب تصمیمگیری
گامبهگام- ایجنت تکشروع با الگوهای جریان کاری درس 12.
- سرپرست-کارگردر صورت داشتن 2 تا 4 متخصص.
- ازدحاموقتی تاخیر مهمتر از وضوح استدلال است.
- سلسلهمراتبیفقط وقتی سقف بافتار سرپرست تمام میشود.
- مناظرهوقتی دقت مهمتر از هزینه است.
سرپرست با کارگران موازی
معماریزمان استفاده از هر الگو
نکتهها- وقتی گامها قابل شمارشاند از جریان کاری استفاده کنید.
- وقتی گام بعدی به خروجی گام قبل بستگی دارد از ایجنت استفاده کنید.
- برای پژوهش از سرپرست استفاده کنید: هر کارگر پنجرهی 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) |
| ارزیاب-بهینهساز: حلقه تا زمان PASS | evaluator_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 hops | 3 | while hops < 3 پرش رفت و برگشتی از A به B به A را متوقف میکند |
`parallel_vote` `n` | 5 | پرامپت یکسان، رای اکثریت |
max_iter | 5 | ارزیاب-بهینهساز پس از 5 تلاش متوقف میشود |
Tree depth | 2 | سه لایه بیشتر خطاها را پنهان میکنند |
Reconciliation rounds | 2 | سپس مدیر ارشد باید commit کند |
Worker timeout | 2× median runtime | کشتن، سپس بازتولید محدودتر یا رد کردن |
Worker token cap | 10× | از ورودی مورد انتظار ترکیب |
Supervisor specialists | 2-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)
اجرای دوباره وظیفه پس از کرش
- علت
- کرش کارگر در میانهی اجرا
- راهحل
- بیاثر کردن کارگران در تکرار، استفاده از صف بادوام
جریان کاری یا ایجنت
مقایسه| فاکتور | جریان کاری | ایجنت |
|---|---|---|
| مالک گراف | مهندسان | مدل |
| شمارش گامها | محدود | میتواند اوج بگیرد و مهارنشدنی شود |
| دیباگ | سادهتر | حالتهای شکست دشوارتر |
| بازبینی | بازبینها گراف را میخوانند | استنتاج از مسیرهای حرکت |
| مناسب برای | کارهای قابل پیشبینی | پژوهشهای بیپایان و باز |
پرسشها
پرسش و پاسخ- چرا نظارت از طریق فراخوانی ابزار انجام شود؟
- شما دقیقاً تعیین میکنید هر متخصص چه چیزی ببیند.
- چرا سرپرست در پژوهش برنده است؟
- بافتار تازه به ازای هر سابایجنت سازوکار اصلی آن است.
- چرا استقرار رنگینکمانی؟
- ایجنتها طولانیاجرا و دارای وضعیت هستند. آبی-سبز کار نمیکند.
- خطای سلسلهمراتبی کجا دیده میشود؟
- در ترکیب ارشد نهایی، یک لایه دورتر از جایی که انسان بتواند آن را بگیرد.
- چرا برای گزارش از ازدحام استفاده نمیشود؟
- ازدحامی از پژوهشگران فکتهای مستقل تحویل میدهد، نه یک گزارش منسجم.
- چگونه یک ازدحام را دیباگ کنیم؟
- به هر وظیفه یک شناسهی ردگیری اختصاص دهید. شروع و پایان را با آن لاگ کنید.