CodeShot

Chains (زنجیره ثابت) در مقابل Agents (عامل پویا)

Chain در LangChain یک توالی از پیش تعیین‌شده و ثابت از مراحل است (مثلاً پرامپت -> مدل -> پارس خروجی) که همیشه به همان ترتیب اجرا می‌شود، در حالی که Agent در هر مرحله خودش با کمک مدل تصمیم می‌گیرد کدام ابزار را فراخوانی کند و ترتیب اجرا از قبل ثابت نیست بلکه به‌صورت پویا در Runtime تعیین می‌شود.

ویژگیChains (زنجیره ثابت)Agents (عامل پویا)
ترتیب اجراثابت و از پیش تعیین‌شدهپویا و در Runtime
قابلیت پیش‌بینیبالاکمتر
هزینه و تأخیرکمتربیشتر

کِی از Chains (زنجیره ثابت) استفاده کنیم؟

وقتی مراحل حل مسئله از قبل مشخص و ثابت است و نیازی به تصمیم‌گیری پویا درباره ترتیب اجرا نیست.

کِی از Agents (عامل پویا) استفاده کنیم؟

وقتی مسئله نیاز به تصمیم‌گیری پویا دارد، مثلاً انتخاب بین چند ابزار مختلف بر اساس محتوای سؤال کاربر.

مثال Chains (زنجیره ثابت)

chain = prompt | llm | output_parser
result = chain.invoke({"topic": "هوش مصنوعی"})
# همیشه دقیقاً همین سه مرحله اجرا می‌شود

مثال Agents (عامل پویا)

agent = create_react_agent(llm, tools=[search, calculator])
agent.invoke("جمعیت ایران ضربدر دو چند می‌شود؟")
# مدل خودش تصمیم می‌گیرد از کدام ابزار استفاده کند

اشتباه رایج

اشتباه رایج استفاده از Agent برای وظایف ساده و قطعی است که یک Chain ثابت آن‌ها را سریع‌تر، ارزان‌تر و قابل پیش‌بینی‌تر حل می‌کند؛ Agent هزینه و تأخیر بیشتری دارد چون مدل باید در هر قدم دوباره تصمیم بگیرد.

جمع‌بندی

برای مسیرهای ثابت و قابل پیش‌بینی از Chain و برای مسائلی که نیاز به تصمیم‌گیری پویا درباره ابزار یا مسیر حل دارند از Agent استفاده کنید.