Spring AI SDK para Amazon Bedrock AgentCore ya está disponible de forma generalizada

La IA agente está transformando la forma en que las organizaciones utilizan la IA generativa, yendo más allá de las interacciones de respuesta rápida a sistemas autónomos que pueden planificar, ejecutar y completar tareas complejas de varios pasos. Si bien las pruebas tempranas de conceptos en espacios de IA agente entusiasman a las partes interesadas del negocio, escalarlos a producción requiere abordar los desafíos de escalabilidad, gobernanza y seguridad. Amazon Bedrock AgentCore es una plataforma de inteligencia artificial de Agentic para crear, implementar y operar agentes a escala utilizando cualquier marco y modelo.

Los desarrolladores de Java quieren crear agentes de IA utilizando patrones Spring conocidos, pero la implementación en producción requiere una infraestructura que es compleja de implementar desde cero. Amazon Bedrock AgentCore proporciona componentes básicos como infraestructura de tiempo de ejecución administrada (escalabilidad, confiabilidad, seguridad, observabilidad), memoria a corto y largo plazo, automatización del navegador, ejecución de código en espacio aislado y evaluaciones. Actualmente, integrar estas capacidades en una aplicación Spring requiere escribir controladores personalizados para cumplir con el contrato de AgentCore Runtime, manejar la transmisión de eventos del lado del servidor (SSE), implementar controles de estado, administrar la limitación de velocidad y conectar asesores Spring, repositorios de memoria y definiciones de herramientas. Son semanas de trabajo de infraestructura antes de escribir cualquier lógica del Agente de IA.

Con el nuevo SDK de Spring AI AgentCore, puede crear agentes de IA listos para producción y ejecutarlos en el altamente escalable AgentCore Runtime. El SDK de Spring AI AgentCore es una biblioteca de código abierto que incorpora las capacidades de Amazon Bedrock AgentCore a Spring AI a través de patrones conocidos: anotaciones, configuración automática y asesores componibles. SpringAI Builders agrega una dependencia, anota un método y el SDK se encarga del resto.

Comprensión del contrato AgentCore Runtime

AgentCore Runtime administra el ciclo de vida del agente y el escalamiento con precios de pago por uso, lo que significa que no paga por la computación inactiva. El tiempo de ejecución enruta las solicitudes entrantes a su agente y monitorea su estado, pero esto requiere que su agente siga un contrato. El contrato requiere que la implementación exponga dos puntos finales. El punto final /invocations recibe solicitudes y devuelve respuestas como transmisión JSON o SSE. El extremo de salud /ping informa un estado Saludable o SaludableOcupado. Las tareas de larga duración deben indicar que están ocupadas, o el tiempo de ejecución podría reducirlas para ahorrar costos. El SDK implementa este contrato automáticamente, incluida la detección de tareas asíncronas que informa el estado de ocupado cuando su agente está procesando.

Más allá del contrato, el SDK proporciona capacidades adicionales para cargas de trabajo de producción, como el manejo de respuestas SSE con un encuadre adecuado, manejo de contrapresión y gestión del ciclo de vida de la conexión para respuestas grandes. También proporciona limitación de velocidad y solicitudes de aceleración para proteger a su agente de picos de tráfico y limitar el consumo por usuario. Usted se concentra en la lógica del agente mientras el SDK maneja la integración del tiempo de ejecución.

En esta publicación, creamos un agente de IA listo para producción comenzando con un punto final de chat y luego agregando respuestas de transmisión, memoria de conversación y herramientas para navegación web y ejecución de código. Al final, tendrá un agente completamente funcional listo para implementar en AgentCore Runtime o ejecutarlo de forma independiente en su infraestructura existente.

Requisitos previos

Para seguirlo, necesitas:

Descripción general de la solución

El SDK de Spring AI AgentCore se basa en tres principios de diseño:

Convención sobre la configuración: los valores predeterminados sensibles se alinean con las expectativas de AgentCore (puerto 8080, rutas de los puntos finales, manejo del tipo de contenido) sin una configuración explícita. Desarrollo impulsado por anotaciones: una única anotación @AgentCoreInvocation transforma cualquier método Spring Bean en un punto final compatible con AgentCore con serialización automática, detección de transmisión y formato de respuesta. Flexibilidad de implementación: el SDK admite AgentCore Runtime para una implementación totalmente administrada, pero también puede usar módulos individuales (Memoria, Navegador, Intérprete de código) en aplicaciones que se ejecutan en Amazon EKS, Amazon ECS o cualquier otra infraestructura.

El siguiente diagrama muestra cómo interactúan los componentes del SDK. La anotación @AgentCoreInvocation maneja el contrato de tiempo de ejecución, mientras que ChatClient compone asesores de memoria, herramientas del navegador y el intérprete de código. La implementación en AgentCore Runtime es opcional. Puede utilizar los módulos SDK como funciones independientes.

Creando tu primer agente de IA

La siguiente sección le explica paso a paso cómo crear un agente completamente funcional:

Paso 1: agregue la dependencia del SDK

Agregue la lista de materiales Spring AI AgentCore a su proyecto Maven, luego incluya el iniciador del tiempo de ejecución:

org.springaicommunity spring-ai-agentcore-bom 1.0.0 pom import org.springaicommunity spring-ai-agentcore-runtime-starter

Paso 2: crear el agente

La anotación @AgentCoreInvocation le indica al SDK que este método maneja las solicitudes entrantes del agente. El SDK configura automáticamente los puntos finales POST /invocaciones y GET /ping, maneja la serialización JSON e informa el estado de salud automáticamente.

@Service public class MyAgent { ChatClient final privado chatClient; public MyAgent(ChatClient.Builder constructor) { this.chatClient = builder.build(); } @AgentCoreInvocation public String chat(solicitud PromptRequest) { return chatClient.prompt() .user(request.prompt()) .call() .content(); } } registrar PromptRequest (solicitud de cadena) {}

Paso 3: configurar Amazon Bedrock

Configure su modelo y región de AWS en 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

Paso 4: prueba localmente

Inicie la aplicación y envíe una solicitud:

mvn spring-boot:run curl -X POST http://localhost:8080/invocations -H "Tipo de contenido: aplicación/json" -d '{"prompt": "¿Qué es Spring AI?"}'

Es un agente de IA completo y compatible con AgentCore. Sin controladores personalizados, sin manejo de protocolos, sin implementación de controles de estado.

Paso 5: agregar transmisión

Para transmitir respuestas a medida que se generan, cambie el tipo de devolución a Flux. El SDK cambia automáticamente a salida SSE:

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

El SDK maneja el marco SSE, los encabezados de tipo de contenido, la preservación de nuevas líneas y el ciclo de vida de la conexión. Su código permanece enfocado en la interacción de la IA.

Paso 6: Agregue memoria a su agente

Los agentes del mundo real deben recordar lo que los usuarios dijeron anteriormente en una conversación (memoria a corto plazo) y lo que han aprendido con el tiempo (memoria a largo plazo). El SDK se integra con AgentCore Memory a través del patrón de asesor de Spring AI, interceptores que enriquecen las indicaciones con contexto antes de que lleguen al modelo.

La memoria a corto plazo (STM) mantiene los mensajes recientes mediante una ventana deslizante. La memoria a largo plazo (LTM) persiste el conocimiento a lo largo de las sesiones utilizando cuatro estrategias:

Estrategia Propósito Ejemplo Semántica Información objetiva sobre los usuarios “El usuario trabaja en finanzas” Preferencia del usuario Configuraciones y opciones explícitas “Se prefieren unidades métricas” Resumen Historial de conversaciones condensado Resúmenes de sesiones para continuidad Episódico Interacciones y lecciones pasadas “El usuario tuvo problemas con X la semana pasada”

AgentCore consolida estas estrategias de forma asincrónica, extrayendo información relevante sin la intervención explícita del desarrollador. Agregue la dependencia de la memoria y habilite el descubrimiento automático. En el modo de descubrimiento automático, el SDK detecta automáticamente estrategias de memoria a largo plazo y espacios de nombres disponibles sin configuración manual:

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

Luego inyecte AgentCoreMemory y compóngalo en su cliente de chat:

// Agregar al constructor MyAgent private final AgentCoreMemory agentCoreMemory; public MyAgent(ChatClient.Builder builder, AgentCoreMemory agentCoreMemory) { this.agentCoreMemory = agentCoreMemory; this.chatClient = constructor.build(); } // Actualiza el método de chat para incluir asesores de memoria @AgentCoreInvocation public String chat(PromptRequest request, AgentCoreContext context) { String sessionId = context.getHeader(AgentCoreHeaders.SESSION_ID); devolver chatClient.prompt() .user(request.prompt()) .advisors(agentCoreMemory.advisors) .advisors(a -> a.param(ChatMemory.CONVERSATION_ID, "usuario:" + sessionId)) .call() .content(); }

La lista agentCoreMemory.advisors incluye tanto STM como todos los asesores LTM configurados. Para opciones de configuración detalladas, consulte la documentación de Memoria.

Paso 7: Ampliar agentes con herramientas

AgentCore proporciona herramientas especializadas que el SDK expone como devoluciones de llamadas de herramientas Spring AI a través de la interfaz ToolCallbackProvider.

Automatización del navegador: los agentes pueden navegar por sitios web, extraer contenido, tomar capturas de pantalla e interactuar con elementos de la página utilizando AgentCore Browser:

org.springaicommunity navegador-ai-agentcore-spring

Intérprete de código: los agentes pueden escribir y ejecutar Python, JavaScript o TypeScript en un entorno limitado seguro utilizando AgentCore Code Interpreter. El sandbox incluye numpy, pandas y matplotlib. Los archivos generados se capturan a través del almacén de artefactos.

org.springaicommunity intérprete-de-código-ai-agentcore-de-spring

Ambas herramientas se integran a través de la interfaz ToolCallbackProvider de Spring AI. Aquí está el MyAgent final con memoria, navegador e intérprete de código compuestos juntos:

@Service public class MyAgent { ChatClient final privado chatClient; AgentCoreMemory final privado agenteCoreMemory; public MyAgent( ChatClient.Builder builder, AgentCoreMemory agentCoreMemory, @Qualifier("browserToolCallbackProvider") ToolCallbackProvider browserTools, @Qualifier("codeInterpreterToolCallbackProvider") ToolCallbackProvider codeInterpreterTools) { this.agentCoreMemory = agentCoreMemory; this.chatClient = constructor .defaultToolCallbacks(browserTools, codeInterpreterTools) .build(); } @AgentCoreInvocation chat público de Flux (solicitud PromptRequest, contexto AgentCoreContext) { String sessionId = context.getHeader (AgentCoreHeaders.SESSION_ID); devolver chatClient.prompt() .user(request.prompt()) .advisors(agentCoreMemory.advisors) .advisors(a -> a.param(ChatMemory.CONVERSATION_ID, "usuario:" + sessionId)) .stream() .content(); } }

El modelo ve todas las herramientas por igual y decide a cuál llamar según la solicitud del usuario. Si bien esta publicación se centra en Amazon Bedrock para acceder a los modelos básicos (FM), Spring AI admite múltiples proveedores de modelos de lenguaje grandes (LLM), incluidos OpenAI y Anthropic, para que pueda elegir los modelos que se ajusten a sus necesidades. Por ejemplo, un agente de gestión de viajes y gastos puede utilizar la herramienta del navegador para buscar opciones de vuelos y el intérprete de códigos para analizar patrones de gastos y generar gráficos, todo ello en una sola conversación:

Implementando su agente

El SDK admite dos modelos de implementación:

AgentCore Runtime: para una infraestructura completamente administrada, empaquete su aplicación como un contenedor ARM64, insértela en Amazon Elastic Container Registry (Amazon ECR) y cree un AgentCore Runtime que haga referencia a la imagen. El tiempo de ejecución maneja el escalado y el monitoreo del estado. El directorio de ejemplos/terraform proporciona infraestructura como código (IaC) con opciones de autenticación IAM y OAuth.

Independiente: utilice AgentCore Memory, Browser o Code Interpreter en aplicaciones que se ejecutan en Amazon Elastic Kubernetes Service (Amazon EKS), Amazon Elastic Container Service (Amazon ECS), Amazon Elastic Compute Cloud (Amazon EC2) o en las instalaciones. Con este enfoque, los equipos pueden adoptar las capacidades de AgentCore de forma incremental. Por ejemplo, agregar memoria a un servicio Spring Boot existente antes de migrar a AgentCore Runtime más adelante.

Autenticación y autorización

AgentCore Runtime admite dos métodos de autenticación: SigV4 basado en IAM para llamadas de servicio a servicio de AWS y OAuth2 para aplicaciones orientadas al usuario. Cuando su agente Spring AI se implementa en AgentCore Runtime, la autenticación se maneja en la capa de infraestructura. Su aplicación recibe la identidad del usuario autenticado a través de AgentCoreContext. Luego, se puede implementar una autorización detallada en su aplicación Spring utilizando patrones estándar de Spring Security con estos principios. Para implementaciones independientes, su aplicación Spring es responsable de proporcionar autenticación y autorización mediante Spring Security. En este caso, las llamadas a los servicios de AgentCore (Memoria, Navegador, Intérprete de código) se protegen mediante mecanismos de credenciales estándar de AWS SDK.

Conexión a herramientas MCP con AgentCore Gateway

Los agentes de Spring AI pueden acceder a herramientas organizativas a través de AgentCore Gateway, que proporciona compatibilidad con el protocolo de contexto modelo (MCP) con autenticación saliente y un registro de herramientas semánticas. Para usar Gateway, configure el punto final de su cliente Spring AI MCP para que apunte a AgentCore Gateway y autentíquese usando IAM SigV4 u 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}

Esto permite a los agentes descubrir e invocar herramientas empresariales mientras Gateway maneja la administración de credenciales para los servicios posteriores. Para ver un ejemplo práctico, consulte el taller Creación de agentes Java AI con Spring AI y Amazon Bedrock AgentCore, que demuestra la integración de MCP con AgentCore Gateway.

¿Qué sigue?

El SDK continúa evolucionando. Las próximas integraciones incluirán:

Observabilidad: integre el seguimiento, las métricas y el registro de Spring AI con soporte para Amazon CloudWatch y herramientas de observabilidad externas como LangFuse, Datadog y Dynatrace mediante OpenTelemetry. La observabilidad básica de AgentCore está disponible hoy. Evaluaciones: marcos de prueba y evaluación de la calidad de las respuestas de los agentes. Gestión avanzada de identidades: recuperación optimizada del contexto de seguridad para los agentes Spring AI.

limpiando

Si creó recursos mientras seguía esta publicación, elimínelos para evitar cargos continuos:

Elimine todos los agentes AgentCore Runtime que haya creado. Elimine imágenes de contenedores de Amazon ECR. Elimine las funciones y políticas de IAM creadas para la implementación del agente. Si utilizó los ejemplos de Terraform, ejecute terraform destroy para eliminar todos los recursos.

Conclusión

En esta publicación, le mostramos cómo crear agentes de IA listos para producción en Java utilizando el SDK Spring AI AgentCore. A partir de un método anotado, agregamos respuestas de transmisión, memoria persistente, automatización del navegador y ejecución de código, todo a través de patrones Spring conocidos. El SDK es de código abierto bajo la licencia Apache 2.0. Para empezar:

Explore el SDK de Spring AI AgentCore en GitHub. El repositorio incluye aplicaciones de ejemplo que puede usar como puntos de partida: simple-spring-boot-app: agente mínimo con manejo básico de solicitudes spring-ai-sse-chat-client: transmisión de respuestas con eventos enviados por el servidor spring-ai-memory-integration: uso de memoria a corto y largo plazo spring-ai-extended-chat-client: autenticación OAuth con aislamiento de memoria por usuario spring-ai-browser: capacidades de navegación web y captura de pantalla Lea Amazon AgentCore documentación para obtener detalles sobre los servicios de tiempo de ejecución, memoria, navegador e intérprete de código. Pruebe la consola de Amazon Bedrock para habilitar el acceso a los modelos y explorar los modelos básicos disponibles. Para una inmersión práctica en profundidad, pruebe el taller Creación de agentes de IA de Java con Spring AI y Amazon AgentCore. En aproximadamente cuatro horas, creará un asistente completo de gestión de viajes y gastos: agregará progresivamente personalidad, memoria, recuperación de conocimientos, navegación web, ejecución de código, integración de herramientas MCP e implementará sin servidor en AgentCore Runtime con autenticación y observabilidad. No se requiere experiencia en inteligencia artificial ni aprendizaje automático (AI/ML).

Agradecemos sus comentarios y contribuciones. Deje un comentario para compartir su experiencia o abra una incidencia en el repositorio de GitHub.

Sobre los autores

Andrei Shakirin

Andrei Shakirin es arquitecto senior de soluciones. Ayuda a los clientes a desarrollar soluciones en la nube, centrándose en Agentic AI, Containers, Spring AI y Java. Andrei es colaborador de Spring AI, MCP Java SDK y orador en conferencias internacionales de desarrolladores.

James Ward

James Ward Desarrollador de software profesional desde 1997, y gran parte de ese tiempo lo dedica a ayudar a los desarrolladores a crear software que no apesta. Un fanático de la programación funcional pura tipificada que a menudo compromete sus ideales para simplemente hacer las cosas. Actualmente es Developer Advocate para AWS y miembro del Comité Técnico de AAIF.

Maximiliano Schellhorn

Maximilian Schellhorn trabaja como arquitecto principal de soluciones en Amazon Web Services. Antes de eso, trabajó durante más de 10 años como ingeniero y arquitecto de software en diseño de sistemas distribuidos y transformaciones de monolito a microservicio. Su trabajo reciente se centra en SaaS, Serverless (Java) y Agentic AI.

Mateo Meckes

Matthew Meckes trabaja como especialista principal en contenedores en Amazon Web Services, ayudando a los clientes a crear y escalar sus cargas de trabajo más complejas en Kubernetes y EKS, con especial atención en Java, IA e ingeniería de plataformas.

Yuri Bezsonov

Yuri Bezsonov

Yuriy Bezsonov es arquitecto senior de soluciones. Ha pasado de ser desarrollador de software a gerente de ingeniería y arquitecto de soluciones. Ahora, como arquitecto senior de soluciones en AWS, ayuda a socios y clientes a desarrollar soluciones en la nube, centrándose en IA agente, tecnologías de contenedores, Kubernetes y Java. Yuriy posee las certificaciones de AWS y Kubernetes, y recibió la chaqueta dorada de AWS.

Muhammad Hamza Usmani

Muhammad Hamza Usmani es arquitecto senior de soluciones GTM de IA generativa. Trabaja en temas de GTM para Amazon Bedrock pan EMEA. Le apasiona trabajar con clientes y socios, motivado por el objetivo de aprovechar las capacidades de aprendizaje del modelo en contexto.

You missed

Cohere lanza Parse 5 (parse-v5.0): un modelo de lenguaje de visión de 2.300 millones que convierte documentos empresariales en rebajas[0]Cohere ha lanzado Parse (parse-v5.0), un modelo de análisis de documentos destinado a la ingesta empresarial de gran volumen. Es un modelo de lenguaje de visión de 2,300 millones de parámetros con una ventana de contexto de 8192 tokens y un espacio de ~4,6 GB, construido sobre la arquitectura North-Micro-Vision-Instruct de Cohere Labs. Parse toma una página PDF, PPT o JPEG como un URI de datos codificados en base64 y devuelve Markdown que contiene texto en orden de lectura, tablas representadas como HTML, listas, pares clave-valor, descripciones de imágenes y coordenadas del cuadro delimitador. No hay una etapa de OCR separada frente a él. Cohere fija el precio de la API de Parse a 1,50 dólares por cada 1.000 páginas y posiciona el modelo según la relación precio-rendimiento en lugar de la máxima precisión, una afirmación que la empresa respalda con una puntuación ParseBench autoinformada de 79,2 que, como detallamos a continuación, mide tres de las cinco dimensiones de ese punto de referencia. ¿Es desplegable? Sí, en producción. Parse generalmente está disponible a través de Cohere Parse API, Microsoft Foundry, AWS SageMaker y Model Vault de un solo inquilino. No hay lista de espera ni licencia de investigación. Qué empresas: Los equipos del mercado medio que ya ejecutan una pila RAG pueden comenzar con llamadas API medidas con una clave de prueba gratuita. Las grandes empresas con requisitos de residencia o de espacio aéreo van directamente a Model Vault o a una implementación privada. Las nuevas empresas en etapa inicial pueden usarlo, pero la economía solo comienza a importar a partir de aproximadamente 100.000 páginas al mes. Qué industrias: Cohere apunta a servicios financieros, seguros, atención médica y ciencias de la vida, sector público, telecomunicaciones, energía y manufactura: las verticales con gran cantidad de documentos donde los formularios escaneados y las tablas densas son la norma. Aplicaciones: ingesta de RAG, procesamiento inteligente de documentos, procesamiento de reclamaciones y facturas, búsqueda de contratos y presentaciones, y brindar contexto de documentos a los agentes. ¿Qué es el análisis? Parse es un modelo de lenguaje de visión de 2,300 millones de parámetros construido sobre la arquitectura North-Micro-Vision-Instruct de Cohere Labs, con una ventana de contexto de 8192 tokens y una huella de ~4,6 GB. Acepta páginas PDF, PPT y JPEG como URI de datos codificados en base64 y devuelve Markdown que contiene texto del documento, listas, tablas representadas como HTML, coordenadas del cuadro delimitador y descripciones de imágenes. No hay una etapa de OCR separada frente a él. El modelo recupera el texto y el orden de lectura, tablas, listas, formularios y pares clave-valor, imágenes y leyendas, y la ubicación de los límites de las páginas y los elementos visuales en una sola pasada. Nueve idiomas figuran como estables (árabe, inglés, francés, alemán, italiano, japonés, coreano, portugués y español) con soporte de disparo cero en otros lugares con menor precisión. En la práctica, dos modos de salida importan. El valor predeterminado devuelve una cadena Markdown por página. Configurar output_format=”blocks” devuelve bloques escritos, donde un bloque de tabla lleva su HTML, su cuadro delimitador y una descripción. Ese segundo modo es lo que hace posible la trazabilidad a nivel de cita. ‘+d