Agentspan: ایجنتهای هوش مصنوعی که کرش نمیکنن
خلاصهٔ کاملتر
Agentspan یه فریمورک اپنسورس پایتونه (با لایسنس MIT) که برای ساخت ایجنتهای هوش مصنوعی قابل اعتماد در محیط production طراحی شده. مشکل اصلی که حل میکنه اینه که وقتی یه ایجنت AI روی پروسهی معمولی اجرا میشه، هر خرابی یا ریاستارت میتونه کل کارش رو از بین ببره. Agentspan این مشکل رو با «اجرای ماندگار» (durable execution) حل میکنه: وضعیت ایجنت خارج از پروسهی شما روی سرور نگه میشه.
زیر هود، Agentspan از Conductor استفاده میکنه — یه موتور orchestration اپنسورس که میلیاردها بار در production نزد Netflix، LinkedIn و Tesla اجرا شده. این یعنی قابلیتهایی مثل retry خودکار برای هر مرحله، تاریخچهی کامل اجرا، و replay بهصورت native وجود دارن. Agentspan یه API تمیز پایتون روی این بنیاد میکشه.
یکی از قابلیتهای کلیدی، human-in-the-loop یا تأیید انسانیه. کافیه یه decorator روی هر tool بذاری تا ایجنت قبل از اجرای اون tool صبر کنه و منتظر تأیید بمونه — بدون timeout. بعداً میتونی از Slack، یه پورتال وب، یا مستقیم از کد تأیید یا رد بدی:
@tool(approval_required=True)
def process_refund(order_id, amount):
"""Refund — needs human approval."""
...
handle = start(agent, "refund #8821")
# agent pauses, state held on server
handle.approve()
# or handle.reject("over limit")
# resumes from the exact waiting pointبرای ساخت pipeline چند ایجنتی، کافیه ایجنتها رو با >> به هم وصل کنی. Agentspan هشت استراتژی هماهنگی (sequential، parallel، handoff، router، swarm و...) رو با یه API یکدست پشتیبانی میکنه. هر مدل زبانی از هر provider ای (Anthropic، OpenAI، Google، Groq) با یه تغییر ساده در رشتهی model قابل استفادهست و میشه مدلهای مختلف رو داخل یه pipeline ترکیب کرد.
امنیت خروجی هم با Guardrail ها مدیریت میشه: میتونی با regex، بررسی LLM، یا توابع دلخواه خروجی هر ایجنت رو اعتبارسنجی کنی. اگه خروجی معتبر نبود، ایجنت میتونه خودکار retry کنه، از LLM بخواد درستش کنه، یا برای تأیید انسانی متوقف بشه. خروجی ساختارمند هم با Pydantic مدلها پشتیبانی میشه — schema رو تعریف میکنی و Agentspan اجرا رو enforce میکنه.
برای تست، ابزار mock_run وجود داره که بدون نیاز به LLM یا سرور، دنبالهی دقیق tool call ها رو شبیهسازی میکنه — یعنی میشه ایجنت رو در CI تست کرد:
result = mock_run(agent, "Weather in Chicago?",
events=[
MockEvent.tool_call("get_weather", {"city": "Chicago"}),
MockEvent.tool_result("get_weather", {"temp_f": 55}),
MockEvent.done("Chicago is 55°F and cloudy."),
])
expect(result).completed().used_tool("get_weather")نکات کلیدی:
- ایجنتها حتی بعد از کرش پروسه از همون مرحله از سر میگیرن
- زیرساخت مبتنی بر Conductor که در production نزد Netflix و LinkedIn ثابت شده
- تأیید انسانی بدون timeout با یه decorator ساده
- پشتیبانی از ۸ استراتژی چند ایجنتی با >> operator
- سازگاری با OpenAI Agents SDK و Google ADK بدون تغییر در کد ایجنت
- Guardrail داخلی، حافظهی مکالمه، streaming رویدادها، و خروجی Pydantic




