模块10:AI智能体深度实战
进阶 📅 第10周 ⏱️ 约8小时
说明: 本模块与模块9(AI自动化工作流)并行进行。模块9侧重"自动化流程搭建",本模块聚焦"AI Agent的深度设计和部署"。
本模块的定位
模块9教你搭建让AI自动干活的"流水线",模块10教你打造一个能独立思考和行动的"数字员工"。两者结合,你就能构建一个真正为你工作的AI团队。
学习目标
学完本模块,你将能够:
- ✅ 理解AI Agent的四大核心组件:规划、记忆、工具使用、行动
- ✅ 掌握Agent设计框架:ReAct、Plan-and-Execute、Multi-Agent
- ✅ 为Agent设计高质量的System Prompt和工具调用指令
- ✅ 搭建完整的RAG(检索增强生成)知识库系统
- ✅ 将Agent发布到至少2个渠道(Web嵌入、飞书Bot、API端点)
- ✅ 独立完成一个可上线运行的AI Agent
课前准备
| 准备项 | 说明 |
|---|---|
| 平台账号 | Dify Cloud(dify.ai)或 Coze(coze.cn),二选一即可 |
| API Key | 至少一个LLM的API Key(DeepSeek、通义千问、智谱GLM均可) |
| 文档素材 | 准备至少20份你自己的学习笔记、课程资料或项目文档(用于RAG知识库) |
| 飞书账号 | 如计划发布飞书Bot,需提前注册飞书开发者账号 |
| 预计时间 | 学习约3小时 + 实操约5小时 |
第1课:Agent设计方法论
时长: 约90分钟 | 类型: 认知+实操
1.1 什么是AI Agent?
AI Agent(智能体)不是普通的聊天机器人。关键区别在于:
| 维度 | 普通AI对话 | AI Agent |
|---|---|---|
| 交互方式 | 一问一答,被动响应 | 主动规划、多步执行 |
| 能力边界 | 仅靠模型知识回答 | 可调用工具、搜索、读写文件 |
| 记忆能力 | 单次对话上下文 | 短期+长期记忆,跨会话 |
| 任务复杂度 | 单步任务 | 多步复杂任务,自动分解执行 |
| 典型场景 | "帮我写一段文案" | "每天早上8点搜索AI行业新闻,筛选Top 5,生成摘要推送到飞书群" |
一句话理解:如果把AI模型比作"大脑",Agent就是给这个大脑装上"手脚"(工具)、"笔记本"(记忆)和"行动指南"(规划),让它能真正干活。
1.2 Agent的四大核心组件
┌─────────────────────────────────────────────┐
│ AI Agent │
├──────────┬──────────┬──────────┬────────────┤
│ Planning │ Memory │ Tool Use │ Action │
│ 规划 │ 记忆 │ 工具使用 │ 行动 │
├──────────┼──────────┼──────────┼────────────┤
│ 任务分解 │ 短期记忆 │ API调用 │ 执行决策 │
│ 自我反思 │ 长期记忆 │ 代码执行 │ 输出结果 │
│ 自我批评 │ 向量数据库 │ 搜索检索 │ 错误处理 │
│ 路径修正 │ 知识图谱 │ 文件操作 │ 结果验证 │
└──────────┴──────────┴──────────┴────────────┘组件一:Planning(规划)
这是Agent最核心的能力——把一个复杂任务分解成可执行的步骤。
任务分解示例:
用户输入:"帮我做一份关于2026年AI就业市场的分析报告"
Agent的规划过程:
Step 1: 搜索"2026年AI就业市场趋势"获取最新数据
Step 2: 搜索"2026年AI岗位薪资报告"获取薪资数据
Step 3: 搜索"2026年AI对各行业就业影响"获取行业分析
Step 4: 整合搜索结果,提取关键数据
Step 5: 撰写报告大纲
Step 6: 按大纲逐段撰写,引用数据来源
Step 7: 检查报告完整性和数据准确性
Step 8: 输出最终报告自我反思(Self-Reflection)机制:
Agent在执行过程中会不断检查自己的输出:
- "我刚才搜索到的数据是否足够支撑结论?"
- "这个分析逻辑是否有漏洞?"
- "是否需要换个角度再搜索一次?"
这就是为什么Agent比"一次性Prompt"质量更高——它会自我纠错。
组件二:Memory(记忆)
| 记忆类型 | 存储方式 | 生命周期 | 典型用途 |
|---|---|---|---|
| 短期记忆 | 对话上下文窗口 | 单次会话 | 记住用户刚才说了什么 |
| 长期记忆 | 向量数据库/知识库 | 持久化 | 记住用户偏好、历史对话摘要 |
| 工作记忆 | 变量/状态存储 | 单次任务 | 暂存中间计算结果 |
实际应用:
- 短期记忆:用户说"我不喜欢太正式的语气",Agent记住并在后续回复中保持轻松风格
- 长期记忆:Agent记住用户是"大二计算机专业学生",后续推荐内容自动适配
- 工作记忆:多步计算中暂存上一步的结果
组件三:Tool Use(工具使用)
Agent通过调用外部工具突破自身能力边界:
| 工具类型 | 具体能力 | 示例 |
|---|---|---|
| 搜索工具 | 获取实时信息 | Google Search API、Bing API、Tavily |
| 代码执行 | 运行Python/JS代码 | 数据分析、图表生成、数学计算 |
| API调用 | 对接外部服务 | 天气API、股票API、翻译API |
| 文件操作 | 读写文件 | 读取PDF、生成Excel、保存图片 |
| 数据库查询 | 结构化数据检索 | SQL查询、知识库检索 |
关键认知:Agent的能力上限 = 模型能力 + 可用工具的能力。工具越多,Agent越强大。
组件四:Action(行动)
Action是Agent将推理结果转化为实际行动的环节。它包含:
- 执行决策:基于推理结果,选择执行什么操作
- 输出格式化:将结果按用户期望的格式输出
- 错误处理:执行失败时的重试、降级、报告机制
- 结果验证:检查输出是否满足用户需求
1.3 Agent设计框架
目前业界主流的Agent设计框架有三种:
框架一:ReAct(Reasoning + Acting)
ReAct是2022年由Google DeepMind与普林斯顿大学联合提出的框架,至今仍是Agent设计的基础范式。
核心思想:推理和行动交替进行。
用户输入 → Thought(思考)→ Action(行动)→ Observation(观察)→ Thought → Action → ... → Final AnswerReAct实战示例(查询"2026年诺贝尔物理学奖得主"):
Thought: 用户想知道2026年诺贝尔物理学奖得主,我需要搜索最新信息。
Action: search("2026 诺贝尔物理学奖 得主")
Observation: 搜索结果显示,2026年诺贝尔物理学奖授予了...
Thought: 我找到了得主信息,现在需要整理成清晰的回答。
Action: 不需要更多搜索,直接回答。
Final Answer: 2026年诺贝尔物理学奖授予了[姓名],表彰其在[领域]的贡献...ReAct vs 普通Prompt对比:
| 对比维度 | 普通Prompt | ReAct Agent |
|---|---|---|
| 信息准确性 | 依赖模型训练数据,可能过时 | 实时搜索验证,信息更新 |
| 推理过程 | 黑箱,不可追溯 | 每步思考可见,可审查 |
| 复杂任务 | 容易遗漏步骤 | 逐步分解,不易遗漏 |
| 错误修正 | 无法自我纠正 | 观察到错误后可以重新搜索 |
框架二:Plan-and-Execute
先制定完整计划,再逐步执行。适合任务步骤明确、不需要频繁根据中间结果调整的场景。
用户输入 → 制定完整计划 → 逐步执行 → 汇总结果适用场景:报告撰写、代码项目开发、数据分析流程
对比ReAct:
- ReAct:灵活,每一步根据上一步结果调整,适合探索性任务
- Plan-and-Execute:高效,减少反复思考的token消耗,适合确定性任务
框架三:Multi-Agent(多智能体协作)
多个Agent分工协作,每个Agent专注一个子任务。
┌──────────┐
│ 协调Agent │ (分配任务、汇总结果)
└────┬─────┘
┌─────────┼─────────┐
▼ ▼ ▼
┌───────┐ ┌───────┐ ┌───────┐
│搜索Agent│ │分析Agent│ │写作Agent│
└───────┘ └───────┘ └───────┘实际平台支持:
- Dify:支持"工作流"模式配置多个Agent节点协作
- Coze(扣子):支持"多Agent模式",可设置不同Agent处理不同意图
- AutoGen(微软):开源Multi-Agent框架,支持代码生成、执行、审查的Agent团队
1.4 Agent的Prompt Engineering
Agent的Prompt设计与普通对话Prompt有本质区别:
System Prompt设计模板
# 角色定义
你是一个[角色名称],专门帮助用户[核心任务]。
# 核心能力
1. [能力一]
2. [能力二]
3. [能力三]
# 工作流程
当用户提出请求时,请按以下步骤处理:
1. 分析用户意图
2. 制定执行计划
3. 调用必要的工具
4. 整合结果并输出
# 工具使用规范
- 需要实时信息时,使用 search 工具
- 需要计算或数据分析时,使用 code_executor 工具
- 需要读取文件时,使用 file_reader 工具
# 输出格式要求
- 使用Markdown格式
- 数据来源必须标注
- 不确定的信息标注"[需核实]"
# 约束条件
- 不编造数据
- 不回答涉及违法内容的问题
- 当无法完成任务时,诚实说明原因工具调用指令设计
Agent需要明确的工具调用格式。以Dify的Function Calling格式为例:
# 搜索工具定义
- name: web_search
description: 在互联网上搜索实时信息。当需要获取最新数据、新闻、或模型训练数据之外的信息时使用。
parameters:
- name: query
type: string
description: 搜索关键词,使用中文或英文
required: true
- name: num_results
type: integer
description: 返回结果数量,默认5,最大10
required: false
# 代码执行工具定义
- name: code_executor
description: 执行Python代码进行数据分析、计算或图表生成。
parameters:
- name: code
type: string
description: 要执行的Python代码
required: true输出格式控制
# 输出格式规范
每次回复必须包含以下结构:
## 思考过程
简述你的推理路径(让用户了解你的思路)
## 执行步骤
列出实际调用的工具和参数
## 最终结果
以清晰、结构化的方式呈现结果
## 数据来源
列出所有引用数据的来源链接1.5 Agent评估体系
如何判断一个Agent好不好?
| 评估维度 | 指标 | 目标值 |
|---|---|---|
| 任务完成率 | 成功完成任务的比例 | > 90% |
| 响应时间 | 从接收到完成的时间 | < 30秒(简单任务) |
| 准确性 | 输出信息的正确率 | > 95% |
| 工具调用效率 | 完成任务所需的工具调用次数 | 越少越好 |
| 用户满意度 | 用户评分(1-5分) | ≥ 4.0 |
| 容错能力 | 遇到错误时能否自动恢复 | 恢复率 > 80% |
1.6 实操:单次Prompt vs ReAct Agent对比
任务:查询"2026年高考全国报名人数,并与2025年对比分析"
方式一:单次Prompt(直接问ChatGPT)
Prompt: 请告诉我2026年高考全国报名人数,并与2025年对比分析。
典型问题:
- 如果模型训练数据截止到2025年,它无法知道2026年的数据
- 即使能回答,也无法验证数据来源
- 分析深度有限,因为没有搜索最新报道方式二:ReAct Agent(在Dify中配置)
在Dify中创建Agent应用,配置搜索工具,使用以下System Prompt:
你是一个数据分析Agent。当用户询问需要最新数据的问题时,你必须:
1. 先使用web_search工具搜索相关信息
2. 验证至少2个不同来源的数据
3. 对数据进行对比分析
4. 标注所有数据来源Agent执行过程:
Step 1 (Thought): 用户需要2026年高考报名人数,我需要搜索最新数据。
Step 1 (Action): web_search("2026年高考全国报名人数")
Step 2 (Observation): 教育部公布2026年全国高考报名人数为[具体数字]
Step 2 (Thought): 获得了2026年数据,现在需要搜索2025年数据做对比。
Step 2 (Action): web_search("2025年高考全国报名人数")
Step 3 (Observation): 2025年全国高考报名人数为[具体数字]
Step 3 (Thought): 两个数据都获取到了,现在做对比分析。
Step 3 (Action): 无需更多搜索,直接输出分析结果。
Final Answer:
- 2026年:XXX万人
- 2025年:XXX万人
- 变化:增长/下降X%,主要原因是...
- 数据来源:教育部官方公布质量差异一目了然:Agent能获取实时数据、多源验证、深度分析,而普通Prompt只能依赖模型训练数据。
第2课:RAG(检索增强生成)实战
时长: 约90分钟 | 类型: 实操为主
2.1 为什么需要RAG?
RAG(Retrieval-Augmented Generation,检索增强生成)是让AI能够基于你的私有知识回答问题的基础技术。
| 痛点 | 没有RAG | 有RAG |
|---|---|---|
| 知识截止日期 | 模型训练数据截止后的事件无法回答 | 知识库实时更新,随时可查 |
| 私有数据 | 无法访问企业内部文档 | 上传文档即可问答 |
| 幻觉问题 | 模型可能编造不存在的信息 | 基于真实文档回答,幻觉大幅减少 |
| 可追溯性 | 不知道答案从哪来 | 可以追溯到具体文档段落 |
| 领域深度 | 泛泛而谈 | 基于你的专业文档深入回答 |
通俗理解:RAG就像是给AI装了一个"专属图书馆"。每次回答问题前,AI先去这个图书馆里找相关资料,然后基于找到的资料来回答,而不是凭空编造。
2.2 RAG完整链路
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ 文档加载 │ → │ 文本分割 │ → │ 向量嵌入 │ → │ 向量存储 │ → │ 检索召回 │ → │ 增强生成 │
└──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘
上传PDF/ 切成小段 每段转成 存入向量 根据用户 把检索到
Word/网页 便于检索 向量数字 数据库 问题找到 的文档和
最相关段落 问题一起
送给LLM步骤一:文档加载(Document Loading)
支持的文档格式和工具:
| 文档格式 | 推荐工具 | 说明 |
|---|---|---|
| PyPDFLoader / Dify内置 | 支持文字型PDF,扫描版需OCR | |
| Word (.docx) | Docx2txtLoader / Dify内置 | 支持表格和图片中的文字 |
| Markdown | TextLoader | 最干净,分割效果最好 |
| 网页 | WebBaseLoader / Dify内置 | 输入URL自动抓取内容 |
| CSV/Excel | CSVLoader / Dify内置 | 结构化数据按行处理 |
| 飞书文档 | Dify飞书集成 | 直接授权读取飞书文档 |
步骤二:文本分割(Text Splitting)
这是RAG中最容易被忽视但极其关键的环节。分割策略直接影响检索质量。
| 分割策略 | 原理 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|---|
| 按段落分割 | 以\n\n为分隔符 | 结构化文档、报告 | 保持段落完整性 | 段落过长时检索精度下降 |
| 递归字符分割 | 按优先级 \n\n → \n → → 字符 | 通用文本 | 适应性最强 | 可能切断句子 |
| 按句子分割 | 以标点符号为分隔符 | 对话记录、FAQ | 粒度细,精确匹配 | 失去上下文 |
| 语义分割 | 计算句子间相似度,在语义变化处切分 | 学术论文、技术文档 | 保持语义完整性 | 计算成本高 |
分割参数建议(以Dify默认配置为参考):
| 参数 | 推荐值 | 说明 |
|---|---|---|
| 分割块大小(chunk_size) | 500-1000 tokens | 中文约300-600字 |
| 重叠大小(chunk_overlap) | 50-100 tokens | 防止关键信息落在边界上 |
| 分割符 | \n\n, \n, 。, !, ? | 优先级从高到低 |
实战建议:先用默认参数跑一遍,然后用几个测试问题检验检索效果。如果检索到的段落不完整,调大chunk_size;如果检索到的段落无关内容太多,调小chunk_size。
步骤三:向量嵌入(Embedding)
将文本转换成向量(一串数字),语义相近的文本向量距离更近。
2026年主流嵌入模型:
| 模型 | 提供方 | 维度 | 中文效果 | 价格 |
|---|---|---|---|---|
| text-embedding-3-small | OpenAI | 1536 | 良好 | $0.02/1M tokens |
| text-embedding-3-large | OpenAI | 3072 | 优秀 | $0.13/1M tokens |
| bge-large-zh-v1.5 | BAAI(智源) | 1024 | 优秀(中文专用) | 开源免费 |
| bge-m3 | BAAI(智源) | 1024 | 优秀(多语言) | 开源免费 |
| m3e-large | 社区 | 1024 | 优秀(中文优化) | 开源免费 |
| text2vec-large-chinese | 社区 | 1024 | 良好 | 开源免费 |
中文场景推荐:bge-m3 或 m3e-large,两者都是开源模型,对中文语义理解非常好。
步骤四:向量存储(Vector Database)
2026年主流向量数据库对比:
| 数据库 | 类型 | 特点 | 适用场景 | 免费额度 |
|---|---|---|---|---|
| Chroma | 开源/轻量 | 零配置,Python原生,适合开发 | 本地开发、小规模项目 | 完全免费 |
| Pinecone | 云服务 | 全托管,高性能,全球部署 | 生产环境、大规模应用 | 1个索引免费 |
| Weaviate | 开源 | 支持混合搜索(向量+关键词) | 需要精确关键词匹配的场景 | 开源免费/云有免费层 |
| Qdrant | 开源 | Rust编写,性能极高,支持过滤 | 高性能需求、复杂过滤条件 | 开源免费/云有免费层 |
| Milvus | 开源 | 分布式架构,10亿级向量 | 企业级、海量数据 | 开源免费/云有免费层 |
| 阿里云ADB PG | 云服务 | 向量+结构化数据混合查询 | 生产环境、需要SQL分析 | 试用额度 |
新手推荐路径:
- 入门:直接用Dify内置的向量存储(无需配置)
- 进阶:Chroma(本地部署,零门槛)
- 生产:Pinecone或Qdrant Cloud(全托管,省心)
2.3 实操:搭建"课程知识库Agent"(Dify版)
以下步骤基于Dify Cloud(dify.ai),2026年6月最新版本。Dify免费版支持创建知识库和Agent。
Step 1:创建知识库
- 登录 Dify Cloud,进入控制台
- 点击顶部导航栏「知识库」→ 「创建知识库」
- 填写知识库信息:
- 名称:AI竞争力课程知识库
- 描述:包含所有课程模块的学习资料、笔记、项目文档
- 权限:仅自己可见(团队版可共享给团队)
- 点击「创建」
Step 2:上传文档
- 在知识库页面,点击「上传文档」
- 上传你的课程资料(支持批量上传):
- 模块1-4的学习笔记(Markdown格式最佳)
- 课程项目文档
- 收集的AI行业资料
- 至少上传20份文档,建议50+份以获得更好的问答效果
- Dify会自动处理文档:分段 → 嵌入 → 索引
- 等待处理完成(约1-2分钟,取决于文档量)
Step 3:配置检索参数
- 进入知识库「设置」页面
- 分段设置:
- 分段最大长度:500 tokens
- 分段重叠长度:50 tokens
- 分段规则:自动分段与清洗
- 索引模式:
- 选择「高质量」模式(调用嵌入模型进行向量化,检索精度更高)
- 可选「经济」模式(使用关键词索引,不消耗嵌入token,但精度低)
- 检索设置:
- 检索方式:混合检索(向量检索 + 关键词检索,推荐)
- TopK:3(每次检索返回最相关的3个段落)
- Score阈值:0.5(低于此分数的段落不返回)
- 点击「保存」
Step 4:创建Agent应用
- 点击顶部导航栏「工作室」→ 「创建应用」
- 选择「Agent」类型
- 填写基本信息:
- 名称:AI课程助手
- 图标:选择一个合适的emoji或上传图标
- 描述:基于AI竞争力课程的智能问答助手
- 点击「创建」
Step 5:配置Agent
选择模型:
- 推荐:DeepSeek-V3 或 通义千问-Max(中文效果好,性价比高)
- 如使用Coze:推荐豆包大模型(免费额度慷慨)
编写System Prompt:
你是「AI竞争力课程助手」,专门帮助大学生解答关于AI学习和应用的问题。
## 你的知识范围
- 你主要基于「AI竞争力课程知识库」中的内容回答问题
- 知识库包含从AI基础认知到Agent开发的全套课程资料
## 回答规则
1. 先检索知识库,基于知识库内容回答
2. 如果知识库中有相关内容,引用具体的模块和章节
3. 如果知识库中没有相关内容,诚实说明并提供获取该信息的建议
4. 使用友好的语气,像学长/学姐一样帮助同学
## 回答格式
- 先给出简洁的核心答案
- 再展开详细说明
- 最后给出进一步学习的建议添加知识库:
- 在「上下文」设置中,添加刚才创建的「AI竞争力课程知识库」
添加工具(可选):
- 网页搜索:Dify内置的SerpAPI或Tavily搜索(需要配置API Key)
- 代码执行:Dify内置的Python代码执行器
设置对话开场白:
你好!👋 我是AI课程助手,可以帮你解答关于AI学习、Prompt技巧、AI工具使用、Agent开发等任何问题。你可以问我:
- "如何写好一个Prompt?"
- "AI对就业市场有什么影响?"
- "怎么搭建一个RAG知识库?"
直接提问吧!Step 6:测试与调优
- 在右侧预览窗口测试问答效果
- 测试问题示例:
- "模块2讲了什么内容?"(测试知识库检索准确性)
- "如何用AI写一份商业分析报告?"(测试跨模块综合能力)
- "2026年AI就业市场有什么趋势?"(测试是否需要搜索工具)
- 根据测试结果调整:
- 如果回答不准确 → 调高TopK值,或降低Score阈值
- 如果回答太啰嗦 → 在System Prompt中限制回答长度
- 如果检索不到相关文档 → 检查文档是否上传成功,调整分段参数
2.4 RAG高级技巧
技巧一:HyDE(假设文档嵌入)
原理:先让LLM根据用户问题生成一个"假设性答案",再用这个假设答案去检索,而不是直接用问题检索。
为什么有效:用户问题通常很短(如"AI怎么帮我学习?"),而文档内容很长。用LLM生成的假设答案(会包含更多细节和术语)去检索,命中率更高。
在Dify中的实现:目前需要自定义工作流实现,在检索节点前加一个LLM节点生成假设答案。
技巧二:多路召回(Multi-Recall)
原理:同时用多种方式检索,然后合并去重排序。
┌──────────────┐
│ 用户问题 │
└──────┬───────┘
┌───────────┼───────────┐
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│向量检索 │ │关键词检索│ │语义检索 │
└────┬────┘ └────┬────┘ └────┬────┘
└───────────┼───────────┘
▼
┌──────────┐
│ 合并去重 │
└────┬─────┘
▼
┌──────────┐
│ Rerank │
└──────────┘Dify中的实现:检索设置中选择「混合检索」即可,Dify会自动融合向量检索和关键词检索的结果。
技巧三:Rerank(重排序)
原理:初始检索返回TopK个段落(如10个),再用一个更精确的排序模型重新打分,选出最相关的Top3。
2026年常用Rerank模型:
| 模型 | 提供方 | 特点 |
|---|---|---|
| bge-reranker-v2-m3 | BAAI(智源) | 开源,多语言,效果好 |
| Cohere Rerank v3 | Cohere | 商业API,效果最佳 |
| Jina Reranker v2 | Jina AI | 开源,多语言,速度快 |
Dify中的实现:在检索节点中开启「Rerank」选项,Dify已内置Cohere Rerank集成。
技巧四:查询改写(Query Rewriting)
原理:用户输入的问题可能很口语化或不完整,先让LLM把问题改写得更适合检索。
用户输入:"上次讲的那个写Prompt的技巧还有吗"
↓ 查询改写
改写后:"Prompt Engineering中关于角色设定和输出格式的技巧"
↓ 检索
获得更精确的结果Dify中的实现:在工作流中,检索节点前加一个LLM节点,用于改写用户查询。
第3课:Agent发布与分发
时长: 约90分钟 | 类型: 实操为主
3.1 Agent分发渠道全景
造好了Agent,怎么让别人用?2026年主流分发渠道:
| 渠道 | 接入方式 | 难度 | 适用场景 | 平台 |
|---|---|---|---|---|
| Web嵌入 | JS代码片段 | ⭐ | 个人网站、博客、作品集 | Dify / Coze / Typebot |
| API端点 | REST API | ⭐⭐ | App集成、自动化脚本调用 | Dify / Coze / 自建 |
| 飞书Bot | Webhook | ⭐⭐ | 企业内部、团队协作 | Dify / Coze / 飞书开放平台 |
| 钉钉Bot | Webhook | ⭐⭐ | 企业内部、团队协作 | 钉钉开放平台 |
| 企微Bot | Webhook | ⭐⭐ | 企业内部、客户服务 | 企业微信开放平台 |
| 微信公众号 | 被动回复API | ⭐⭐⭐ | 对外服务、品牌建设 | 微信公众平台 + Dify API |
| 豆包Store | 一键发布 | ⭐ | 个人品牌、分享 | 豆包App |
| 扣子商店 | 一键发布 | ⭐ | 个人品牌、流量变现 | 扣子(Coze) |
3.2 实操:发布"校园AI助手"到3个渠道
我们将创建一个"校园AI助手"Agent,帮助大学生解答校园生活、学习规划、选课建议等问题,并发布到3个渠道。
渠道一:Web嵌入(最简单)
适用平台:Dify
操作步骤:
- 在Dify中,进入你的Agent应用
- 点击左侧「发布」按钮
- 选择「嵌入网站」
- 选择嵌入方式:
- Chrome插件:安装Dify Chrome插件,可在任何网页使用
- 气泡按钮:网页右下角出现对话气泡(推荐)
- 全屏嵌入:整个页面嵌入聊天窗口
- 复制生成的JS代码片段:
<!-- Dify 聊天窗口嵌入代码 -->
<script>
window.difyChatbotConfig = {
token: 'YOUR_APP_TOKEN',
baseUrl: 'https://cloud.dify.ai',
// 可选配置
inputs: {
// 预填变量
},
openingStatement: '你好!我是校园AI助手,有什么可以帮你的?',
suggestedQuestions: [
'如何选课?',
'期末复习有什么好方法?',
'校园卡丢了怎么办?'
],
// 样式配置
isShowTitle: true,
title: '校园AI助手',
draggable: true,
position: 'right'
}
</script>
<script src="https://cloud.dify.ai/embed.min.js" defer></script>- 将这段代码粘贴到你的个人网站、博客或作品集的HTML中
- 刷新页面,右下角会出现对话气泡
验证方法:在浏览器中打开你的网站,点击右下角气泡,测试几个问题。
渠道二:飞书Bot(最实用)
适用平台:Dify + 飞书开放平台
操作步骤:
Part A:在Dify中获取Webhook
- 在Dify应用中,点击「发布」→ 「飞书Bot」
- 复制Dify提供的Webhook URL(格式:
https://cloud.dify.ai/v1/...)
Part B:在飞书开放平台创建应用
- 登录 飞书开放平台
- 点击「创建应用」→ 「企业自建应用」
- 填写应用信息:
- 应用名称:校园AI助手
- 应用描述:为大学生提供校园生活、学习支持的AI助手
- 应用图标:上传一个图标
- 点击「创建」
Part C:配置事件订阅
- 在应用页面左侧菜单,点击「事件订阅」
- 配置请求网址:
- 请求网址:粘贴Dify提供的Webhook URL
- 验证方式:Dify会自动处理飞书的URL验证
- 添加事件(勾选以下事件):
im.message.receive_v1(接收消息)- 点击「批量添加」搜索并添加
- 点击「保存」
Part D:配置权限
- 在应用页面左侧菜单,点击「权限管理」
- 在「API权限」中搜索并开通以下权限:
- 获取用户信息:
contact:user.id:readonly - 获取群组信息:
im:chat:readonly - 发送消息:
im:message:send_as_bot - 接收消息:
im:message:readonly
- 获取用户信息:
- 点击「批量开通」
Part E:发布应用
- 在应用页面左侧菜单,点击「版本管理与发布」
- 点击「创建版本」
- 填写版本号(如 v1.0.0)和更新说明
- 点击「保存」→ 「申请发布」
- 等待管理员审核通过(企业自建应用通常很快)
Part F:在飞书中使用
- 审核通过后,在飞书搜索框中搜索你的应用名称
- 找到应用,点击进入对话
- 发送消息测试,Agent应该能正常回复
验证方法:在飞书中向Bot发送"推荐一门适合大一的通识选修课",检查回复质量。
渠道三:API端点(最灵活)
适用平台:Dify
操作步骤:
在Dify应用中,点击「发布」→ 「访问API」
生成API密钥:
- 点击「API密钥」→ 「创建密钥」
- 复制生成的密钥(只显示一次,请妥善保存)
API调用方式:
# 使用curl测试
curl -X POST 'https://cloud.dify.ai/v1/chat-messages' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
"inputs": {},
"query": "推荐3个适合大学生参加的AI竞赛",
"response_mode": "blocking",
"user": "student-001"
}'使用Postman测试:
- 打开Postman,新建请求
- Method:POST
- URL:
https://cloud.dify.ai/v1/chat-messages - Headers:
Authorization:Bearer YOUR_API_KEYContent-Type:application/json
- Body(raw JSON):
json{ "inputs": {}, "query": "推荐3个适合大学生参加的AI竞赛", "response_mode": "blocking", "user": "student-001" }- 点击Send,应该返回Agent的完整回答
编写API使用文档(示例):
# 校园AI助手 API 文档
## 基本信息
- 接口地址:https://cloud.dify.ai/v1/chat-messages
- 认证方式:Bearer Token
- 请求方式:POST
## 请求参数
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| query | string | 是 | 用户问题 |
| user | string | 是 | 用户标识 |
| response_mode | string | 否 | blocking(同步) / streaming(流式) |
| inputs | object | 否 | 额外变量 |
## 响应示例
{
"answer": "这里是Agent的回答...",
"conversation_id": "xxx",
"message_id": "xxx"
}
## 使用示例(Python)
import requests
url = "https://cloud.dify.ai/v1/chat-messages"
headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
}
data = {
"query": "推荐3个适合大学生参加的AI竞赛",
"user": "student-001",
"response_mode": "blocking"
}
response = requests.post(url, headers=headers, json=data)
print(response.json()["answer"])3.3 Agent监控与迭代
Agent上线后不是终点,而是持续优化的起点。
监控指标
| 维度 | 监控项 | 工具 |
|---|---|---|
| 使用量 | 日活用户、对话次数、消息数 | Dify控制台「监控」页面 |
| 质量 | 用户点赞/点踩比例、反馈内容 | Dify「日志与标注」 |
| 性能 | 响应延迟、Token消耗 | Dify「监控」→「性能」 |
| 错误 | 错误率、超时次数 | Dify「监控」→「错误日志」 |
A/B测试不同Prompt
Dify中的A/B测试方法:
- 复制当前应用,创建一个变体版本
- 在变体版本中修改System Prompt
- 两个版本同时发布,分配不同用户组
- 对比关键指标:用户满意度、任务完成率、回复质量
- 选择表现更好的版本作为主版本
A/B测试示例:
| 测试项 | 版本A(原版) | 版本B(变体) |
|---|---|---|
| 回答风格 | 正式、详细 | 轻松、简洁 |
| System Prompt | "你是一个专业的AI助手" | "你是一个随和的AI学长" |
| 测试指标 | 用户满意度 3.8 | 用户满意度 4.2 ✅ |
| 结论 | - | 变体B更受欢迎,替换为主版本 |
迭代优化清单
- 每周检查:查看用户高频问题,补充知识库
- 每月迭代:根据用户反馈优化System Prompt
- 持续更新:当课程内容更新时,同步更新知识库文档
- 边界处理:收集Agent回答不好的case,针对性改进
产出物
1. Agent设计文档
提交一份完整的Agent设计文档,包含:
| 章节 | 内容要求 |
|---|---|
| Agent定位 | Agent名称、目标用户、核心价值主张(一句话) |
| 核心功能 | 列出Agent能完成的3-5个核心任务 |
| 架构设计 | 选择的设计框架(ReAct/Plan-and-Execute/Multi-Agent),说明理由 |
| System Prompt | 完整的System Prompt文本 |
| 工具配置 | 配置了哪些工具,每个工具的用途 |
| 知识库 | 知识库的文档数量、覆盖范围 |
| 分发渠道 | 发布了哪些渠道,每个渠道的访问方式 |
2. 一个可运行的Agent
要求:
- Agent已发布到至少2个渠道(如Web嵌入 + 飞书Bot,或API + 豆包Store)
- 提交各渠道的截图或录屏,展示Agent在真实对话中的表现
- 至少测试5个不同类型的问题,验证Agent的覆盖范围
3. RAG知识库
- 知识库包含至少50份文档(可以是课程笔记、收集的资料、自己的项目文档等)
- 提交10个测试问答,展示知识库能准确回答相关问题
- 每个问答需要标注:用户问题 → Agent回答 → 是否正确 → 如果不正确,分析原因
课后作业
基础版(必做)
作业:搭建你的第一个AI Agent
选择以下任一平台,完成一个Agent的搭建和发布:
选项A:用Dify搭建「课程知识库Agent」
- 按照第2课实操步骤,完成知识库搭建和Agent配置
- 发布到Web嵌入渠道
- 提交Agent链接和3个测试问答截图
选项B:用Coze搭建「校园AI助手」
- 在Coze(coze.cn)创建Bot
- 配置人设、知识库、插件
- 发布到豆包Store或飞书Bot
- 提交Bot链接和3个测试截图
进阶版(选做)
挑战:Agent多渠道分发
将你搭建的Agent发布到3个不同渠道:
- 完成Web嵌入、飞书Bot、API端点的发布
- 为每个渠道写一份简短的使用说明(2-3句话即可)
- 提交所有渠道的访问方式和测试截图
提交方式
- 作业模板链接:将在课程正式开始前通过微信群/课程群公布
- 收集表链接:将在课程正式开始前通过微信群/课程群公布
- 截止时间:第10周周日 23:59
模块10检查清单
在完成第三阶段所有内容之前,请确认你完成了以下所有事项:
- [ ] 学习了第1课,理解了Agent的四大核心组件
- [ ] 掌握了ReAct、Plan-and-Execute、Multi-Agent三种设计框架的区别
- [ ] 能够为Agent编写高质量的System Prompt和工具调用指令
- [ ] 学习了第2课,理解了RAG的完整链路
- [ ] 完成了「课程知识库Agent」的搭建(必做)
- [ ] 学习了第3课,了解Agent的分发渠道和发布流程
- [ ] 将Agent发布到了至少2个渠道
- [ ] 完成了Agent设计文档、RAG知识库的产出物要求
延伸阅读
平台文档
- Dify官方文档 —— Agent和知识库配置的完整指南
- Coze(扣子)官方文档 —— 字节跳动出品的Agent搭建平台
- 飞书开放平台 - 机器人开发指南 —— 飞书Bot开发文档
- n8n AI Agent节点文档 —— 在自动化工作流中嵌入AI Agent
论文与博客
- ReAct: Synergizing Reasoning and Acting in Language Models —— Yao et al., 2022,ReAct框架原始论文
- Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks —— Lewis et al., Meta AI,RAG原始论文
- Plan-and-Solve Prompting —— Wang et al., 2023
- AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation —— 微软Multi-Agent框架
- Lilian Weng的Agent博客系列 —— OpenAI研究员的Agent系统综述
- BGE Embedding模型系列 —— 智源研究院的中文嵌入模型
工具与资源
- Chroma向量数据库 —— 轻量级开源向量数据库
- Pinecone向量数据库 —— 全托管云向量数据库
- Qdrant向量数据库 —— 高性能开源向量数据库
- Tavily Search API —— 专为AI Agent优化的搜索API
- LangChain文档 —— 最流行的LLM应用开发框架
常见问题FAQ
Q1:Dify和Coze应该选哪个?
A:两者都是优秀的Agent搭建平台,选择取决于你的需求:
| 对比维度 | Dify | Coze(扣子) |
|---|---|---|
| 开源 | ✅ 开源,可私有部署 | ❌ 闭源 |
| 免费额度 | 200次对话/月 | 免费额度较大 |
| 模型选择 | 支持多种模型(DeepSeek、通义千问等) | 主要使用豆包模型 |
| 知识库 | 功能完善,支持多种检索策略 | 功能完善,操作简单 |
| 分发渠道 | Web嵌入、API、飞书等 | 飞书、豆包、微信等 |
| 适合人群 | 喜欢开源、自定义模型、技术探索 | 追求简单上手、生态整合 |
建议:两个都试试,花1小时在Dify上,1小时在Coze上,然后选你觉得更顺手的。
Q2:知识库需要多少文档才够?
A:最低20份,建议50份以上。但更重要的是文档的质量和覆盖范围,而非数量。10份高质量、覆盖全面的文档,远胜于100份重复的低质量文档。
Q3:RAG检索出来的内容不准确怎么办?
A:按优先级排查:
- 文档质量:原始文档是否包含准确信息?
- 分段参数:chunk_size是否过大或过小?
- 检索参数:TopK是否太小?Score阈值是否太高?
- 嵌入模型:是否用了适合中文的嵌入模型?
- 查询改写:用户问题是否太口语化,需要改写?
Q4:Agent的System Prompt写了很长,但效果还是不好?
A:System Prompt不是越长越好。检查以下问题:
- 指令是否冲突?两个矛盾的要求会让Agent困惑
- 是否过于模糊?"尽量好地回答"这种指令对Agent没有帮助
- 是否包含具体示例?在Prompt中加入1-2个Q&A示例,效果远超长篇描述
- 是否限制了Agent的工具使用?确认没有禁止Agent使用必要的工具
Q5:飞书Bot配置后收不到消息怎么办?
A:常见原因和解决方法:
- 事件订阅URL未验证通过:检查Dify中生成的Webhook URL是否正确
- 权限未开通:确认已开通
im:message:readonly和im:message:send_as_bot权限 - 应用未发布:确认应用已创建版本并通过审核
- 网络问题:如果Dify是私有部署,检查飞书能否访问你的服务器
Q6:Agent的响应太慢怎么办?
A:
- 减少Tool调用:检查是否每次对话都调用了不必要的搜索
- 简化System Prompt:过长的Prompt增加Token消耗
- 使用响应更快的模型:DeepSeek-V3和通义千问-Turbo比大杯模型快很多
- 开启流式输出:在API中设置
response_mode: "streaming",让用户边等边看