第六章:Agent 智能助手
6.1 Agent 概述
6.1.1 什麼是 Agent
Agent(智能代理/智能助手)是一種能夠自主完成複雜任務的 AI 應用。與普通的聊天助手不同,Agent 具備以下核心能力:
- 目標規劃:理解用户的最終目標
- 任務拆解:將複雜任務分解為可執行的子任務
- 工具調用:自主選擇和使用合適的工具
- 過程迭代:根據中間結果調整策略
- 自主完成:在沒有人類干預的情況下完成任務
Agent 利用大語言模型的推理能力,不僅能夠對話,還能夠"行動"。它可以調用搜索引擎獲取信息、執行代碼進行計算、訪問數據庫查詢數據,甚至控制外部系統完成操作。
6.1.2 Agent 的工作原理
Agent 的核心是"思考-行動-觀察"循環(Reason-Act-Observe Loop):
用户輸入
↓
┌─────────────────────────┐
│ 思考(Reasoning) │
│ - 分析任務目標 │
│ - 決定下一步行動 │
│ - 選擇合適的工具 │
└───────────┬─────────────┘
↓
┌─────────────────────────┐
│ 行動(Action) │
│ - 調用選定的工具 │
│ - 傳遞必要的參數 │
│ - 執行具體操作 │
└───────────┬─────────────┘
↓
┌─────────────────────────┐
│ 觀察(Observation) │
│ - 獲取工具返回結果 │
│ - 分析執行效果 │
│ - 決定是否繼續 │
└───────────┬─────────────┘
↓
是否完成任務?
├── 否 ──→ 返回思考
└── 是 ──→ 輸出結果
6.1.3 Agent vs 聊天助手
|
特性
|
聊天助手
|
Agent
|
|
交互方式
|
純對話
|
對話 + 工具調用
|
|
能力範圍
|
知識問答
|
執行任務
|
|
信息獲取
|
依賴訓練數據和知識庫
|
可實時獲取外部信息
|
|
行動能力
|
無
|
可執行操作
|
|
複雜任務
|
難以處理
|
自主分解完成
|
6.1.4 Agent 的應用場景
數據分析:
- 從多個數據源收集數據
- 執行統計分析和計算
- 生成可視化圖表和報告
信息研究:
- 搜索最新資訊和文獻
- 整理和歸納信息
- 撰寫研究報告
自動化辦公:
- 自動處理郵件
- 安排日程會議
- 生成文檔報告
客户服務:
- 查詢訂單狀態
- 處理退換貨請求
- 協調多部門資源
代碼開發:
- 理解需求並設計方案
- 編寫和調試代碼
- 執行測試驗證
6.2 創建 Agent 應用
6.2.1 創建步驟
步驟一:創建應用
- 進入 Dify 工作室
- 點擊"創建空白應用"
- 選擇"Agent"類型
- 填寫應用名稱和描述
步驟二:選擇推理模型
Agent 的能力很大程度上取決於底層模型:
推薦模型選擇:
|
模型
|
推理能力
|
函數調用
|
推薦度
|
|
GPT-4
|
最強
|
原生支持
|
⭐⭐⭐⭐⭐
|
|
GPT-4-turbo
|
很強
|
原生支持
|
⭐⭐⭐⭐⭐
|
|
Claude 3 Opus
|
很強
|
支持
|
⭐⭐⭐⭐
|
|
GPT-3.5-turbo
|
良好
|
原生支持
|
⭐⭐⭐
|
|
Claude 3 Sonnet
|
良好
|
支持
|
⭐⭐⭐
|
步驟三:配置 Agent 指令
編寫清晰的指令提示詞,定義 Agent 的角色、能力和行為規範。
6.2.2 編寫 Agent 指令
高質量的 Agent 指令應包含以下要素:
角色定義:
## 角色
你是一個專業的數據分析助手,擅長:
- 數據收集和清洗
- 統計分析和建模
- 數據可視化
- 報告撰寫
能力説明:
## 能力
你可以使用以下工具完成任務:
1. 網絡搜索:獲取最新數據和信息
2. 代碼執行:運行 Python 代碼進行計算
3. 圖表生成:創建數據可視化圖表
4. 知識庫檢索:查詢企業內部知識
工作流程:
## 工作流程
處理用户請求時,請遵循以下步驟:
1. 理解用户需求,明確分析目標
2. 制定分析計劃,列出所需數據
3. 使用工具收集和處理數據
4. 進行分析並生成可視化
5. 撰寫分析報告,給出建議
行為約束:
## 約束
- 確保數據來源可靠
- 分析結論要有數據支撐
- 遇到問題時主動説明並尋求用户確認
- 保護用户隱私和數據安全
6.2.3 配置示例
完整的 Agent 配置示例:
# 數據分析助手
## 角色定義
你是一個智能數據分析助手,幫助用户進行數據分析和洞察挖掘。
## 核心能力
1. **數據收集**:通過搜索引擎獲取公開數據
2. **數據處理**:使用 Python 進行數據清洗和轉換
3. **統計分析**:計算統計指標、進行相關性分析
4. **可視化**:生成圖表展示分析結果
5. **報告生成**:撰寫結構化的分析報告
## 工作方式
收到分析請求後:
1. 確認分析目標和範圍
2. 制定分析計劃
3. 逐步執行分析任務
4. 展示中間結果供用户確認
5. 輸出最終分析報告
## 注意事項
- 對於敏感數據,請用户確認後再處理
- 分析結論需要有數據支撐
- 不確定的內容要明確標註
- 複雜任務分步驟執行,每步説明進度
6.3 推理模式配置
6.3.1 Function Calling 模式
Function Calling(函數調用)是現代 LLM 原生支持的工具調用機制。
工作原理:
- 將工具定義為函數 Schema 發送給模型
- 模型判斷是否需要調用函數
- 若需要,模型輸出結構化的函數調用
- 系統執行函數並返回結果
- 模型基於結果繼續推理
優勢:
- 調用準確率高
- 響應速度快
- 格式規範統一
支持的模型:
- OpenAI GPT 系列(gpt-3.5-turbo, gpt-4)
- Anthropic Claude 系列
- 部分開源模型(需特定微調)
配置方式:
在 Agent 設置中選擇支持 Function Calling 的模型,系統會自動啓用此模式。
6.3.2 ReAct 模式
ReAct(Reasoning + Acting)是一種通過提示詞引導模型進行推理和行動的框架。
工作原理:
Thought: 我需要查找最新的銷售數據
Action: search
Action Input: 2024年Q1銷售數據報告
Observation: [搜索結果內容]
Thought: 我找到了數據,現在需要進行分析...
Action: code_execution
Action Input: import pandas as pd...
Observation: [代碼執行結果]
Thought: 分析完成,我可以給出結論了
Final Answer: 根據分析...
優勢:
- 兼容性廣,支持更多模型
- 推理過程透明
- 可靈活調整策略
劣勢:
- 準確率略低於 Function Calling
- Token 消耗較多
- 需要更多迭代
配置方式:
對於不支持 Function Calling 的模型,系統自動使用 ReAct 模式。
6.3.3 迭代次數配置
Agent 執行過程可能需要多次"思考-行動-觀察"循環。
配置參數:
最大迭代次數: 5 # 防止無限循環
迭代超時: 60秒 # 單次迭代的時間限制
建議配置:
|
任務複雜度
|
迭代次數
|
|
簡單任務
|
3
|
|
中等任務
|
5
|
|
複雜任務
|
10
|
6.3.4 模式選擇建議
優先使用 Function Calling:
- 模型支持時首選
- 效果更好更穩定
- Token 消耗更少
使用 ReAct 的情況:
- 模型不支持 Function Calling
- 需要更詳細的推理過程
- 調試和分析 Agent 行為
6.4 工具配置
6.4.1 添加工具
步驟:
- 進入 Agent 編排界面
- 點擊"工具"配置區域
- 點擊"添加工具"
- 選擇需要的工具
- 配置工具參數
6.4.2 內置工具
Dify 提供了豐富的內置工具:
搜索工具:
|
工具
|
功能
|
配置要求
|
|
Google 搜索
|
網絡搜索
|
API Key
|
|
Bing 搜索
|
網絡搜索
|
API Key
|
|
DuckDuckGo
|
網絡搜索
|
無需 Key
|
|
Wikipedia
|
百科搜索
|
無需 Key
|
計算工具:
|
工具
|
功能
|
配置要求
|
|
代碼執行器
|
運行 Python/JS
|
無
|
|
WolframAlpha
|
數學計算
|
API Key
|
|
計算器
|
基礎運算
|
無
|
生成工具:
|
工具
|
功能
|
配置要求
|
|
DALL-E
|
圖像生成
|
OpenAI Key
|
|
Stable Diffusion
|
圖像生成
|
本地部署
|
|
圖表生成
|
數據可視化
|
無
|
其他工具:
|
工具
|
功能
|
配置要求
|
|
HTTP 請求
|
調用 API
|
無
|
|
當前時間
|
獲取時間
|
無
|
|
天氣查詢
|
天氣信息
|
API Key
|
6.4.3 工具授權配置
部分工具需要配置 API Key:
配置步驟:
- 進入"設置" → "工具"
- 找到需要配置的工具
- 點擊"配置憑據"
- 輸入 API Key
- 保存配置
示例 - 配置 Google 搜索:
工具: Google 搜索
API Key: your-google-api-key
搜索引擎 ID: your-search-engine-id
6.4.4 知識庫作為工具
可以將知識庫添加為 Agent 的工具:
配置步驟:
- 在"上下文"區域添加知識庫
- 配置檢索參數
- Agent 會在需要時自動檢索
使用場景:
- 回答企業內部問題
- 查找產品信息
- 檢索歷史記錄
6.4.5 自定義工具
通過 OpenAPI 規範導入自定義 API 工具:
步驟一:準備 OpenAPI Schema
openapi: 3.0.0
info:
title: 訂單查詢 API
version: 1.0.0
servers:
- url: https://api.example.com
paths:
/orders/{orderId}:
get:
summary: 查詢訂單詳情
parameters:
- name: orderId
in: path
required: true
schema:
type: string
responses:
'200':
description: 訂單信息
步驟二:導入工具
- 進入"工具" → "自定義工具"
- 點擊"創建自定義工具"
- 粘貼 OpenAPI Schema
- 配置認證方式
- 測試並保存
6.4.6 工具使用建議
精選工具:
- 只添加必要的工具
- 工具過多會影響選擇準確性
清晰描述:
- 確保工具描述準確清晰
- 幫助 Agent 正確選擇工具
合理配置:
- 設置適當的超時時間
- 配置錯誤處理策略
6.5 Agent 調試
6.5.1 調試面板
Agent 調試面板顯示完整的執行過程:
信息展示:
- 用户輸入
- 思考過程(Thought)
- 工具調用(Action)
- 工具結果(Observation)
- 最終回答
6.5.2 日誌分析
查看位置:
- 進入應用詳情
- 點擊"日誌"標籤
- 選擇具體會話
日誌內容:
會話 ID: xxx
開始時間: 2024-01-15 10:30:00
總耗時: 15.3s
執行步驟:
1. 思考: 分析用户需求
2. 行動: 調用搜索工具
- 輸入: "2024年AI發展趨勢"
- 結果: [搜索結果]
3. 思考: 整理搜索結果
4. 輸出: 最終回答
Token 消耗:
- 輸入: 2341
- 輸出: 856
- 總計: 3197
6.5.3 常見問題排查
問題一:工具調用失敗
原因:
- API Key 無效
- 網絡連接問題
- 參數格式錯誤
解決:
- 檢查工具配置
- 驗證網絡連通性
- 查看錯誤日誌
問題二:無限循環
原因:
- 任務描述不清晰
- 工具返回結果不明確
- 迭代次數設置過高
解決:
- 優化 Agent 指令
- 改進工具描述
- 設置合理的迭代限制
問題三:選錯工具
原因:
- 工具描述不準確
- 工具數量過多
- 任務理解偏差
解決:
- 優化工具描述
- 精簡工具列表
- 在指令中明確工具用途
問題四:回答質量差
原因:
- 模型能力不足
- 提示詞設計問題
- 上下文信息不足
解決:
- 升級到更強的模型
- 優化 Agent 指令
- 提供更多背景知識
6.6 高級技巧
6.6.1 多 Agent 協作
通過工作流實現多個 Agent 協作:
架構設計:
用户請求
↓
主 Agent(任務分配)
├── 研究 Agent(信息收集)
├── 分析 Agent(數據分析)
└── 寫作 Agent(報告生成)
↓
結果整合
實現方式:
使用工作流的 Agent 節點串聯多個 Agent。
6.6.2 記憶增強
短期記憶:
- 對話歷史自動保存
- 配置記憶窗口大小
長期記憶:
- 使用知識庫存儲重要信息
- 定期總結對話內容
6.6.3 上下文管理
動態上下文:
# 根據對話階段調整上下文
if task_phase == "收集":
context = research_context
elif task_phase == "分析":
context = analysis_context
else:
context = summary_context
6.6.4 工具鏈設計
設計合理的工具組合:
信息處理鏈:
搜索 → 網頁抓取 → 文本提取 → 知識存儲
數據分析鏈:
數據獲取 → 代碼執行 → 圖表生成 → 報告撰寫
6.6.5 錯誤恢復
重試策略:
工具調用失敗時:
- 重試次數: 3
- 重試間隔: 遞增
- 備選工具: 啓用
降級處理:
無法完成任務時:
- 返回部分結果
- 説明失敗原因
- 建議人工介入
6.7 實戰案例
6.7.1 研究助手 Agent
功能需求:
- 根據主題搜索資料
- 整理和歸納信息
- 生成研究報告
Agent 配置:
# 研究助手
## 角色
你是一個專業的研究助手,幫助用户進行主題研究和信息整理。
## 工具
1. 網絡搜索:搜索最新資訊和學術文獻
2. 網頁抓取:獲取網頁詳細內容
3. 知識庫檢索:查詢已有資料
## 工作流程
1. 理解研究主題和目的
2. 制定信息收集計劃
3. 執行搜索和資料收集
4. 整理和歸納信息
5. 生成結構化報告
## 輸出格式
研究報告應包含:
- 主題概述
- 關鍵發現
- 詳細分析
- 結論建議
- 參考來源
6.7.2 代碼助手 Agent
功能需求:
- 理解編程需求
- 編寫代碼實現
- 調試和測試
Agent 配置:
# 代碼助手
## 角色
你是一個專業的編程助手,幫助用户編寫和調試代碼。
## 工具
1. 代碼執行:運行 Python 代碼
2. 文檔搜索:查詢 API 文檔
## 工作方式
1. 理解用户的編程需求
2. 設計解決方案
3. 編寫代碼實現
4. 執行代碼驗證
5. 根據結果調整優化
## 代碼規範
- 添加必要的註釋
- 遵循 PEP8 規範
- 處理異常情況
- 提供使用説明
6.7.3 客服 Agent
功能需求:
- 理解客户問題
- 查詢相關信息
- 提供解決方案
Agent 配置:
# 智能客服
## 角色
你是一個專業的客户服務代表,幫助客户解決問題。
## 工具
1. 知識庫檢索:查詢產品信息和FAQ
2. 訂單查詢:查詢訂單狀態
3. 工單創建:創建售後工單
## 服務流程
1. 友好問候,瞭解問題
2. 分析問題類型
3. 查詢相關信息
4. 提供解決方案
5. 確認問題是否解決
6. 必要時升級人工
## 服務標準
- 始終保持禮貌和耐心
- 回答準確、簡潔
- 主動提供幫助
- 保護客户隱私
6.8 本章小結
通過本章的學習,你應該掌握:
- Agent 概念:理解 Agent 的工作原理和優勢
- 創建流程:掌握 Agent 應用的創建和配置
- 推理模式:瞭解 Function Calling 和 ReAct 的區別
- 工具配置:熟練添加和配置各類工具
- 調試技巧:學會調試和優化 Agent
- 實戰應用:能夠設計和實現實際的 Agent 應用
6.9 思考與練習
- 實踐練習:
- 創建一個研究助手 Agent
- 實現一個代碼生成和調試的 Agent
- 設計一個多工具協作的 Agent
- 思考題:
- Agent 相比普通聊天助手有哪些優勢和挑戰?
- 如何設計工具組合以提高 Agent 效率?
- 什麼情況下應該使用 Agent 而不是工作流?
下一章預告:第七章將介紹工具與插件系統,包括插件生態、自定義工具開發和最佳實踐。