戰(zhàn)教程》08 - Agent實(shí)戰(zhàn):讓AI從“回答問(wèn)題”走向“執(zhí)行任務(wù)”)
本章關(guān)鍵詞AI Agent、Tool Calling、Function Calling、Tools、Planning、Memory、Workflow、RAG、ERP、CRM、WMS、API、權(quán)限、安全一、RAG之后為什么還需要Agent上一篇我們完成了一個(gè)企業(yè)RAG知識(shí)庫(kù)它可以解決一個(gè)非常重要的問(wèn)題讓AI能夠理解企業(yè)知識(shí)。例如用戶問(wèn)WMS系統(tǒng)中庫(kù)存盤(pán)點(diǎn)出現(xiàn)差異應(yīng)該怎么處理RAG可以檢索《庫(kù)存盤(pán)點(diǎn)管理制度》 《盤(pán)點(diǎn)異常處理SOP》 《庫(kù)存調(diào)整管理規(guī)范》然后讓LLM生成答案。但是企業(yè)員工接下來(lái)很可能會(huì)問(wèn)“幫我查詢一下SKU-10086現(xiàn)在有多少庫(kù)存?!边@時(shí)候RAG就不夠了。因?yàn)橹R(shí)庫(kù)中的庫(kù)存數(shù)據(jù)可能不是實(shí)時(shí)數(shù)據(jù)。真正需要的是用戶 ↓ AI Agent ↓ 調(diào)用WMS API ↓ 查詢實(shí)時(shí)庫(kù)存 ↓ 返回結(jié)果進(jìn)一步用戶可能說(shuō)“幫我把SKU-10086的庫(kù)存調(diào)整100件?!边@就不再是回答問(wèn)題。而是執(zhí)行任務(wù)。這正是Agent解決的問(wèn)題。二、什么是AI AgentAI Agent可以簡(jiǎn)單理解為能夠理解目標(biāo)、決定下一步行動(dòng)、調(diào)用工具、觀察結(jié)果并持續(xù)執(zhí)行直到完成任務(wù)的AI系統(tǒng)。普通Chatbot用戶 ↓ LLM ↓ 答案RAG Chatbot用戶 ↓ LLM ↓ RAG ↓ 企業(yè)知識(shí) ↓ 答案AI Agent所以可以簡(jiǎn)單理解LLM 大腦 RAG 知識(shí) Tool 手 Agent 能夠使用大腦、知識(shí)和工具完成任務(wù)的執(zhí)行者三、Chatbot、RAG和Agent有什么區(qū)別這是FDE必須理解的一個(gè)核心問(wèn)題。類型核心能力能否訪問(wèn)企業(yè)知識(shí)能否調(diào)用系統(tǒng)能否執(zhí)行任務(wù)Chatbot對(duì)話???RAG知識(shí)問(wèn)答?通常??Tool Calling工具調(diào)用可選?部分Agent自主執(zhí)行???Workflow流程執(zhí)行可選??可以把它理解成一個(gè)逐步升級(jí)過(guò)程Chatbot ↓ RAG ↓ Tool Calling ↓ Agent ↓ Workflow ↓ 企業(yè)AI應(yīng)用四、Agent最重要的能力Tool CallingAgent之所以能夠執(zhí)行任務(wù)關(guān)鍵原因之一就是Tool Calling。例如我們給AI提供一個(gè)工具get_inventory(sku)工具說(shuō)明名稱 get_inventory 功能 查詢SKU實(shí)時(shí)庫(kù)存 參數(shù) sku 返回 庫(kù)存數(shù)量用戶查詢SKU-10086的庫(kù)存。LLM判斷這個(gè)問(wèn)題需要實(shí)時(shí)庫(kù)存數(shù)據(jù) ↓ 調(diào)用get_inventory生成{ tool: get_inventory, arguments: { sku: SKU-10086 } }系統(tǒng)執(zhí)行g(shù)et_inventory(SKU-10086)WMS返回{ sku: SKU-10086, available: 1250, locked: 100 }然后結(jié)果重新交給LLMTool Result ↓ LLM ↓ 自然語(yǔ)言答案最終SKU-10086當(dāng)前庫(kù)存 可用庫(kù)存1250件 鎖定庫(kù)存100件這就是Tool Calling。五、Function Calling和Tool Calling是什么關(guān)系在不同AI平臺(tái)和框架中經(jīng)常會(huì)看到Function Calling Tool Calling兩者在實(shí)際應(yīng)用中高度相關(guān)。核心思想都是讓模型輸出結(jié)構(gòu)化的工具調(diào)用請(qǐng)求由程序真正執(zhí)行工具。例如LLM ↓ 決定調(diào)用工具 ↓ 輸出結(jié)構(gòu)化參數(shù) ↓ Application ↓ 執(zhí)行函數(shù)/API ↓ 返回結(jié)果 ↓ LLM需要注意一個(gè)關(guān)鍵點(diǎn)LLM本身通常并不是直接操作企業(yè)數(shù)據(jù)庫(kù)。而是LLM ↓ 提出工具調(diào)用 ↓ 應(yīng)用程序 ↓ 權(quán)限校驗(yàn) ↓ 真正執(zhí)行API這對(duì)于企業(yè)安全非常重要。六、Tool到底是什么Tool本質(zhì)上就是AI可以調(diào)用的一個(gè)能力接口。例如WMS查詢庫(kù)存 查詢訂單 查詢庫(kù)位 查詢SKU 創(chuàng)建入庫(kù)單 創(chuàng)建出庫(kù)單 創(chuàng)建盤(pán)點(diǎn)任務(wù)ERP查詢采購(gòu)訂單 查詢銷售訂單 查詢供應(yīng)商 查詢物料 創(chuàng)建采購(gòu)申請(qǐng)CRM查詢客戶 查詢聯(lián)系人 查詢商機(jī) 創(chuàng)建跟進(jìn)記錄 查詢銷售機(jī)會(huì)甚至可以是天氣API 地圖API 郵件 Excel 數(shù)據(jù)庫(kù) 搜索引擎 企業(yè)內(nèi)部API因此Tool AI可以調(diào)用的外部能力七、Tool設(shè)計(jì)是Agent項(xiàng)目的核心工作很多人做Agent時(shí)把注意力全部放在LLM上。實(shí)際上企業(yè)Agent能否穩(wěn)定運(yùn)行很大程度上取決于Tool設(shè)計(jì)。一個(gè)好的Tool應(yīng)該職責(zé)單一 參數(shù)清晰 返回結(jié)構(gòu)化 權(quán)限明確 錯(cuò)誤可控 可審計(jì) 可重試?yán)绮灰O(shè)計(jì)do_wms_everything()而應(yīng)該拆成get_inventory() get_order() get_location() create_count_task() create_outbound_order()這樣Agent更容易正確選擇。八、一個(gè)標(biāo)準(zhǔn)Tool定義例如{ name: get_inventory, description: 查詢指定SKU在指定倉(cāng)庫(kù)中的實(shí)時(shí)庫(kù)存, parameters: { type: object, properties: { warehouse_code: { type: string }, sku: { type: string } }, required: [ warehouse_code, sku ] } }這里包含三個(gè)重要部分Tool Name Tool Description Tool Parameters尤其是Description非常重要。因?yàn)锳gent需要根據(jù)工具描述判斷“什么時(shí)候應(yīng)該使用這個(gè)工具”九、Agent的基本運(yùn)行循環(huán)一個(gè)簡(jiǎn)單Agent可以抽象成這就是Agent的基本循環(huán)。十、Think → Act → Observe很多Agent架構(gòu)可以抽象成例如用戶“幫我找出庫(kù)存低于安全庫(kù)存的SKU并創(chuàng)建補(bǔ)貨申請(qǐng)?!盇gent可能需要這就是Agent與普通Chatbot最大的區(qū)別。十一、Agent RAGAgent并不意味著RAG消失了。恰恰相反Agent RAG是企業(yè)AI非常重要的組合。例如例如用戶 “按照公司的庫(kù)存管理制度 幫我檢查一下SKU-10086是否需要補(bǔ)貨?!盇gent需要第一步通過(guò)RAG查詢庫(kù)存管理制度 安全庫(kù)存規(guī)則 補(bǔ)貨規(guī)則第二步通過(guò)Tool查詢SKU-10086實(shí)時(shí)庫(kù)存第三步綜合判斷當(dāng)前庫(kù)存 安全庫(kù)存規(guī)則 補(bǔ)貨策略第四步返回SKU-10086當(dāng)前庫(kù)存低于安全庫(kù)存 建議創(chuàng)建補(bǔ)貨申請(qǐng)。這就是真正的知識(shí) 數(shù)據(jù) 推理。十二、Agent WMS對(duì)于FDE來(lái)說(shuō)WMS是非常適合Agent落地的場(chǎng)景。可以設(shè)計(jì)Tools可以包括查詢庫(kù)存 查詢訂單 查詢庫(kù)位 查詢SKU 查詢批次 查詢庫(kù)存狀態(tài) 創(chuàng)建盤(pán)點(diǎn)任務(wù) 創(chuàng)建補(bǔ)貨任務(wù)十三、一個(gè)完整的WMS Agent案例用戶“幫我檢查一下A倉(cāng)庫(kù)庫(kù)存不足的商品?!盇gent① 查詢A倉(cāng)庫(kù)庫(kù)存 ↓ ② 查詢安全庫(kù)存規(guī)則 ↓ ③ 計(jì)算庫(kù)存差異 ↓ ④ 找出低于安全庫(kù)存SKU ↓ ⑤ 生成結(jié)果例如SKU 當(dāng)前庫(kù)存 安全庫(kù)存 -------------------------------- SKU001 80 100 SKU002 30 50 SKU003 500 100Agent判斷SKU001 → 需要補(bǔ)貨 SKU002 → 需要補(bǔ)貨 SKU003 → 正常然后用戶繼續(xù)“那就幫我創(chuàng)建補(bǔ)貨任務(wù)?!盇gent用戶確認(rèn) ↓ 權(quán)限檢查 ↓ 創(chuàng)建補(bǔ)貨任務(wù)Tool ↓ WMS API ↓ 返回任務(wù)號(hào) ↓ AI反饋?zhàn)罱K已創(chuàng)建2個(gè)補(bǔ)貨任務(wù) SKU001 → 補(bǔ)貨任務(wù) RT20260905001 SKU002 → 補(bǔ)貨任務(wù) RT20260905002這已經(jīng)不是簡(jiǎn)單的AI問(wèn)答。而是AI參與真實(shí)業(yè)務(wù)流程。十四、Agent ERPERP同樣可以提供大量Tools。例如采購(gòu)訂單查詢 銷售訂單查詢 供應(yīng)商查詢 物料查詢 庫(kù)存查詢 財(cái)務(wù)數(shù)據(jù)查詢 采購(gòu)申請(qǐng)創(chuàng)建例如用戶“幫我查詢最近30天采購(gòu)金額最高的10家供應(yīng)商?!盇gent可以理解問(wèn)題 ↓ 確定時(shí)間范圍 ↓ 調(diào)用采購(gòu)數(shù)據(jù)Tool ↓ 獲得數(shù)據(jù) ↓ 排序 ↓ 生成報(bào)告如果進(jìn)一步連接RAG采購(gòu)制度 實(shí)時(shí)采購(gòu)數(shù)據(jù) Agent就可以回答“為什么這個(gè)供應(yīng)商不能直接下采購(gòu)訂單”十五、Agent CRMCRM場(chǎng)景同樣非常適合Agent。例如客戶查詢 ↓ 商機(jī)查詢 ↓ 客戶歷史跟進(jìn) ↓ 合同查詢 ↓ 生成客戶分析用戶“幫我整理一下這個(gè)客戶最近的銷售情況。”Agent查詢客戶 ↓ 查詢商機(jī) ↓ 查詢訂單 ↓ 查詢跟進(jìn)記錄 ↓ 匯總 ↓ 生成客戶畫(huà)像進(jìn)一步“幫我給這個(gè)客戶創(chuàng)建一次跟進(jìn)任務(wù)?!盇gent可以調(diào)用CRM API ↓ 創(chuàng)建跟進(jìn)任務(wù) ↓ 返回任務(wù)結(jié)果十六、Agent不是“無(wú)限自由”的AI企業(yè)環(huán)境下不能讓Agent想干什么就干什么。例如查詢庫(kù)存可以自動(dòng)執(zhí)行。但是刪除訂單 修改財(cái)務(wù)數(shù)據(jù) 創(chuàng)建付款 刪除客戶 調(diào)整庫(kù)存可能必須人工確認(rèn)因此企業(yè)Agent應(yīng)該設(shè)計(jì)低風(fēng)險(xiǎn)操作 ↓ 自動(dòng)執(zhí)行 中風(fēng)險(xiǎn)操作 ↓ 權(quán)限檢查 高風(fēng)險(xiǎn)操作 ↓ 人工確認(rèn) ↓ 執(zhí)行十七、Human-in-the-Loop這就是人在回路中。例如用戶 “幫我把SKU-10086庫(kù)存增加1000件?!盇gent不能直接執(zhí)行。應(yīng)該Agent ↓ 生成操作計(jì)劃 ↓ 發(fā)現(xiàn)這是高風(fēng)險(xiǎn)操作 ↓ 要求用戶確認(rèn)提示即將執(zhí)行 倉(cāng)庫(kù)WH01 SKUSKU-10086 庫(kù)存調(diào)整1000 該操作會(huì)修改實(shí)際庫(kù)存。 是否確認(rèn)執(zhí)行用戶確認(rèn)然后權(quán)限校驗(yàn) ↓ 調(diào)用API ↓ 執(zhí)行 ↓ 記錄審計(jì)日志這才是企業(yè)級(jí)Agent。十八、Agent權(quán)限設(shè)計(jì)Agent的權(quán)限不能等同于系統(tǒng)管理員權(quán)限。應(yīng)該采用用戶權(quán)限 ↓ Agent權(quán)限 ↓ Tool權(quán)限 ↓ 業(yè)務(wù)數(shù)據(jù)權(quán)限例如倉(cāng)庫(kù)操作員 可以 ? 查詢庫(kù)存 ? 查詢庫(kù)位 ? 查詢訂單 不能 ? 刪除庫(kù)存 ? 修改財(cái)務(wù)數(shù)據(jù) ? 修改系統(tǒng)配置因此Agent調(diào)用Tool之前十九、Agent Memory記憶Agent還需要處理上下文。例如用戶“查詢一下A倉(cāng)庫(kù)。”Agent好的。用戶“再看看庫(kù)存不足的?!边@里的“再看看”依賴前面的上下文。因此Agent需要保存Conversation History Task State User Preference Execution State可以簡(jiǎn)單理解為Memory ↓ 讓Agent知道 “剛才發(fā)生了什么”二十、Agent State狀態(tài)企業(yè)任務(wù)往往不是一次完成。例如創(chuàng)建采購(gòu)申請(qǐng)可能經(jīng)歷DRAFT ↓ SUBMITTED ↓ APPROVED ↓ PROCESSING ↓ COMPLETEDAgent需要知道當(dāng)前任務(wù)處于什么狀態(tài)。因此可以設(shè)計(jì)Agent State task_id user_id current_step tool_result approval_status error retry_count這樣才能支持復(fù)雜任務(wù)。二十一、Agent錯(cuò)誤處理真實(shí)環(huán)境中Tool不可能永遠(yuǎn)成功。例如WMS API超時(shí) 數(shù)據(jù)庫(kù)連接失敗 權(quán)限不足 SKU不存在 庫(kù)存不足 參數(shù)錯(cuò)誤Agent需要處理這些情況。例如例如API Timeout ↓ Retry ↓ 成功如果Permission Denied則不能無(wú)限重試。應(yīng)該停止 ↓ 提示用戶權(quán)限不足二十二、Agent為什么容易“失控”Agent比普通Chatbot復(fù)雜很多。因?yàn)樗梢运伎? 調(diào)用工具 執(zhí)行動(dòng)作 繼續(xù)調(diào)用工具如果設(shè)計(jì)不好就可能出現(xiàn)無(wú)限循環(huán) 錯(cuò)誤調(diào)用 重復(fù)執(zhí)行 錯(cuò)誤參數(shù) 權(quán)限越權(quán) 數(shù)據(jù)污染 成本失控因此Agent必須有邊界。二十三、Agent Guardrails企業(yè)Agent應(yīng)該增加Guardrails。例如還應(yīng)該限制最大執(zhí)行步數(shù) 最大Token 最大調(diào)用次數(shù) Tool白名單 API權(quán)限 金額限制 數(shù)據(jù)范圍二十四、Agent Workflow很多人會(huì)問(wèn)Agent和Workflow是不是一樣不是。Workflow流程預(yù)先定義 ↓ Step 1 ↓ Step 2 ↓ Step 3 ↓ Step 4Agent目標(biāo) ↓ AI自主判斷下一步 ↓ 選擇Tool ↓ 執(zhí)行 ↓ 根據(jù)結(jié)果繼續(xù)判斷簡(jiǎn)單來(lái)說(shuō)Workflow 路線提前規(guī)劃好 Agent 根據(jù)現(xiàn)場(chǎng)情況動(dòng)態(tài)決定路線二十五、什么時(shí)候用Workflow如果業(yè)務(wù)流程非常固定訂單創(chuàng)建 ↓ 訂單審核 ↓ 庫(kù)存檢查 ↓ 出庫(kù) ↓ 發(fā)貨就適合Workflow。如果問(wèn)題變化很大“幫我分析一下這個(gè)客戶為什么最近訂單下降?!笨赡苄枰狝gent動(dòng)態(tài)決定查詢客戶 ↓ 查詢訂單 ↓ 查詢銷售趨勢(shì) ↓ 查詢歷史記錄 ↓ 分析原因因此實(shí)際企業(yè)應(yīng)用往往是Agent Workflow二十六、企業(yè)級(jí)Agent整體架構(gòu)可以把完整架構(gòu)設(shè)計(jì)成在外層再增加Authentication Authorization Guardrails Evaluation Audit Log Monitoring形成企業(yè)級(jí)架構(gòu)。二十七、FDE如何做一個(gè)最小Agent建議不要一上來(lái)做超級(jí)企業(yè)AI Agent而應(yīng)該先做一個(gè)Agent 三個(gè)Tools。例如WMSTool 1 get_inventory() Tool 2 get_order() Tool 3 get_location()然后用戶 ↓ Agent ↓ 選擇Tool ↓ 調(diào)用API ↓ 返回結(jié)果先完成查詢型Agent。二十八、第二階段加入RAG然后加入Agent ├── RAG ├── get_inventory ├── get_order └── get_location此時(shí)AI同時(shí)具備企業(yè)知識(shí) 實(shí)時(shí)數(shù)據(jù)例如“按照公司制度 SKU-10086庫(kù)存低于多少需要補(bǔ)貨 它現(xiàn)在是否需要補(bǔ)貨”AgentRAG ↓ 獲得安全庫(kù)存規(guī)則 Tool ↓ 獲得實(shí)時(shí)庫(kù)存 LLM ↓ 綜合判斷二十九、第三階段加入執(zhí)行能力最后加入create_replenishment_task()架構(gòu)變成Agent │ ├── RAG ├── 查詢庫(kù)存 ├── 查詢訂單 ├── 查詢庫(kù)位 └── 創(chuàng)建補(bǔ)貨任務(wù)這樣查詢 ↓ 分析 ↓ 決策 ↓ 執(zhí)行就完整了。三十、FDE Agent項(xiàng)目開(kāi)發(fā)流程一個(gè)真實(shí)項(xiàng)目可以按照其中最重要的一步是確定Agent場(chǎng)景。不是所有業(yè)務(wù)都需要Agent。三十一、什么場(chǎng)景適合Agent非常適合復(fù)雜查詢 跨系統(tǒng)查詢 多步驟任務(wù) 異常處理 業(yè)務(wù)分析 智能客服 運(yùn)營(yíng)助手 銷售助手 倉(cāng)庫(kù)助手 IT運(yùn)維助手例如“幫我分析這個(gè)訂單為什么沒(méi)有發(fā)出去?!笨赡苄枰樵冇唵?↓ 查詢庫(kù)存 ↓ 查詢揀貨任務(wù) ↓ 查詢波次 ↓ 查詢異常日志 ↓ 綜合分析這就是典型Agent場(chǎng)景。三十二、什么場(chǎng)景不適合Agent如果流程非常簡(jiǎn)單查詢訂單 ↓ 返回訂單直接API就可以。如果流程高度固定A ↓ B ↓ C ↓ DWorkflow通常更加穩(wěn)定。如果只是企業(yè)知識(shí)問(wèn)答制度問(wèn)題 ↓ RAG ↓ 答案也沒(méi)必要強(qiáng)行使用Agent。所以FDE應(yīng)該學(xué)會(huì)不是為了Agent而Agent而是根據(jù)業(yè)務(wù)復(fù)雜度選擇技術(shù)。三十三、Agent項(xiàng)目最重要的三個(gè)問(wèn)題FDE做項(xiàng)目時(shí)可以一直問(wèn)第一個(gè)問(wèn)題AI需要知道什么答案可能是RAG 數(shù)據(jù)庫(kù) 企業(yè)知識(shí)第二個(gè)問(wèn)題AI需要做什么答案可能是Tool Calling API Workflow第三個(gè)問(wèn)題AI能做到什么程度答案取決于權(quán)限 安全 業(yè)務(wù)規(guī)則 人工審批 系統(tǒng)能力最終形成Knowledge Action Permission Enterprise Agent三十四、FDE真正需要掌握的Agent能力FDE不一定要成為AI算法專家。但應(yīng)該能夠這才是FDE Agent工程能力。三十五、從RAG到Agent的完整演進(jìn)到這里我們已經(jīng)完成了可以總結(jié)為三十六、FDE的最終目標(biāo)不是“做一個(gè)Agent”這是本章最重要的一句話FDE不是為了證明自己會(huì)做Agent而是要利用Agent解決真實(shí)業(yè)務(wù)問(wèn)題。例如客戶說(shuō)“倉(cāng)庫(kù)主管每天都要花兩個(gè)小時(shí)檢查庫(kù)存異常?!盕DE應(yīng)該思考最終人工檢查2小時(shí) ↓ AI輔助 ↓ 20分鐘這才是FDE真正創(chuàng)造的價(jià)值。三十七、FDE Agent完整技術(shù)路線最終可以形成外層增加Security Permission Guardrails Evaluation Monitoring Audit最終才是完整的企業(yè)Agent平臺(tái)。三十八、本章總結(jié)本章從RAG繼續(xù)向前一步。上一篇RAG ↓ 讓AI知道企業(yè)知識(shí)這一篇Tool Calling ↓ 讓AI能夠調(diào)用企業(yè)系統(tǒng)進(jìn)一步Agent ↓ 讓AI能夠自主完成多步驟任務(wù)最終構(gòu)成企業(yè)級(jí)AI Agent的核心技術(shù)體系。對(duì)于FDE來(lái)說(shuō)最值得記住的是三十九、下一篇預(yù)告下一篇進(jìn)入一個(gè)非常重要的主題《FDE前沿部署工程師實(shí)戰(zhàn)教程》09 - Agent工具設(shè)計(jì)從API到Tool Calling的企業(yè)系統(tǒng)集成我們將進(jìn)一步解決一個(gè)實(shí)際問(wèn)題Agent到底如何連接ERP、CRM、WMS、MES重點(diǎn)學(xué)習(xí)并進(jìn)一步實(shí)踐如何把REST API變成AI ToolTool Schema如何設(shè)計(jì)Function Calling完整流程GET / POST / PUT / DELETE如何封裝數(shù)據(jù)庫(kù)查詢ToolWMS庫(kù)存查詢ToolERP訂單查詢ToolCRM客戶查詢ToolTool權(quán)限控制Tool參數(shù)校驗(yàn)Tool錯(cuò)誤處理Tool超時(shí)與重試Tool審計(jì)日志Agent多Tool協(xié)作企業(yè)系統(tǒng)集成實(shí)戰(zhàn)最終形成這一步將真正把FDE從“AI應(yīng)用開(kāi)發(fā)”帶入“企業(yè)AI系統(tǒng)集成”。