بسیاری از تیمهای توسعه هنگام مواجهه با یک مسئله، مستقیم سراغ فریمورکهای پیچیده و سیستمهای چندایجنت میروند، در حالی که بخش عمدهی نیازها با یک فراخوانی ساده یا چند خط کد مشخص برطرف میشود. این پیچیدگی زودرس نهتنها اشکالزدایی سیستم را دشوار میکند، بلکه مصرف توکن و زمان تأخیر را هم بهشدت بالا میبرد.
مقاله دسامبر 2024 شرکت Anthropic مرز مشخصی میان «جریان کاری» (Workflow) و «ایجنت» (Agent) ترسیم میکند. در جریان کاری، گراف اجرا دست مهندس است و مسیرها از قبل تعیین شدهاند؛ در حالی که در ایجنت، هدایت ابزارها به شکل پویا به مدل واگذار میشود. درک این تمایز به شما کمک میکند قبل از افتادن در دام فریمورکهای سنگین، 5 الگوی پایه را بشناسید و متناسب با مسئله انتخاب کنید.
چون در این درس منطق الگوها با کتابخانه استاندارد پایتون پیادهسازی میشود، نیازی به کارت گرافیک مجزا یا منابع پردازشی سنگین ندارید. همچنین اگر در ادامه بخواهید این الگوها را روی APIهای واقعی اجرا کنید، میتوانید با تغییر base_url و کلید دسترسی، بدون تغییر در منطق الگوها از گیتویهای ارائهدهنده یا مدلهای محلی استفاده کنید.
شلانتز و ژانگ (از Anthropic، دسامبر 2024) جریانهای کاری (مسیرهای ازپیشتعریفشده) را از ایجنتها (استفادهی پویا از ابزار) تفکیک میکنند. پنج الگوی جریان کاری بیشترِ سناریوها را پوشش میدهند. همیشه کار را با فراخوانیهای مستقیم API شروع کنید؛ فقط زمانی سراغ ایجنتها بروید که نتوان مراحل کار را از قبل پیشبینی کرد.
اهداف یادگیری
- نام بردن پنج الگوی جریان کاری Anthropic: زنجیرهسازی پرامپت (prompt chaining)، مسیریابی (routing)، موازیسازی (parallelization)، هماهنگکننده-کارگرها (orchestrator-workers) و ارزیاب-بهینهساز (evaluator-optimizer).
- توضیح تفاوت ایجنت و جریان کاری و هزینهی مهندسی هر کدام.
- تشخیص زمان مناسب برای انتخاب جریان کاری بهجای ایجنت (و برعکس).
- پیادهسازی هر پنج الگو در کتابخانهی استاندارد (stdlib) در برابر یک LLM اسکریپتشده.
صورت مسئله
تیمهای فنی معمولاً برای مسائلی که فقط به یک فراخوانی تابع ساده نیاز دارند، سراغ فریمورکهای چندایجنت میروند. این کار هزینهی سنگینی دارد: فریمورکها لایههایی اضافه میکنند که پرامپتها را کدر، جریان کنترل برنامه را پنهان و پیچیدگیِ زودهنگام به سیستم تحمیل میکنند. مقالهی دسامبر 2024 شلانتز و ژانگ، پرارجاعترین pushback صنعت در برابر این رویکرد است: ساده شروع کنید و فقط وقتی پیچیدگی را بالا ببرید که ارزش هزینهاش را داشته باشد.
مفاهیم پایه
جریانهای کاری در برابر ایجنتها
- جریان کاری (Workflow): مدلهای زبانی و ابزارهایی که در مسیرهای کدی ازپیشتعریفشده هدایت میشوند. در اینجا کنترل گراف در دست مهندس است.
- ایجنت (Agent): مدلهای زبانی خودشان ابزارهایشان را بهشکل پویا هدایت میکنند و مراحل بعدی را پیش میبرند. در اینجا کنترل گراف در دست مدل است.
هر دو رویکرد جایگاه خودشان را دارند. جریانهای کاری ارزانتر، سریعتر و برای اشکالزدایی سادهترند. ایجنتها قفل مسائل باز و اکتشافی را باز میکنند، اما تحلیل حالتهای شکست (failure modes) آنها بسیار دشوارتر است.
مدل زبانی تقویتشده (Augmented LLM)
سنگ بنای هر پنج الگو: یک مدل زبانی که سه قابلیت در آن تعبیه شده است: جستجو (بازیابی اطلاعات)، ابزارها (اقدامات) و حافظه (پایداری وضعیت). هر فراخوانی API میتواند از اینها بهره ببرد.
پنج الگو
-
زنجیرهسازی پرامپت (Prompt chaining): خروجی فراخوانی 1 ورودی فراخوانی 2 میشود. این الگو مناسب مسائلی است که میتوان آنها را بهصورت خطی و تمیز به چند مرحله تفکیک کرد. در صورت نیاز، میتوان بین مراحلْ گیتهای بررسی برنامهنویسی قرار داد.
-
مسیریابی (Routing): یک LLM دستهبند مشخص میکند کدام مدل یا ابزارِ بعدی فراخوانی شود. برای ورودیهایی کاربرد دارد که ماهیت متفاوتی دارند و هر کدام باید بهشکلی مجزا پردازش شوند (پشتیبانی سطح 1 در برابر بازگشت وجه، ثبت باگ یا فروش).
-
موازیسازی (Parallelization): اجرای همزمان N فراخوانی مدل و سپس تجمیع نتایج. دو حالت دارد: بخشبندی (پردازش تکههای مختلف) و رأیگیری (ارسال پرامپتی یکسان در N اجرا و سپس استخراج اکثریت یا ترکیب خروجیها).
-
هماهنگکننده-کارگرها (Orchestrator-workers): یک LLM هماهنگکننده بهشکل پویا تصمیم میگیرد چه کارگرهایی (که آنها هم LLM هستند) اجرا شوند و خروجی آنها را ترکیب میکند. شبیه حلقههای ایجنت (agent loops) است، اما هماهنگکننده وارد حلقهی بیپایان نمیشود.
-
ارزیاب-بهینهساز (Evaluator-optimizer): یک LLM پاسخی را پیشنهاد میدهد و LLM دیگری آن را ارزیابی میکند. این چرخه تا زمانی که ارزیاب پاسخ را تأیید کند تکرار میشود. این ساختار در واقع حالت تعمیمیافتهی الگوی Self-Refine (درس 05) است.
جریانهای کاری کجا از ایجنتها جلو میزنند؟
- کارهای قابل پیشبینی: اگر میتوانید مراحل را بشمارید و مشخص کنید، باید حتماً همین کار را بکنید.
- کارهایی با بودجهی هزینهای محدود: تعداد گامهای جریانهای کاری کراندار است؛ اما ایجنتها ممکن است وارد چرخههای هزینهبر و بیپایان شوند.
- کارهای نیازمند انطباق و نظارت قانونی (Compliance): بازرسان سیستم میخواهند خود گراف را بخوانند و بررسی کنند، نه اینکه مسیرها را از روی ردپای اجرای مدل استنتاج کنند.
ایجنتها کجا از جریانهای کاری جلو میزنند؟
- پژوهشهای باز و اکتشافی: زمانی که گام بعدی کاملاً به خروجی گام قبل وابسته باشد.
- کارهایی با طول متغیر: کارهایی از چند دقیقه تا چند ساعت که تعداد گامهای آنها از ابتدا معلوم نیست.
- دامنههای جدید و ناشناخته: زمانی که هنوز جریان کاری درست را نمیدانید؛ ابتدا باید کاوش کنید و بعد مسیر را به کد تبدیل کنید.
مکمل ضروری: مهندسی بافتار
مقالهی «مهندسی بافتار مؤثر برای ایجنتهای هوش مصنوعی» (Anthropic، سال 2025) این تخصص جانبی را قاعدهمند میکند: پنجرهی 200 هزار توکنی یک بودجه است، نه ظرفی که هر چیزی را درونش بریزید. چه مواردی را وارد بافتار کنیم، چه زمانی آن را فشرده کنیم و چه زمانی بگذاریم رشد کند. این مبحث بهصورت مفصل در درس فشردهسازی بافتار در فاز 14 (درس 06 قبل از شمارهگذاری مجدد) بررسی شده است.
پیادهسازی از صفر
فایل code/main.py هر پنج الگوی جریان کاری را در برابر یک ScriptedLLM پیادهسازی میکند:
prompt_chain(input, steps)— متوالی.route(input, classifier, handlers)— دستهبندی و ارسال به بخش مربوطه.parallel_vote(prompt, n, aggregator)— اجرای N فراخوانی و تجمیع نتایج.orchestrator_workers(task, workers)— هماهنگکننده کارگرها را انتخاب میکند.evaluator_optimizer(task, proposer, evaluator, max_iter)— تکرار حلقه تا زمان تأیید نهایی.
اجرای برنامه:
python3 code/main.py
هر الگو ردگیری محاسبات (trace) خود را چاپ میکند. تعداد خطوط کد هر الگو حدود 10 تا 15 خط است؛ در حالی که هزینهی استفاده از فریمورکها با هزاران خط کد سنجیده میشود.
استفاده از ابزارهای واقعی
- برای بیشتر تسکها از فراخوانی مستقیم API استفاده کنید.
- فقط زمانی سراغ فریمورک بروید که الگو واقعاً به وضعیت پایدار (Durable state در LangGraph)، همزمانی مبتنی بر مدل اکتور (AutoGen v0.4) یا قالببندی نقشها (CrewAI) نیاز داشته باشد.
- هر زمان که به ساختار بستر آزمایشی (harness) در Claude Code نیاز پیدا کردید ولی نمیخواستید آن را از صفر بسازید، سراغ Claude Agent SDK بروید.
خروجی این درس
سند outputs/skill-workflow-picker.md برای شرح هر تسک، الگوی مناسب را مشخص میکند؛ همراه با منطق تصمیمگیری و مسیر بازنویسی به ایجنت در صورتی که جریانهای کاری پاسخگوی نیاز نباشند.
تمرینها
- قابلیت مسیریابی را با یک آستانهی (threshold) اطمینان پیادهسازی کنید؛ بهطوریکه اگر اطمینان کمتر از آستانه بود، به اپراتور انسانی ارجاع داده شود. این آستانه برای سناریوی پشتیبانی سطح 1 باید روی چه مقداری تعیین شود؟
- یک مهلت زمانی (timeout) به تابع
parallel_voteاضافه کنید. اگر یکی از فراخوانیها معلق بماند چه میشود؟ تجمیع خروجیها را با وجود آرای غایب چگونه انجام میدهید؟ - ساختار
evaluator_optimizerرا به یک مدل راهزن (bandit) تبدیل کنید: در طول تکرارها، 2 خروجی برتر را نگه دارید تا اگر در دورهای پایانی خروجی بدی تولید شد، جایگزین نتیجهی خوب قبلی نشود. - زنجیرهسازی پرامپت را با مسیریابی ترکیب کنید؛ بهطوریکه یک مسیریاب یکی از سه زنجیره را انتخاب کند. هزینهی توکن آن را در مقایسه با روش جایگزینی که از یک پرامپت تکی و بزرگ استفاده میکند بسنجید.
- یکی از قابلیتهای محیط عملیاتی خود را انتخاب کنید. گراف جریان کاری آن را رسم کنید. مراحل را بشمارید. آیا واقعاً حضور یک ایجنت در این سناریو عملکرد بهتری ایجاد میکند؟
اصطلاحات کلیدی
| اصطلاح | در گفتوگوهای عامیانه | معنای دقیق مهندسی |
|---|---|---|
| جریان کاری (Workflow) | «جریان ازپیشتعریفشده» | گرافی از فراخوانیهای LLM و ابزار که توسط مهندس کنترل میشود |
| ایجنت (Agent) | «هوش مصنوعی خودمختار» | گرافی که کنترل آن دست مدل است؛ هدایت پویای ابزارها |
| مدل تقویتشده (Augmented LLM) | «مدل زبانی با ابزار» | مدل زبانی + جستجو + ابزار + حافظه؛ کوچکترین واحد مستقل پردازشی |
| زنجیرهسازی پرامپت (Prompt chaining) | «فراخوانیهای متوالی» | خروجی فراخوانی N ورودی فراخوانی N+1 میشود |
| مسیریابی (Routing) | «ارسال مبتنی بر دستهبند» | تعیین اینکه کدام زنجیره یا مدل ورودی را پردازش کند |
| موازیسازی (Parallelization) | «انشعاب پردازشها» | اجرای همزمان N فراخوانی؛ تجمیع با روش بخشبندی یا رأیگیری |
| هماهنگکننده-کارگرها (Orchestrator-workers) | «ایجنت ارسالکننده» | LLM هماهنگکننده که LLMهای متخصص را بهشکل پویا انتخاب میکند |
| ارزیاب-بهینهساز (Evaluator-optimizer) | «پیشنهاددهنده + داور» | تکرار مراحل تا تأیید ارزیاب؛ ساختار تعمیمیافتهی Self-Refine |
برای مطالعهی بیشتر
- Anthropic, Building Effective Agents (Dec 2024) — بررسی پنج الگوی جریان کاری
- Anthropic, Effective context engineering for AI agents — تخصص مکمل: مهندسی بافتار
- LangGraph overview — زمان توجیهپذیری هزینهی گرافهای دارای وضعیت پایدار
- OpenAI Agents SDK — پیادهسازی محصولمحور الگوی هماهنگکننده-کارگرها
