文章简介:本文手把手教你搭建一个飞书AI助手,实现飞书应用机器人触发、基于知识库的智能问答、结构化答案输出。适合需要企业知识库问答场景的开发者。 标签:Dify、飞书、知识库、企业自建应用、AI助手
前言
在前两篇文章中,我们分别搭建了多分支AI客服和工单审批流,实现了意图识别和条件分支处理。
这次我们来解决一个更实用的场景:飞书AI助手。
这篇文章能解决什么问题?
企业里经常有这样的需求:
- 员工在飞书问"怎么申请VPN?"
- 销售问"产品A的最新报价是多少?"
- 客服问"这个故障怎么处理?"
传统方式:
- 问题1:重复回答,效率低
- 问题2:答案不统一,容易出错
- 问题3:资深员工被频繁打扰
通过本文,你将学会:
- 如何用Dify + 飞书搭建AI助手
- 如何基于知识库检索回答
- 如何输出结构化的专业答案
读完这篇你能得到什么?
- 一个完整可运行的飞书AI助手Demo
- 理解知识库检索的使用场景
- 掌握Dify与飞书企业自建应用集成的方法
前置知识:需要了解Dify的基本使用,有飞书管理员权限更佳。
一、项目需求
飞书问答的痛点
- 重复性问题多:80%的问题都是常见问题
- 答案不统一:不同人回答可能不一致
- 响应不及时:依赖人工回复,无法7×24小时
- 知识分散:产品文档、FAQ分散在各处
需要实现的功能
本文要搭建一个飞书AI助手,实现以下功能:
- 应用机器人触发:在飞书给应用机器人发消息即可提问
- 知识库检索:基于企业知识库回答
- 结构化输出:返回格式化的专业答案
预期效果
用户在飞书给应用机器人发送消息 → Dify接收消息 → 知识库检索 → LLM生成答案 → 返回结构化回复
二、核心概念:知识库检索
什么是知识库检索?
知识库检索是Dify的一个重要功能,它允许你:
- 上传企业文档(PDF、Word、Markdown等)
- 自动分段和建立索引
- 根据用户问题检索相关内容
- 将检索结果提供给LLM生成答案
什么场景下需要知识库检索?
- 企业FAQ:产品手册、常见问题
- 技术文档:API文档、开发指南
- 规章制度:员工手册、流程规范
- 培训资料:产品培训、销售话术
本文的知识库设计
我们用知识库来存储企业产品文档:
用户提问 → 知识库检索 → 返回相关段落 → LLM基于内容生成答案
设计思路:
- 检索阶段:找出与用户问题最相关的文档片段
- 生成阶段:LLM基于检索内容组织语言,不编造答案
- 输出阶段:返回结构化的Markdown格式答案
三、环境准备
- Dify版本:1.11.x
- 飞书:企业版(需要管理员权限)
- 知识库:提前准备好产品文档
- LLM模型:DeepSeek
- 内网穿透:Cloudflare Tunnel(如Dify部署在内网)
四、开始搭建
4.1 创建飞书企业自建应用
- 打开 飞书开放平台
- 点击「创建企业自建应用」
- 输入应用名称:Dify AI助手
- 点击「创建」
4.2 获取应用凭证
- 进入应用详情页
- 点击「凭证与基础信息」
- 复制以下信息:
App IDApp Secret
保存好这两个凭证,后续需要用到
4.3 添加应用能力(机器人)
- 在飞书开放平台应用详情页,点击左侧菜单「应用能力」
- 点击「添加应用能力」
- 选择「机器人」能力,点击「添加」
说明:
- 机器人能力是飞书AI助手的基础,必须添加
- 添加后,用户可以在飞书客户端搜索并与机器人对话
4.4 配置权限
- 点击「权限管理」
- 添加以下权限:
| 权限名称 | 权限标识 | 说明 |
|---|---|---|
| 获取与发送单聊消息 | im:message:send_as_bot | 发送消息给用户 |
| 接收消息 | im:message | 接收用户消息 |
- 提交审核(如是企业内部应用,可直接启用)
4.5 创建Dify工作流
- 打开Dify → 创建应用 → 选择「工作流」
- 输入应用名称:飞书AI助手
- 点击「创建」进入工作流画布
整体结构:
收到消息 → 知识检索 → LLM处理 → 发送LARK应用消息
4.6 配置Dify接收飞书消息
关键:安装Lark触发器插件后,使用「收到消息」节点
- 在Dify工作流画布中,点击「开始」节点
- 选择「收到消息」节点
- 配置订阅,要记录好回调URL
- 选择订阅
4.7 配置内网穿透(Dify部署在内网时需要)
如果 Dify 部署在内网环境,需要配置内网穿透,使飞书服务器能够访问到 Dify 的回调地址。
使用 Cloudflare Tunnel 配置内网穿透:
-
下载 cloudflared:
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -o cloudflared -
添加执行权限:
chmod +x cloudflared -
启动内网穿透(假设 Dify 运行在本地 80 端口):
./cloudflared tunnel --url http://localhost:80 -
启动成功后,终端会显示一个公网 URL(如
https://xxxxx.trycloudflare.com),请保存这个地址
说明:
- 内网穿透工具会生成一个临时的公网 URL,用于飞书回调
- 每次重启 cloudflared 后 URL 可能会变化,需要更新飞书中的配置
- 生产环境建议使用固定的域名和稳定的内网穿透方案
4.8 配置飞书事件与回调
- 回到飞书开放平台,点击「事件与回调」
- 选择「事件配置」标签页
- 配置订阅方式
- 在「请求地址」填入 Dify 生成的回调URL(如果使用内网穿透,则使用 cloudflared 生成的公网地址替换http://localhost): xxxxx.trycloudflare.com/triggers/pl…
5. 添加事件:
*
im.message.receive_v1
4.9 发布应用
- 点击「版本管理与发布」
- 创建新版本
- 提交发布
- 在「应用发布」→「待发布」中确认
注意:企业自建应用需要管理员审核或在后台直接启用。
4.10 添加「知识检索」节点
在「收到消息」节点后,直接查询知识库获取相关内容:
- 添加「知识检索」节点
- 配置:
- 知识库:选择已创建的知识库(如产品文档、FAQ等)
- 查询内容:使用「收到消息」节点的消息内容变量
知识库准备:
- 提前在 Dify 中创建知识库
- 上传产品文档、常见问题等资料
- 配置好分段和索引策略
4.11 添加「LLM」节点
- 在「知识检索」节点后,添加「LLM」节点
- 模型选择:
DeepSeek - 系统提示词:
你是一个飞书群助手。请根据用户的问题和知识库检索结果,给出专业、准确的回答。
回答要求:
1. 基于知识库内容回答,如果知识库中没有相关信息,说明"根据现有资料,我暂时无法回答这个问题"
2. 简洁明了,直接回答问题
3. 使用 Markdown 格式输出,支持标题、列表、代码块等
4. 如果涉及步骤说明,使用有序列表
5. 如果不知道答案,诚实地说明,不要编造
4. 用户提示词:
用户问题:{{#1775661379508.content#}}
知识库检索结果:
{{#context#}}
请基于以上知识库内容,给出结构化的回答。如果知识库中没有相关信息,请说明。
4.12 添加「发送LARK应用消息」节点
将 LLM 的结构化回答发送回飞书:
关键:安装Lark消息和群组插件后,使用「发送LARK应用消息」节点
- 拖入「发送LARK应用消息」节点
- 配置接收人和消息内容
五、完整工作流结构
┌─────────────────────────────────────────────────────────────┐
│ Demo3 完整工作流 │
└─────────────────────────────────────────────────────────────┘
开始(收到消息)
│
▼
知识检索(根据用户消息查询相关内容)
│
▼
LLM(基于知识库生成结构化答案)
│
▼
发送LARK应用消息(将结构化答案发回飞书)
│
▼
结束
六、测试验证
测试用例
| 场景 | 测试问题 | 预期结果 |
|---|---|---|
| 产品咨询 | "有什么产品?" | 基于知识库返回所有产品列表 |
| 无答案 | "公司明年战略是什么?" | 说明无法回答 |
实际测试
- 在飞书搜索「Dify AI助手」
- 输入测试问题
- 查看返回的结构化答案
七、常见问题
Q: 企业自建应用需要审核吗?
A:
- 如果是企业管理员创建的应用,可以直接启用
- 如果是普通员工创建,需要管理员审核
Q: 收不到飞书消息?
A: 检查:
- 应用是否已发布/启用
- 事件订阅是否正确配置
- Dify 回调URL 是否可访问
- 权限是否正确配置
八、与Demo1/Demo2的区别
| 项目 | Demo1 | Demo2 | Demo3 |
|---|---|---|---|
| 核心功能 | 意图识别 + 分支 | 紧急程度判断 | 知识库检索 + 飞书应用 |
| 应用场景 | 智能客服 | 工单审批 | 企业知识问答 |
| 外部集成 | HTTP请求 | HTTP请求 | 飞书 + 知识库 |
| 消息来源 | 用户输入 | 用户输入 | 飞书应用消息 |
| 新特性 | - | 代码执行 | 知识库检索 + 内网穿透 |
九、总结
通过本文你学到了什么?
- 飞书企业自建应用:创建应用、添加机器人能力、配置权限
- 内网穿透配置:使用Cloudflare Tunnel实现内网Dify的公网访问
- 知识库检索:文档上传、分段、检索策略
- 结构化输出:Markdown格式、专业答案
知识库检索的使用技巧
- 文档质量:上传结构清晰的文档
- 分段策略:合理设置分段长度和重叠
- 检索调优:调整相似度阈值,平衡召回和精确
- 提示词工程:指导LLM基于检索内容回答