AI Agent的核心演進
-
Level 1:LLM Agent(聊天機器人)
- 特點:靠提示詞工程賦予人設(如星座占卜、角色扮演),但存在幻覺問題,輸出不可控。
- 局限:娛樂性強,難勝任嚴肅任務。
-
Level 2:AI Agent(實用工具)
- 升級點:新增 規劃(拆解任務步驟)、記憶(存儲上下文)、工具使用(調用API/數據庫)。
- 代表:OpenManus、OWL等,能處理復雜任務(如自動化辦公)。
-
Level 3:Multi-Agent(多智能體協作)
- 為什么需要? 單Agent難精通所有領域(如同時懂編程+畫圖)。
- 方案:多個專業Agent分工協作(如產品經理Agent分析需求 + 程序員Agent寫代碼)。
- 關鍵優勢:
- 任務拆解更高效
- 可獨立優化單個Agent
- 支持人機協同(Human in the Loop)
兩大核心協議:MCP 與 A2A
1. MCP(面向工具調用)
- 目標:讓AI統一調用外部工具(如天氣API、數據庫)。
- 架構:
- 主機(如IDE插件)→ 客戶端(連接器)→ 服務器(工具實現)。
- 價值:工具一次開發,多模型通用(類似USB-C接口)。
2. A2A(面向Agent協作)
- 目標:讓多個Agent互相發現、分工協作(如旅行規劃Agent + 酒店預訂Agent)。
- 核心功能:
- 發布能力(Agent Card)
- 任務分發與狀態同步
- 結果流式返回
- 優勢:打破廠商壁壘,構建開放生態。
3. MCP vs A2A 關系
- 互補:MCP管工具調用,A2A管Agent協作。
- 競爭可能:高級工具 ≈ 弱Agent,未來協議可能融合。
Agent的思考框架
-
思維鏈(CoT)
- 讓模型分步驟推理(如先分析問題再生成答案),提升邏輯性。
-
ReAct(推理+行動)
- 循環流程:思考 → 行動(調用工具)→ 觀察結果 → 再思考。
- 適用:需動態調整的任務(如實時搜索+分析)。
-
Plan-and-Execute(先規劃后執行)
- 步驟:
- 生成完整計劃(如“1. 搜索資料 → 2. 總結 → 3. 生成報告”)。
- 嚴格按步驟執行,避免中途被干擾。
- 優勢:適合長鏈條任務,穩定性強。
- 步驟:
Golang開發框架:Eino
1. 核心設計
- 強類型:用Go泛型確保節點輸入輸出類型安全。
- 組件化:預置ChatModel、工具調用等模塊,開箱即用。
- 編排能力:用有向圖連接組件,可視化構建流程(類似流程圖)。
2. 關鍵功能
- Callback機制:嵌入日志、監控等非業務邏輯(如追蹤工具調用耗時)。
- Checkpoint:支持人機協同(如任務中途暫停讓用戶確認)。
- 示例代碼:10行實現天氣查詢Agent(結合MCP調用高德地圖API)。
多Agent系統落地實踐
-
架構設計(Supervisor模式)
- 意圖識別Agent(客戶經理) → 分發任務給領域Agent(如旅行規劃、深度搜索)。
- 所有Agent通過A2A協議互聯。
-
連接生態
- Cherry Studio:通過OpenAI兼容接口快速接入Agent。
- QQ機器人:用A2A協議將Agent能力植入QQ生態。
-
可觀測性
- 集成 Langfuse:實時查看任務鏈路、性能指標、錯誤日志。
- 10行代碼接入,無侵入式監控。
AI Agent開發心法
- 協議是基石:MCP統一工具調用,A2A實現多Agent協作。
- 框架提效率:Eino解決Go生態工程化問題。
- 設計模式是關鍵:
- 簡單任務 → ReAct(邊想邊做)
- 復雜任務 → Plan-and-Execute(先規劃后執行)
- 生態擴展:通過Connector快速接入QQ、Cherry Studio等平臺。
結論:
AI Agent正從“玩具”走向“工具”,多Agent協作+標準化協議+工程化框架是高效開發的核心。選擇適合場景的協議(MCP/A2A)和思考框架,結合Eino等工具,即可優雅構建復雜Agent系統。
技術選型對比表
場景 | 推薦方案 |
---|---|
單任務+工具調用 | MCP + ReAct |
多Agent協作 | A2A + Plan-and-Execute |
工程化開發(Golang) | Eino框架 + tRPC-A2A |
快速原型驗證 | 可視化編排(Dify/Coze) |
抓住協議、框架、設計模式三條主線,就能理解復雜Agent系統的全貌。
架構核心組件詳解
1. LLM(大語言模型)
- 核心作用:自然語言理解與任務規劃
- 關鍵技術:
- 思維鏈(CoT):將用戶指令分解為可執行步驟
# 示例:LLM任務分解 prompt = f""" 用戶請求:{user_query} 可用工具:{tool_list} 輸出JSON格式:{"steps": [{"tool": "tool_name", "params": {...}}]} """
- 約束生成:限定輸出格式防止幻覺
- 思維鏈(CoT):將用戶指令分解為可執行步驟
2. Agent(智能代理)
- 核心引擎:任務調度與決策
- 狀態機實現:
class Agent:def __init__(self, tools):self.state = "IDLE"self.working_memory = [] # 存儲中間結果def execute_step(self, step):# 工具選擇算法(基于余弦相似度)tool = max(self.tools, key=lambda t: cosine_sim(step["desc"], t.desc))result = tool.execute(step["params"])self.working_memory.append(result)# 狀態轉移if "需要進一步處理" in result:self.state = "NEED_FOLLOWUP"else:self.state = "AWAITING_NEXT"
3. MCP(模型上下文協議)
- 協議本質:統一工具調用規范
- 協議結構:
{"version": "1.0","action": "EXECUTE","payload": {"tool_id": "crm_sales_query","parameters": {"time_range": "last_quarter"},"auth_context": {"user_id": "U123", "token": "xyz"}} }
- 安全設計:
- 參數白名單:限制可傳遞的敏感字段
- 執行沙箱:危險操作隔離運行
def safe_execute(tool, params):with Sandbox() as sandbox:return sandbox.run(tool.executable, params)
全鏈路工作流程(14步詳解)
階段1:請求解析(1-3步)
- 用戶輸入:自然語言請求(例:“統計Q3華北區銷售額”)
- LLM解析:
- 生成結構化指令:
{"steps": [{"tool": "region_filter", "params": {"region": "華北"}},{"tool": "sales_aggregator", "params": {"period": "2023Q3"}}] }
- 生成結構化指令:
- 權限預檢:驗證用戶是否有權調用指定工具
階段2:安全攔截(4-5步)
- 操作確認:向用戶展示即將執行的操作
[系統提示] 將執行: 1. 在CRM系統篩選"華北"區域數據 2. 匯總2023年第三季度銷售額 確認執行?(Y/N)
- 用戶授權:獲得明確授權后才繼續
階段3:協議執行(6-11步)
- 協議封裝:Agent生成MCP請求
mcp_request = {"tool_id": "crm_api","parameters": {"action": "get_sales", "filters": {...}} }
- 服務路由:MCP Client通過服務發現定位目標系統
- 協議轉換:將MCP請求轉換為目標API格式
# 轉換示例(CRM系統適配器) def adapt_to_crm(mcp_req):return {"endpoint": "/v1/sales/query","body": {"filter": mcp_req["parameters"]["filters"]}}
- 執行監控:記錄請求耗時、成功率等指標
- 異常處理:
- 重試機制:對超時請求自動重試2次
- 熔斷保護:失敗率超閾值時暫停調用
階段4:結果生成(12-14步)
- 數據增強:LLM對原始數據加工
# 示例:生成可視化建議 if result["data_type"] == "sales_report":return llm_generate("將數據轉為折線圖代碼")
- 審計日志:記錄完整操作軌跡
[審計日志] 用戶U123 執行CRM查詢 → 結果大小1024行 → 生成圖表
- 交付輸出:最終結果返回用戶界面
企業級關鍵技術實現
1. 混合知識引擎
- 三路數據融合:
def query_knowledge(question):# 并行查詢vector_result = vector_db.semantic_search(question) graph_result = neo4j.query(f"MATCH (n)-[r]->(m) WHERE n.name CONTAINS '{question}' RETURN n,r,m")sql_result = db.execute(llm_to_sql(question))# 結果融合算法return FusionEngine.merge(sources=[vector_result, graph_result, sql_result],weights=[0.4, 0.3, 0.3] # 可配置權重)
2. 動態Agent編排
- 工作流引擎:
class WorkflowEngine:def __init__(self, dag):self.dag = dag # 有向無環圖def run(self, inputs):for node in topological_sort(self.dag):if node.type == "TOOL":outputs = execute_tool(node.tool_id, inputs)elif node.type == "LLM":outputs = llm_process(node.prompt, inputs)inputs = outputs # 傳遞中間結果return outputs
3. 安全控制體系
層級 | 技術方案 | 實現示例 |
---|---|---|
認證 | JWT + OAuth2.0 | Authorization: Bearer <token> |
授權 | ABAC(屬性訪問控制) | 規則引擎校驗用戶部門/數據權限 |
審計 | Blockchain日志 | 操作記錄上鏈防止篡改 |
防護 | 動態污點跟蹤 | 標記敏感數據傳播路徑 |
生產環境部署建議
1. 性能優化
- LLM緩存:對重復查詢緩存思維鏈結果
@cache(ttl=300, key_fn=lambda q: hash(q)) def get_llm_plan(query):return llm.generate(prompt_template.format(query))
- 連接池:MCP Client維護數據庫/API連接池
2. 高可用設計
- Agent集群:ZK選主實現故障轉移
- 流量調度:
upstream agent_nodes {server 10.0.0.1:8000 weight=5; server 10.0.0.2:8000;check interval=3000 rise=2 fall=3; }
3. 演進機制
- 持續訓練:
def online_learning(feedback):# 收集負樣本if feedback.rating < 3:save_training_data(feedback.query, feedback.expected)# 每周微調if time.now().weekday() == 0:retrain_model(training_data)
典型問題解決方案
問題:工具調用沖突
- 解決方案:樂觀鎖+事務補償
def execute_transaction(steps):try:with transaction():for step in steps:tool.lock(resource_id)result = tool.execute(step)tool.unlock(resource_id)except ConflictError:# 補償機制for step in reversed(completed_steps):tool.compensate(step)
問題:長流程中斷
- 解決方案:狀態持久化
class StateManager:def save_state(self, agent):redis.set(f"agent:{agent.id}", pickle.dumps(agent.working_memory))def recover_state(self, agent_id):return pickle.loads(redis.get(f"agent:{agent_id}"))
MCP+LLM+Agent架構本質是將自然語言編譯為系統API調用的技術棧,其核心價值在于:
- 統一協議層:通過MCP消除N×M集成復雜度
- 動態編排器:Agent實現跨系統工作流自動化
- 持續進化力:在線學習機制使系統越用越智能
企業落地建議:從客服工單處理、IT運維等標準化場景切入,逐步構建企業級AI Agent中臺。參考技術棧:LangChain(Agent框架)+ FastAPI(MCP服務)+ Weaviate(向量庫)。
核心問題:Prompt注入攻擊
- 是什么? 攻擊者把惡意指令藏在看起來正常的輸入(如用戶提問、網頁內容、上傳文件)里,騙AI去執行不該做的事情(比如刪除文件、泄露數據、發垃圾郵件)。
- 為什么頭疼? AI被訓練成“聽話”的助手,很難分辨哪些是用戶真需求,哪些是藏起來的壞指令。特別是當AI有權限操作外部工具(執行代碼、訪問網絡、管理設備)時,風險更大。
- 目標: 讓AI做壞事,或者讓它“罷工”。
核心結論:沒有絕對安全,但可以大大加強防御!
想做一個對所有Prompt注入都免疫的AI幾乎不可能(因為它總要理解文字)。更實際的辦法是改變AI系統的設計架構,限制它的能力,即使被“忽悠”了,也干不成壞事或壞事影響有限。
六種“安全設計模式”詳解(就像給AI建安全屋):
-
行動選擇器模式:
- 核心: 一次只做一件事,不看結果反饋。
- 怎么防注入: AI收到指令(可能含惡意指令),決定下一步行動(比如“搜索天氣”)。系統執行這個行動(比如顯示搜索結果),但行動結果不給AI看! AI決定下一個行動時,只看最初指令和內部狀態,不看那些可能藏著壞指令的結果。
- 比喻: 指揮官(AI)下命令“偵察A區”,偵察兵(系統)去了,回來報告。但指揮官不看報告內容,只根據最初任務決定下個命令是“進攻”還是“撤退”。報告里就算寫著“叛變吧!”,指揮官也看不見。
- 適用: 簡單任務,不需要根據結果做復雜決策。
-
計劃-執行模式:
- 核心: 先列計劃表,然后死板執行。
- 怎么防注入: AI先根據任務,制定一個完整的、多步驟的計劃(比如:1. 搜索科技新聞;2. 閱讀結果;3. 寫總結)。計劃一旦定好,系統就嚴格按照計劃步驟執行。執行過程中產生的數據(如網頁內容)可能含壞指令,但不會送回AI去修改計劃。
- 比喻: 指揮官(AI)戰前制定好作戰計劃書(搜索->閱讀->總結)。士兵(系統)拿到計劃書就嚴格執行。打到一半發現敵人陣地上有標語“投降吧!”,但士兵只按計劃書行動,不會因此改變計劃去投降。
- 適用: 多步驟任務,但任務流程相對固定,不需要中途靈活調整計劃。
-
LLM Map-Reduce模式:
- 核心: 分工協作,讓“危險”AI干安全的活兒。
- 怎么防注入: 系統有兩個AI:
- 協調者(主AI): 負責分解任務、分派工作、匯總結果。它不接觸原始危險輸入。
- 工作者(子AI): 負責處理可能含壞指令的輸入(如用戶文件),但能力被嚴格限制,只能做特定安全操作(如按固定格式提取信息)。它們無法執行壞指令要求的危險操作。
- 比喻: 老板(協調者)讓一群實習生(工作者)從一堆匿名信(危險輸入)里只抄寫信封上的地址(安全任務)。實習生只能抄地址,無法執行信里寫的“燒掉辦公室”這種指令。老板只收集整理實習生抄好的地址(安全結果)。
- 適用: 處理大量不可信內容(如用戶上傳文件、評論)進行信息提取、分類等安全操作。
-
雙重LLM模式:
- 核心: “翻譯官”+“執行官”,危險輸入不直接給“執行官”。
- 怎么防注入: 系統有兩個AI:
- 隔離LLM: 負責處理原始用戶輸入/外部內容(可能含壞指令)。它能力受限,不直接執行操作,只把輸入翻譯成安全符號(如
INTENT_開燈
,LOCATION_客廳
)。 - 特權LLM: 只接收隔離LLM翻譯好的安全符號,并據此決定和執行操作(如開燈)。它從不接觸危險的原始輸入。
- 隔離LLM: 負責處理原始用戶輸入/外部內容(可能含壞指令)。它能力受限,不直接執行操作,只把輸入翻譯成安全符號(如
- 比喻: 你對外交官(特權LLM)說:“客廳好暗,開燈吧”(可能被竊聽成“發射導彈”)。你的翻譯(隔離LLM)只告訴外交官:“用戶想開客廳燈”(安全符號)。外交官根據這個開燈。竊聽者喊的“發射導彈!”不會被翻譯成有效指令。
- 適用: 需要理解用戶意圖并執行敏感操作(如智能家居、賬戶管理),尤其是語音、自然語言交互場景。
-
代碼生成-執行模式:
- 核心: AI寫“安全劇本”,“演員”在“安全屋”表演。
- 怎么防注入: 一個受保護的AI(主智能體)根據任務,編寫一段“安全代碼”(用特定、受限的語言寫成)。這段代碼定義了操作流程。代碼在一個隔離的沙箱環境中執行。主AI不執行用戶指令,只負責生成代碼和接收執行后的結構化結果。
- 比喻: 編劇(主AI)寫了個劇本(安全代碼),規定演員(沙箱)只能做“拿起A道具”、“念B臺詞”等安全動作。演員在封閉舞臺(沙箱)嚴格按劇本表演。用戶即使喊“把舞臺炸了!”,劇本里沒這動作,演員就不會做。
- 適用: 自動化流程、數據處理等需要執行多個工具操作的任務,對安全性要求極高。
-
上下文最小化模式:
- 核心: 給AI“喂飯”要少而精,別啥都給它看。
- 怎么防注入: 在把信息(對話歷史、文檔、搜索結果)交給AI做決策參考前,先過濾、裁剪或總結,只留下當前任務絕對必需的信息,刪除無關或可能有害的部分。
- 比喻: 不讓廚師(AI)直接進亂糟糟的倉庫(原始上下文),而是由助手先按訂單(當前任務)挑出需要的幾種食材(最小化上下文),洗干凈切好再交給廚師。倉庫里藏的“毒蘑菇”(惡意指令)很可能就被助手剔除了。
- 適用: 通用策略,可與其他模式結合使用。尤其適用于基于長對話歷史或多文檔進行響應的場景。
如何選擇?
- 沒有萬能藥: 每種模式各有優缺點和適用場景,需要根據你的AI具體做什么、安全要求多高來選擇。
- 核心思想一致:
- 隔離危險: 不讓AI直接接觸可能藏有惡意指令的原始文本。
- 限制能力: 讓處理危險輸入的組件只能做安全的、受限的操作。
- 結構化交互: 使用代碼、符號、固定格式等結構化方式傳遞意圖和結果,避免依賴自由文本解析。
- 控制信息流: 精心設計哪些信息在哪個階段被哪個組件看到。
- 組合使用: 常常需要組合使用多種模式來構建更健壯的系統(例如:上下文最小化 + 計劃-執行模式 + 代碼生成-執行模式)。
把這六種模式想象成給AI系統設計的安全流程和權限管理。核心就是:別讓AI什么都看、什么都信、什么都能做! 通過設計好的“流水線”、“防火墻”和“操作手冊”,讓即使部分環節被“忽悠”了,整個系統也不會出大亂子。選擇哪種“安全屋”設計,取決于你要讓AI干什么活兒。