LangGraph — workflows با حالت
LangGraph — workflows با حالت — راهنمای فارسی از مجموعهٔ «ایجنتها» در وبلاگ آیرا. بازنویسیشده با تمرکز روی کاربر ایرانی و روایت شناخت پیوسته.

وقتی برای اولین بار با LangChain کار کردی، احتمالاً یه chain ساده ساختی: prompt رفت توی LLM، جواب اومد بیرون. ولی وقتی خواستی یه agent بسازی که چند قدم کار کنه، چند tool داشته باشه، و بتونه تصمیم بگیره کدوم مسیر رو انتخاب کنه — با یه مشکل اساسی روبرو شدی: chain خطیه، ولی منطق واقعی یه agent گرافه. LangGraph برای حل همین مشکل ساخته شد.
مشکلی که LangGraph حل میکنه
تصور کن یه agent برنامهنویسی میخوای بسازی که: ۱. کد رو میگیره ۲. آنالیز میکنه ۳. اگه باگ داشت میره تست بنویسه ۴. اگه test pass نشد دوباره کد رو بررسی میکنه ۵. تا سه بار تلاش میکنه، بعد خطا میده
این منطق loop داره، شاخه داره، و یه state داره که باید بین قدمها حفظ بشه. با chain معمولی نمیشه این رو ساخت — یا میشه ولی خیلی هکی میشه.
LangGraph این رو با یه مدل graph-based حل میکنه: هر گره (node) یه تابعه، هر لبه (edge) یه انتقاله، و یه state مشترک بین همه وجود داره.
معماری اصلی
در LangGraph سه چیز مهمه:
State
یه TypedDict یا Pydantic model که نشون میده سیستم الان در چه وضعیتیه:
from typing import TypedDict, List
class AgentState(TypedDict):
messages: List[str]
code: str
attempts: int
error: str | None
Nodes
تابعهایی که state رو میگیرن و state بهروزشده برمیگردونن:
def analyze_code(state: AgentState) -> AgentState:
result = llm.invoke(f"Analyze this code: {state['code']}")
return {**state, "analysis": result}
Edges
تعیین میکنن بعد از هر node کجا بریم. میتونن شرطی باشن:
def should_retry(state: AgentState) -> str:
if state["error"] and state["attempts"] < 3:
return "retry"
elif state["error"]:
return "fail"
else:
return "success"
یه مثال واقعی: agent ساده بررسی کد
from langgraph.graph import StateGraph, END
workflow = StateGraph(AgentState)
# اضافه کردن nodes
workflow.add_node("analyze", analyze_code)
workflow.add_node("write_test", write_test)
workflow.add_node("run_test", run_test)
workflow.add_node("fix_code", fix_code)
# تعیین نقطهٔ شروع
workflow.set_entry_point("analyze")
# edges ثابت
workflow.add_edge("analyze", "write_test")
workflow.add_edge("write_test", "run_test")
# edge شرطی
workflow.add_conditional_edges(
"run_test",
should_retry,
{
"retry": "fix_code",
"success": END,
"fail": END
}
)
workflow.add_edge("fix_code", "run_test")
app = workflow.compile()
result = app.invoke({"code": my_code, "attempts": 0})
در ۳۰ خط یه agent تکرارشونده داری که state داره، میتونه loop بزنه، و شرط توقف هم داره.
Human-in-the-Loop
یکی از featureهای مهم LangGraph پشتیبانی از interruption و human approval هست. میتونی graph رو در یه نقطه متوقف کنی، به کاربر نشون بدی که چی داره اتفاق میافته، منتظر تأیید بمونی، و بعد ادامه بدی:
workflow.add_node("human_review", interrupt_node)
# graph میایسته اینجا تا کاربر تأیید کنه
workflow.add_edge("analyze", "human_review")
workflow.add_edge("human_review", "write_test")
این برای agentهایی که باید تصمیمات مهم بگیرن خیلی ارزشمنده — مثل agentهایی که دیتابیس یا API خارجی تغییر میدن.
LangGraph vs LangChain vs CrewAI
اینا در واقع رقیب هم نیستن ولی خیلی مقایسه میشن:
| ابزار | مناسب برای |
|---|---|
| LangChain | pipelineهای خطی ساده، اتصال به منابع داده |
| LangGraph | agentهای پیچیده با حالت، loop، human-in-the-loop |
| CrewAI | سیستمهای چند agent که با هم همکاری میکنن |
| AutoGen | مکالمهٔ بین agentهای متعدد |
اگه میخوای یه agent بسازی که «فکر میکنه و تصمیم میگیره»، LangGraph انعطاف بیشتری از LangChain معمولی داره. اگه میخوای چند agent با هم کار کنن، CrewAI یا AutoGen رو هم بررسی کن.
LangGraph Server و Production
تیم LangChain یه لایهٔ deployment به اسم LangGraph Platform یا LangGraph Server اضافه کرده که:
- گرافها رو به عنوان API سرو میکنه
- مدیریت state پایدار داره
- صفبندی اجرا داره
- UI برای monitoring داره
این برای production جدیه. اگه فقط داری یه agent شخصی یا تحقیقاتی میسازی، نیازی نیست.
نصب و شروع سریع
pip install langgraph langchain-openai
برای شروع با مدلهای رایگانتر میتونی از Groq یا Together AI استفاده کنی — هر دو با LangGraph کار میکنن و برای کاربر ایرانی با VPN قابل دسترسترن.
چه وقت LangGraph را انتخاب نکنی؟
- اگه فقط یه prompt ساده میخوای — overkill کامله
- اگه تازه با LLMها شروع کردی — اول LangChain عادی رو یاد بگیر
- اگه multi-agent coordination مهمه — CrewAI یا AutoGen شاید بهتر باشن
- اگه سرعت deploy مهمه — ابزارهای no-code مثل n8n شاید سریعتر باشن
LangGraph و حافظهٔ بلندمدت
LangGraph بهخودیخود حافظهٔ بین session ندارد — state در یه session زنده است و بعد از اتمام اجرا از بین میره. برای حافظهٔ پایدار باید یه database (مثل PostgreSQL یا Redis) بهعنوان backend به graph وصل کنی.
این تفاوت مهمیه با سیستمهایی مثل آیراچت که شناخت پیوسته رو بهعنوان یه ویژگی اصلی دارن — حافظه اونجا built-in و بدون نیاز به پیادهسازی اضافیه.
همچنین بخوان
ادامهٔ مسیر
همهٔ مقالهها ←
ایجنت هوش مصنوعی چیست
ایجنت هوش مصنوعی چیست — راهنمای فارسی از مجموعهٔ «ایجنتها» در وبلاگ آیرا. بازنویسیشده با تمرکز روی کاربر ایرانی و روایت شناخت پیوسته.

Multi-agent systems
Multi-agent systems — راهنمای فارسی از مجموعهٔ «ایجنتها» در وبلاگ آیرا. بازنویسیشده با تمرکز روی کاربر ایرانی و روایت شناخت پیوسته.

LangChain — راهنمای فارسی
LangChain — راهنمای فارسی — راهنمای فارسی از مجموعهٔ «ایجنتها» در وبلاگ آیرا. بازنویسیشده با تمرکز روی کاربر ایرانی و روایت شناخت پیوسته.

AutoGen مایکروسافت
AutoGen مایکروسافت — راهنمای فارسی از مجموعهٔ «ایجنتها» در وبلاگ آیرا. بازنویسیشده با تمرکز روی کاربر ایرانی و روایت شناخت پیوسته.
بیشتر در «ایجنتها»
- CrewAI — تیم ایجنتهای همکار
- AutoGPT — اولین تجربهٔ ایجنت خودکار
- Browser agents — Browser Use و Skyvern
- Coding agents — SWE-agent و Devin
- Workflow agents — n8n با AI
- MCP و اکوسیستم ایجنتها
- مقایسهٔ فریمورکهای ایجنت
- بنچمارکهای ایجنت — SWE-bench
- ساخت ایجنت — اولین قدمها
- خطرات و محدودیتهای ایجنتها
- ایجنتهایی که یاد میگیرن — شناخت پیوسته در ایجنتها