

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Strands 에이전트 SDK
<a name="strands-sdk-memory"></a>

[Strands Agents](https://strandsagents.com/latest/) SDK를 사용하여 에이전트 프레임워크와 원활하게 통합하여 대화형 에이전트 내에서 자동 메모리 관리 및 검색을 제공합니다.

먼저 세 가지 장기 전략을 모두 사용하여 메모리를 생성합니다. 이 작업은 AgentCore CLI를 사용하거나 아래 예제의 SDK 코드를 통해 수행할 수 있습니다.

**Example**  

1. AgentCore CLI 메모리 명령은 기존 agentcore 프로젝트 내에서 실행해야 합니다. 아직 프로젝트가 없는 경우 먼저 프로젝트를 생성합니다.

   ```
   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/ko_kr/bedrock-agentcore/latest/devguide/images/tui/strands-memory-add-name.png)

1. 세 가지 전략(시맨틱, 요약, 사용자 기본 설정)을 모두 선택합니다.  
![메모리 마법사: 세 가지 메모리 전략 모두 선택](https://docs.aws.amazon.com/ko_kr/bedrock-agentcore/latest/devguide/images/tui/strands-memory-add-strategies.png)

1. 구성을 검토하고 Enter 키를 눌러 확인합니다.  
![메모리 마법사: 모든 전략으로 ComprehensiveAgentMemory 확인](https://docs.aws.amazon.com/ko_kr/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보다 크면 버퍼가 구성된 크기에 도달하면 메시지가 메모리에 버퍼링되고 단일 API 호출로 AgentCore 메모리로 전송됩니다. 이렇게 하면 처리량이 많은 대화의 API 요청 수가 줄어듭니다.

**중요**  
를 사용할 때는 세션이 완료될 `close()` 때 `with` 블록 또는 호출을 사용해야 `batch_size > 1` **합니다**. 그렇지 않으면 아직 배치 임계값에 도달하지 않은 버퍼링된 메시지가 손실됩니다.

 *권장: 컨텍스트 관리자* 

```
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
```

 *대안: 명시적 종료()* 

`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) 