View a markdown version of this page

Strands Agents SDK - Amazon Grundgestein AgentCore

Strands Agents SDK

Verwenden Sie das Strands Agents SDK für eine nahtlose Integration mit Agenten-Frameworks und ermöglichen Sie automatische Speicherverwaltung und automatischen Speicherabruf innerhalb von Konversationsagenten.

Erstellen Sie zunächst ein Gedächtnis mit allen drei langfristigen Strategien. Sie können dies mit der AgentCore CLI oder über den SDK-Code in den folgenden Beispielen tun.

Beispiel
AgentCore CLI
  1. Die AgentCore CLI-Speicherbefehle müssen in einem vorhandenen Agentcore-Projekt ausgeführt werden. Wenn Sie noch keins haben, erstellen Sie zuerst ein Projekt:

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

    Fügen Sie dann Speicher hinzu und stellen Sie Folgendes bereit:

    agentcore add memory --name ComprehensiveAgentMemory \ --strategies SEMANTIC,SUMMARIZATION,USER_PREFERENCE agentcore deploy
Interactive
  1. Führen Sie den Befehl aus, agentcore um die TUI zu öffnen, wählen Sie dann Hinzufügen und dann Speicher:

  2. Geben Sie den Speichernamen ein:

    Speicherassistent: Geben Sie den ComprehensiveAgentMemory Namen ein
  3. Wählen Sie alle drei Strategien aus (Semantik, Zusammenfassung, Benutzerpräferenz):

    Speicherassistent: Wählen Sie alle drei Speicherstrategien aus
  4. Überprüfen Sie die Konfiguration und drücken Sie die Eingabetaste, um Folgendes zu bestätigen:

    Speicherassistent: Bestätigen Sie ComprehensiveAgentMemory mit allen Strategien

    Führen Sie dann agentcore deploy den Vorgang aus, um den Speicher bereitzustellen AWS.

Abhängigkeiten installieren

pip install bedrock-agentcore pip install strands-agents

Kurzzeitgedächtnis hinzufügen

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

Fügen Sie das Langzeitgedächtnis mit Strategien hinzu

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

Batching von Nachrichten

Wenn der Wert größer als 1 batch_size ist, werden Nachrichten im Speicher gepuffert und in einem einzigen API-Aufruf an den AgentCore Speicher gesendet, sobald der Puffer die konfigurierte Größe erreicht hat. Dadurch wird die Anzahl der API-Anfragen bei Konversationen mit hohem Durchsatz reduziert.

Wichtig

Bei der Verwendung batch_size > 1 müssen Sie einen with Block verwenden oder aufrufenclose(), wenn die Sitzung abgeschlossen ist. Andernfalls gehen alle zwischengespeicherten Nachrichten verloren, die den Batch-Schwellenwert noch nicht erreicht haben.

Empfohlen: Kontext-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: Explizites Schließen ()

Wenn Sie einen with Block nicht verwenden können, rufen Sie close() manuell auf:

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

Weitere Beispiele sind verfügbar unter GitHub: https://github.com/aws/bedrock-agentcore-sdk-python/tree/main/src/bedrock_agentcore/memory/integrations/strands