View a markdown version of this page

SDK de agentes de Strands - Base amazónica AgentCore

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

SDK de agentes de Strands

Utilice el SDK de Strands Agents para lograr una integración perfecta con los marcos de los agentes, lo que permite gestionar y recuperar la memoria de forma automática 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 SDK de los ejemplos siguientes.

ejemplo
AgentCore CLI
  1. Los comandos de memoria de la AgentCore CLI se deben ejecutar dentro de un proyecto de agentcore existente. Si aún no tienes uno, primero crea un proyecto:

    agentcore create --project-name MemoryProject --no-agent cd MemoryProject

    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 y, a continuación, 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: seleccione 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

Agregue 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

Agregue 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

Procesamiento por lotes de mensajes

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

importante

Cuando lo utilicesbatch_size > 1, debes usar un with bloqueo o una llamada close() cuando se complete la sesión. De lo contrario, se perderán todos 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 puedes usar un with bloque, llama 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