第六章: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 創建步驟

步驟一:創建應用

  1. 進入 Dify 工作室
  2. 點擊"創建空白應用"
  3. 選擇"Agent"類型
  4. 填寫應用名稱和描述

步驟二:選擇推理模型
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 原生支持的工具調用機制。

工作原理

  1. 將工具定義為函數 Schema 發送給模型
  2. 模型判斷是否需要調用函數
  3. 若需要,模型輸出結構化的函數調用
  4. 系統執行函數並返回結果
  5. 模型基於結果繼續推理

優勢

  • 調用準確率高
  • 響應速度快
  • 格式規範統一

支持的模型

  • 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 添加工具

步驟

  1. 進入 Agent 編排界面
  2. 點擊"工具"配置區域
  3. 點擊"添加工具"
  4. 選擇需要的工具
  5. 配置工具參數

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:

配置步驟

  1. 進入"設置" → "工具"
  2. 找到需要配置的工具
  3. 點擊"配置憑據"
  4. 輸入 API Key
  5. 保存配置

示例 - 配置 Google 搜索

工具: Google 搜索
API Key: your-google-api-key
搜索引擎 ID: your-search-engine-id

6.4.4 知識庫作為工具

可以將知識庫添加為 Agent 的工具:

配置步驟

  1. 在"上下文"區域添加知識庫
  2. 配置檢索參數
  3. 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: 訂單信息

步驟二:導入工具

  1. 進入"工具" → "自定義工具"
  2. 點擊"創建自定義工具"
  3. 粘貼 OpenAPI Schema
  4. 配置認證方式
  5. 測試並保存

6.4.6 工具使用建議

精選工具

  • 只添加必要的工具
  • 工具過多會影響選擇準確性

清晰描述

  • 確保工具描述準確清晰
  • 幫助 Agent 正確選擇工具

合理配置

  • 設置適當的超時時間
  • 配置錯誤處理策略

6.5 Agent 調試

6.5.1 調試面板

Agent 調試面板顯示完整的執行過程:

信息展示

  • 用户輸入
  • 思考過程(Thought)
  • 工具調用(Action)
  • 工具結果(Observation)
  • 最終回答

6.5.2 日誌分析

查看位置

  1. 進入應用詳情
  2. 點擊"日誌"標籤
  3. 選擇具體會話

日誌內容

會話 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 本章小結

通過本章的學習,你應該掌握:

  1. Agent 概念:理解 Agent 的工作原理和優勢
  2. 創建流程:掌握 Agent 應用的創建和配置
  3. 推理模式:瞭解 Function Calling 和 ReAct 的區別
  4. 工具配置:熟練添加和配置各類工具
  5. 調試技巧:學會調試和優化 Agent
  6. 實戰應用:能夠設計和實現實際的 Agent 應用

6.9 思考與練習

  1. 實踐練習
  • 創建一個研究助手 Agent
  • 實現一個代碼生成和調試的 Agent
  • 設計一個多工具協作的 Agent
  1. 思考題
  • Agent 相比普通聊天助手有哪些優勢和挑戰?
  • 如何設計工具組合以提高 Agent 效率?
  • 什麼情況下應該使用 Agent 而不是工作流?

下一章預告:第七章將介紹工具與插件系統,包括插件生態、自定義工具開發和最佳實踐。