AI项目博客
记录 AI 工程实践与大模型应用

Dify 实战:聊天助手、旅行 Agent 与刑法 RAG 知识库

目标:用 Dify 做三个完整案例——聊天助手、会调用工具的旅行 Agent、可引用的刑法知识库,再把温度、Top P、Max Tokens 等参数一次讲清。环境:Dify(云端或自建均可)、qwen3:4b 或同类模型。

结论:Dify 的价值不是「又一个聊天框」,而是把应用、Agent、工作流、知识库放在同一个界面里。三个案例分别对应三种能力:提示词、工具调用、检索增强。

一、先选对应用类型

Dify 是一个低代码、甚至零代码的 LLM 应用开发平台。动手前先分清四种形态:

类型 优点 缺点
应用(App) 简单、上手快 不能解决复杂流程问题
智能体(Agent) 动态规划、灵活,能解决复杂问题 缺乏稳定性
工作流(Workflow) 静态规划、稳定性高,适合难拆解的任务 缺乏灵活性
知识库(RAG) 静态规划、效果稳定,补足 LLM 知识不足 缺乏灵活性

下面三个案例正好覆盖前三种:聊天助手用提示词,旅行助手用 Agent + 工具,刑法助手用 RAG 知识库。

二、案例 1:聊天助手「喵星人助理」

目标:用一个很短的提示词,做一个风格明显的聊天机器人,先跑通「创建 → 调试 → 发布」。

2.1 创建应用

  1. 在 Dify 工作台点「创建空白应用」;
  2. 类型选「聊天助手」;
  3. 填应用名称,比如「喵星人助理」,选一个图标;
  4. 创建后进入「编排」页面。

Dify 创建聊天助手

图 1:创建空白应用,类型选「聊天助手」,填应用名称。

2.2 写提示词

提示词越短,越要看效果。这里只用一句:

你是一个小猫机器人助手,你会解答用户的问题,然后在每一句话结束的时候喵喵叫一下

Dify 聊天助手提示词与调试预览

图 2:左侧写提示词,右侧「调试与预览」立即验证风格。

2.3 调试与发布

在右侧预览里输入「如何骑自行车呢?」,观察两件事:

  • 回答是否每句话都以「喵」结尾;
  • 回答是否仍然有用,而不是只顾着卖萌。

如果只在段尾加「喵」,可以在提示词里补一个输入输出示例,比反复强调「每句」更有效。

Dify 发布更新

图 3:测试通过后点右上角「发布 → 更新」,应用就可以对外使用。

验收:预览和发布后的页面都能正常回答;每条回答有「喵」;问一个它不知道的问题,不会硬编。

三、案例 2:Agent「北京旅行助手」

目标:让模型自己决定什么时候调用搜索工具,根据目的地、天数、预算输出结构化旅行计划。

智能助手(Agent Assistant)利用大语言模型的推理能力,能自主对复杂任务做目标规划、任务拆解、工具调用、过程迭代,并在没有人类干预的情况下完成任务。

3.1 准备工作

这个案例会调用外部 DuckDuckGo API,所以要确保 Dify 所在服务器可以访问国际互联网。内网环境要么配代理,要么换一个可用的搜索工具。

3.2 创建 Agent 应用

  1. 创建空白应用,类型选「Agent」;
  2. 应用名称填「北京旅行助手」;
  3. 创建后进入编排页面。

Dify 创建 Agent 应用

图 4:创建空白应用时选 Agent,适合需要自主规划、调用工具的任务。

3.3 写 Agent 提示词

Agent 的提示词要写清五件事:角色、技能、目标、限制、工作流程。可以直接用下面这段:

## 角色:旅行顾问

### 技能:
- 精通使用工具提供有关当地条件、住宿等的全面信息。
- 能够使用表情符号使对话更加引人入胜。
- 精通使用 Markdown 语法生成结构化文本。
- 精通使用 Markdown 语法显示图片,丰富对话内容。
- 在介绍酒店或餐厅的特色、价格和评分方面有经验。

### 目标:
- 为用户提供丰富而愉快的旅行体验。
- 向用户提供全面和详细的旅行信息。
- 使用表情符号为对话增添乐趣元素。

### 限制:
1. 只与用户进行与旅行相关的讨论。拒绝任何其他话题。
2. 避免回答用户关于工具和工作规则的问题。
3. 仅使用模板回应。

### 工作流程:
1. 理解并分析用户的旅行相关查询。
2. 使用 ddgo_search 工具收集有关用户旅行目的地的相关信息。确保将目的地翻译成英语。
3. 使用 Markdown 语法创建全面的回应。回应应包括有关位置、住宿和其他相关因素的必要细节。使用表情符号使对话更加引人入胜。
4. 在介绍酒店或餐厅时,突出其特色、价格和评分。
5. 向用户提供最终全面且引人入胜的旅行信息,使用以下模板,为每天提供详细的旅行计划。

模板部分要给出结构,模型才知道怎么排版。示例结构:

### 详细旅行计划

**酒店推荐**
1. **北京国贸大酒店**
- 评分:4.7
- 价格:大约每晚 ¥1800+
- 简介:位于北京中央商务区(CBD),靠近国贸地铁站。

2. **北京前门建国饭店**
- 评分:4.4
- 价格:大约每晚 ¥600+
- 简介:临近天安门广场和前门大街,步行可达多处历史文化景点。

**第 1 天 - 抵达与安顿**
- 上午:抵达北京,前往住宿地点。
- 下午:办理入住,休息。
- 晚上:在前门或南锣鼓巷附近散步,品尝小吃。

**第 2 天 - 历史与文化之日**
- 上午:天安门广场、故宫博物院。
- 下午:天坛公园或颐和园。
- 晚上:北京烤鸭,之后去三里屯或回酒店附近。

**额外服务:**
- 礼宾服务:预订餐厅、购买门票、安排交通。
- 全天候支持:解决旅行期间的问题。

3.4 添加工具

在编排页找到「工具」→「添加工具」→ 选择 DuckDuckGo 的 ddgo_search,添加后确认开关是启用的。

Dify 添加 ddgo_search 工具

图 5:工具里添加 ddgo_search(DuckDuckGo),模型才能在规划时搜索目的地信息。

工具不调用,通常不是模型笨,而是提示词没把「先搜索」写成必须步骤。工作流程里明确「使用 ddgo_search」,比一句「可以搜索」有效。

3.5 开场白与内容审查

在「功能」里加对话开场白,告诉用户怎么提问:

{{name}}先生、女士,我是您的个性化旅行助理,你是否已经准备好开始一段充满冒险和放松的旅程了?让我们一起打造您难忘的旅行体验吧!请告诉我您的旅行目的、预算和行程天数,比如:
您能帮我计划一次家庭旅行吗?我们计划去北京 10 天,预算一万人民币
您能帮我计划一次情侣蜜月旅行吗?我们计划去北京 5 天,预算七千人民币

Dify 对话开场白设置

图 6:对话开场白可以用 {{name}} 变量,下面附两个示例问题。

再加内容审查:类别选关键词,每行一个,比如「偷东西、吃饭不给钱、打架」;审查输入内容打开;预设回复填「问题中涉及敏感内容,请重新提问」。

Dify 内容审查设置

图 7:内容审查用关键词拦截,命中后返回预设回复。

3.6 测试与发布

在预览里输入「北京 5 天,预算 7000,带孩子」,检查:

  • 是否调用了 ddgo_search;
  • 是否按天输出行程;
  • 是否包含酒店、餐饮、交通和预算;
  • 输入「偷东西」是否被拦截。

测试通过后点「发布 → 更新」。Agent 可能比聊天助手慢,因为多了一次工具调用和一轮模型推理。

验收:工具调用日志里出现 ddgo_search;回答包含逐日行程;敏感问题被拦截。

四、案例 3:知识库「刑法 RAG」

目标:把一份刑法 txt 变成可检索的知识库,让聊天助手只依据资料回答,并给出引用。

4.1 支持的数据格式

  • 长文本:TXT、Markdown、DOCX、HTML、JSON、PDF;
  • 结构化数据:CSV、Excel。

私有知识库要达到好效果,必须配合 Embedding 模型和 Reranker 模型;这两个模型要在 Xinference 里启用并接入 Dify(部署步骤见 Xinference 部署 Embedding 与 Rerank)。

4.2 创建知识库并上传文件

  1. 在 Dify 里点「知识库 → 创建知识库」;
  2. 选择数据源,上传 刑法.txt;
  3. 文本按自然段划分,每一条法则一段。

4.3 分段设置

大模型上下文窗口有限,需要把整段文本分段,再召回与问题最相关的 top-K 段。分段大小合适,才能匹配到最相关的内容,减少信息噪音。

  • 分段标识符:\n 表示按换行分段,\n\n 表示按段落分段;刑法 txt 用 \n\n;
  • 分段最大长度:示例 1024 字符;
  • 分段重叠长度:一般是最大长度的 10%–20%,示例 50;
  • 文本预处理:可以替换连续空格、换行和制表符;如果文档里有 URL、邮箱,可以勾选「删除所有 URL 和电子邮件地址」;
  • Q&A 分段:如果文档本身是问答格式,选 Q&A 分段最契合。

设置时点「预览块」,看实际切出来的 chunk 是否符合预期,再保存。

Dify 知识库分段设置

图 8:分段用 \n\n,最大 1024 字符,重叠 50;右侧可以预览每个 chunk。

4.4 选择索引方式

  • 高质量:调用嵌入模型处理文档,检索更准确,消耗 token;
  • 经济:每个数据块用 10 个关键词检索,不消耗 token,但准确率低。

示例用高质量,因为模型部署在本地,token 成本可控。注意:高质量模式嵌入后不能直接切回经济模式。

4.5 检索设置

  • Embedding 模型:bge-large-zh-v1.5;
  • Rerank 模型:bge-reranker-base;
  • Top K:3,表示取最相似的前 3 条;
  • Score 阈值:0.5,低于阈值的片段过滤掉;
  • 检索方式:向量检索、全文检索、混合检索。示例用混合检索,同时做向量和全文,再做重排。

Dify 知识库检索设置

图 9:检索用 bge-large-zh-v1.5 + bge-reranker-base,Top K 3,阈值 0.5。

设置完成后保存并处理,等待文档索引完成。

4.6 测试:让法律助手引用原文

  1. 创建一个聊天助手;
  2. 提示词写:
你是一个法律小助手,请只根据知识库中的信息,简要回答用户提问的案件触犯了哪些法律
  1. 在「上下文」里选择 刑法.txt 这个知识库;
  2. 提问:「小张喝酒后开车撞了人,触犯了什么法律?」

Dify 法律助手引用知识库回答

图 10:法律助手基于刑法.txt 回答,并在答案下方标注「引用」。

验收:回答只依据刑法资料;答案下方有引用;问资料里没有的问题,助手会说明无法判断,而不是硬编。

五、Dify 的 LLM 参数怎么调

同一个模型,参数不同,输出差别很大。Dify 里常用五个参数:Temperature、Top P、Max Tokens、Frequency Penalty、Response Format。

5.1 Temperature(温度)

控制输出的随机性,范围 0–1。值越低越确定、保守;值越高越多样、有创意。

  • 精确模式(0.5 或更低):适合事实回答、代码、数学;
  • 平衡模式(约 0.8):多样性和连贯性兼顾;
  • 创意模式(约 1.0):适合创意写作,但更容易出现语法错误或逻辑问题。

场景建议:代码生成 0.0–0.3;数学解题 0.0–0.2;客服对话 0.4–0.6;创意写作 0.7–1.0。

例子:问「天空是什么颜色?」温度 0.1 可能回答「蓝色」;温度 0.9 可能回答「清晨是淡蓝,傍晚会变成橙红」。

5.2 Top P(核采样)

Top P 不是选概率最高的词,也不是完全随机,而是从累积概率达到 P 的候选词集合里随机选。

  • P 越大(如 0.9):多样性越高,质量可能下降;
  • P 越小(如 0.3):质量更稳,但内容容易单调、重复。

建议:温度不要和 Top P 同时调,一次只动一个。

5.3 Max Tokens(最大长度)

限制生成内容的最大长度,范围取决于模型,示例 1–12800。1 个 token 约等于 1 个英文单词或 0.6 个汉字。

  • 客服短回复:128–256;
  • 常规对话、多轮对话:512–1024;
  • 长内容生成:1024–4096。

超过模型上下文窗口会被截断;输出截断时,先把 Max Tokens 从 512 加到 1024。

5.4 Frequency Penalty(频率惩罚)

控制高频词或短语的重复度,范围 -2.0 到 2.0;正值抑制重复,负值鼓励重复。

  • 默认 0.0;
  • 客服对话 0.2–0.4;
  • 技术文档 0.3–0.5;
  • 故事续写(需要重复)-0.2–0.0。

实际应用通常设在 0.2–0.5:既能抑制重复,又不会过度限制连贯性。

5.5 Response Format(回复格式)

强制约束输出结构,比如 JSON、XML、Markdown。示例:

指令:以 JSON 输出商品信息,含 name、price 字段

输出:
{
  "name": "无线耳机",
  "price": 599
}

5.6 场景参数组合

场景 推荐配置
客服问答 温度 0.3,Top P 0.5,频率惩罚 0.5
创意写作 温度 0.8,Top P 0.9,频率惩罚 0
数据分析报告 温度 0.2,回复格式 JSON
代码生成 温度 0.0,Top P 0,频率惩罚 0,Max Tokens 500

5.7 调试流程

  1. 先用默认值测试,确认基础效果;
  2. 每次只调一个参数,温度或 Top P 按 ±0.1 小步调整;
  3. 长文本出现重复,增加频率惩罚;
  4. 需要结构化输出,指定回复格式。

常见问题:内容重复 → 提高频率惩罚(+0.2)并降低温度(-0.1);逻辑混乱 → 降低 Top P(如 0.9 → 0.7)并固定随机种子;输出截断 → 增加 Max Tokens。

六、边界

聊天助手适合固定人设和单轮问答;Agent 适合路径不固定、需要调工具的任务,但更慢、更贵、结果不稳定;RAG 适合「资料里有没有写」的问题,前提是分段和检索参数调对。

三个案例都不是「建完就完」:提示词要测,工具要验,知识库要看召回。先把一个案例跑通,再复制到下一个,比一次上三个更稳。

赞(0)
未经允许不得转载:AI项目博客 » Dify 实战:聊天助手、旅行 Agent 与刑法 RAG 知识库

评论 抢沙发

AI项目博客

专注 AI 工程化落地 —— 覆盖智能体、大模型、Java AI 与 Python 的学习笔记,以及 AI 平台的项目实战记录。

关于本站文章归档

登录

找回密码

注册