View a markdown version of this page

Kit de développement logiciel Strands Agents - Base rocheuse de l'Amazonie AgentCore

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Kit de développement logiciel Strands Agents

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

Tout d'abord, créez un souvenir avec les trois stratégies à long terme. Vous pouvez le faire à l'aide de l' AgentCore interface de ligne de commande 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 --project-name MemoryProject --no-agent cd MemoryProject

    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 Mémoire  :

  2. Entrez le nom de la mémoire :

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

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

    Magicien de mémoire : confirmez ComprehensiveAgentMemory avec toutes les stratégies

    Exécutez ensuite agentcore deploy pour provisionner 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

Lorsque batch_size cette valeur est supérieure à 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 permet de réduire 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 de traitement par lots seront perdus.

Recommandé : Context manager

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