使用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驅動的設備維修助手。該解決方案利用檢索增強生成提供準確、基於上下文的診斷,並引用製造商文檔,幫助減少農業機械的停機時間。
您可以將此模式應用於其他行業,如汽車維修、工業設備維護或現場服務管理。通過將此助手集成到現有工作流程中,組織可以縮短技術人員的學習曲線,並在整個生命週期中維護機構知識。