اگر امروز برای ساخت یک عامل هوش مصنوعی، ساعتها وقت صرف ترسیم نمودارهای پیچیده و اتصال دستی گرهها میکنید، احتمالاً در حال جنگیدن با ابزارهای قدیمی هستید. در ۲۳ اوت ۲۰۲۶، یک بررسی فنی در وبسایت dev.to نشان داد که Deep Agents از شرکت LangChain نیاز به سیمکشی دستی هر گره و یال در گردشکار عامل را بهطور کامل حذف میکند.
برای اکثر توسعهدهندگان، وضعیت فعلی هوش مصنوعی عاملمحور (Agentic AI) شبیه به انتخابی بین دو نقطهٔ افراطی است. شما یا یک اسکریپت سختگیرانه مینویسید که با کوچکترین انحراف کاربر از مسیر پیشبینی شده میشکند، یا از یک عامل کاملاً خودمختار استفاده میکنید که اغلب از وظیفه اصلی خود منحرف شده و در مسیرهای نامرتبط پیش میرود. این تنش به این دلیل است که لایهٔ سازماندهنده یا همان «هارنس» (Harness) تعیین میکند چه مقدار از تصمیمگیری بر عهدهٔ مدل زبانی بزرگ (LLM) — مثل کتابخانهداری که میلیاردها صفحه را خوانده و حالا با همان لحن کتابها جواب میدهد — باشد و چه مقدار توسط برنامهنویس دیکته شود. این مفهوم از سازماندهی مدلها برای تبدیل آنها به ابزارهای کاربردی، مشابه رویکردی است که در سیستم DeepSeek برای تبدیل قابلیتهای LLM به پلاگینهای عاملمحور دنبال شده است.
زمینه: چالش عاملهای هوش مصنوعی
تصور کنید میخواهید یک دستیار سفر بسازید. برای اینکه سیستم درست کار کند، ابتدا باید وضعیت آبوهوای شهری خاص را بررسی کند و سپس از آن داده برای پیشنهاد لیست وسایل مورد نیاز استفاده کند. در یک ساختار سنتی، شما باید دقیقاً به هوش مصنوعی بگویید ابتدا کدام تابع را فراخوانی کند و خروجی را به کجا بفرستد.
برای آزمایش این موضوع، نویسندهٔ مقاله در dev.to از یک سناریوی خاص استفاده کرد: «من در حال بازدید از بنگالورو هستم. چه لباسهایی باید با خود ببرم؟». سیستم در این حالت بر اساس یک ابزار جستجوی آبوهوای فرضی به نام WEATHER_BY_CITY کار میکند. این ابزار حاوی مقادیر سختافزاری (Hardcoded) برای سه شهر است:
- بنگالورو: دلپذیر، ۲۷ درجه سانتیگراد
- لندن: بارانی، ۱۴ درجه سانتیگراد
- بمبئی: شرجی، ۳۱ درجه سانتیگراد
همانطور که در تحلیلهای قبلی ما دربارهی امنیت مدلهای بازمتن اشاره کردیم، هرچه لایههای انتزاعی بیشتر شوند، مدیریت خطاهای پیشبینینشده دشوارتر میشود. در اینجا نیز تضاد بین کنترل و سرعت به اوج میرسد.
رویکرد LangGraph: سازماندهی صریح
در LangGraph، توسعهدهنده مانند یک معمار سختگیر عمل میکند. طبق تحلیل dev.to، این روش نیازمند یک رویکرد بسیار ساختاریافته است که در آن هر مرحله بهصورت دستی تعریف شود. برای حل مسئلهٔ لیست وسایل سفر، برنامهنویس باید یک فرآیند چهار مرحلهای را طی کند:
۱. تعریف وضعیت: ایجاد یک PackingState با استفاده از TypedDict برای ردیابی شهر، آبوهوا و لیست وسایل در حالی که دادهها در سیستم جابهجا میشوند.
۲. نوشتن مراحل: کدنویسی دستی توابعی مثل check_weather و create_packing_list. تابع دوم از منطق شرطی (if/elif) استفاده میکند تا شرایط آبوهوایی (گرم، سرد، بارانی، دلپذیر) را به اقلام خاصی مانند «چتر» یا «ژاکت سبک» متصل کند.
۳. ساخت گراف: استفاده از یک سازنده StateGraph برای ثبت توابع به عنوان گرههای نامگذاری شده و اتصال صریح آنها با یالها (شروع $
ightarrow$ بررسی هوا $
ightarrow$ ساخت لیست $
ightarrow$ پایان).
۴. اجرای گردشکار: فراخوانی گراف کامپایلشده با یک وضعیت اولیه.
این متد کنترل کاملی فراهم میکند. شما دقیقاً میدانید دادهها چگونه جریان مییابند، که این موضوع برای برنامههای سازمانی که پیشبینیپذیری در آنها غیرقابل مذاکره است، حیاتی است. اما برای کارهای ساده، سربار زیادی ایجاد میکند؛ چون توسعهدهنده برای ایجاد یک تغییر کوچک، باید کل زمانبندی و محیط اجرای گراف را درک کند.

رویکرد Deep Agents: اجرای پویا
در مقابل، Deep Agents قدرت تصمیمگیری را از برنامهنویس به مدل زبانی منتقل میکند. بر اساس مستندات LangChain، این ابزار راهی ساده برای ساخت برنامههای مبتنی بر LLM است که بهطور پیشفرض از مدیریت فایل، حافظه بلندمدت و همکاری با سایر عاملها پشتیبانی میکند. آنها همچنین ویژگیهای اختیاری برای برنامهریزی وظایف و افزودن مهارتهای قابل استفاده مجدد ارائه میدهند.
در اینجا توسعهدهنده بهجای رسم نقشه، فقط هدف، مجموعهای از ابزارها و یک پرامپت سیستمی (System Prompt) — دستورالعملهای بنیادینی که رفتار کلی مدل را تعیین میکند — ارائه میدهد. در مثال دستیار سفر، برنامهنویس فقط ابزارهای get_weather و create_packing_list را به عامل میدهد و از او میخواهد یک دستیار مفید باشد. پرامپت سیستمی صراحتاً به عامل دستور میدهد که ابتدا از ابزار آبوهوا استفاده کند، یک لیست کاربردی پیشنهاد دهد و استدلال خود را به زبانی ساده و مناسب برای مبتدیان توضیح دهد.
وقتی کاربر دربارهٔ بنگالورو میپرسد، عامل (که در این تست از مدل Gemini-3.7-Flash استفاده میکرد) بهطور خودمختار این توالی را طی میکند:
- مرحله ۱: نیاز به دادههای آبوهوا را تشخیص داده و
get_weatherرا برای «بنگالورو» فراخوانی میکند. - مرحله ۲: نتیجه را پردازش میکند («دلپذیر، حدود ۲۷ درجه سانتیگراد»).
- مرحله ۳: تصمیم میگیرد بر اساس آن نتیجهٔ خاص آبوهوایی، تابع
create_packing_listرا اجرا کند. - مرحله ۴: پاسخ نهایی را ترکیب کرده و زمینههای مفیدی مانند پیشنهاد «محافظت در برابر آفتاب» و یک «چتر کوچک» برای بارشهای غیرمنتظره اضافه میکند.
این روش مرحلهٔ «داربستسازی» در توسعه را حذف میکند. مدل زبانی خودش منطق استفاده از ابزار و زمان فراخوانی آن را مدیریت میکند و این کار توسط پرامپت سیستمی هدایت میشود، نه توسط یک یال سختافزاری در یک گراف.
جزئیات فنی و مقایسه
تفاوتهای پیادهسازی:
- LangGraph: نیازمند سیمکشی دستی
builder.add_nodeوbuilder.add_edgeاست. خروجی آن یک لیست ساده از اقلام بر اساس منطق سختافزاری است. - Deep Agents: از تابع
create_deep_agentبه همراه یک مدل و لیستی از ابزارها استفاده میکند. خروجی آن یک پاسخ غنی و قالببندی شده است که شامل بخشی با عنوان «چرا این پیشنهاد کار میکند» است. - سختافزار و API: نویسنده به دلیل محدودیتهای «لپتاپ ضعیف» (potato laptop) از کلید API گوگل برای Gemini-3.7-Flash استفاده کرد، اما این سیستم را میتوان با موتورهای استنتاج (Inference) — لحظهای که مدل واقعاً جواب تولید میکند — محلی مثل Ollama یا vLLM جایگزین کرد.
خلاصه رویارویی:
- کنترل گردشکار: در LangGraph توسعهدهنده مراحل را تصمیم میگیرد؛ در Deep Agents مدل زبانی تصمیم میگیرد.
- پیکربندی: LangGraph به گرهها و یالها نیاز دارد؛ Deep Agents به ابزارها و پرامپتها نیاز دارد.
- انعطافپذیری: Deep Agents برای کارهای چندمرحلهای که مسیر رسیدن به راه حل ممکن است بر اساس ورودی تغییر کند، بسیار مناسبتر است.
- تشبیه: LangGraph مثل نوشتن یک دستور پخت دقیق است («اول A، بعد B»)، اما Deep Agents مثل استخدام یک دستیار است («شام را درست کن؛ اینها هم ابزارهایت هستند»).
معماری فنی
نکته مهم این است که این دو محصول رقیب در یک فضای خالی نیستند. Deep Agents در واقع یک لایهٔ سازماندهنده است که روی لایهٔ LangGraph بنا شده است. در واقع، Deep Agents از زمانبندی زیرساختی LangGraph برای مدیریت وضعیت و اجرا استفاده میکند اما پیچیدگی ساخت گراف را از کاربر پنهان میکند. این امر به توسعهدهندگان اجازه میدهد بدون نیاز به تلاش دستی برای تعریف هر انتقال، از پایداری یک سیستم مبتنی بر گراف بهرهمند شوند.
این تغییر نشاندهنده یک روند کلی در توسعه هوش مصنوعی است: حرکت از مسیرهای «سختافزاری» به سمت سازماندهی «قصد-محور» (Intent-based). با قابلاعتمادتر شدن مدلهایی مثل Gemini و GPT در استفاده از ابزار (Tool Use)، نیاز به سیمکشی دستی هر مرحله توسط برنامهنویس کاهش مییابد.
برای توسعهدهنده معمولی، این یعنی مسیر سریعتر از ایده به نمونهٔ اولیه. دیگر نیازی نیست متخصص تئوری گراف باشید تا یک عامل چندمرحلهای بسازید؛ فقط باید در تعریف ابزارها و نوشتن دستورالعملهای شفاف مهارت داشته باشید.
اگر سیستمی میسازید که یک اشتباه در توالی مراحل میتواند فاجعهبار باشد، سختگیری LangGraph یک ویژگی است. اما برای اکثر کاربردهای عملی، انعطاف Deep Agents بدهی فنی مربوط به نگهداری نمودارهای پیچیده گردشکار را کاهش میدهد.
برای مشاهدهٔ این سیستم در عمل، میتوانید تابع create_deep_agent را در اکوسیستم LangChain با استفاده از کلید API Gemini یا موتورهای محلی مانند Ollama یا vLLM آزمایش کنید.
گام بعدی شما
- اگر از LangChain استفاده میکنید، تابع
create_deep_agentرا برای جایگزینی گرافهای ساده امتحان کنید. - برای کاهش هزینهها و افزایش حریم خصوصی، مدلهای Gemini را با موتورهای محلی مثل Ollama جایگزین کنید.
- در پرامپتهای سیستمی خود، بهجای دیکته کردن مراحل، «هدف نهایی» و «محدودیتها» را تعریف کنید.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو