在本实验中,我们提供了一个使用 Amazon Bedrock 新的记忆功能的旅行代理的示例。
在创建代理时,我们可以使用 memoryConfiguration
参数启用记忆功能。然后,我们可以使用 memoryId
调用代理来跟踪会话并总结它们到我们的记忆中。
在本示例中,我们将创建一个具有以下架构的测试代理:
下面的代码显示了如何在使用 boto3 SDK 的 create_agent
函数创建代理时配置记忆功能。我们应该定义 enabledMemoryTypes
(目前只有 SESSION_SUMMARY
可用)和 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
}
)
在调用代理时,我们需要传递 memoryId
参数以及 sessionId
。
# 调用代理 API
agent_response = bedrock_agent_runtime_client.invoke_agent(
inputText="用户查询代理",
agentId="<AGENT_ID>",
agentAliasId="<AGENT_ALIAS_ID>",
sessionId="<SESSION_ID>",
enableTrace=True or False,
endSession=True or False,
memoryId="我们的记忆 ID",
...
)
一旦我们使用 endSession
标志设置为 True
调用代理,与相同 sessionId
的对话就会被总结并可用于代理的记忆。我们可以使用 bedrock-agent-runtime
boto3 SDK 客户端的 get_agent_memory
来获取代理的可用记忆。
memory_content=bedrock_agent_runtime_client.get_agent_memory(
agentAliasId="<AGENT_ALIAS_ID>",
agentId="<AGENT_ID>",
memoryId="<与调用代理时使用的相同记忆 ID>",
memoryType='SESSION_SUMMARY'
)
我们还可以使用 delete_agent_memory
删除某个记忆 ID 的全部代理记忆。
response = bedrock_agent_runtime_client.delete_agent_memory(
agentAliasId="<AGENT_ALIAS_ID>",
agentId="<AGENT_ID>",
memoryId="<与调用代理时使用的相同记忆 ID>",
)
如果我们是通过 workshop studio 参加研讨会的, 现在请转到 SageMaker Studio 中的 JupyterLab。
在 JupyterLab UI 中导航到 bedrock-agents-workshop/09-create-agent-with-memory/09-create-agent-with-memory.ipynb
这里有一个笔记本,让我们可以尝试上述内容: 创建具有记忆功能的代理 。