Strands Agents — SDK для создания и запуска AI-агентов на Python и TypeScript

· 2 мин чтения
ai-agents agent-framework harness python typescript
📂 Исходный код на GitHub

Open-source SDK для создания и запуска AI-агентов на Python и TypeScript. В монорепозитории собраны готовый Strands harness, CLI, Python и TypeScript SDK, документация, MCP-сервер и инструменты для разработки агентных приложений.

Strands Agents — SDK для создания и запуска AI-агентов на Python и TypeScript

Strands Agents — это open-source SDK для создания и запуска AI-агентов на Python и TypeScript. Он рассчитан на сценарии, в которых больше не хочется самостоятельно писать agent loop и всю обвязку вокруг него: ограничение числа ходов и токенов, отмену задач, инструменты, память, сессии, streaming, MCP, guardrails, tracing и evals.

Агент работает в процессе приложения, без отдельного hosted control plane. При этом Strands можно начать использовать как полностью собранный harness, а затем перейти к SDK, если стандартных настроек недостаточно.

Что входит в проект

Репозиторий собран как монорепозиторий. В нём одновременно находятся SDK для двух экосистем, готовые harness-пакеты, CLI, документация и MCP-сервер.

Пакет Назначение
harness-py/ Python harness: собранный агент через create_harness()
harness-ts/ TypeScript harness: собранный агент через createHarness()
strands-cli/ strands CLI для прототипирования и общения с harness-агентом в терминале
strands-py/ Python SDK: agent loop, model providers и tools
strands-ts/ TypeScript SDK: agent loop, model providers и tools
site/ Исходники сайта документации на Astro и Starlight
team/ Документы по governance, решениям и совместимости между SDK

Отдельный strands-mcp/ содержит MCP-сервер, а примеры использования вынесены в отдельный репозиторий samples.

Два уровня работы

Готовый Strands harness

Для быстрого старта доступен Strands harness. Один вызов создаёт агента с оптимизированными настройками для модели, инструментов, памяти, сессий и управления контекстом. Эти настройки основаны на benchmarked defaults, но их можно переопределить через конфигурацию.

В Python установка выглядит так:

pip install strands-harness

Минимальный запуск:

from strands_harness import create_harness

agent = create_harness()
agent("Find the slowest test in this repo and explain why it's slow")

В TypeScript используется пакет @strands-agents/harness:

npm install @strands-agents/harness
import { createHarness } from '@strands-agents/harness'

const agent = await createHarness()
await agent.invoke('Find the slowest test in this repo and explain why it\'s slow')

Такой путь подходит, когда нужен готовый агент с разумными настройками по умолчанию. Документация описывает harness quickstart и configuration reference.

Работа напрямую с SDK

Если стандартных defaults недостаточно, можно взять управление agent loop, tools, model providers, memory, sessions и hooks на себя. Ниже — минимальные примеры из README.

Для Python нужен Python 3.10+ и пакеты strands-agents и strands-agents-tools:

pip install strands-agents strands-agents-tools
from strands import Agent
from strands_tools import calculator

agent = Agent(tools=[calculator])
agent('What is the square root of 1764')

Для TypeScript указан Node.js 22+:

npm install @strands-agents/sdk
import { Agent } from '@strands-agents/sdk'

const agent = new Agent()
const result = await agent.invoke('What is the square root of 1764?')
console.log(result)

Отдельные README пакетов подробнее описывают tools, model providers, MCP, bidirectional streaming, Zod-typed tools, structured output и multi-agent patterns.

Почему Strands называют agent harness

Обычный вызов LLM API отвечает только за один запрос и один ответ. По мере усложнения приложения вокруг него появляются дополнительные задачи: ограничить число итераций, учитывать token budget, отменять работу, передавать результаты инструментов, сохранять сессии, управлять контекстом, логировать решения и проверять результат перед передачей пользователю.

Strands объединяет этот слой в SDK. В перечень встроенных возможностей входят:

  • lifecycle controls: turn limits, token budgets, cancellation и stop reasons;
  • tools и structured output;
  • MCP и multi-agent patterns;
  • memory и sessions;
  • model portability;
  • streaming;
  • guardrails;
  • tracing и evals.

Это позволяет менять backend модели или облако, не переписывая всю прикладную логику агента. Strands поддерживает Amazon Bedrock, Anthropic, OpenAI и Gemini, а также другие провайдеры и custom providers.

Model-agnostic подход

Один из ключевых принципов проекта — не привязывать приложение к единственному model provider. В документации перечислены Amazon Bedrock, Anthropic, OpenAI, Gemini и Ollama среди провайдеров, с которыми можно начать работу. Agent loop при этом остаётся частью приложения, а не hosted control plane.

Второй принцип — контроль над каждым решением агента. По умолчанию цикл трассирует решения, а hooks позволяют перехватить любой шаг, чтобы записать его, проверить или изменить направление выполнения. Guardrails помогают ловить ошибки до того, как они приведут к нежелательному действию, а steering handlers дают агенту возможность исправить курс вместо молчаливого сбоя.

Практический сценарий

Для прототипа можно установить Strands harness, создать агента одной функцией и передать ему задачу. Если прототип требует собственной логики, переход на SDK позволяет подключить только нужные tools и model providers, не отказываясь от уже знакомого API Agent.

Для приложения с терминальным интерфейсом доступен strands CLI. Он позволяет прототипировать и общаться с harness-агентом прямо в терминале. Для внешних систем в репозитории есть MCP-сервер, а документация охватывает deployment и production-запуск.

Когда стоит посмотреть на Strands

Проект выглядит релевантным, если вы:

  • строите собственный agent loop вместо использования готового coding agent;
  • хотите один подход для Python и TypeScript;
  • работаете с несколькими model providers и планируете менять backend;
  • нуждаетесь в инструментах, MCP, памяти, сессиях и structured output;
  • хотите ограничивать стоимость и количество итераций агента;
  • добавляете tracing, evals, guardrails и hooks в приложение с агентами.

Strands Agents не сводит агентную систему к одному вызову модели. Это набор взаимосвязанных слоёв — от готового harness и CLI до низкоуровневого SDK, памяти, инструментов и наблюдаемости. Такой диапазон позволяет начать с короткого прототипа и постепенно добавлять контроль, необходимый для production.

Источник: https://github.com/strands-agents/harness-sdk