本笔记本提供了将亚马逊 Bedrock 的知识库与已有的亚马逊 Bedrock 代理关联的示例代码。该代理已附有一个动作组。
我们将更新我们的餐厅助手,让客户也可以询问有关餐厅菜单的问题。架构如下所示:
在本笔记本中,我们将:
在下一个实验中,我们将测试带有动作组和知识库请求的代理调用,并使用提示属性为代理提供额外信息。
在开始本实验之前,我们需要加载在上一个笔记本中存储的变量。
现在让我们导入必要的库并初始化所需的 boto3 客户端。
我们现在将设置定义我们知识库的变量:
booking-agent-kb
我们现在将创建一个亚马逊 Bedrock 知识库及其要求,包括:
要创建知识库及其依赖项,我们将使用可用在此文件夹中的 BedrockKnowledgeBase
支持类。它允许我们创建新的知识库,将文档引入知识库数据源,并在完成本实验后删除资源。
请注意,创建 Amazon OpenSearch Serverless 集合可能需要几分钟时间。我们可以使用 Amazon OpenSearch Serverless 控制台来监控创建进度。
我们现在将文档上传到 S3,并将其引入知识库。
让我们现在测试创建的知识库是否按预期工作。为此,我们首先检索知识库 ID。
接下来,我们可以使用 boto3 中的 <code>RetrieveAndGenerate</code> API 从知识库中检索问题的上下文并生成最终响应。
现在我们的知识库正在工作,我们将把它与代理关联。为此,我们首先需要更新代理角色,以允许从我们的知识库中检索上下文。
最后,我们可以使用 boto3 中的 <code>AssociateAgentKnowledgeBase</code> API 将新的知识库与代理关联。
更新我们的代理后,我们需要再次准备它来打包所有新的组件。
现在我们的代理已经更新,让我们再次测试它。为此,我们将再次使用 boto3 Bedrock 运行时客户端中的 <code>invoke_agent</code> 函数。
我们将使用名为 invoke_agent_helper
的相同支持函数,允许我们在启用或禁用跟踪的情况下调用代理,以及在有或没有会话状态的情况下调用代理。我们将在 03_invoke_agent.ipynb
笔记本中更详细地介绍这些概念。
现在我们可以通过询问答案可在知识库文档中找到的问题来进行测试。
在移动到下一个笔记本之前,让我们存储一些变量以继续使用相同的笔记本。
接下来我们将测试我们的代理。