跳到主要内容

基于 ReAct 的 Agent 智能体设计完整指南

📋 方案概述

本文档提供了一套完整的 Agent 智能体构建方案,结合 LangGPT 结构化提示词 + ReAct 推理模式,用于处理需要多步推理、工具调用和知识整合的复杂任务。

核心理念:让 AI 像人类专家一样"先思考、再行动、再观察、再决策"。


🎯 适用场景

需要查阅专业知识库 + 联网搜索的任务
需要多步骤规划和动态决策的复杂查询
需要透明推理过程的教学/咨询场景
需要工具编排(检索、搜索、计算等)的应用

典型应用场景

  • 🎓 英语教学助手(语法 + 发音双重诊断)
  • ⚖️ 法律顾问(法条检索 + 案例搜索)
  • 🏥 医疗问诊(医学知识库 + 最新研究)
  • 🔧 技术支持(产品文档 + 社区方案)

第一部分:结构化提示词设计

设计原则

基于 LangGPT 标准格式,采用五要素结构:

Role(角色定位)→ Goals(目标)→ Constraints(约束)→ Skills(技能/工具)→ Workflow(工作流)

核心要点:

  1. 强制 ReAct 循环:[Thought] → [Action] → [Observation] → [Response]
  2. 工具优先级:知识库优先 → 联网搜索补充 → 多源整合
  3. 推理透明化:向用户展示决策路径
  4. 拒绝幻觉:无依据时诚实告知

完整提示词模板

# Role
你是一位精通「美式发音训练」与「英语语法」的 AI 语言教学专家 (Senior Linguistic Agent)。
你拥有《English Grammar in Use》和《American Accent Training》知识库访问权限,同时具备联网搜索能力。

# Goals
1. **精准诊断**:分析用户句子的语法错误或发音难点
2. **权威引用**:优先基于知识库提供教材级别的解释
3. **动态补充**:当知识库无法覆盖时(如最新俚语),使用联网搜索工具
4. **教学闭环**:不仅给出答案,还提供针对性练习建议

# Constraints
1. **ReAct 思考原则**:在回答前必须执行 [Thought] → [Action] → [Observation] 推理循环
2. **知识优先级**:优先检索知识库,仅在无结果或相关度低时才调用搜索工具
3. **格式规范**:最终输出必须使用 Markdown 清晰分点陈述
4. **拒绝幻觉**:如果知识库和网络均无可靠信息,诚实回答"未找到权威依据"
5. **推理透明**:向用户展示你的查找路径和决策依据

# Skills (Available Tools)
1. **Knowledge_Retrieval**:查阅《English Grammar in Use》和《American Accent Training》
2. **Web_Search**:使用搜索引擎查找最新语言用法或补充例句

# Workflow (ReAct Loop)

## Phase 1: Thought - 分析与规划
**在执行任何操作前,必须先思考:**
- 用户意图是什么?(语法问题 / 发音问题 / 词汇解释)
- 该知识点属于哪个范畴?(经典语法 / 发音规则 / 新词俚语)
- 制定行动计划:
- 是否需要查知识库?(关键词是什么?)
- 知识库可能无法覆盖吗?(需要提前准备搜索)
- 需要组合多个信息源吗?

## Phase 2: Action - 执行工具调用
**按优先级执行:**
1. **Step 1**:调用 `Knowledge_Retrieval` 搜索核心关键词
2. **Step 2**:观察检索结果
- 如果相关度 ≥ 0.7 且内容充分 → 直接使用
- 如果相关度 < 0.6 或无结果 → 立即调用 `Web_Search`
3. **Step 3**:整合多源信息(知识库 + 搜索结果)

## Phase 3: Observation - 结果评估
**对每次工具调用的结果进行判断:**
- 信息是否充分?是否需要二次检索?
- 不同来源的信息是否矛盾?如何取舍?
- 是否需要调用其他工具补充?

## Phase 4: Response - 结构化输出
**按以下格式输出最终答案:**

### 🔍 分析路径
简述你的推理和查找过程(如:"已查阅《Grammar in Use》Unit 5,并通过搜索验证了最新用法...")

### ✅ 核心解答
- 给出修正后的正确句子或发音指导
- 用加粗/高亮标注关键修改点

### 📖 深度解析
- 解释背后的语法规则或发音原理
- 引用知识库出处(如"Unit 12: Present Perfect")
- 对比常见错误用法

### 🗣️ 练习建议
- 提供 1-2 个针对性练习句
- 给出跟读或改写任务

### 📚 拓展资源(可选)
- 如果网络搜索发现了优质资料,提供链接

# Initialization
我已准备就绪。请直接发送你要分析的句子或问题,我将启动 ReAct 推理流程为你解答。

推理模式设置

在 Dify Agent 配置中,选择合适的推理模式:

模式适用场景优势劣势
Function Calling模型原生支持时速度快、准确率高、Token 消耗低依赖模型能力
ReAct通用场景推理过程可见、易调试、灵活性高Token 消耗高

推荐配置

  • ✅ 优先选择 Function Calling(GPT-4, Claude 3.5, DeepSeek-V3)
  • ✅ 如果模型不支持,降级为 ReAct
  • ✅ 开发阶段开启「显示思考过程」便于调试

高级参数调优

# 模型参数
Temperature: 0.3 # 降低随机性,提高准确性
Max Tokens: 2000 # 确保能输出完整解析
Top P: 0.9 # 保持输出质量
Presence Penalty: 0.1 # 减少重复表述
Frequency Penalty: 0.0 # 不限制专业术语频率

# 检索参数
Top K: 3-5 # 返回最相关的 3-5 个片段
Score Threshold: 0.6 # 相关度阈值
Rerank: true # 启用重排序(如果支持)

# 搜索参数
Max Results: 5 # 最多返回 5 个搜索结果
Timeout: 10s # 搜索超时时间
Safe Search: moderate # 中等安全搜索级别

最终输出示例

用户输入

What's the difference between 'I live in Shanghai' and 'I am creating a Rizz app'?

🔍 分析路径

我查阅了《English Grammar in Use》Unit 3 确认了 live 的时态用法,并通过联网搜索获取了 Rizz 的最新定义(Oxford Word of the Year 2023)。

✅ 核心解答

  1. "I live in Shanghai" ✅ 正确

    • live 是状态动词,描述长期居住状态
    • 不应使用进行时 I am living(除非强调临时性)
  2. "I am creating a Rizz app" ✅ 正确

    • create 是动作动词,可以用进行时表示正在进行的开发工作

📖 深度解析

语法规则(来源:Unit 3):

  • 状态动词(Stative Verbs):live, know, like, understand
    • 描述状态而非动作,通常不用进行时
    • 例外:当 live 强调"临时居住"时可用进行时
      • "I'm living in a hotel this week."

词汇解析(来源:Web Search):

  • Rizz /rɪz/
    • 词源:Charisma 的缩写(连读:Cha-ris-ma → Rizz)
    • 含义:吸引异性的魅力或技巧
    • 例句:"He's got serious rizz!"(他很有魅力!)

🗣️ 练习建议

  1. 时态对比练习

    • I live in Beijing. (permanent)
    • I 'm living in a hotel. (temporary)
  2. Rizz 用法练习: 用一句话描述你的 app: "This app helps users improve their rizz through AI-powered conversation tips."

📚 拓展资源


第二部分:Dify Agent 配置指南

1️⃣ 创建 Agent 应用

操作路径

Dify 首页 → 创建应用 → 选择「Agent (智能体)」→ 基础编排模式

注意事项

  • ❌ 不要使用"聊天助手"或"工作流"模式(它们不支持动态推理)
  • ✅ Agent 模式会自动规划工具调用顺序,无需手动连线
  • ✅ 支持中途改变决策(如检索失败后自动切换搜索)

2️⃣ 模型选择

推荐模型平台推理能力成本Function Calling
DeepSeek-V3硅基流动⭐⭐⭐⭐⭐💰
Qwen2.5-72B硅基流动⭐⭐⭐⭐💰💰
GPT-4oOpenAI⭐⭐⭐⭐⭐💰💰💰
Claude 3.5 SonnetAnthropic⭐⭐⭐⭐⭐💰💰💰

配置要求

  • ✅ 必须支持 Function Calling(工具调用)
  • ✅ 上下文窗口 ≥ 32K(用于处理长知识库检索结果)
  • ✅ 推理能力强(能理解复杂的 ReAct 指令)

3️⃣ 工具配置

在 Agent 编排页面的 「工具 (Tools)」 栏目添加:

🔧 工具 1:知识库检索

类型: Knowledge Retrieval
数据源: 选择已创建的「English Book」知识库
检索模式: 语义检索(Semantic Search)
Top K: 3-5
相关度阈值: 0.6
重排序: 启用(如果支持)

知识库准备建议

  • 将《English Grammar in Use》和《American Accent Training》拆分成章节上传
  • 每个文档添加元数据(如 Unit 编号、主题标签)
  • 使用高质量的 Embedding 模型(如 text-embedding-3-large)

🔧 工具 2:联网搜索

类型: Web Search
推荐插件: DuckDuckGo / Tavily / SerpAPI
最大结果数: 5
超时设置: 10 秒
语言偏好: English
安全搜索: 中等

可选工具

  • 🎵 发音合成(Azure TTS / ElevenLabs):朗读纠正后的句子
  • 📝 例句生成(GPT-4 Mini):生成场景化练习句
  • 🎨 图表生成(Python Code Interpreter):可视化语法结构

4️⃣ Agent Mode 配置

在模型配置区找到「代理模式 (Agent Mode)」

# 推荐配置
Agent Mode: Function Calling # 优先选择
Max Iterations: 10 # 最多推理 10 轮
Tool Choice: auto # 自动选择工具
Parallel Tool Calls: false # 按顺序调用(确保逻辑清晰)
Show Reasoning: true # 开发阶段开启

降级方案(如果模型不支持 Function Calling):

Agent Mode: ReAct
Max Iterations: 8
Scratchpad: enabled # 启用草稿本记录推理过程

第三部分:实战案例解析

案例 1:经典语法 + 新词混合查询

输入

Is "I'm loving this Rizz app" correct?

ReAct 推理过程

💭 Thought:
- "loving" 是状态动词 → 检查知识库规则
- "Rizz" 是流行词 → 需要联网确认含义
- 计划:先查语法书,再搜索词汇

🔨 Action 1:
Tool: Knowledge_Retrieval
Query: "state verbs love continuous"
Result:
- Unit 4: "Love 通常不用进行时"
- 例外:某些语境下可以用(强调临时感受)
- 相关度:0.92

👁️ Observation 1:
知识库给出了规则和例外,但需要判断 "loving this app" 是否属于例外

🔨 Action 2:
Tool: Web_Search
Query: "I'm loving it grammar modern usage"
Result:
- McDonald's slogan 使得这种用法在口语中被接受
- 语法学家认为在广告/口语中可以接受

👁️ Observation 2:
现代英语中,"I'm loving" 在非正式场合已被广泛接受

最终输出

🔍 分析路径

检索了《Grammar in Use》Unit 4 关于状态动词的规则,并搜索了现代英语的实际用法。

✅ 核心解答

"I'm loving this Rizz app" 在口语/社交媒体中 ✅ 可接受
在正式写作中 ⚠️ 建议改为 "I love this Rizz app"

📖 深度解析

  • 传统语法:love 是状态动词,原则上不用进行时
  • 现代用法:McDonald's "I'm lovin' it" 的成功使这种用法在口语中普及
  • 语境判断
    • 社交媒体/广告 → 可以使用(强调当下的强烈感受)
    • 学术写作/正式文档 → 避免使用

🗣️ 练习建议

对比以下句子,感受语气差异:

  1. I love your app. (客观事实)
  2. I'm loving your app! (此刻的强烈情感)

案例 2:多轮推理 + 工具切换

输入

How do you pronounce "schedule"? Is it different in American English?

ReAct 推理过程

💭 Thought:
- 发音问题 → 优先查《American Accent Training》
- 涉及美英差异 → 可能需要补充搜索

🔨 Action 1:
Tool: Knowledge_Retrieval
Query: "schedule pronunciation American"
Result:
- Chapter 7: "Schedule 在美式发音为 /ˈskedʒuːl/"
- 相关度:0.88

👁️ Observation 1:
知识库给出了美式发音,但没有提到英式发音对比

🔨 Action 2:
Tool: Web_Search
Query: "schedule pronunciation British vs American"
Result:
- 英式:/ˈʃedjuːl/
- 美式:/ˈskedʒuːl/
- 历史:美国独立后的拼写改革影响

👁️ Observation 2:
获得了完整的对比信息,可以整合输出

最终输出

🔍 分析路径

查阅了《American Accent Training》Chapter 7,并搜索了美英发音差异的历史原因。

✅ 核心解答

American English: /ˈskedʒuːl/ (SKED-jool)
British English: /ˈʃedjuːl/ (SHED-yool)

📖 深度解析

  • 美式发音要点

    • 首音节强调:SKED-jool
    • "ch" 发 /k/ 音(如 school)
  • 为什么不同?

    • 18 世纪美国独立后,Noah Webster 推动拼写改革
    • 美式倾向于"读什么写什么"的发音逻辑

🗣️ 练习建议

跟读对比句:

  • 🇺🇸 "What's your schedule /ˈskedʒuːl/ today?"
  • 🇬🇧 "What's your schedule /ˈʃedjuːl/ today?"

第四部分:优化建议

提示词优化方向

1. 增加错误处理机制

# Error Handling
- 如果工具调用失败,尝试改写关键词重试(最多 2 次)
- 如果知识库和搜索均无结果,提供相关主题的替代建议
- 如果检索到矛盾信息,标注不同来源的观点并说明取舍依据

# Fallback Strategy
当所有工具都失败时:
1. 基于通用语言学知识给出保守建议
2. 明确告知"这是基于常规规则的推测"
3. 建议用户查阅权威词典或咨询专业人士

2. 添加用户画像适配

# User Context Adaptation
- 默认用户英语水平:中级(CEFR B1-B2)
- 如果用户提问涉及高级语法(如虚拟语气),提升解释深度
- 如果用户使用简单句提问,避免过于学术的术语
- 根据历史对话调整例句难度

# Dynamic Difficulty
- 初次互动:使用日常例句
- 多轮对话后:根据用户反馈调整专业度

3. 增强交互性

# Interactive Features
- 在解答后提供后续选项:
- 🅰️ 更多例句
- 🅱️ 相关语法点
- 🅲️ 发音示范
- 🅳️ 练习测试

- 对于复杂问题,询问:"需要我深入解释哪个部分?"
- 提供"简化版"和"完整版"两种输出模式切换

4. 增加知识溯源

# Citation & Sources
- 知识库引用格式:[来源:《Grammar in Use》Unit 12, P.45]
- 网络搜索引用格式:[来源:Oxford Dictionary Online, 2024-01-15]
- 如果结合多个来源,标注"综合以下 3 个来源:..."

Agent 配置优化

1. 知识库优化策略

分层检索

Layer 1 (粗检索):
- Method: BM25 关键词匹配
- Top K: 20
- Purpose: 快速定位相关章节

Layer 2 (精检索):
- Method: Semantic Embedding
- Top K: 5
- Rerank: BAAI/bge-reranker-large
- Purpose: 找到最相关的段落

元数据增强

{
"doc_id": "grammar_unit_12",
"title": "Present Perfect Tense",
"level": "intermediate",
"tags": ["tense", "perfect", "have+pp"],
"unit": 12,
"page": 24
}

2. 工具编排优化

并行调用(适用于独立查询):

# 当用户同时问语法和发音时
Parallel:
- Tool: Knowledge_Retrieval
Query: "present perfect grammar"
- Tool: Knowledge_Retrieval
Query: "perfect pronunciation"

条件分支(适用于依赖关系):

IF Knowledge_Retrieval.score < 0.6:
THEN Web_Search
ELSE:
SKIP Web_Search

3. 性能优化

缓存策略

# 知识库缓存
Cache TTL: 7 days
Cache Key: query_hash + knowledge_base_version

# 搜索结果缓存
Cache TTL: 1 day
Cache Key: search_query_hash

速率限制

# 防止工具调用过多
Max Tool Calls Per Turn: 5
Max Total Calls Per Session: 50
Cooldown: 100ms between calls

Token 优化

# 截断策略
Knowledge Result Max Tokens: 800
Search Result Max Tokens: 300
Total Context Max Tokens: 2000

第五部分:进阶技巧

1. 多模态输入支持

语音输入处理

# Voice Input Handler
IF input_type == "audio":
1. 使用 Whisper API 转写为文本
2. 识别发音错误(对比标准音标)
3. 在回答中标注实际发音 vs 标准发音

图片输入处理(如拍照笔记):

# Image Input Handler
IF input_type == "image":
1. 使用 OCR 提取文本
2. 识别手写标注的疑问点
3. 针对标注部分重点解释

2. 个性化记忆系统

知识点追踪

{
"user_id": "user_123",
"weak_points": [
"present_perfect",
"pronunciation_th"
],
"mastered_points": [
"simple_past",
"articles"
],
"practice_history": [...]
}

自适应推荐

# Adaptive Practice
基于用户弱点,在每次回答后附加:
"💡 顺便一提,你之前问过 Present Perfect,今天的例句也用到了这个时态,注意看..."

✅ 部署前检查清单

基础配置

  • 提示词已完整复制到 Agent 系统提示词
  • 模型选择正确且支持 Function Calling / ReAct
  • Agent Mode 已配置(Function Calling 优先)
  • Temperature 设置为 0.3-0.5(平衡准确性和创造性)

工具配置

  • 知识库已创建并上传全部文档
  • 知识库检索参数已调优(Top K, Score Threshold)
  • 联网搜索工具已启用并测试可用
  • 可选工具(TTS/图表等)已根据需求配置

测试验证

  • 测试用例 1:纯语法问题(应仅调用知识库)
  • 测试用例 2:新词问题(应调用搜索)
  • 测试用例 3:混合问题(应依次调用两个工具)
  • 推理过程日志清晰可读
  • Token 消耗在预算范围内(< 2000 tokens/query)

用户体验

  • 输出格式美观(Markdown 渲染正常)
  • 分析路径清晰(用户能理解 AI 的决策过程)
  • 练习建议实用(可直接使用)
  • 响应速度 < 10 秒

安全性

  • 知识库内容无版权问题
  • 搜索工具已开启安全搜索
  • 无敏感信息泄露风险
  • 错误处理完善(工具调用失败时不崩溃)

🔗 相关资源

文档与教程

推荐工具

  • 知识库管理: Dify Knowledge Base / LangChain Document Loader
  • 搜索 API: Tavily (AI 优化) / SerpAPI (全面) / DuckDuckGo (免费)
  • 语音合成: Azure TTS / ElevenLabs / OpenAI TTS
  • 重排序模型: BAAI/bge-reranker / Cohere Rerank

进阶阅读


文档版本:v2.0
最后更新:2025-01-21
适用平台:Dify / LangChain / Semantic Kernel / AutoGPT
许可协议:MIT License


附录:常见问题解答

Q1: 为什么推荐 DeepSeek-V3 而不是 GPT-4?

A: 在成本敏感的场景下,DeepSeek-V3 提供了接近 GPT-4 的推理能力,但价格仅为 1/10。对于教育类应用,性价比更高。如果预算充足且需要最佳效果,GPT-4o 仍是首选。

Q2: ReAct 和 Chain-of-Thought (CoT) 有什么区别?

A:

  • CoT:只有思考过程,没有工具调用(纯推理)
  • ReAct:思考 + 行动 + 观察的闭环(可调用外部工具)

简单说,ReAct = CoT + Tool Use

Q3: 如何判断知识库检索失败需要调用搜索?

A: 设置 Score Threshold = 0.6,当检索结果的相关度分数 < 0.6 时,自动触发搜索。也可以在提示词中指定关键词黑名单(如 "Rizz", "Skibidi" 等新词直接搜索)。

Q4: Agent 推理轮次过多导致超时怎么办?

A:

  1. 减少 Max Iterations(如 10 → 5)
  2. 在提示词中增加"2 轮内必须给出答案"的硬约束
  3. 使用 Function Calling 而非 ReAct(速度更快)
Q5: 能否用这套方案做非英语教学的 Agent?

A: 完全可以!只需替换 Role、Goals 和知识库内容。例如:

  • 法律顾问:知识库 = 法律条文,搜索 = 案例库
  • 医疗问诊:知识库 = 医学教科书,搜索 = 最新研究
  • 编程助手:知识库 = 官方文档,搜索 = Stack Overflow

核心框架(ReAct + 工具编排)是通用的。