View a markdown version of this page

Strands Agents SDK - Amazon Bedrock AgentCore

Strands Agents SDK

Utilizza l'SDK Strands Agents per una perfetta integrazione con i framework degli agenti, fornendo la gestione e il recupero automatici della memoria all'interno degli agenti conversazionali.

Innanzitutto, crea una memoria con tutte e tre le strategie a lungo termine. Puoi farlo con la AgentCore CLI o tramite il codice SDK negli esempi seguenti.

Esempio
AgentCore CLI
  1. I comandi di memoria AgentCore CLI devono essere eseguiti all'interno di un progetto agentcore esistente. Se non ne hai ancora uno, crea prima un progetto:

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

    Quindi aggiungi memoria e distribuisci:

    agentcore add memory --name ComprehensiveAgentMemory \ --strategies SEMANTIC,SUMMARIZATION,USER_PREFERENCE agentcore deploy
Interactive
  1. Esegui agentcore per aprire la TUI, quindi seleziona aggiungi e scegli Memoria:

  2. Inserisci il nome della memoria:

    Memory wizard: inserisci il nome ComprehensiveAgentMemory
  3. Seleziona tutte e tre le strategie (semantica, riepilogo, preferenza utente):

    Memory wizard: seleziona tutte e tre le strategie di memoria
  4. Rivedi la configurazione e premi Invio per confermare:

    Memory wizard: conferma ComprehensiveAgentMemory con tutte le strategie

    Quindi agentcore deploy esegui per fornire la memoria. AWS

Installare le dipendenze

pip install bedrock-agentcore pip install strands-agents

Aggiungi memoria a breve termine

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

Aggiungi memoria a lungo termine con strategie

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

Raggruppamento di messaggi

Quando batch_size è maggiore di 1, i messaggi vengono memorizzati nel buffer in memoria e inviati alla AgentCore memoria in una singola chiamata API una volta che il buffer raggiunge la dimensione configurata. Ciò riduce il numero di richieste API nelle conversazioni ad alto rendimento.

Importante

Quando si utilizzabatch_size > 1, è necessario utilizzare un with blocco o una chiamata al close() termine della sessione. In caso contrario, tutti i messaggi memorizzati nel buffer che non hanno ancora raggiunto la soglia del batch andranno persi.

Consigliato: gestore del contesto

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: chiusura esplicita ()

Se non puoi usare un with blocco, chiama 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

Altri esempi sono disponibili su GitHub: https://github.com/aws/bedrock-agentcore-sdk-python/tree/main/src/bedrock_agentcore/memory/integrations/strands