

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# SDK para agentes Strands
<a name="strands-sdk-memory"></a>

Use o [ SDK ](https://strandsagents.com/latest/) Strands Agents para uma integração perfeita com estruturas de agentes, fornecendo gerenciamento e recuperação automáticos de memória em agentes conversacionais.

Primeiro, crie uma memória com todas as três estratégias de longo prazo. Você pode fazer isso com a AgentCore CLI ou por meio do código SDK nos exemplos abaixo.

**Example**  

1. Os comandos de memória AgentCore CLI devem ser executados dentro de um projeto agentcore existente. Se você ainda não tiver um, crie um projeto primeiro:

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

   Em seguida, adicione memória e implante:

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

1. Execute `agentcore` para abrir a TUI, selecione ** adicionar ** e escolha ** Memória**:

1. Digite o nome da memória:  
![Assistente de memória: digite ComprehensiveAgentMemory o nome](https://docs.aws.amazon.com/pt_br/bedrock-agentcore/latest/devguide/images/tui/strands-memory-add-name.png)

1. Selecione todas as três estratégias (semântica, resumo, preferência do usuário):  
![Assistente de memória: selecione todas as três estratégias de memória](https://docs.aws.amazon.com/pt_br/bedrock-agentcore/latest/devguide/images/tui/strands-memory-add-strategies.png)

1. Revise a configuração e pressione Enter para confirmar:  
![Assistente de memória: confirme ComprehensiveAgentMemory com todas as estratégias](https://docs.aws.amazon.com/pt_br/bedrock-agentcore/latest/devguide/images/tui/strands-memory-add-confirm.png)

   Em seguida, execute `agentcore deploy` para provisionar a memória AWS.

 **Instale as dependências** 

```
pip install bedrock-agentcore
pip install strands-agents
```

 **Adicione memória de curto prazo ** 

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

 **Adicione memória de longo prazo com estratégias ** 

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

 **Agrupamento de mensagens ** 

Quando `batch_size` é maior que 1, as mensagens são armazenadas em buffer na memória e enviadas para a AgentCore memória em uma única chamada de API quando o buffer atinge o tamanho configurado. Isso reduz o número de solicitações de API em conversas de alto rendimento.

**Importante**  
Ao usar`batch_size > 1`, você ** deve ** usar um `with` bloco ou uma chamada `close()` quando a sessão for concluída. Caso contrário, todas as mensagens armazenadas em buffer que ainda não tenham atingido o limite do lote serão perdidas.

 *Recomendado: gerenciador de contexto * 

```
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: fechamento explícito () * 

Se você não puder usar um `with` bloco, ligue `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
```

Mais exemplos estão disponíveis em 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) 