Agent Framework‌ها

20 min · 1,608 words

What you will be able to do
  • Say what a framework does for you that you would otherwise write by hand
  • Tell LangGraph, LangChain and deepagents apart by the level each one works at
  • Pick between the Python and TypeScript options for a real project
  • Explain the difference between an AI workflow and an AI agent
  • Know when a no-code tool is the right answer

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

بذار رک شروع کنیم: لازم نیست حتماً framework داشته باشی. توی AI Agents خود loop رو دیدیم: یه while loop دور یه call به مدل، که وسطش tool درست رو صدا می‌زنی (tool dispatch). این رو توی یه بعدازظهر می‌شه نوشت.

چیزی که framework بهت می‌ده، همه‌ی چیزهاییه که دور این loop لازم داری:

  • retry، وقتی provider خطای 500 برمی‌گردونه.
  • streaming، که کاربر token‌ها رو همون موقع که می‌رسن ببینه.
  • یه tool schema استاندارد، که مجبور نباشی برای هر تابع JSON رو دستی بنویسی.
  • memory‌ای که بعد از restart هم سر جاش بمونه.
  • یه جا برای trace‌ها.

به خاطر همین لیسته که بیشتر آدم‌ها از پروژه‌ی دوم به بعد دیگه loop رو خودشون نمی‌نویسن.

استک LangChain

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

Rendering FIG. 29.1

FIG. 29.1 — استک LangChain

LangGraph⁠ همون runtime‌ه و پایین‌ترین سطح از این سه تا. agent‌ت رو به شکل یه graph تعریف می‌کنی: node‌ها مرحله‌ها هستن، edge‌ها می‌گن بعد از هر مرحله چی می‌تونه بیاد، و state بینشون دست‌به‌دست می‌شه. چون state صریح و مشخصه، runtime می‌تونه ذخیره‌ش کنه و بعداً از همون‌جا ادامه بده، و حتی اجازه بده یه آدم وسط اجرا وارد بشه و agent رو نگه داره. هر وقت سخت‌ترین قسمت کار کنترل جریان (control flow) بود و خواستی خودت کنترلش کنی، برو سراغ LangGraph.

LangChain⁠ رابط اصلیه و نقطه‌ی شروع تو. روی LangGraph ساخته شده و agent معمولی رو با چند خط کد بهت می‌ده: یه مدل، چند تا tool و یه سری middleware. کارهای Harness Engineering توی همین middleware انجام می‌شه، و guardrail‌های Security هم همین‌جا می‌شینن.

deepagents⁠ بالاترین سطحه و روی دو تای دیگه ساخته شده. به خودش می‌گه یه agent harness «batteries-included»، یعنی هر چی لازم داری از قبل توشه. این امکانات آماده دقیقاً همون لیستیه که توی Context Engineering دیدیم:

  • برنامه‌ریزی (planning)
  • یه filesystem
  • subagent‌هایی که هر کدوم context window خودشون رو دارن
  • خلاصه کردن گفت‌وگوهای طولانی

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

پس قاعده‌ی عملیش ساده‌ست: با LangChain شروع کن. هر وقت لازم شد جریان کار رو خودت کنترل کنی، یه پله برو پایین سراغ LangGraph، و هر وقت کل معماری رو آماده خواستی، یه پله برو بالا سراغ deepagents.

بقیه‌ی گزینه‌های Python

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

  • Agno⁠ از یه agent تنها فراتر می‌ره و کل پلتفرم رو در نظر می‌گیره. کمکت می‌کنه agent‌ها رو مثل یه سیستم بسازی، اجرا کنی و مدیریت کنی، نه مثل یه script.
  • CrewAI⁠ همه‌چیز رو حول نقش‌ها می‌چینه. یه crew از agent‌ها تعریف می‌کنی که هر کدوم یه کاری دارن، و می‌ذاری با هم کار کنن. این با الگوهای multi-agent توی Multi-Agent Systems خیلی خوب جور درمیاد.
  • smolagents⁠ از Hugging Face کوچیکه‌ی این جمعه، و عمداً هم کوچیک نگهش داشتن: یه کتابخونه‌ی ساده و بی‌زرق‌وبرق برای agent‌هایی که به‌جای فرستادن tool call‌های JSON، کد می‌نویسن و اجراش می‌کنن تا کارشون رو انجام بدن. در واقع همون ایده‌ی CodeAct‌ه که توی Loop Engineering دیدیم، فقط به شکل یه کتابخونه. اگه می‌خوای بفهمی یه loop چطوری کار می‌کنه، نه اینکه فقط ازش استفاده کنی، این بهترین کدیه که می‌تونی بخونی.
  • Pydantic AI⁠ همون چیزی رو میاره که Pydantic توش استاده: type. همه‌ی مدل‌ها و interface‌ها از سر تا ته type دارن، پس یه tool call خراب به‌جای اینکه یه معمای حل‌نشدنی بشه، یه validation error روشن می‌ده.

اگه پروژه‌ت TypeScript‌ه

اینجا دو تا framework ارزش شناختن دارن، چون کل استک بالا اول برای Python ساخته شده، در حالی که بیشتر کدهای محصول با Python نوشته نمی‌شن.

  • Mastra⁠ framework مدرن TypeScript برای ساختن agent و اپلیکیشن‌های AI‌ه، و توی این زبون نزدیک‌ترین چیز به LangChain همینه.
  • VoltAgent⁠ یه پلتفرم agent engineering‌ه که روی یه framework متن‌باز TypeScript ساخته شده، برای همین بیشتر روی بخش عملیاتی (operations) تمرکز داره، یعنی کارهایی که بعد از ساختن agent‌ها پیش میاد: اجرا کردنشون، زیر نظر گرفتنشون و مدیریتشون.

AI Workflow‌ها

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

AI workflow مسیری رو اجرا می‌کنه که یه نفر از قبل نوشته. مرحله‌ها ثابتن، کد تصمیم می‌گیره قدم بعدی چی باشه، و فقط توی جاهای مشخصی مدل رو صدا می‌زنه تا یه کار مشخص انجام بده. ولی AI agent خودش تصمیم می‌گیره: tool‌ها و ترتیبشون رو خودش انتخاب می‌کنه و مسیرش توی هر اجرا فرق می‌کنه. مقایسه‌ی Prompt Engineering Guide⁠ این فرق رو این‌طوری خلاصه می‌کنه: منطقی که توی کد hard-code شده، در برابر استدلالی که LLM جلو می‌بره.

اشتباه رایج اینه که فکر کنی agent نسخه‌ی پیشرفته‌تر workflow‌ه؛ نیست. اگه نیازمندی‌ها ثابتن و مراحل رو می‌دونی، workflow قابل‌پیش‌بینی‌تر و ارزون‌تره و debug کردنش هم راحت‌تره، و production معمولاً دقیقاً همین قابل‌پیش‌بینی بودن رو می‌خواد. agent رو نگه دار برای کارهایی که مسیرشون از قبل معلوم نیست و هیچ‌کس نمی‌تونه مراحلش رو از قبل بنویسه.

برای نیمه‌ی workflow، بیشتر آدم‌ها آخرش می‌رسن به n8n⁠. باهاش می‌تونی:

  • روی یه canvas تصویری workflow بسازی
  • به بیشتر از 400 تا integration وصل بشی
  • هر جا لازم شد کد خودت رو اضافه کنی
  • خودت host‌ش کنی، یا از cloud خودشون استفاده کنی

یه کاری مثل این رو در نظر بگیر: «وقتی یه فرم ثبت شد، دسته‌بندیش کن، یه چیزی رو جستجو کن، توی database بنویس، و یه پیام بفرست.» برای همچین کاری، این ابزار با فاصله از یه agent بهتره.

این قضیه به Code Agent‌ها هم گره می‌خوره. n8n یه MCP server داره، پس coding agent‌ت می‌تونه به n8n خودت وصل بشه و workflow رو برات بسازه. کافیه با زبون ساده بگی چی می‌خوای، اون‌وقت coding agent:

  • node‌ها رو کنار هم می‌چینه
  • نتیجه رو validate می‌کنه
  • workflow رو اجرا می‌کنه
  • هر جا خراب شد درستش می‌کنه

ساختن workflow از طریق MCP از v2.13 اضافه شده. این‌طوری agent و workflow دیگه رقیب هم نیستن؛ agent می‌شه همونی که workflow رو می‌نویسه.

گزینه‌های No-code

این رو باید رک گفت، چون مهندس‌ها معمولاً از کنارش رد می‌شن: برای خیلی از کارها، جواب درست یه پلتفرم no-code‌ه. Lovable⁠، Bolt⁠ و Replit⁠ از روی یه توضیح، یه اپلیکیشن سالم و کارکن تحویلت می‌دن و خودشون deploy‌ش می‌کنن، و تو هم با نوشتن prompt‌های بعدی، هر بار عوضش می‌کنی. برای یه prototype، یه ابزار داخلی، یا یه landing page که یه فرم پشتشه، این کار به‌جای چند هفته چند ساعت طول می‌کشه.

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

خلاصه

framework خودِ agent loop رو بهت نمی‌ده، چون اون رو خودت هم می‌تونستی بنویسی. چیزی که می‌ده همه‌ی چیزهای دور و بر loop‌ه:

  • retry
  • streaming
  • tool schema
  • memory‌ای که بعد از restart سر جاش بمونه
  • یه جا برای trace‌ها

LangChain سه تا کتابخونه‌ست توی سه سطح. LangGraph همون runtime‌ه و state‌ش صریحه، پس می‌تونی یه اجرا رو ذخیره کنی، ادامه بدی یا وسطش قطعش کنی. LangChain رابط معمولیه و جای شروع، و deepagents همون معماری deep agent‌ه که از قبل سرهم شده. از وسط شروع کن، و هر وقت کارت لازم داشت، برو بالا یا پایین.

Agno، CrewAI، smolagents و Pydantic AI بقیه‌ی گزینه‌های Python هستن، که بیشتر سر اینکه چقدر به‌جای تو تصمیم می‌گیرن با هم فرق دارن. برای TypeScript هم Mastra و VoltAgent هستن.

و بعد مهم‌ترین فرق: workflow مسیری رو اجرا می‌کنه که تو نوشتی، و agent مسیرش رو خودش انتخاب می‌کنه. agent نسخه‌ی ارتقایافته‌ی workflow نیست. اگه می‌تونی مراحل رو بنویسی، بنویسشون، و جای این مراحل هم n8n‌ه. با MCP server‌ی که n8n داره، coding agent‌ت می‌تونه همین workflow‌ها رو برات بسازه، پس این دو تا روش به‌جای اینکه رقیب هم باشن، شریک هم می‌شن.

بررسی سریع: می‌تونی همه‌ی مراحل کار رو از قبل توضیح بدی. باید agent بسازی؟ اگه نه، چرا؟

منابع

📄 مقاله‌ها

🛠️ ابزارها

  • Lovable⁠، Bolt⁠ و Replit⁠: اپلیکیشنی که می‌خوای رو با زبون ساده توضیح بده و یه نسخه‌ی کارکن تحویل بگیر

🗃️ Repository‌ها

Want a quick quiz?5 questions on the main points of this module
Question 1 of 5

طبق این درس، مهم‌ترین چیزی که یه agent framework بهت می‌ده چیه؟