前言

上篇我们完成了Dify的环境部署和本地模型接入,相当于已经把“厨房”和“食材”准备好了。本篇将正式进入“烹饪”环节——手把手教你用Dify构建一个能真正解决问题的企业级AI应用

我们将以“智能客服知识问答机器人”为案例,完整走通:知识库构建 → 工作流编排 → Agent智能体发布 → API调用的全链路。


一、知识库(RAG):让AI读懂你的企业文档

1.1 为什么需要RAG?

大模型的训练数据是公开、通用的,它不知道你公司内部的产品手册、规章制度、技术文档。RAG(检索增强生成)技术正是解决这一痛点的关键:先检索相关文档,再让大模型基于检索结果生成回答

1.2 Dify内置知识库 vs 外部知识库

方案 适用场景 优点 缺点
内置知识库 中小规模文档(<1000页) 开箱即用,配置简单 跨类别检索可能混淆
外部知识库(如RagFlow/Zilliz) 专业领域、海量文档 检索精度高,支持混合检索 需额外部署维护

实战建议:先用内置知识库快速验证,精度不足时再升级到外部方案。

1.3 创建知识库实战

步骤一:准备文档

支持格式:PDF、TXT、Markdown、Word、HTML。本例使用某公司《产品使用手册》PDF。

步骤二:上传并分段

  1. Dify首页 → 知识库 → 创建知识库

  2. 选择“导入已有文本”,上传PDF

  3. 分段设置(关键步骤):

    • 分段最大长度:500-800字符(过小信息碎片化,过大检索精度下降)

    • 分段重叠长度:50-100字符(保证上下文连贯)

    • 索引方式:选择“高质量”模式

步骤三:选择Embedding模型

Embedding模型负责将文本转为向量,直接影响检索精度:

  • 中文场景:推荐bge-large-zh-v1.5text-embedding-v3

  • 多语言混合:推荐multilingual-e5-large

  • 本地部署:使用Ollama的nomic-embed-text

步骤四:检索设置优化

参数 说明 建议值
检索方式 向量检索/全文检索/混合检索 混合检索(兼顾语义与关键词)
Top K 返回的最相关片段数 3-5
Score阈值 低于此值的结果被过滤 0.2-0.5

步骤五:召回测试

在知识库详情页点击“召回测试”,输入典型问题(如“如何重置设备?”),检查返回的片段是否相关。若不理想,返回调整分段策略。

1.4 知识库维护最佳实践

  • 增量更新:文档变更时,上传新版并删除旧版

  • 元数据标注:为文档添加标签(如“产品A”、“版本2.0”),便于过滤检索

  • 定期清洗:删除过时内容,保持知识新鲜度


二、工作流编排:可视化设计AI业务逻辑

2.1 工作流核心节点类型

Dify工作流采用节点-边模型,主要节点类型包括:

节点类型 功能 典型应用
开始节点 接收用户输入 定义输入变量
LLM节点 调用大模型推理 意图识别、内容生成
知识检索节点 从知识库召回相关内容 RAG问答
条件分支节点 根据条件分流 意图路由、权限判断
代码节点 执行自定义Python/JS代码 数据格式转换、计算
HTTP请求节点 调用外部API 天气查询、订单查询
工具节点 调用内置/自定义工具 网页搜索、计算器
结束节点 定义输出格式 返回最终结果

2.2 实战:构建智能客服工作流

场景描述:用户咨询产品问题 → 意图识别(售前/售后/投诉) → 分别路由到不同知识库 → 生成回答。

设计步骤

第一步:添加意图识别节点

在开始节点后添加LLM节点,Prompt设计:

你是一个客服意图识别专家。根据用户输入,判断意图类型:
- 售前咨询:产品功能、价格、对比等
- 售后支持:使用问题、故障排查等
- 投诉建议:不满反馈、改进建议

仅输出以下之一:售前咨询 / 售后支持 / 投诉建议

用户输入:{{#sys.query#}}

第二步:添加条件分支

连接意图识别节点的输出 → 条件分支节点,设置三条分支:

  • 条件1:{{#意图识别.text#}} 包含 “售前” → 进入售前处理流程

  • 条件2:{{#意图识别.text#}} 包含 “售后” → 进入售后处理流程

  • 条件3:{{#意图识别.text#}} 包含 “投诉” → 进入投诉处理流程

第三步:配置知识检索

为每条分支添加“知识检索”节点,分别关联对应的知识库(售前文档库/售后知识库/投诉处理SOP)。

第四步:生成回答

最后添加LLM节点,System Prompt示例:

你是一位专业、耐心的客服专员。请根据以下【知识库内容】回答用户问题。

要求:
1. 回答必须基于知识库内容,不编造信息
2. 如果知识库无相关信息,请引导用户转人工客服
3. 语气友好、专业

【知识库内容】:{{#知识检索.result#}}
【用户问题】:{{#sys.query#}}

2.3 调试与优化技巧

  • 单节点调试:右键节点 → “从此节点运行”,快速定位问题

  • 变量追踪:在调试面板查看每个节点的输入/输出,确认数据流正确

  • 日志分析docker compose logs api查看后端日志


三、Agent智能体:让AI自主调用工具

3.1 Agent vs 普通聊天助手

对比维度 聊天助手 Agent智能体
交互模式 一问一答 自主拆解任务
工具调用 不支持或需手动指定 自动判断并调用
适用场景 简单问答 复杂任务执行

典型Agent应用场景

  • 数据分析:自动连接数据库 → 执行SQL → 生成图表

  • 信息整合:网页搜索 + 知识库检索 + 内容汇总

  • 流程自动化:订单查询 → 物流追踪 → 生成报告

3.2 Dify中创建Agent

步骤一:创建Agent应用

工作室 → 创建空白应用 → 选择“Agent”类型 → 命名(如“智能客服Agent”)

步骤二:配置工具

在编排页面的“工具”区域点击“添加”,可选择:

内置工具

  • Google Search:联网搜索最新信息

  • DALL-E:图像生成

  • Calculator:数学计算

  • Wikipedia:百科查询

自定义工具

  • HTTP请求工具:调用企业内部API

  • 代码解释器:执行Python代码处理数据

第三方插件

  • AntV:数据可视化图表生成

  • GitHub:仓库操作

  • Notion:文档读写

步骤三:编写Agent指令

在“指令”区域定义Agent的行为边界:

# 角色
你是一位经验丰富的智能客服专家,能够自主调用工具解决用户问题。

# 能力范围
1. 产品咨询:优先检索知识库,必要时联网搜索补充信息
2. 订单查询:调用订单API获取实时状态
3. 投诉处理:记录问题并生成工单

# 限制
- 涉及退款、赔偿等敏感操作,需引导人工处理
- 不确定的信息要主动说明

# 工具使用策略
- 当用户询问“最新”信息时,使用Google Search
- 当用户提供数据并要求分析时,使用代码解释器

步骤四:测试与发布

右侧调试区输入测试问题,观察Agent的思考过程工具调用轨迹,确认行为符合预期后点击“发布”。

3.3 多智能体协同模式

对于复杂业务场景,可构建多个专业Agent协同工作:

主控Agent(意图识别+任务分发)
    ├── 售前Agent(产品推荐+竞品对比)
    ├── 售后Agent(故障诊断+知识库检索)
    └── 数据分析Agent(报表生成+可视化)

Dify v1.0版本引入的插件化Agent策略,允许开发者自定义Agent的推理模式(如ReAct、Plan-and-Execute等)。


四、API集成:将AI能力嵌入业务系统

4.1 获取API密钥

应用发布后,进入“API访问”页面:

  1. 生成API密钥(Secret Key)

  2. 记录API Endpoint(如https://your-dify-domain/v1/chat-messages

4.2 Python调用示例

python

import requests
import json

url = "http://localhost/v1/chat-messages"
headers = {
    "Authorization": "Bearer app-xxxxxxxxxxxxx",
    "Content-Type": "application/json"
}

payload = {
    "inputs": {},
    "query": "我的订单什么时候到货?",
    "response_mode": "streaming",  # streaming/blocking
    "conversation_id": "",  # 留空开启新会话
    "user": "user_001"
}

response = requests.post(url, headers=headers, json=payload, stream=True)
for line in response.iter_lines():
    if line:
        line_str = line.decode('utf-8')
        if line_str.startswith("data:"):
            data = json.loads(line_str[5:])
            print(data.get("answer", ""), end="")

4.3 嵌入网页

Dify支持一键生成嵌入代码:

  1. 应用 → 概览 → 嵌入

  2. 选择嵌入方式(浮动按钮/全屏/iframe)

  3. 复制生成的HTML代码,粘贴到网站中


五、生产环境部署建议

5.1 安全加固清单

项目 建议
SECRET_KEY 使用32位以上随机字符串
数据库密码 替换默认值,使用强密码
API密钥 定期轮换,权限最小化
HTTPS 配置Nginx反向代理+SSL证书
防火墙 仅开放必要端口

5.2 性能优化

  • 向量数据库选择:小规模用Weaviate/Qdrant,大规模考虑Milvus

  • 缓存策略:高频问题缓存结果,减少模型调用

  • 模型选择:简单任务用7B模型,复杂推理用更大参数量模型

5.3 监控告警

建议监控以下指标:

  • API响应延迟(P99 < 3s)

  • 错误率(< 1%)

  • GPU利用率(如有)

  • 知识库检索命中率


六、常见问题进阶排查

问题1:知识库检索结果不准

可能原因

  • 分段过大或过小

  • Embedding模型不适配中文

  • 混合检索权重未调优

解决方案

  • 调整分段大小为500-800字符

  • 切换bge-large-zh-v1.5模型

  • 在检索设置中提高“向量检索权重”

问题2:Agent反复调用同一工具陷入死循环

解决方案

  • 在Agent指令中添加“最大调用次数”限制

  • 设置合理的工具调用超时时间

问题3:本地模型推理速度慢

优化方向

  • 使用量化版本(如qwen2.5:7b-q4_K_M)

  • 启用GPU加速(Ollama默认支持CUDA)

  • 调整num_ctx参数减小上下文窗口


七、总结与展望

通过上下两篇的完整学习,你已掌握:

阶段 核心能力
上篇 理解大模型与Agent区别、完成Dify部署、接入本地模型
下篇 构建知识库、编排工作流、创建Agent、API集成

Dify v1.0的关键升级

  • 插件化架构:工具和模型完全解耦,即插即用

  • Agent节点:支持自定义推理策略

  • 应用市场:丰富的预置模板,开箱即用

未来演进方向

  • 多模态Agent:支持图像、音频的输入输出

  • 端侧部署:模型直接在手机/PC运行

  • 人机协同:AI处理常规任务,人类介入关键决策

技术不是目的,而是解决方案的载体。 当客服机器人能秒回用户问题,当数据分析从5天缩短到5分钟,当每个人都能拥有一个得力的“数字员工”——这才是Agent技术真正的价值所在。

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐