View a markdown version of this page

SDK Strands Agents - Amazon Bedrock AgentCore

SDK Strands Agents

Utilisez le SDK Strands Agents pour une intégration fluide aux frameworks d'agents, en fournissant une gestion et une récupération automatiques de la mémoire au sein des agents conversationnels.

Tout d'abord, créez une mémoire avec les trois stratégies à long terme. Vous pouvez le faire à l'aide de la AgentCore CLI ou du code du SDK dans les exemples ci-dessous.

Exemple
AgentCore CLI
  1. Les commandes de mémoire de la AgentCore CLI doivent être exécutées dans un projet agentcore existant. Si vous n'en avez pas encore, créez d'abord un projet :

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

    Ajoutez ensuite de la mémoire et déployez :

    agentcore add memory --name ComprehensiveAgentMemory \ --strategies SEMANTIC,SUMMARIZATION,USER_PREFERENCE agentcore deploy
Interactive
  1. Exécutez agentcore pour ouvrir le TUI, puis sélectionnez Ajouter et choisissez Memory :

  2. Entrez le nom de la mémoire :

    Assistant mémoire : entrez le ComprehensiveAgentMemory nom
  3. Sélectionnez les trois stratégies (sémantique, synthèse, préférence utilisateur) :

    Assistant mémoire : sélectionnez les trois stratégies de mémoire
  4. Vérifiez la configuration et appuyez sur Entrée pour confirmer :

    Assistant de mémorisation : confirmez ComprehensiveAgentMemory avec toutes les stratégies

    Exécutez ensuite agentcore deploy pour approvisionner la mémoire AWS.

Installation des dépendances

pip install bedrock-agentcore pip install strands-agents

Ajouter de la mémoire à court terme

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

Ajoutez de la mémoire à long terme grâce à des stratégies

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

Traitement par lots de messages

Lorsqu'il batch_size est supérieur à 1, les messages sont mis en mémoire tampon et envoyés à AgentCore Memory en un seul appel d'API une fois que la mémoire tampon atteint la taille configurée. Cela réduit le nombre de demandes d'API dans les conversations à haut débit.

Important

Lors de l'utilisationbatch_size > 1, vous devez utiliser un with bloc ou un appel close() lorsque la session est terminée. Dans le cas contraire, tous les messages mis en mémoire tampon qui n'ont pas encore atteint le seuil du lot seront perdus.

Recommandé : gestionnaire de contexte

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

Alternative : fermeture explicite ()

Si vous ne pouvez pas utiliser un with bloc, appelez close() manuellement :

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

D'autres exemples sont disponibles sur GitHub : https://github.com/aws/bedrock-agentcore-sdk-python/tree/main/src/bedrock_agentcore/memory/integrations/strands