構(gòu)建AI代理系統(tǒng):從核心部分到實(shí)踐的思考

一、概述
許多人說 2025 年是“AI代理之年”。沒有人能就“AI代理”的定義達(dá)成一致,但大多數(shù)人會(huì)同意AI代理的自主性是不斷變化的。一方面,有工作流程(每個(gè)步驟都是預(yù)先計(jì)劃好的)。另一方面,有AI代理,它們?cè)趫?zhí)行過程中決定做什么。可以將兩者的區(qū)別歸結(jié)為一個(gè)問題:誰在驅(qū)動(dòng)——開發(fā)者還是模型?
這篇文章詳細(xì)介紹了這兩者的細(xì)節(jié),然后深入探討了當(dāng)您嘗試交付生產(chǎn)時(shí)會(huì)遇到的混亂的、超出教程范圍的部分。
二、工作流程

1.工作流程的核心部分
你可以隨心所欲地實(shí)現(xiàn)工作流程,但從概念上講,我認(rèn)為直觀的做法是將其視為一個(gè)簡(jiǎn)單的圖表。圖中的方框和箭頭從不即興發(fā)揮——每一步都是提前規(guī)劃好的。
- 節(jié)點(diǎn):每個(gè)節(jié)點(diǎn)都是一項(xiàng)工作,可能是一次 LLM 調(diào)用,可能是做一些數(shù)學(xué)運(yùn)算,也可能只是“發(fā)送這封電子郵件”。
- 邊:將方框粘合在一起的箭頭。它們表示“接下來去這里”、“如果 X 則跳過此塊”或“并行運(yùn)行所有這些,然后回到這里匯合”。允許循環(huán)。箭頭會(huì)指向之前的盒子,直到有指令停止。
- 共享狀態(tài):一個(gè) 節(jié)點(diǎn)可以悄悄地將其結(jié)果發(fā)送到隊(duì)列中的下一個(gè)節(jié)點(diǎn),或者將其放在整個(gè)圖表都可以訪問的公共白板上。
2.基本工作流模式
- 提示鏈接:將第一個(gè) LLM 的輸出直接送入下一個(gè),然后再送入下一個(gè),依此類推,就像傳送帶一樣,每個(gè)站點(diǎn)都會(huì)添加一個(gè)貼紙。
- 路由:讀取傳入的請(qǐng)求并將其引導(dǎo)至知道如何回答的路徑。
- 并行化-聚合:同時(shí)啟動(dòng)幾個(gè)分支,然后收集并合并結(jié)果。
- 協(xié)調(diào)器-工作者:中央大語言模型 (LLM) 負(fù)責(zé)評(píng)估工作,將其拆分成清晰的子任務(wù),并將它們分配給更小的大語言模型 (LLM)。當(dāng)所有成員都完成后,它會(huì)將各個(gè)部分整合在一起。(這看起來已經(jīng)很像一個(gè)AI代理了)
- 評(píng)估器-優(yōu)化器:一個(gè)人寫作,另一個(gè)人評(píng)分,循環(huán)不斷進(jìn)行,直到分?jǐn)?shù)最終保持在標(biāo)準(zhǔn)之上。
三、AI代理

1.AI代理的核心要素
從本質(zhì)上講,AI代理只是一個(gè)LLM,帶有一個(gè)指令來指示它如何行動(dòng),再加上一盒工具,當(dāng)它需要外部系統(tǒng)或數(shù)據(jù)時(shí)就可以使用。其他一些重要部分維持著整個(gè)系統(tǒng)的運(yùn)行:
- 執(zhí)行循環(huán)(AI代理運(yùn)行器):LLM 只能“說話”或以其他方式進(jìn)行交流,例如圖像;它無法點(diǎn)擊按鈕。一個(gè)連續(xù)循環(huán)讀取生成的文本,確定正在請(qǐng)求的工具,觸發(fā)調(diào)用,并將結(jié)果反饋給 LLM。此循環(huán)重復(fù)進(jìn)行,直到AI代理判斷完成或觸發(fā)停止條件。
- 上下文:上下文是LLM在思考時(shí)能夠“看到”的信息片段。它涵蓋了從枯燥但有用的內(nèi)容(例如今天的日期、用戶的訪問級(jí)別)到會(huì)話中的閑聊(例如之前的留言、過去的工具調(diào)用)。雖然現(xiàn)在許多LLM都有很長(zhǎng)的上下文窗口,但在多輪交互中,無關(guān)信息會(huì)迅速堆積,因此精簡(jiǎn)至關(guān)重要。
- 會(huì)話狀態(tài)(短期記憶):一個(gè)會(huì)話涵蓋一次完整的運(yùn)行——可能是五輪,也可能是五十輪。AI代理學(xué)習(xí)、決策或生成的所有內(nèi)容都會(huì)保留在這里,直到會(huì)話結(jié)束。
- 長(zhǎng)期記憶:當(dāng)某些東西應(yīng)該在會(huì)話結(jié)束后繼續(xù)存在時(shí)——用戶偏好、解決的問題、寫了一半的代碼——它就會(huì)被存放在數(shù)據(jù)庫、向量存儲(chǔ)或純文本文件中。
- 交接:如果任務(wù)發(fā)生變化,例如從預(yù)訂航班改為提交費(fèi)用報(bào)告,當(dāng)前座席可以將接力棒交給精通該領(lǐng)域的隊(duì)友。交接不僅包含原始數(shù)據(jù),還包含任務(wù)上下文、聊天記錄以及當(dāng)前對(duì)話的主導(dǎo)者。
- 生命周期事件:即使是自主運(yùn)行也會(huì)遇到可預(yù)測(cè)的檢查點(diǎn):工具調(diào)用之前、LLM 返回之后、下一個(gè)提示符之前等等。這些時(shí)刻對(duì)于日志記錄、權(quán)限檢查或在出現(xiàn)問題時(shí)提前終止運(yùn)行非常有用。
2. AI代理的基本模式
單個(gè)AI代理只是一個(gè) LLM、它的指令和一個(gè)循環(huán)。當(dāng)用戶或其他系統(tǒng)將任務(wù)放到其桌面上時(shí),AI代理就會(huì)啟動(dòng)。在循環(huán)內(nèi)部,AI代理會(huì)規(guī)劃下一步行動(dòng),調(diào)用所需的任何工具,并持續(xù)執(zhí)行,直到它認(rèn)為任務(wù)已完成,或者由于內(nèi)置限制(例如,輪次或令牌數(shù)量上限)而終止。
單個(gè)智能體能夠處理的工具和指令數(shù)量有限,否則就會(huì)因自身環(huán)境而出錯(cuò)。將負(fù)載分散到多個(gè)智能體上——每個(gè)智能體的任務(wù)描述更明確,工具包更輕量——通常最終會(huì)更加簡(jiǎn)潔可靠。以下是一些多智能體協(xié)作模式:
- 主管-工作者:中央AI代理持續(xù)與用戶通話,同時(shí)將子任務(wù)分配給專門的工作者。工作者無需與用戶對(duì)話。主管掌握全局并擁有最終決定權(quán)。
- 分類:與主管-工人設(shè)置的形狀相同,但在對(duì)請(qǐng)求進(jìn)行分類后,分類AI代理會(huì)將呼叫者交給正確的專家。
- 層次結(jié)構(gòu):更深的堆棧,其中每個(gè)專家可能都有自己的子團(tuán)隊(duì),讓樹的深度隨著問題的需求而增長(zhǎng)。
- 順序:AI代理排列成一條直線,每個(gè)AI代理接手前一個(gè)AI代理的交接任務(wù)。這類似于即時(shí)鏈接工作流,只不過是使用完整的AI代理,而不是單個(gè) LLM 調(diào)用。
- 并行化 - 收集:同時(shí)啟動(dòng)多個(gè)AI代理,讓它們并行工作,然后在繼續(xù)之前合并它們的結(jié)果。
- 冗余:?jiǎn)?dòng)多個(gè)執(zhí)行相同任務(wù)但方法不同的AI代理,比較它們的答案,保留最佳答案,或者合成一個(gè)新的答案。這種方法會(huì)消耗額外的資源,但會(huì)提高可靠性。
- 評(píng)審-批評(píng):一個(gè)AI代理構(gòu)建,另一個(gè)AI代理檢查,如此循環(huán),直到批評(píng)者滿意為止。與評(píng)估-優(yōu)化工作流程相同,但升級(jí)為完整AI代理。
- 升級(jí):先從價(jià)格低廉、輕量級(jí)的AI代理開始。如果出現(xiàn)問題,則將工單升級(jí)到更重、能力更強(qiáng)(通常也更貴)的AI代理。這是一種內(nèi)置成本控制的分類處理方法。
- 網(wǎng)絡(luò):每個(gè)AI代理都位于一個(gè)開放的通道上。其中任何一個(gè)AI代理都可以ping通其他AI代理,決定下一步由誰來執(zhí)行,然后交接任務(wù)——無需中央調(diào)度。
四、工作流與AI代理
兩種方法的比較如下:

大多數(shù)人最終都會(huì)找到一個(gè)平衡點(diǎn):給予AI代理足夠的自由,使其能夠發(fā)揮作用,但同時(shí)又要設(shè)置圍欄,確保其安全、可見且不超出預(yù)算。工作流節(jié)點(diǎn)可以將雜亂的角落交給AI代理,而AI代理可以在需要穩(wěn)定子任務(wù)時(shí)加入工作流。
五、超越基礎(chǔ)的考慮
連接幾個(gè)基本組件,選擇一個(gè)模式,你就擁有了一個(gè)AI代理系統(tǒng)。借助如今的開源框架,這實(shí)際上只需十行代碼。教程看起來毫不費(fèi)力,但實(shí)際生產(chǎn)環(huán)境卻截然不同。以下是在實(shí)際用戶使用之前你需要的額外工具。

1.護(hù)欄
LLM 仍然會(huì)犯錯(cuò),黑客仍然會(huì)鉆空子。你需要技術(shù)和政策護(hù)欄,確保智能體在安全、合法性、成本和品牌形象的范圍內(nèi)運(yùn)行。這些護(hù)欄并非一道單一的大門,而是層層遞進(jìn)的安全網(wǎng)。它們可以是嵌入模型權(quán)重的對(duì)齊,加上輸入和輸出檢查,以及對(duì)智能體操作的限制。
模型級(jí)別的對(duì)齊通常由提供者處理(仇恨、自殘、毒性等)
輸入護(hù)欄會(huì)在不需要的消息到達(dá)AI代理之前將其阻止:- 增強(qiáng)審核加上越獄/ SQL 注入過濾器- 主題限制(無不相關(guān)問題、無關(guān)于競(jìng)爭(zhēng)對(duì)手的評(píng)論、無政治或宗教)- 業(yè)務(wù)規(guī)則(無 PII 釣魚、無內(nèi)幕信息探測(cè))
運(yùn)行時(shí)護(hù)欄會(huì)監(jiān)視AI代理即將執(zhí)行的操作:– 按用戶角色限制工具– 高風(fēng)險(xiǎn)操作需要人工批準(zhǔn)– 如果支出、令牌數(shù)量或時(shí)間超出限制,則終止開關(guān)
輸出護(hù)欄會(huì)在輸出過程中捕捉到失誤:- 驗(yàn)證預(yù)期的輸出模式- Hellucination 檢查(RAG 設(shè)置中的源文檔驗(yàn)證)- 最終內(nèi)容審核檢查
您可以混合使用基于 LLM 的檢查、啟發(fā)式規(guī)則(正則表達(dá)式、允許列表)和第三方審核 API。選擇適合您預(yù)算和風(fēng)險(xiǎn)狀況的組合。此外,還有幾種現(xiàn)成的工具可供使用,例如Guardrails.ai或Nemo Guardrails。
2.可觀察性
AI代理系統(tǒng)是非確定性的,包含循環(huán),并且可能由于難以識(shí)別的原因而失敗。如果您使用框架,有時(shí)一小段代碼(比如二十行代碼)就可能觸發(fā)數(shù)十個(gè)底層 LLM 調(diào)用或工具調(diào)用??捎^察性就像一盞手電筒,讓您能夠看到這些隱藏層的內(nèi)部,從而理解、排除故障并穩(wěn)步改進(jìn)系統(tǒng)。那么,您需要“觀察”什么呢?
- 說明和消息,尤其是模板化的說明和消息。
- 每個(gè)步驟的輸入和輸出,甚至是用戶從未見過的。
- AI代理人采取了哪個(gè)分支以及為什么。
- 推理循環(huán)——我們真的在朝著目標(biāo)前進(jìn)嗎?
- 工具調(diào)用、傳遞的參數(shù)和原始結(jié)果。
- 對(duì)于 RAG 設(shè)置,返回精確的塊和分?jǐn)?shù)。
- 經(jīng)典應(yīng)用程序指標(biāo):延遲、錯(cuò)誤率、每次運(yùn)行成本等。
對(duì)于我們?cè)S多人來說幸運(yùn)的是,有幾個(gè)開源可觀察性庫支持AI代理系統(tǒng),因此無需手工制作這些日志。
Pydantic Logfire:最少關(guān)注 LLM、數(shù)據(jù)庫、Web 框架的可觀察性。
Mlflow、Arize Phoenix、Weights and Biases:它們也具有傳統(tǒng)的機(jī)器學(xué)習(xí)操作支持。
Langsmith、Langtrace:專用于 GenAI 應(yīng)用程序。
您還可以在可觀察性數(shù)據(jù)之上分層更高級(jí)別的功能,例如,對(duì)用戶交互運(yùn)行情緒分析或使用單獨(dú)的AI代理系統(tǒng)來評(píng)估生產(chǎn)跟蹤以查找失敗原因。
3.評(píng)估
開發(fā)傳統(tǒng)的機(jī)器學(xué)習(xí)模型需要驗(yàn)證集和測(cè)試集;開發(fā)經(jīng)典軟件則需要單元測(cè)試和集成測(cè)試。AI代理系統(tǒng)則借鑒了這兩個(gè)陣營(yíng)。你需要數(shù)值和清晰的通過/失敗信號(hào),但這些數(shù)值并非那么容易獲得。你將在沒有明確標(biāo)準(zhǔn)的情況下評(píng)判一段生成的文本。你將評(píng)估AI代理決定采取的路徑,而實(shí)際上并沒有正確的路徑。AI代理系統(tǒng)并非一個(gè)產(chǎn)生單一輸出的單一模型。它包含路由、檢索、生成、工具使用、推理鏈,以及將它們連接在一起的完整循環(huán)。你必須同時(shí)測(cè)試各個(gè)部分和整體。
雖然指標(biāo)仍在不斷發(fā)展,但這些核心檢查已經(jīng)可以幫你走很遠(yuǎn):
- 端到端的成功:它是否真正完成了用戶要求的工作?
- 軌跡和工具使用:它是否選擇了正確的分支并傳遞了正確的參數(shù)?
- 檢索質(zhì)量:對(duì)于 RAG,檢索是否以適當(dāng)?shù)木群驼倩芈史祷亓四P(guān)心的針頭?
- 答案質(zhì)量:一旦了解背景,最終的回答是否能夠回答問題而不是編造事實(shí)?
- 推理痕跡:策劃和思考是否揭示了邏輯在哪里脫軌?
- 多輪評(píng)估:經(jīng)過五六次反復(fù)后,對(duì)話是否仍然有意義?
- 成本、延遲、代幣銷毀:應(yīng)用程序級(jí)健康檢查。
為了獲得這些方面的分?jǐn)?shù),你可以結(jié)合使用 LLM-as-judge(自動(dòng)化)和人工評(píng)估(資源密集型)。在構(gòu)建評(píng)估集時(shí),你可以:
- 使用 LLM 合成數(shù)據(jù):快速且便宜,但可能與真實(shí)用戶查詢不符。
- 從遺留日志中引導(dǎo):您正在替換的系統(tǒng)中舊查詢提供了良好的開端。
- 真實(shí)用戶樣本:收集成本高,但最有效。
- 制造邊緣情況:手工制作您希望永遠(yuǎn)不會(huì)發(fā)生的奇怪的角落輸入。
- 生產(chǎn)后果:系統(tǒng)上線后,每次運(yùn)行失敗或用戶投訴都會(huì)成為需要添加的新案例。
每次調(diào)整提示或添加工具時(shí),都要進(jìn)行評(píng)估??焖?、可重復(fù)的評(píng)估可以將“希望它能正常工作”變成真正的工程循環(huán)。您可以及早發(fā)現(xiàn)隱藏的錯(cuò)誤,保持支出可預(yù)測(cè),并每天發(fā)布安全的更新,而不是每季度一次孤注一擲。RAGAS 、 Trulens或Mlflow評(píng)估都是不錯(cuò)的評(píng)估起點(diǎn)。
4.安全
AI代理系統(tǒng)繼承了服務(wù)面臨的所有安全難題,例如令牌泄露或角色權(quán)限過高,并添加了幾個(gè)新的安全問題。AI代理是一個(gè)推理引擎,可能會(huì)被誘騙運(yùn)行命令、泄露數(shù)據(jù)或?qū)⒖刂茩?quán)移交給另一個(gè)AI代理。它還可能啟動(dòng)新的子進(jìn)程或調(diào)用規(guī)范中未列出的 API。像MCP(模型上下文協(xié)議)這樣的協(xié)議賦予了它們超強(qiáng)的能力,但每個(gè)額外的插件都意味著需要守護(hù)的另一扇門。至少,最好從所有標(biāo)準(zhǔn)最佳實(shí)踐開始:將機(jī)密放入保管庫、授予最小權(quán)限以及輪換密鑰。此外:
- 設(shè)置防護(hù)欄以防止提示攻擊,并將所有檢索到的文本視為不受信任的輸入并掃描對(duì)抗模式。
- 確保AI代理嚴(yán)格在用戶權(quán)限范圍內(nèi)運(yùn)行。每次工具調(diào)用都應(yīng)攜帶用戶的訪問令牌,以確保其不會(huì)接觸其他用戶的數(shù)據(jù)。
- 將每個(gè)合作AI代理視為陌生人,并要求其提供與人工呼叫者相同的身份證明。
- 在沙箱內(nèi)運(yùn)行AI代理,除非您明確授予權(quán)限,否則沙箱開始時(shí)沒有網(wǎng)絡(luò)和磁盤訪問權(quán)限。
- 驗(yàn)證 MCP 邊界處的每個(gè)輸入和輸出并對(duì)解釋器進(jìn)行沙盒處理。
簡(jiǎn)而言之,永遠(yuǎn)不要相信AI代理能夠自我監(jiān)管——用授權(quán)檢查、日志記錄和自動(dòng)撤銷來包裝每個(gè)決策點(diǎn)。
5.部署
AI代理系統(tǒng)可以通過幾種常見的方式部署。一種是通過 API 調(diào)用或計(jì)時(shí)器觸發(fā)的短生命周期無服務(wù)器函數(shù)。例如,AI代理工作流會(huì)仔細(xì)檢查公司收件箱,并將結(jié)構(gòu)化洞察放入表中。另一種是長(zhǎng)期運(yùn)行的有狀態(tài)服務(wù)或微服務(wù),當(dāng)AI代理必須記住它在多個(gè)輪次之間中斷的位置或等待人工反饋時(shí),這種服務(wù)非常有用。
問題在于運(yùn)行時(shí)間:它們可能耗時(shí)幾分鐘甚至幾小時(shí)。長(zhǎng)時(shí)間保持 HTTP 套接字打開非常痛苦。因此,異步事件驅(qū)動(dòng)的設(shè)置更合適。將工作推送到消息隊(duì)列,讓客戶端輪詢狀態(tài)端點(diǎn)或監(jiān)聽 Webhook,這樣就無需再維護(hù)連接了。我們還看到多種協(xié)議正在嘗試標(biāo)準(zhǔn)化AI代理調(diào)用工具或共享上下文的方式,例如 MCP 和A2A(AI代理到AI代理)。值得密切關(guān)注它們的發(fā)展。
6.身份與持久性
如今,大多數(shù)AI代理本質(zhì)上仍然是無狀態(tài)的。更改提示或模型,從技術(shù)上講,您就創(chuàng)建了一個(gè)新的AI代理。如果沒有完整的聊天記錄和會(huì)話數(shù)據(jù),昨天那個(gè)樂于助人的助手就像一個(gè)陌生人一樣對(duì)待用戶。這種失憶會(huì)扼殺信任。相反,如果它擁有持久的身份和角色,那么與它的互動(dòng)就會(huì)感覺像是在與同一個(gè)實(shí)體打交道。這對(duì)于商業(yè)環(huán)境中的審計(jì)目的也很重要。
如果我們不更新 LLM 權(quán)重,身份信息將通過存儲(chǔ)在其他地方的數(shù)據(jù)保留下來。將對(duì)話輪次和工具 I/O 存儲(chǔ)在關(guān)系數(shù)據(jù)庫或圖數(shù)據(jù)庫中。將大型數(shù)據(jù)放在磁盤或 Blob 存儲(chǔ)中。將語義上可搜索的上下文保存在向量數(shù)據(jù)庫中。為了防止內(nèi)存爆炸,請(qǐng)將長(zhǎng)線索提煉成簡(jiǎn)短的摘要,并僅保留要點(diǎn)。
六、小結(jié)
到目前為止,我們所涵蓋的所有內(nèi)容都只是一個(gè)更長(zhǎng)故事的開端。我們勾勒出了核心部分——工作流、AI代理、護(hù)欄、可觀察性、評(píng)估、安全、部署和身份,但每個(gè)主題都隱藏著完整的子學(xué)科。我們甚至還沒有開始探討諸如AI代理的運(yùn)行模式(人機(jī)交互還是后臺(tái)),或者應(yīng)該使用 100 多個(gè)AI代理框架中的哪一個(gè)或者是否需要某個(gè)框架之類的問題。構(gòu)建AI代理系統(tǒng)沒有單一的“正確”方案。只有模式、權(quán)衡利弊,以及一套快速發(fā)展的社區(qū)最佳實(shí)踐。我希望這篇導(dǎo)覽至少能勾勒出一些基礎(chǔ)知識(shí),以便您知道從哪里開始深入研究。





























