Как создать интеллектуального исследовательского ассистента с Strands Agents и Kiro за 30 строк кода
Создание AI-приложения не должно требовать ученой степени по машинному обучению или месяцев борьбы со сложной архитектурой. Но именно это часто происходит, когда нужно оркестрировать несколько API-вызовов, управлять состоянием диалога и строить агентов, способных рассуждать самостоятельно. Автор показывает, что с помощью Strands Agents и сервисов AWS он собрал полностью рабочий исследовательский AI-ассистент всего за 30 строк кода — и в этой статье пошагово объясняет, как дошел от идеи до готового приложения.
Amazon Web Services (AWS) предлагает несколько вариантов для создания agentic AI-приложений. Amazon Bedrock дает доступ к foundation models (FMs), на которых можно строить интеллектуальных агентов, а такие сервисы, как Kiro, обеспечивают AI-помощь разработчику прямо в IDE. Эти инструменты можно использовать для создания кастомных AI-агентов под конкретные сценарии и предметные области.
Kiro — это IDE с поддержкой AI, которая пишет код, чтобы разработчики могли сосредоточиться на принятии решений. Kiro Powers расширяют Kiro специализированными возможностями по запросу, упаковывая MCP servers, steering files и hooks в переиспользуемые единицы. Например, Strands power объединяет поиск по документации SDK, руководства по началу работы и корректные шаблоны API, чтобы Kiro мог точно скелетировать агентов. Более 50 отобранных powers от AWS, партнеров и сообщества — для проектирования, развертывания, безопасности и наблюдаемости — устанавливаются в один клик, после чего разработчики сразу начинают работу.
Strands Agents — это open source-фреймворк, который напрямую решает эти проблемы разработки, предоставляя простой способ создавать интеллектуальных агентов для задач вроде исследований, анализа и генерации контента. Strands Agents объединяет возможности больших языковых моделей (LLMs) с пользовательской логикой и API через Python-код. Дополнительную информацию о Strands Agents см. в статье Introducing Strands Agents, an Open Source AI Agents Software Development Kit (SDK).
Почему выбирают Strands Agents: упрощенная разработка AI для сред AWS
Strands Agents снимает ключевые сложности при создании AI-приложений благодаря model-driven-подходу. Вместо сложного hardcoding он использует LLMs для автономного рассуждения и планирования, поэтому вы можете создавать агентов всего с помощью prompt и списка инструментов, а логику и использование инструментов берет на себя LLM.
Гибкая архитектура фреймворка поддерживает все: от одиночных агентов до мультиагентных сетей и иерархических систем, поэтому он подходит для проектов разного масштаба. Внешние функции и API можно подключать через декоратор @tool, а model-agnostic-дизайн работает с разными поставщиками LLM, включая Amazon Bedrock, Anthropic и OpenAI.
В средах AWS Strands естественно интегрируется с такими сервисами, как Amazon Bedrock и AWS Lambda, и уже готов к использованию в production. Команды AWS применяют его в сервисах вроде Amazon Q и AWS Glue. Этот open source-фреймворк распространяется по лицензии Apache-2.0, активно развивается сообществом, а один и тот же код одинаково хорошо работает и локально, и в production. Ответы в реальном времени со streaming-передачей делают его удобным для интерактивных приложений, которым нужен немедленный отклик.
Подробнее о технических деталях см. в материале Strands Agents SDK: A technical deep dive into agent architectures and observability.
Предварительные требования
Перед тем как перейти к решению, убедитесь, что у вас есть следующее:
- Аккаунт AWS.
- Пользователь, настроенный в AWS IAM Identity Center, или Builder ID.
- Установленный Kiro.
- Настроенные учетные данные AWS для доступа к Amazon Bedrock — используйте AWS IAM Identity Center (рекомендуемый способ для доступа человека). Выполните следующие команды для настройки и входа:
aws configure sso
aws sso login --profile research-assistant
- Затем прикрепите ограниченную inline-политику AWS Identity and Access Management (IAM) к роли или permission set, который вы используете. Эта политика предоставляет только необходимые для этого руководства разрешения — вызов модели Claude Sonnet через Amazon Bedrock.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"bedrock:InvokeModel",
"bedrock:Converse"
],
"Resource": "arn:aws:bedrock:us-west-2::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"
}
]
}
- Добавьте в Kiro Build an agent with Strands (power).

Обзор решения
Создание интеллектуального исследовательского ассистента
В этом разделе показано, как Strands Agents упрощает разработку agentic AI-возможностей. Наш пример исследовательского ассистента демонстрирует, как быстро встроить интеллектуальные функции в приложения при минимальном количестве кода. Вы начинаете с создания агента через инициализацию Agent(), затем задаете его поведение с помощью prompt engineering. После этого добавляете автономные исследовательские возможности, предоставляя инструменты и обрабатывая ответы для аккуратного вывода.
Решение требует всего 30 строк кода, что показывает, как Strands может свести сложность разработки AI к простой реализации. Для визуализации мы используем Streamlit, но основная функциональность основана на способности Strands выполнять автономное рассуждение, выбор инструментов и выполнение задач с минимальным участием разработчика.
Начало работы со Strands Agents:
Сначала вы создадите простой исследовательский ассистент в формате Q&A с помощью Strands Agents. В вашей IDE установите Strands Agents SDK:
Kiro -> Terminal
pip install strands-agents
Нам также нужен Streamlit для исследовательского ассистента, поэтому выполните следующую команду для установки Streamlit:
pip install streamlit
Затем создайте свой первый агент в виде Python-файла. Назовем его research.py.
from strands import Agent
# Создаем агента с настройками по умолчанию
agent = Agent()
# Задаем агенту вопрос
agent("Расскажи об agentic AI")

Вот и все. Вы только что создали своего первого AI-агента. Теперь посмотрим, что он умеет при запуске.
В терминале выполните следующую команду:
python -u research.py
Разработка с помощью AI в Kiro: генерация реализации исследовательского ассистента
Ускорим разработку, используя возможности Kiro для генерации кода исследовательского ассистента через prompt на естественном языке и диалог. Мы опишем требования на естественном языке, а Kiro поможет создать рабочее приложение исследовательского ассистента со Strands Agents и Streamlit.
Выполните следующие шаги:
- Откройте Kiro.
- Создайте новый Python-файл, например
research_assistant.py. - Введите следующий prompt:
Создай приложение-исследовательский ассистент на Streamlit с библиотекой strands Agent и со следующими точными требованиями:
1. Заголовок приложения: "Research Assistant" с подзаголовком "Enter a topic to get research analysis and recommendations"
2. Поле ввода текста с подсказкой "e.g., renewable energy, artificial intelligence"
3. Кнопка "Generate Research Report", которая при нажатии:
- Показывает spinner с сообщением "Researching and analyzing..."
- Перенаправляет stdout, чтобы исключить помехи от вывода в терминал (импортируй sys, os и используй devnull)
- Создает экземпляр Agent()
- Использует этот точный шаблон prompt: "You are a research assistant. For the topic '{topic}': 1. Overview of the topic in about 50 words 2. Find recent 2 articles about {topic} in 20 words each 3. Things to know relevant to the topic and description as prerequisites in 20 words each like if topic is agentic ai then prereq is machine learning and generative ai 4. 2 key contributors and well known people in this field of research topic including their bio in 25 words each 5. give relevant 2 urls to read more and any research papers from https://arxiv.org/"
- Показывает ответ через st.subheader(f"Research Report: {topic}") и st.write(response.message['content'][0]['text'])
- Восстанавливает stdout в блоке finally
- Показывает предупреждение, если тема не введена
Используй шаблон try/finally для перенаправления stdout. Код должен быть минимальным и рабочим.
Kiro сгенерирует готовую реализацию, которую затем можно сохранить и запустить.
Ниже приведен код от Kiro.
import sys
import os
import streamlit as st
from strands import Agent
st.title("Research Assistant")
st.write("Enter a topic to get research analysis and recommendations")
topic = st.text_input("Research Topic", placeholder="e.g., renewable energy, artificial intelligence")
if st.button("Generate Research Report"):
if topic:
with st.spinner("Researching and analyzing..."):
old_stdout = sys.stdout
try:
sys.stdout = open(os.devnull, "w")
agent = Agent()
response = agent(
f"You are a research assistant. For the topic '{topic}': "
f"1. Overview of the topic in about 50 words "
f"2. Find recent 2 articles about {topic} in 20 words each "
f"3. Things to know relevant to the topic and description as prerequisites in 20 words each "
f"like if topic is agentic ai then prereq is machine learning and generative ai "
f"4. 2 key contributors and well known people in this field of research topic including their bio in 25 words each "
f"5. give relevant 2 urls to read more and any research papers from https://arxiv.org/"
)
finally:
sys.stdout = old_stdout
st.subheader(f"Research Report: {topic}")
st.write(response.message["content"][0]["text"])
else:
st.warning("Please enter a topic to research.")
Важно: без инструмента web-browsing агент генерирует URL-адреса на основе знаний из обучения. Они могут не отражать самые свежие статьи. Для получения данных в реальном времени добавьте соответствующий MCP server как инструмент.
Ответственное использование MCP servers
- Фиксируйте MCP server на конкретной версии или commit hash, например
pip install "arxiv-mcp==X.Y.Z". - Перед установкой проверяйте исходный код. Для production-сценариев я рекомендую Amazon Bedrock-native retrieval (Knowledge Bases/RAG).
- Для пользовательских или межорганизационных развертываний пропускайте сторонние MCP servers через юридическую и security-проверку вашей организации.
- MCP servers наследуют права процесса агента, включая все AWS credentials, доступные процессу. Рассматривайте их как часть границы доверия.
Для production-нагрузок стоит рассмотреть управляемые удаленные MCP servers AWS через Amazon Bedrock AgentCore, которые обеспечивают изоляцию процессов, централизованную аутентификацию и исключают утечку локальных учетных данных.
Соображения безопасности для production
- Проверяйте пользовательский ввод. Ограничивайте длину topic и удаляйте непечатаемые символы перед передачей строки агенту (см. код в этой статье).
- Включите Amazon Bedrock Guardrails. Привяжите guardrail к вызову модели для фильтрации prompt injection и небезопасного вывода. Подробнее см. Обнаружение и фильтрация вредоносного контента с помощью Amazon Bedrock Guardrails.
- Включите логирование. Активируйте логирование model invocation в Amazon Bedrock и AWS CloudTrail data events для
bedrock:InvokeModelиbedrock:Converse, чтобы можно было атрибутировать злоупотребления и восстанавливать инциденты. - Ограничьте расходы. Настройте alarm на Amazon Bedrock on-demand quota и лимит запросов на сессию, чтобы предотвратить topic-flood и исчерпание бюджета.
- Классифицируйте сохраняемые данные. Если вы храните историю диалога, классифицируйте данные и маскируйте конфиденциальные значения перед записью.
- Изучите модель разделенной ответственности. См. AWS Shared Responsibility Model, чтобы понять, что управляет AWS, а что остается на вашей стороне.
Если хотите лучше понять код, можете спросить Kiro: Can you explain code in context?

Kiro отвечает следующим образом:

На этапе первичной разработки вывод агента корректно стримился в интерфейсе Streamlit, но также появлялся в терминале, где обрывался на середине. Хотя это не влияло на работу приложения, в среде разработки возникал лишний шум. После дальнейшего диалога с Kiro я доработал код, добавив перенаправление stdout, чтобы убедиться, что ответы агента отображаются только в нужном интерфейсе.
Это иллюстрирует важное преимущество разработки с Kiro — возможность итеративно улучшать реализацию с помощью обратной связи на естественном языке. Когда вы сталкиваетесь с такими крайними случаями, можно описать желаемое поведение, и Kiro поможет изменить код соответствующим образом — например, попросите добавить обработку ошибок для пустых или некорректно сформированных ответов агента.
Теперь посмотрим на доработанное приложение в работе.
Запуск агента
В терминале перейдите в каталог, где сохранен файл research_assistant.py, и выполните следующую команду:
streamlit run research_assistant.py
Это запустит приложение Streamlit.
Примечание: по умолчанию streamlit run привязывается к 127.0.0.1, поэтому интерфейс доступен только с этой машины. Не открывайте его в LAN (–server.address=0.0.0.0) или в интернете без аутентификации, защиты CSRF и ограничения расходов Amazon Bedrock. DNS-rebinding браузера против localhost — известная проблема локальных инструментов разработки. Для общего доступа рассмотрите встроенную аутентификацию Streamlit или reverse proxy через аутентифицированный gateway.
После выполнения предыдущей команды появится следующее сообщение. Поле email можно оставить пустым.
Добро пожаловать в Streamlit!
Если вы хотите получать полезные приветственные письма, новости, предложения, промоакции
и иногда swag, введите адрес электронной почты ниже. В противном случае
оставьте поле пустым.
Email:
Затем вы получите ссылку для открытия приложения Streamlit.


Вы можете ввести интересующую тему и выбрать Generate Research Report.

После этого сгенерируется исследовательский отчет, как показано ниже:

Если вам нужен другой отчет или дополнительные детали, вы можете попросить Kiro изменить код, когда файл находится в контексте, либо внести правки самостоятельно.
Заключение
В этой статье мы рассмотрели, как Strands Agents упрощает разработку agentic AI-приложений. Сочетая model-driven-подход Strands и возможности Kiro по генерации кода, я показал, как можно строить сложные AI-функции при минимуме кода.
Наш разбор показывает, что Strands Agents помогает сократить сложность AI-разработки за счет интуитивного создания агентов, а Kiro повышает продуктивность благодаря AI-assisted coding. Получающиеся приложения одновременно мощные и удобные в сопровождении, а с помощью prompt engineering их можно быстро адаптировать под свои задачи. По мере развития AI такие инструменты, как Strands Agents и Kiro, делают создание интеллектуальных автономных приложений, улучшающих конкретные сценарии и рабочие процессы, все более доступным.
Лицензия и отказ от ответственности
Пример кода в этой статье распространяется по лицензии MIT-0. Эта статья и код предоставляются как есть, без каких-либо гарантий; ответственность за безопасность, стоимость и операционные характеристики любой системы, построенной на основе этого материала, несут читатели.
Что учесть перед использованием в production
- Стоимость — каждый исследовательский запрос потребляет токены Amazon Bedrock; настройте alarm на квоты и лимит запросов на сессию до того, как откроете приложение кому-либо, кроме одного пользователя.
- Операционная готовность — в руководстве нет аудита, проверки ввода и аутентификации в интерфейсе Streamlit. Перед повторным использованием этого шаблона изучите раздел Соображения безопасности для production выше.
Материал — перевод статьи с английского.
Оригинал: From idea to AI app: Creating intelligent research assistants with Strands