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