In this folder, we provide an example of travel agent using Amazon Bedrock Agents new capabilities for memory.
When creating you agent, you can enable the memory capabilities using the memoryConfiguration parameter. You can then invoke you agent with a memoryId to track sessions and summarize them to your memory.
In this example we will create a test agent with the following architecture:
 and the storageDays.
response = bedrock_agent_client.create_agent(
agentName=agent_name,
agentResourceRoleArn=agent_role['Role']['Arn'],
description=agent_description,
idleSessionTTLInSeconds=1800,
foundationModel=agent_foundation_model,
instruction=agent_instruction,
memoryConfiguration={
"enabledMemoryTypes": ["SESSION_SUMMARY"],
"storageDays": 30
}
)When invoking your agent, you need to pass the memoryId parameter as well as a sessionId.
# invoke the agent API
agent_response = bedrock_agent_runtime_client.invoke_agent(
inputText="User query to the agent",
agentId="<AGENT_ID>",
agentAliasId="<AGENT_ALIAS_ID>",
sessionId="<SESSION_ID>",
enableTrace=True or False,
endSession=True or False,
memoryId="Your memory id",
...
)Once you invoke the agent with the endSession flag set to True, the conversation with the same sessionId is summarized and made available to the agent's memory. You can use the get_agent_memory from the bedrock-agent-runtime boto3 SDK client to get the available memory for an agent
memory_content=bedrock_agent_runtime_client.get_agent_memory(
agentAliasId="<AGENT_ALIAS_ID>",
agentId="<AGENT_ID>",
memoryId="<Same memory id used during the invoke agent calls",
memoryType='SESSION_SUMMARY'
)And the delete_agent_memory to delete the full agent memory for a certain memory id.
response = bedrock_agent_runtime_client.delete_agent_memory(
agentAliasId="<AGENT_ALIAS_ID>",
agentId="<AGENT_ID>",
memoryId="<Same memory id used during the invoke agent calls",
)