Spring AI SDK для Amazon Bedrock AgentCore стал общедоступным

Agentic AI меняет то, как организации используют генеративный ИИ: от взаимодействия в формате запрос-ответ — к автономным системам, которые могут планировать, выполнять и завершать сложные многошаговые задачи. Хотя ранние proof of concept в области Agentic AI вызывают интерес у бизнес-стейкхолдеров, для вывода таких систем в продакшн нужно решать вопросы масштабируемости, управления и безопасности. Amazon Bedrock AgentCore — это платформа Agentic AI для создания, развертывания и эксплуатации агентов в масштабе на любом framework и любой модели.

Java-разработчики хотят строить AI agents, используя знакомые паттерны Spring, но production-развертывание требует инфраструктуры, которую сложно реализовать с нуля. Amazon Bedrock AgentCore предоставляет такие building blocks, как управляемая runtime-инфраструктура (масштабируемость, надежность, безопасность, observability), short-term и long-term memory, browser automation, sandboxed code execution и evaluations. Чтобы встроить эти возможности в Spring-приложение, сегодня нужно писать custom controllers для выполнения AgentCore Runtime contract, обрабатывать Server-Side Events (SSE) streaming, реализовывать health checks, управлять rate limiting и связывать Spring advisors, memory repositories и tool definitions. Это недели инфраструктурной работы еще до написания самой логики AI agent.

С новым Spring AI AgentCore SDK вы можете создавать production-ready AI agents и запускать их на масштабируемом AgentCore Runtime. Spring AI AgentCore SDK — это open source библиотека, которая приносит возможности Amazon Bedrock AgentCore в Spring AI через привычные подходы: annotations, auto-configuration и composable advisors. Spring-разработчикам достаточно добавить dependency, аннотировать метод — остальное сделает SDK.

Understanding the AgentCore Runtime contract

AgentCore Runtime управляет жизненным циклом агента и масштабированием по модели pay-per-use, поэтому вы не платите за простой compute. Runtime маршрутизирует входящие запросы к вашему агенту и отслеживает его health, но для этого агент должен соблюдать contract. Contract требует, чтобы реализация предоставляла два endpoint. Endpoint /invocations принимает запросы и возвращает ответы в виде JSON или SSE streaming. Health endpoint /ping сообщает статус Healthy или HealthyBusy. Долгие задачи должны сигнализировать, что они заняты, иначе runtime может уменьшить их масштаб, чтобы сократить расходы. SDK реализует этот contract автоматически, включая обнаружение async task, которое сообщает busy status, когда агент обрабатывает запрос.

Помимо contract, SDK дает дополнительные возможности для production workloads: обработку SSE-ответов с корректным framing, backpressure handling и управлением lifecycle соединения для больших ответов. Он также предоставляет rate limiting и throttling запросов, чтобы защитить агента от всплесков трафика и ограничить потребление на пользователя. Вы сосредотачиваетесь на логике агента, а SDK берет на себя runtime integration.

В этой статье мы собираем production-ready AI agent, начиная с chat endpoint, затем добавляя streaming responses, conversation memory и tools для web browsing и code execution. В итоге получится полностью функциональный агент, готовый к развертыванию в AgentCore Runtime или к запуску отдельно на вашей существующей инфраструктуре.

Prerequisites

Чтобы повторить пример, вам понадобятся:

  • Java 17 или выше (рекомендуется Java 25)
  • Spring Boot 3.5 или выше
  • Аккаунт AWS
  • Maven или Gradle

Solution overview

Spring AI AgentCore SDK построен на трех принципах:

  • Convention over configuration — разумные значения по умолчанию соответствуют ожиданиям AgentCore (порт 8080, пути endpoint, обработка content-type) без явной настройки.
  • Annotation-driven development — одна аннотация @AgentCoreInvocation превращает любой метод Spring bean в endpoint, совместимый с AgentCore, с автоматической сериализацией, обнаружением streaming и форматированием ответа.
  • Deployment flexibility — SDK поддерживает AgentCore Runtime для полностью управляемого развертывания, но вы также можете использовать отдельные модули (Memory, Browser, Code Interpreter) в приложениях на Amazon EKS, Amazon ECS или любой другой инфраструктуре.

На схеме ниже показано, как взаимодействуют компоненты SDK. Аннотация @AgentCoreInvocation отвечает за runtime contract, а ChatClient объединяет Memory advisors, Browser tools и Code Interpreter. Развертывание в AgentCore Runtime необязательно. Модули SDK можно использовать и как самостоятельные возможности.

Creating your first AI agent

Ниже пошагово показано, как создать полностью функционального агента:

Step 1: Add the SDK dependency

Добавьте Spring AI AgentCore BOM в Maven-проект, затем подключите runtime starter:

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springaicommunity</groupId>
<artifactId>spring-ai-agentcore-bom</artifactId>
<version>1.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springaicommunity</groupId>
<artifactId>spring-ai-agentcore-runtime-starter</artifactId>
</dependency>
</dependencies>

Step 2: Create the agent

Аннотация @AgentCoreInvocation сообщает SDK, что этот метод обрабатывает входящие запросы агента. SDK автоматически настраивает endpoint POST /invocations и GET /ping, выполняет JSON serialization и автоматически сообщает статус health.

@Service
public class MyAgent {

private final ChatClient chatClient;

public MyAgent(ChatClient.Builder builder) {
this.chatClient = builder.build();
}

@AgentCoreInvocation
public String chat(PromptRequest request) {
return chatClient.prompt()
.user(request.prompt())
.call()
.content();
}
}

record PromptRequest(String prompt) {}

Step 3: Configure Amazon Bedrock

Укажите модель и регион AWS в application.properties:spring.ai.bedrock.aws.region=us-east-1 spring.ai.bedrock.converse.chat.options.model=global.anthropic.claude-sonnet-4-5-20250929-v1:0

Step 4: Test locally

Запустите приложение и отправьте запрос:

mvn spring-boot:run

curl -X POST http://localhost:8080/invocations \
-H "Content-Type: application/json" \
-d '{"prompt": "What is Spring AI?"}'

Это уже полноценный, совместимый с AgentCore AI agent. Без custom controllers, без протокольной обвязки, без реализации health check.

Step 5: Add streaming

Чтобы передавать ответы по мере генерации, измените тип возвращаемого значения на Flux<String>. SDK автоматически переключится на SSE output:

@AgentCoreInvocation
public Flux<String> streamingChat(PromptRequest request) {
return chatClient.prompt()
.user(request.prompt())
.stream()
.content();
}

SDK обрабатывает SSE framing, заголовки Content-Type, сохранение переводов строк и lifecycle соединения. Ваш код остается сосредоточенным на взаимодействии с AI.

Step 6: Add memory to your agent

Реальные агенты должны помнить, что пользователи говорили ранее в разговоре (short-term memory), и то, чему они научились со временем (long-term memory). SDK интегрируется с AgentCore Memory через advisor pattern Spring AI — интерсепторы, которые обогащают prompt контекстом до того, как он попадет в модель.

Short-term memory (STM) хранит недавние сообщения с помощью sliding window. Long-term memory (LTM) сохраняет знания между сессиями с использованием четырех стратегий:

Strategy Purpose Example
Semantic Фактическая информация о пользователях «Пользователь работает в финансах»
User preference Явные настройки и выбор «Предпочтительны метрические единицы»
Summary Сжатая история разговора Сводки сессий для непрерывности
Episodic Прошлые взаимодействия и выводы «У пользователя были сложности с X на прошлой неделе»

AgentCore асинхронно объединяет эти стратегии, извлекая релевантную информацию без явного вмешательства разработчика. Добавьте dependency для memory и включите auto-discovery. В режиме auto-discovery SDK автоматически определяет доступные стратегии long-term memory и namespaces без ручной настройки:

agentcore.memory.memory-id=${AGENTCORE_MEMORY_ID}
agentcore.memory.long-term.auto-discovery=true

Затем внедрите AgentCoreMemory и подключите его в chat client:

// Add to MyAgent constructor
private final AgentCoreMemory agentCoreMemory;

public MyAgent(ChatClient.Builder builder, AgentCoreMemory agentCoreMemory) {
this.agentCoreMemory = agentCoreMemory;
this.chatClient = builder.build();
}

// Update the chat method to include memory advisors
@AgentCoreInvocation
public String chat(PromptRequest request, AgentCoreContext context) {
String sessionId = context.getHeader(AgentCoreHeaders.SESSION_ID);

return chatClient.prompt()
.user(request.prompt())
.advisors(agentCoreMemory.advisors)
.advisors(a -> a.param(ChatMemory.CONVERSATION_ID, "user:" + sessionId))
.call()
.content();
}

Список agentCoreMemory.advisors включает и STM, и все настроенные LTM advisors. Подробные параметры конфигурации см. в документации Memory.

Step 7: Extending agents with tools

AgentCore предоставляет специализированные tools, которые SDK экспортирует как Spring AI tool callbacks через интерфейс ToolCallbackProvider.

Browser automation — агенты могут переходить по сайтам, извлекать контент, делать скриншоты и взаимодействовать с элементами страницы с помощью AgentCore Browser:

<dependency>
<groupId>org.springaicommunity</groupId>
<artifactId>spring-ai-agentcore-browser</artifactId>
</dependency>

Code interpreter — агенты могут писать и запускать Python, JavaScript или TypeScript в защищенной песочнице с помощью AgentCore Code Interpreter. Песочница включает numpy, pandas и matplotlib. Сгенерированные файлы сохраняются через artifact store.

<dependency>
<groupId>org.springaicommunity</groupId>
<artifactId>spring-ai-agentcore-code-interpreter</artifactId>
</dependency>

Оба инструмента интегрируются через интерфейс Spring AI ToolCallbackProvider. Ниже — финальная версия MyAgent, где вместе собраны memory, browser и code interpreter:

@Service
public class MyAgent {

private final ChatClient chatClient;
private final AgentCoreMemory agentCoreMemory;

public MyAgent(
ChatClient.Builder builder,
AgentCoreMemory agentCoreMemory,
@Qualifier("browserToolCallbackProvider") ToolCallbackProvider browserTools,
@Qualifier("codeInterpreterToolCallbackProvider") ToolCallbackProvider codeInterpreterTools) {
this.agentCoreMemory = agentCoreMemory;
this.chatClient = builder
.defaultToolCallbacks(browserTools, codeInterpreterTools)
.build();
}

@AgentCoreInvocation
public Flux<String> chat(PromptRequest request, AgentCoreContext context) {
String sessionId = context.getHeader(AgentCoreHeaders.SESSION_ID);

return chatClient.prompt()
.user(request.prompt())
.advisors(agentCoreMemory.advisors)
.advisors(a -> a.param(ChatMemory.CONVERSATION_ID, "user:" + sessionId))
.stream()
.content();
}
}

Модель видит все tools одинаково и сама решает, какой из них вызвать в зависимости от запроса пользователя. Хотя в этой статье основное внимание уделено Amazon Bedrock для доступа к foundation models (FMs), Spring AI поддерживает нескольких провайдеров large language model (LLM), включая OpenAI и Anthropic, так что вы можете выбрать модели под свои задачи. Например, агент для управления поездками и расходами может использовать browser tool для поиска вариантов перелета и code interpreter для анализа расходов и построения графиков — все в рамках одного разговора:

Deploying your agent

SDK поддерживает два варианта развертывания:

AgentCore Runtime — для полностью управляемой инфраструктуры упакуйте приложение в ARM64 container, отправьте его в Amazon Elastic Container Registry (Amazon ECR) и создайте AgentCore Runtime, который ссылается на этот образ. Runtime берет на себя масштабирование и мониторинг health. Каталог examples/terraform содержит infrastructure as code (IaC) с вариантами IAM и OAuth authentication.

Standalone — используйте AgentCore Memory, Browser или Code Interpreter в приложениях, работающих на Amazon Elastic Kubernetes Service (Amazon EKS), Amazon Elastic Container Service (Amazon ECS), Amazon Elastic Compute Cloud (Amazon EC2) или on-premises. Такой подход позволяет внедрять возможности AgentCore постепенно. Например, можно добавить memory в существующий Spring Boot-сервис, а уже потом мигрировать на AgentCore Runtime.

Authentication and authorization

AgentCore Runtime поддерживает два метода authentication: IAM-based SigV4 для AWS service-to-service calls и OAuth2 для пользовательских приложений. Когда ваш Spring AI agent развернут в AgentCore Runtime, authentication обрабатывается на уровне инфраструктуры. Приложение получает identity аутентифицированного пользователя через AgentCoreContext. После этого fine-grained authorization можно реализовать в Spring-приложении стандартными паттернами Spring Security. Для standalone-развертываний именно Spring-приложение отвечает за authentication и authorization с помощью Spring Security. В этом случае вызовы к сервисам AgentCore (Memory, Browser, Code Interpreter) защищаются стандартными механизмами AWS SDK credential.

Connecting to MCP tools with AgentCore Gateway

Spring AI agents могут получать доступ к корпоративным инструментам через AgentCore Gateway, который предоставляет поддержку Model Context Protocol (MCP) с outbound authentication и semantic tool registry. Чтобы использовать Gateway, настройте endpoint Spring AI MCP client так, чтобы он указывал на AgentCore Gateway, и выполните authentication через IAM SigV4 или OAuth2:

spring.ai.mcp.client.toolcallback.enabled=true
spring.ai.mcp.client.initialized=false
spring.ai.mcp.client.streamable-http.connections.gateway.url=${GATEWAY_URL}

Это позволяет агентам обнаруживать и вызывать enterprise tools, а Gateway берет на себя управление credential для downstream services. Практический пример можно найти в workshop Building Java AI agents with Spring AI and Amazon Bedrock AgentCore, где показана интеграция MCP с AgentCore Gateway.

What’s next?

SDK продолжает развиваться. В будущих интеграциях появятся:

  • Observability — интеграция Spring AI tracing, metrics и logging с поддержкой Amazon CloudWatch и внешних observability-инструментов, таких как LangFuse, Datadog и Dynatrace, через OpenTelemetry. Базовая observability в AgentCore доступна уже сейчас.
  • Evaluations — фреймворки для тестирования и оценки качества ответов агента.
  • Advanced Identity management — упрощенное получение security context для Spring AI Agents.

Cleaning up

Если вы создавали ресурсы по ходу статьи, удалите их, чтобы избежать дальнейших расходов:

  1. Удалите все созданные AgentCore Runtime agents.
  2. Удалите container images из Amazon ECR.
  3. Удалите IAM roles и policies, созданные для развертывания агента.
  4. Если вы использовали примеры Terraform, запустите terraform destroy, чтобы удалить все ресурсы.

Conclusion

В этой статье мы показали, как строить production-ready AI agents на Java с помощью Spring AI AgentCore SDK. Начиная с аннотированного метода, мы добавили streaming responses, persistent memory, browser automation и code execution — все через знакомые Spring patterns. SDK распространяется как open source под лицензией Apache 2.0. Чтобы начать:

  • Изучите Spring AI AgentCore SDK на GitHub. В репозитории есть примеры приложений, которые можно взять за основу:
    • simple-spring-boot-app — минимальный агент с базовой обработкой запросов
    • spring-ai-sse-chat-client — streaming responses через Server-Sent Events
    • spring-ai-memory-integration — использование short-term и long-term memory
    • spring-ai-extended-chat-client — OAuth authentication с изоляцией memory на уровне пользователя
    • spring-ai-browser — возможности web browsing и скриншотов
  • Прочитайте документацию Amazon AgentCore по сервисам Runtime, Memory, Browser и Code Interpreter.
  • Попробуйте консоль Amazon Bedrock, чтобы включить доступ к моделям и изучить доступные foundation models.
  • Для практического погружения попробуйте workshop Building Java AI agents with Spring AI and Amazon AgentCore. Примерно за четыре часа вы соберете полноценного ассистента для управления поездками и расходами — постепенно добавляя persona, memory, knowledge retrieval, web browsing, code execution, MCP tool integration и развертывание serverless в AgentCore Runtime с authentication и observability. Опыт в artificial intelligence и machine learning (AI/ML) не требуется.

Материал — перевод статьи с английского.

Оригинал: Spring AI SDK for Amazon Bedrock AgentCore is now Generally Available