

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ストランドエージェント SDK
<a name="strands-sdk-memory"></a>

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

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

**Example**  

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

   ```
   agentcore create --project-name MemoryProject --no-agent
   cd MemoryProject
   ```

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

   ```
   agentcore add memory --name ComprehensiveAgentMemory \
     --strategies SEMANTIC,SUMMARIZATION,USER_PREFERENCE
   agentcore deploy
   ```

1. `agentcore` を実行して TUI を開き、**追加** を選択して**メモリ** を選択します。

1. メモリ名を入力します。  
![メモリウィザード: ComprehensiveAgentMemory 名を入力します](https://docs.aws.amazon.com/ja_jp/bedrock-agentcore/latest/devguide/images/tui/strands-memory-add-name.png)

1. 3 つの戦略 (セマンティック、要約、ユーザー設定) をすべて選択します。  
![メモリウィザード: 3 つのメモリ戦略をすべて選択する](https://docs.aws.amazon.com/ja_jp/bedrock-agentcore/latest/devguide/images/tui/strands-memory-add-strategies.png)

1. 設定を確認し、Enter キーを押して以下を確認します。  
![メモリウィザード: ComprehensiveAgentMemory をすべての戦略で確認する](https://docs.aws.amazon.com/ja_jp/bedrock-agentcore/latest/devguide/images/tui/strands-memory-add-confirm.png)

   次に、 `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](https://github.com/aws/bedrock-agentcore-sdk-python/tree/main/src/bedrock_agentcore/memory/integrations/strands)