Strands Agents — Строим AI-агентов на Python легко и быстро

16 Jan, 2026

Разработка AI-агентов – это вам не шутки! Особенно когда нужно подружить разные LLM, научить их пользоваться инструментами и заставить работать в сложных сценариях. Знакомая ситуация, когда проект превращается в лапшу из API-вызовов и костылей, а сроки горят?

К счастью, мир Open Source постоянно подкидывает нам приятные сюрпризы, которые значительно упрощают этот путь. Одно из таких решений – Strands Agents Python SDK. Давайте разберемся, что это за зверь и как он может облегчить вашу жизнь, если вы работаете с большими языковыми моделями.

Что такое Strands Agents и кому он нужен?

Представьте, что у вас есть фреймворк, который позволяет сосредоточиться на логике вашего AI-агента, а не на бесконечном бойлерплейте интеграции с разными моделями и инструментами. Именно это и предлагает Strands Agents.

Это SDK, который использует модель-ориентированный подход для создания и запуска AI-агентов. От простых разговорных ассистентов до сложных автономных рабочих процессов, от локальной разработки до продакшн-деплоя – Strands Agents обещает масштабироваться вместе с вашими потребностями. И, что немаловажно, сделать процесс разработки гораздо более приятным.

Кому это будет полезно? Всем, кто работает с LLM и хочет создавать не просто 'промты', а полноценных, умных помощников, способных:

  • Выполнять задачи, используя внешние инструменты.
  • Взаимодействовать друг с другом в мультиагентных системах.
  • Адаптироваться к разным моделям без переписывания кода.
  • Вести сложные, многошаговые диалоги.

Ключевые особенности: за что мы его полюбим?

Strands Agents выделяется на фоне других решений несколькими мощными возможностями, которые делают его по-настоящему ценным инструментом.

Свобода выбора моделей: никакой привязки к одному LLM

Одна из самых приятных особенностей Strands Agents – его полная агностичность к моделям. Разработчики понимают, что мир LLM постоянно меняется, и сегодня популярна одна модель, а завтра – уже другая. Поэтому Strands Agents поддерживает практически все, что можно себе представить:

  • Облачные гиганты: Amazon Bedrock, Anthropic, Google Gemini, OpenAI, Cohere, MistralAI, Writer.
  • Локальные решения: Ollama, Llama.cpp.
  • Универсальные шлюзы: LiteLLM.

Это дает вам невероятную гибкость: можно легко переключаться между провайдерами, экспериментировать с разными моделями для разных задач или даже комбинировать их в мультиагентных системах. Вам не придется переписывать половину кода, чтобы попробовать новую модель.

Пример использования разных моделей:

from strands import Agent
from strands.models import GeminiModel, OllamaModel

# Google Gemini
gemini_model = GeminiModel(
  client_args={
    "api_key": "YOUR_GEMINI_API_KEY", # Не забудьте указать свой ключ!
  },
  model_id="gemini-2.5-flash",
  params={"temperature": 0.7}
)
agent_gemini = Agent(model=gemini_model)
print(agent_gemini("Расскажи об агентском ИИ в двух словах."))

# Ollama (для локального запуска Llama3)
ollama_model = OllamaModel(
  host="http://localhost:11434",
  model_id="llama3"
)
agent_ollama = Agent(model=ollama_model)
print(agent_ollama("Расскажи об агентском ИИ в двух словах."))

Инструменты – суперсила ваших агентов

Какой толк от умного агента, если он не может взаимодействовать с внешним миром? Strands Agents делает создание и интеграцию инструментов (tools) до неприличия простым. Вы можете научить своего агента считать, искать информацию в интернете, работать с базами данных или вызывать любые ваши API.

Легкое создание инструментов на Python:

Вы можете определить свои инструменты прямо в Python, используя декоратор @tool. И тут кроется приятный бонус: докстринги ваших функций автоматически используются LLM для понимания назначения инструмента. Это как написать инструкцию для агента, которая одновременно является и документацией для разработчика!

from strands import Agent, tool

@tool
def word_count(text: str) -> int:
    """Посчитать количество слов в тексте.

    Эта докстринга используется LLM для понимания назначения инструмента.
    """
    return len(text.split())

agent = Agent(tools=[word_count])
response = agent("Сколько слов в этом предложении: 'Привет, мир! Как дела?'")
print(response)
# Ожидаемый ответ: Агент вызовет word_count и вернет 5

Горячая перезагрузка инструментов:

А самое крутое – это горячая перезагрузка инструментов из директории. Просто кладете новые инструменты в папку ./tools/, и агент автоматически их подхватывает! Это просто мечта для быстрой итерации и экспериментов с новыми возможностями агента.

from strands import Agent

# Агент будет отслеживать изменения в директории ./tools/
agent = Agent(load_tools_from_directory=True)
response = agent("Используй любые инструменты, которые найдешь в директории tools")
print(response)

MCP: тысячи готовых инструментов под рукой

Помимо создания собственных инструментов, Strands Agents нативно поддерживает Model Context Protocol (MCP) серверы. Что это значит? Это открывает доступ к тысячам уже готовых инструментов!

Представьте, что ваш агент может читать документацию AWS, взаимодействовать с различными сервисами или использовать другие специализированные функции, просто подключившись к соответствующему MCP-серверу. Это как дать вашему агенту огромную библиотеку навыков, которые он может использовать по своему усмотрению, не требуя от вас написания каждой функции с нуля.

from strands import Agent
from strands.tools.mcp import MCPClient
from mcp import stdio_client, StdioServerParameters # Предполагаем, что mcp установлен

# Подключаемся к MCP-серверу с документацией AWS
aws_docs_client = MCPClient(
    lambda: stdio_client(StdioServerParameters(command="uvx", args=["awslabs.aws-documentation-mcp-server@latest"]))
)

with aws_docs_client:
   agent = Agent(tools=aws_docs_client.list_tools_sync())
   response = agent("Расскажи мне про Amazon Bedrock и как его использовать с Python")
   print(response)

Двунаправленная потоковая передача (Bidirectional Streaming): будущее голосовых AI-агентов

Это экспериментальная, но очень перспективная функция, которая, на мой взгляд, заслуживает отдельного внимания. Bidirectional Streaming позволяет создавать голосовых AI-агентов, которые могут вести настоящие, живые диалоги.

В отличие от обычных систем 'вопрос-ответ', где вы ждете, пока агент закончит говорить, а потом уже отвечаете, здесь поддерживается постоянное соединение. Пользователь может перебивать, давать непрерывный ввод, а агент отвечает в реальном времени, даже голосом. Это открывает двери для создания по-настоящему интерактивных голосовых помощников, служб поддержки и других приложений, где важен естественный, динамичный диалог.

Поддерживаются такие модели, как Amazon Nova Sonic, Google Gemini Live и OpenAI Realtime API. Это настоящий прорыв для тех, кто мечтает о 'разговорном' ИИ, который звучит и ощущается максимально естественно.

import asyncio
from strands.experimental.bidi import BidiAgent
from strands.experimental.bidi.models import BidiNovaSonicModel
from strands.experimental.bidi.io import BidiAudioIO, BidiTextIO
from strands.experimental.bidi.tools import stop_conversation
from strands_tools import calculator # Пример инструмента

async def main():
    # Создаем двунаправленного агента с аудио-моделью
    model = BidiNovaSonicModel() # Или BidiGeminiLiveModel, BidiOpenAIRealtimeModel
    agent = BidiAgent(model=model, tools=[calculator, stop_conversation])

    # Настраиваем аудио и текстовый ввод/вывод
    audio_io = BidiAudioIO()
    text_io = BidiTextIO()

    # Запускаем с потоковой передачей аудио в реальном времени
    # Скажите "stop conversation", чтобы вежливо завершить разговор
    await agent.run(
        inputs=[audio_io.input()],
        outputs=[audio_io.output(), text_io.output()]
    )

if __name__ == "__main__":
    asyncio.run(main())

Практическое применение: где пригодится Strands Agents?

С таким набором возможностей Strands Agents становится универсальным инструментом для создания самых разных AI-агентов. Вот несколько идей, где он может проявить себя во всей красе:

  • Умные ассистенты для бизнеса: Автоматизация рутинных задач, ответы на вопросы сотрудников, помощь в работе с корпоративными системами.
  • Автономные рабочие процессы: Агенты, которые могут самостоятельно планировать и выполнять сложные многошаговые задачи, например, обработка заказов, анализ данных из разных источников.
  • Чат-боты с расширенными функциями: Создание продвинутых чат-ботов для поддержки клиентов, которые могут не только отвечать на вопросы, но и выполнять действия (бронирование, покупки, поиск информации в реальном времени).
  • Голосовые интерфейсы нового поколения: Интерактивные системы для умных домов, автомобилей, или специализированных колл-центров, способные вести естественный и прерывающийся диалог.
  • Научные исследования и анализ данных: Агенты, которые могут собирать данные, обрабатывать их с помощью специализированных инструментов и представлять результаты в удобном формате.
  • Образовательные платформы: Создание интерактивных учителей или репетиторов, способных адаптироваться к стилю обучения пользователя.

Выводы: Стоит ли попробовать?

Strands Agents Python SDK – это не просто еще одна обертка для LLM. Это полноценный, продуманный фреймворк для создания гибких, мощных и масштабируемых AI-агентов. Он решает многие головные боли, с которыми сталкиваются разработчики при работе с современными языковыми моделями.

Если вы устали от рутины при интеграции моделей и инструментов, хотите сосредоточиться на логике вашего агента, а не на технической обвязке, то Strands Agents определенно стоит вашего внимания. Его модель-ориентированный подход, поддержка множества LLM, простота создания инструментов и интеграция с MCP делают его очень привлекательным выбором для любого Python-разработчика, увлеченного миром AI-агентов.

Загляните в их документацию и примеры, чтобы начать экспериментировать. Возможно, именно Strands Agents станет вашим следующим любимым инструментом в арсенале для покорения мира умных помощников!