使用Amazon Bedrock AgentCore构建AI驱动的设备维修助手
本教程介绍如何使用Amazon Bedrock AgentCore构建AI驱动的设备维修助手,帮助农民和现场技术人员通过自然语言诊断设备问题、识别所需零件并获取制造商批准的维修流程。解决方案采用AgentCore Runtime与Strands Agents SDK、Amazon Nova 2 Lite基础模型、Amazon Bedrock Knowledge Base进行检索增强生成(RAG),以及AgentCore Memory实现对话持久化。
管理重型农业机械的维修通常需要技术人员在缺少合适零件的情况下诊断问题,导致多次现场访问、停机时间延长以及重大财务损失,尤其是在收获季节。
本文介绍如何使用Amazon Bedrock AgentCore构建一个AI驱动的设备维修助手,帮助农民和现场技术人员通过自然语言诊断设备问题、识别所需零件并获取制造商批准的维修流程。该解决方案使用AgentCore Runtime与Strands Agents SDK、Amazon Nova 2 Lite作为基础模型、Amazon Bedrock Knowledge Base进行检索增强生成(RAG),以及AgentCore Memory实现对话持久化。
解决方案概述
该解决方案结合了Web前端和由AgentCore托管的代理,后者使用索引化的制造商文档回答设备诊断问题。
Amazon Cognito管理用户认证,AWS Amplify托管Web应用程序。设备维修代理在AgentCore Runtime上运行,使用Strands Agents SDK构建。它查询包含索引化设备手册、零件目录和维修文档的Bedrock Knowledge Base。AgentCore Memory维护跨会话的对话历史,使技术人员无需重复上下文即可提出后续问题。
下图展示了这些组件如何协同工作。
架构包含以下关键部分:
- 部分A – 认证和前端:CloudFormation堆栈部署Amazon Cognito(用户池、身份池)用于认证,以及AWS Amplify用于托管React Web应用程序。用户通过Cognito认证,前端直接与AgentCore Runtime端点通信。
- 部分B – AgentCore Runtime:AgentCore Runtime托管基于Strands的代理,并公开/invocations端点。前端直接使用Cognito Bearer令牌调用此端点。代理的invoke()入口点根据负载中的路径字段(/chat用于AI查询,/issues用于CRUD操作)内部路由请求,为后端操作提供单一入口点,并内置会话管理和健康检查。
- 部分C – AI处理:Strands代理使用自定义search_equipment_knowledge工具,该工具通过retrieve_and_generate API调用Bedrock Knowledge Base。Knowledge Base使用Amazon OpenSearch Serverless进行向量搜索,使用Amazon Titan Embeddings进行语义匹配,对存储在Amazon S3中的设备文档进行索引。
以下代码片段展示了代理的知识库检索工具如何查询制造商文档:
@tool
def search_equipment_knowledge(query: str) -> str:
"""搜索设备手册、零件目录和维修文档。"""
response = bedrock_agent_runtime.retrieve_and_generate(
input={"text": query},
retrieveAndGenerateConfiguration={
"type": "KNOWLEDGE_BASE",
"knowledgeBaseConfiguration": {
"knowledgeBaseId": KNOWLEDGE_BASE_ID,
"modelArn": f"arn:aws:bedrock:{REGION}::foundation-model/{MODEL_ID}",
},
},
)
return response.get("output", {}).get("text", "未找到结果。")- 部分D – 数据和内存:Amazon DynamoDB存储设备服务工单(问题CRUD操作)。AgentCore Memory提供会话内的短期记忆和跨会话的事实持久化长期记忆。Amazon CloudWatch和AWS X-Ray提供自动可观测性。
以下步骤描述了技术人员提问时的请求流程:
- 技术人员打开Web应用程序并通过Amazon Cognito认证。
- 技术人员通过聊天界面提交问题。
- 前端将查询连同Cognito Bearer令牌发送到AgentCore Runtime的/invocations端点。
- AgentCore验证令牌,将请求路由到代理,并检索之前对话的上下文。
- Strands代理将查询发送到Amazon Nova 2 Lite进行推理。
- 模型调用search_equipment_knowledge工具,后者查询Bedrock Knowledge Base。
- Knowledge Base搜索索引化的设备手册并返回相关文档及来源引用。
- 模型综合生成包含维修程序和零件建议的诊断响应。
- 响应返回给技术人员,并附有来源归属以供验证。
前提条件
开始之前,请确认您具备:
- 具有部署AgentCore代理所需权限的AWS账户。有关所需IAM权限,请参阅AgentCore Runtime的IAM权限。
- 在部署区域中已启用Amazon Bedrock模型访问权限,适用于Amazon Nova 2 Lite。您也可以选择其他支持的模型。有关当前模型可用性,请参阅按区域划分的模型支持。
- 已安装并配置AWS CLI v2.0或更高版本,并具有适当凭证。
- 已安装Python 3.10或更新版本。
- 终端或命令提示符访问权限。
成本估算:测试期间,主要成本来自Amazon Bedrock模型调用(Amazon Nova 2 Lite每百万输入/输出令牌分别为$0.30/$2.50)和Bedrock Knowledge Base(OpenSearch Serverless活跃时约$0.24/小时)。其他服务(AgentCore Runtime、Amazon DynamoDB、Amazon S3、Amazon Cognito、AWS Amplify)在测试量下属于AWS免费套餐。详细估算请使用AWS定价计算器。
重要提示:所有资源必须部署在同一AWS区域。CloudFormation堆栈、Knowledge Base和AgentCore启动命令必须使用相同的区域。
创建Knowledge Base
在部署代理之前,创建并填充包含农业设备文档的Amazon Bedrock Knowledge Base。该Knowledge Base为诊断建议和维修指导提供源材料。
步骤1:准备文档
对于测试,从John Deere技术信息商店下载设备手册。您也可以使用自己组织的设备文档。本例中,我们使用John Deere 1023E和1025R紧凑型实用拖拉机操作手册。
收集并整理您的农业设备文档:
- 设备手册(推荐PDF格式)
- 技术服务指南和故障排除文档
- 包含零件编号和规格的零件目录
- 维护计划和预防性护理说明
- 安全协议和制造商警告
文档准备提示:
- 确保文档可文本搜索(非扫描图像)
- 使用一致的命名约定(例如,Manufacturer_Model_DocumentType.pdf)
- 移除不应向所有用户公开的专有信息
步骤2:创建用于Knowledge Base的S3存储桶
aws s3 mb s3://agriculture-kb-documents-<your-unique-id>
aws s3 cp ./equipment-docs s3://agriculture-kb-documents-<your-unique-id> --recursive步骤3:创建Bedrock Knowledge Base
按照说明创建Knowledge Base,设置如下:
- Knowledge Base名称:Agriculture-Equipment-Repair-KB
- 数据源:s3://agriculture-kb-documents-<your-unique-id>(步骤2中创建的存储桶)
- 解析策略:Amazon Bedrock默认解析器
- 分块策略:默认分块
- 嵌入模型:Amazon Titan Embeddings G1 – Text
- 向量存储:快速创建新的向量存储(Amazon OpenSearch Serverless)
步骤4:同步并测试Knowledge Base
创建Knowledge Base后,同步数据源以开始摄取文档(通常需要10-20分钟)。详情请参阅同步以摄取数据源。使用Bedrock控制台中的测试功能验证Knowledge Base对示例查询的响应。从详细信息页面记录Knowledge Base ID。
部署解决方案
步骤5:部署支持基础设施
启动CloudFormation堆栈。您将被重定向到AWS CloudFormation控制台。 堆栈参数中,模板URL将预先填充。 在堆栈名称中,输入部署名称(默认:ag-repair-assist)。 在KnowledgeBaseId中,输入上一步记录的Knowledge Base ID。 审核并创建堆栈。
成功部署后,从CloudFormation堆栈的“输出”选项卡中记录以下值:
- AgentCoreExecutionRoleArn – 配置代理时使用
- CognitoDiscoveryUrl – 配置代理时使用
- UserPoolClientId – 配置代理时使用
- EquipmentIssuesTableName – 部署代理时使用
- UserPoolId – 配置前端时使用
- IdentityPoolId – 配置前端时使用
- AmplifyConsoleUrl – 用于前端部署
- AmplifyAppUrl – 您的应用程序URL
步骤6:部署代理(从本地计算机)
在配置了AWS凭证的本地终端中运行以下命令。需要Python 3.10或更新版本。
创建项目目录并设置环境:
mkdir agriculture-repair-agent && cd agriculture-repair-agent
python3 -m venv .venv
source .venv/bin/activate安装AgentCore工具包和依赖项:
pip install "bedrock-agentcore-starter-toolkit>=0.1.21" strands-agents strands-agents-tools boto3接下来,下载并解压代理代码。包含两个文件:agriculture_repair_agent.py(代理逻辑)和requirements.txt(依赖项)。
配置代理。此命令设置AgentCore部署的执行角色、OAuth和内存设置:
agentcore configure -e agriculture_repair_agent.py按提示输入以下值:
- 代理名称:按Enter使用默认名称(agriculture_repair_agent)
- 需求文件:按Enter确认requirements.txt依赖文件
- 部署配置:选择选项1“Direct Code Deploy - Python only, no Docker required”并按Enter
- 选择Python运行时版本:如果多个Python版本,选择3.10或更高
- 执行角色:从步骤5的CloudFormation输出粘贴并Enter
- S3存储桶URI/路径:输入步骤2中创建的S3存储桶并Enter
- 配置OAuth授权器?:选择yes并Enter
- 输入OAuth发现URL:从步骤5的CloudFormation输出粘贴并Enter
- 输入允许的OAuth客户端ID:从步骤5的CloudFormation输出粘贴并Enter
- 输入允许的OAuth受众:按Enter跳过(留空,访问令牌使用client_id声明,非aud)
- 输入允许的OAuth作用域:按Enter跳过(留空)
- 输入允许的OAuth自定义声明(JSON字符串):按Enter跳过(留空)
- 配置请求头白名单?:按Enter接受默认(否)
- 内存配置:按Enter创建新内存
- 启用长期内存?:Yes
设置后查看代理配置详情。
将代理部署到AgentCore Runtime。无需本地Docker。过程大约需要5-10分钟。
agentcore launch --env KNOWLEDGE_BASE_ID=<your-knowledge-base-id> --env TABLE_NAME=<your-table-name> --env MODEL_ID=us.amazon.nova-2-lite-v1:0完成后,记录输出中的代理运行时ARN。
CloudFormation堆栈创建了具有所需权限的代理执行角色。无需额外IAM配置。
步骤7:部署前端
从上方链接下载ML-18699-FrontEnd.zip。
在步骤5的CloudFormation输出中打开AmplifyConsoleUrl。 点击“部署更新”,选择“拖放”方法,点击“选择.zip文件夹”,然后点击“保存并部署”。 等待部署完成。
使用Web应用程序
从步骤5的CloudFormation输出中打开AmplifyAppUrl。首次启动时,系统会提示输入配置详细信息。输入来自CloudFormation输出(步骤5)和代理部署(步骤6)的值。
保存配置后,使用注册选项创建账户,验证电子邮件,然后登录。
登录后,您将看到主仪表板。
以下是一些示例查询:
- 问题分析:提示:“我的John Deere 1023E系列拖拉机液压压力下降,且在操作附件时发出异常噪音。可能的原因及推荐的检查步骤是什么?”预期响应:诊断可能的原因,如液压油位低、滤清器堵塞或液压泵故障,并参考手册的故障排除部分。
- 零件识别:提示:“John Deere 1025R拖拉机的发动机空气滤清器零件号是多少?需要供应商和价格信息。”预期响应:从零件目录中提取零件号、供应商详细信息并建议交叉参考替代件。
- 维修流程:提示:“提供John Deere 1023E更换液压滤清器的分步流程。需要工具列表和安全预防措施。”预期响应:从维修手册中检索详细步骤、所需工具和安全注意事项。
清理资源
为避免持续产生费用,删除创建的资源:
- 删除CloudFormation堆栈(自动删除关联资源)
- 删除S3存储桶(必须单独清空和删除)
- 删除Bedrock Knowledge Base和关联的OpenSearch Serverless集合
总结
本文展示了如何使用Amazon Bedrock AgentCore和Strands Agents SDK构建AI驱动的设备维修助手。该解决方案利用检索增强生成提供准确、基于上下文的诊断,并引用制造商文档,帮助减少农业机械的停机时间。
您可以将此模式应用于其他行业,如汽车维修、工业设备维护或现场服务管理。通过将此助手集成到现有工作流程中,组织可以缩短技术人员的学习曲线,并在整个生命周期中维护机构知识。