View a markdown version of this page

ストランドエージェント SDK - Amazon Bedrock AgentCore

ストランドエージェント SDK

Strands Agents SDK を使用してエージェントフレームワークとシームレスに統合し、会話型エージェント内で自動的にメモリ管理と取得を行います。

まず、3 つの長期戦略すべてを使用してメモリを作成します。これを行うには、AgentCore CLI を使用するか、以下の例の SDK コードを使用します。

AgentCore CLI
  1. AgentCore CLI メモリコマンドは、既存のエージェントコアプロジェクト内で実行する必要があります。まだプロジェクトを作成していない場合は、まずプロジェクトを作成します。

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

    次に、メモリを追加してデプロイします。

    agentcore add memory --name ComprehensiveAgentMemory \ --strategies SEMANTIC,SUMMARIZATION,USER_PREFERENCE agentcore deploy
Interactive
  1. agentcore を実行して TUI を開き、追加 を選択してメモリ を選択します。

  2. メモリ名を入力します。

    メモリウィザード: ComprehensiveAgentMemory 名を入力します
  3. 3 つの戦略 (セマンティック、要約、ユーザー設定) をすべて選択します。

    メモリウィザード: 3 つのメモリ戦略をすべて選択する
  4. 設定を確認し、Enter キーを押して以下を確認します。

    メモリウィザード: ComprehensiveAgentMemory をすべての戦略で確認する

    次に、 agentcore deployを実行してメモリをプロビジョニングします AWS。

依存関係のインストール

pip install bedrock-agentcore pip install strands-agents

短期メモリを追加する

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

戦略を使用して長期メモリを追加する

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

メッセージバッチ処理

batch_size が 1 より大きい場合、メッセージはメモリにバッファされ、バッファが設定されたサイズに達すると、1 回の API コールで AgentCore Memory に送信されます。これにより、高スループットの会話における API リクエストの数が減少します。

重要

を使用する場合はbatch_size > 1、セッションの完了close()時に with ブロックまたは コールを使用する必要があります。そうしないと、バッチしきい値にまだ達していないバッファされたメッセージは失われます。

推奨: コンテキストマネージャー

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

代替: 明示的な close()

with ブロックを使用できない場合は、close()手動で を呼び出します。

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

その他の例は GitHub で入手できます。 https://github.com/aws/bedrock-agentcore-sdk-python/tree/main/src/bedrock_agentcore/memory/integrations/strands