View a markdown version of this page

SDK de Strands Agents - Amazon Bedrock AgentCore

SDK de Strands Agents

Utilice el SDK de Strands Agents para una integración perfecta con los marcos de los agentes, lo que proporciona una gestión y recuperación automáticas de la memoria en los agentes conversacionales.

En primer lugar, cree una memoria con las tres estrategias a largo plazo. Puede hacerlo con la AgentCore CLI o mediante el código del SDK de los ejemplos siguientes.

ejemplo
AgentCore CLI
  1. Los comandos de memoria AgentCore CLI deben ejecutarse dentro de un proyecto agentcore existente. Si aún no tiene uno, cree primero un proyecto:

    agentcore create --name my-agent --no-agent cd my-agent

    A continuación, añada memoria e implemente:

    agentcore add memory --name ComprehensiveAgentMemory \ --strategies SEMANTIC,SUMMARIZATION,USER_PREFERENCE agentcore deploy
Interactive
  1. Ejecute agentcore para abrir la TUI, luego seleccione agregar y elija Memoria:

  2. Introduzca el nombre de la memoria:

    Asistente de memoria: introduzca el ComprehensiveAgentMemory nombre
  3. Seleccione las tres estrategias (semántica, resumida y preferencia del usuario):

    Asistente de memoria: selecciona las tres estrategias de memoria
  4. Revise la configuración y pulse Entrar para confirmar:

    Asistente de memoria: confirme ComprehensiveAgentMemory con todas las estrategias

    A continuación, ejecute agentcore deploy para aprovisionar la memoria AWS.

Instale las dependencias

pip install bedrock-agentcore pip install strands-agents

Agrega memoria a corto plazo

from datetime import datetime from strands import Agent from bedrock_agentcore.memory import MemoryClient from bedrock_agentcore.memory.integrations.strands.config import AgentCoreMemoryConfig, RetrievalConfig from bedrock_agentcore.memory.integrations.strands.session_manager import AgentCoreMemorySessionManager client = MemoryClient(region_name="us-east-1") basic_memory = client.create_memory( name="BasicTestMemory", description="Basic memory for testing short-term functionality" ) MEM_ID = basic_memory.get('id') ACTOR_ID = "actor_id_test_%s" % datetime.now().strftime("%Y%m%d%H%M%S") SESSION_ID = "testing_session_id_%s" % datetime.now().strftime("%Y%m%d%H%M%S") # Configure memory agentcore_memory_config = AgentCoreMemoryConfig( memory_id=MEM_ID, session_id=SESSION_ID, actor_id=ACTOR_ID ) # Create session manager session_manager = AgentCoreMemorySessionManager( agentcore_memory_config=agentcore_memory_config, region_name="us-east-1" ) # Create agent agent = Agent( system_prompt="You are a helpful assistant. Use all you know about the user to provide helpful responses.", session_manager=session_manager, ) agent("I like sushi with tuna") # Agent remembers this preference agent("I like pizza") # Agent acknowledges both preferences agent("What should I buy for lunch today?") # Agent suggests options based on remembered preferences

Añada memoria a largo plazo con estrategias

from bedrock_agentcore.memory import MemoryClient from strands import Agent from bedrock_agentcore.memory.integrations.strands.config import AgentCoreMemoryConfig, RetrievalConfig from bedrock_agentcore.memory.integrations.strands.session_manager import AgentCoreMemorySessionManager from datetime import datetime # Create comprehensive memory with all built-in strategies client = MemoryClient(region_name="us-east-1") comprehensive_memory = client.create_memory_and_wait( name="ComprehensiveAgentMemory", description="Full-featured memory with all built-in strategies", strategies=[ { "summaryMemoryStrategy": { "name": "SessionSummarizer", "namespaceTemplates": ["/summaries/{actorId}/{sessionId}/"] } }, { "userPreferenceMemoryStrategy": { "name": "PreferenceLearner", "namespaceTemplates": ["/preferences/{actorId}/"] } }, { "semanticMemoryStrategy": { "name": "FactExtractor", "namespaceTemplates": ["/facts/{actorId}/"] } } ] ) MEM_ID = comprehensive_memory.get('id') ACTOR_ID = "actor_id_test_%s" % datetime.now().strftime("%Y%m%d%H%M%S") SESSION_ID = "testing_session_id_%s" % datetime.now().strftime("%Y%m%d%H%M%S") # Configure memory agentcore_memory_config = AgentCoreMemoryConfig( memory_id=MEM_ID, session_id=SESSION_ID, actor_id=ACTOR_ID ) # Create session manager session_manager = AgentCoreMemorySessionManager( agentcore_memory_config=agentcore_memory_config, region_name="us-east-1" ) # Create agent agent = Agent( system_prompt="You are a helpful assistant. Use all you know about the user to provide helpful responses.", session_manager=session_manager, ) agent("I like sushi with tuna") # Agent remembers this preference agent("I like pizza") # Agent acknowledges both preferences agent("What should I buy for lunch today?") # Agent suggests options based on remembered preferences

Agrupación de mensajes

Cuando batch_size es mayor que 1, los mensajes se almacenan en la memoria y se envían a la AgentCore memoria en una sola llamada a la API una vez que el búfer alcanza el tamaño configurado. Esto reduce la cantidad de solicitudes a la API en las conversaciones de alto rendimiento.

importante

Al usarlobatch_size > 1, debes usar un with bloqueo o una llamada close() cuando se complete la sesión. De lo contrario, se perderán los mensajes almacenados en búfer que aún no hayan alcanzado el umbral del lote.

Recomendado: gestor de contexto

from strands import Agent from bedrock_agentcore.memory.integrations.strands.config import AgentCoreMemoryConfig from bedrock_agentcore.memory.integrations.strands.session_manager import AgentCoreMemorySessionManager config = AgentCoreMemoryConfig( memory_id=MEM_ID, session_id=SESSION_ID, actor_id=ACTOR_ID, batch_size=10, # Buffer up to 10 messages before sending ) # The `with` block guarantees all buffered messages are flushed on exit with AgentCoreMemorySessionManager(config, region_name='us-east-1') as session_manager: agent = Agent( system_prompt="You are a helpful assistant.", session_manager=session_manager, ) agent("Hello!") agent("Tell me about AWS") # All remaining buffered messages are automatically flushed here

Alternativa: cierre explícito ()

Si no puede usar un with bloque, llame close() manualmente:

session_manager = AgentCoreMemorySessionManager(config, region_name='us-east-1') try: agent = Agent( system_prompt="You are a helpful assistant.", session_manager=session_manager, ) agent("Hello!") finally: session_manager.close() # Flush any remaining buffered messages

Hay más ejemplos disponibles en GitHub: https://github.com/aws/bedrock-agentcore-sdk-python/tree/main/src/bedrock_agentcore/memory/integrations/strands