Strands؛ SDK متنباز ساخت هارنس برای ایجنت
خلاصهٔ کاملتر
Strands Agents یه SDK متنباز برای ساختن «هارنس ایجنت» ـه؛ یعنی همون لایهای که اطراف یه مدل زبانی قرار میگیره و اجراش رو مدیریت میکنه. به گفته سازندهها این SDK از سیستمهای واقعیِ داخل آمازون بیرون اومده و الان بیش از ۶۱۰۰ ستاره گیتهاب داره. هم برای پایتون (pip install strands-agents) و هم برای تایپاسکریپت (npm install @strands-agents/sdk) در دسترسه.
مدل کاری سادهست: یه Agent میسازی، چندتا ابزار (tool) بهش میدی، و رفتارشو سرتاسر کنترل میکنی. مثلاً تو پایتون یه تابع رو با دکوریتور @tool به یه ابزار تبدیل میکنی و بعد به ایجنت پاسش میدی:
@tool
def search_logs(query: str, hours: int = 24) -> list:
"""Search application logs by keyword."""
return log_api.search(query, hours)
agent = Agent(tools=[search_logs])
agent("Find all timeout errors from the last 6 hours")قابلیتی که سازندهها روش تأکید دارن «هوک» (hook) ـه؛ یعنی میتونی قبل از فراخوانی یه ابزار وسط کار بپری و تصمیم بگیری. مثلاً با هوک رویداد BeforeToolCallEvent میتونی چک کنی که گزارش ذخیرهشده حتماً ارجاع به منبع داشته باشه، وگرنه با ستکردن cancel_tool اجرای ابزار رو لغو میکنی. همین مکانیزم بهت اجازه میده روی رفتار ایجنت قانون بذاری.
شعار اصلیِ پروژه «هر مدل، هر کلاد» ـه. به گفته سایت، مدیریت context و محدودیتهای اجرا (execution limits) و observability از همون اول و قبل از اینکه حتی یه خط پیکربندی بنویسی آمادهست. وقتی هم که مقیاس میگیری میتونی backend رو عوض کنی بدون اینکه کدت تغییر کنه.
نویسندهها روی ایده «پیچیدگی تدریجی، بدون قفلشدن» (zero lock-in) خیلی مانور میدن. مثلاً همون ایجنت قبلی رو میتونی با اضافهکردن SummarizingConversationManager به مدیریت مکالمه با خلاصهسازی مجهز کنی، بدون اینکه بقیه کد عوض شه. ایده کلی اینه که از یه نمونه ساده شروع کنی و کمکم لایههای پیچیدهتر رو سوار کنی.
نکات کلیدی:
- یه SDK متنباز برای ساخت هارنس ایجنت، بیروناومده از سیستمهای واقعی آمازون
- هم پایتون و هم تایپاسکریپت رو پشتیبانی میکنه و بیش از ۶۱۰۰ ستاره گیتهاب داره
- ابزارها با @tool تعریف میشن و با هوکهایی مثل BeforeToolCallEvent رفتار ایجنت رو کنترل میکنی
- مدیریت context و محدودیت اجرا و observability از روز اول و بدون پیکربندی آمادهست
- روی هر مدل و هر کلاد کار میکنه و موقع مقیاسگرفتن backend رو بدون تغییر کد عوض میکنی




