03-应用构建基础
第三章:应用构建基础
3.1 应用概述
3.1.1 什么是 Dify 应用
在 Dify 中,一个"应用"是指基于大语言模型(如 GPT、Claude 等)构建的实际场景应用。它不仅包含了开发 AI 应用的工程范式,也包含了具体的交付物。
简而言之,一个 Dify 应用为开发者提供了:
封装友好的 API:
- 可由后端或前端应用直接调用
- 通过 Token 进行身份认证
- RESTful 风格,易于集成
开箱即用的 WebApp:
- 美观且托管的用户界面
- 可进行二次开发和定制
- 支持嵌入到现有系统
易用的管理界面:
- 提示词工程编辑器
- 上下文管理工具
- 日志分析面板
- 标注和反馈系统
你可以任选其中之一或全部,来支撑你的 AI 应用开发。这种灵活性使得 Dify 能够适应各种不同的开发场景和需求。
3.1.2 应用类型
Dify 提供了五种主要的应用类型,每种类型针对不同的使用场景:
| 应用类型 | 主要特点 | 适用场景 |
|---|---|---|
| 聊天助手 | 基于 LLM 的对话式交互 | 客服、咨询、日常助手 |
| 文本生成 | 面向单次文本生成任务 | 写作、翻译、摘要 |
| Agent | 智能任务分解和工具调用 | 复杂任务、自动化处理 |
| 对话流(Chatflow) | 可视化多轮对话编排 | 复杂对话流程、业务流程 |
| 工作流(Workflow) | 自动化批处理任务 | 数据处理、批量生成 |
3.1.3 应用类型对比
文本生成应用 vs 聊天助手:
| 特性 | 文本生成应用 | 聊天助手 |
|---|---|---|
| WebApp 界面 | 表单+结果式 | 聊天式 |
| WebAPI 端点 | completion-messages | chat-messages |
| 交互方式 | 一问一答 | 多轮对话 |
| 流式返回 | 支持 | 支持 |
| 上下文保存 | 当次 | 持续 |
| 用户输入表单 | 支持 | 支持 |
| 知识库与插件 | 支持 | 支持 |
| AI 开场白 | 不支持 | 支持 |
| 典型场景 | 翻译、判断、索引 | 聊天、咨询 |
3.2 创建第一个应用
3.2.1 进入创建界面
登录 Dify 后,你会看到工作室(Studio)界面。这里展示了你创建的所有应用,也是创建新应用的入口。
创建应用的方式:
-
创建空白应用
- 点击"创建空白应用"按钮
- 选择应用类型
- 填写应用名称和描述
- 从零开始配置
-
从模板创建
- 进入"探索"页面
- 浏览应用模板库
- 选择感兴趣的模板
- 添加到工作区并定制
-
导入 DSL 文件
- 从其他来源获取 DSL 配置文件
- 点击"导入 DSL 文件"
- 上传文件完成导入
3.2.2 创建步骤详解
以创建聊天助手为例:
步骤一:选择应用类型
点击"创建空白应用"后,选择"聊天助手"类型。
步骤二:填写基本信息
- 应用名称:给应用起一个易于识别的名称
- 应用描述:简要描述应用的功能和用途
- 应用图标:选择或上传一个代表应用的图标
步骤三:进入编排界面
创建完成后,自动进入应用编排界面。这里是配置应用的核心区域。
3.2.3 应用编排界面介绍
编排界面分为几个主要区域:
左侧配置区:
- 提示词(Instructions):定义 AI 的角色和行为
- 变量(Variables):设置用户输入参数
- 上下文(Context):关联知识库
- 工具(Tools):添加可调用的工具
右侧预览区:
- 实时对话测试
- 查看 AI 响应效果
- 调试和优化
顶部操作栏:
- 保存草稿
- 发布应用
- 查看历史版本
- 访问设置
3.3 聊天助手应用
3.3.1 聊天助手的特点
聊天助手是最常用的应用类型,具有以下特点:
- 多轮对话:支持连续的对话交互,保持上下文
- 开场白:可配置欢迎语和建议问题
- 记忆功能:自动维护对话历史
- 流式输出:实时展示 AI 的生成过程
3.3.2 提示词配置
提示词(Prompt/Instructions)是定义 AI 行为的核心。一个好的提示词应该包含:
角色定义:
你是一个专业的客户服务助手,代表[公司名称]为用户提供帮助。
你的职责是:
- 回答关于产品和服务的问题
- 帮助用户解决常见问题
- 引导用户到合适的服务渠道
行为约束:
请遵循以下规则:
1. 始终保持友好和专业的态度
2. 如果不确定答案,诚实地告知用户
3. 不要透露内部信息或公司机密
4. 对于超出能力范围的问题,建议用户联系人工客服
输出格式:
回答时请注意:
- 使用简洁清晰的语言
- 如有多个步骤,使用编号列表
- 重要信息用粗体标注
- 每次回答控制在 200 字以内
3.3.3 变量配置
变量允许用户在对话开始前提供额外信息:
变量类型:
- 文本输入(Text Input):单行文本
- 段落(Paragraph):多行文本
- 选择器(Select):下拉选项
- 数字(Number):数值输入
变量配置示例:
- 变量名: user_name
显示名: 您的姓名
类型: 文本输入
必填: 是
默认值: ""
- 变量名: query_type
显示名: 咨询类型
类型: 选择器
选项:
- 产品咨询
- 技术支持
- 投诉建议
- 其他
在提示词中使用变量:
用户姓名是 {{user_name}},咨询类型是 {{query_type}}。
请根据用户的咨询类型提供针对性的帮助。
3.3.4 上下文配置
通过关联知识库,让 AI 能够基于你的专有数据回答问题:
配置步骤:
- 点击"上下文"区域
- 选择已创建的知识库
- 配置检索参数:
- Top K:返回的相关片段数量
- Score 阈值:相关性得分门槛
提示词中引用上下文:
以下是与用户问题相关的参考资料:
{{context}}
请基于以上资料回答用户的问题。如果资料中没有相关信息,请诚实告知。
3.3.5 开场白配置
开场白让用户了解 AI 助手的能力:
配置项:
- 开场白文本:欢迎用户的第一句话
- 建议问题:用户可以直接点击的示例问题
示例配置:
开场白:
"您好!我是[产品名称]的智能助手小D。我可以帮您:
- 了解产品功能和使用方法
- 解答常见问题
- 指导操作步骤
请问有什么可以帮助您的?"
建议问题:
- "如何创建我的第一个应用?"
- "知识库有什么用?"
- "如何发布应用?"
3.3.6 模型配置
选择合适的模型并配置参数:
模型选择:
- GPT-4/GPT-4-turbo:最强能力,成本较高
- GPT-3.5-turbo:平衡性能和成本
- Claude 3:擅长长文本和分析任务
- 国产模型:如文心一言、通义千问等
关键参数:
temperature: 0.7 # 创造性程度(0-2)
max_tokens: 2048 # 最大输出长度
top_p: 0.9 # 核采样参数
presence_penalty: 0 # 话题新鲜度惩罚
frequency_penalty: 0 # 重复惩罚
参数调优建议:
- 客服场景:temperature 0.3-0.5,输出更稳定
- 创意写作:temperature 0.7-1.0,输出更多样
- 代码生成:temperature 0.1-0.3,输出更精确
3.4 文本生成应用
3.4.1 文本生成应用的特点
文本生成应用适合单次任务处理:
- 一问一答:不维护对话历史
- 表单输入:通过表单收集所有参数
- 批量处理:适合自动化流程调用
3.4.2 创建文本生成应用
以翻译助手为例:
步骤一:配置变量
- 变量名: source_text
显示名: 原文
类型: 段落
必填: 是
- 变量名: target_language
显示名: 目标语言
类型: 选择器
选项:
- 中文
- 英文
- 日文
- 韩文
步骤二:编写提示词
你是一个专业的翻译助手。请将以下文本翻译成{{target_language}}:
原文:
{{source_text}}
翻译要求:
1. 保持原文的语气和风格
2. 使用自然流畅的目标语言表达
3. 专业术语需要准确翻译
4. 如有歧义,选择最常用的译法
步骤三:配置输出
输出变量: translation
输出类型: 文本
3.4.3 高级配置
前置处理:
在发送给模型之前,可以对输入进行处理:
- 文本清洗
- 长度限制
- 格式标准化
后置处理:
对模型输出进行处理:
- 格式化输出
- 提取特定字段
- 敏感词过滤
3.5 Agent 智能助手
3.5.1 Agent 的概念
Agent(智能代理)是一种能够自主完成复杂任务的 AI 应用。它具有以下能力:
- 目标规划:理解用户的最终目标
- 任务拆解:将复杂任务分解为子任务
- 工具调用:自主选择和使用工具
- 过程迭代:根据中间结果调整策略
- 自主完成:在没有人类干预的情况下完成任务
3.5.2 创建 Agent 应用
步骤一:选择 Agent 类型
在创建应用时选择"Agent"类型。
步骤二:选择推理模型
Agent 的任务完成能力取决于模型的推理能力。推荐选择:
- GPT-4 系列:最强推理能力
- Claude 3 Opus:优秀的分析能力
- GPT-3.5-turbo:成本效益平衡
步骤三:编写 Agent 指令
你是一个数据分析助手,帮助用户分析数据并生成报告。
你的工作流程:
1. 理解用户的分析需求
2. 使用搜索工具查找相关数据
3. 使用代码执行工具进行计算
4. 使用图表工具生成可视化
5. 整理分析结果并给出建议
可用工具:
- 网络搜索:获取最新数据和信息
- 代码执行:运行 Python 代码进行计算
- 图表生成:创建数据可视化图表
3.5.3 配置 Agent 工具
添加工具:
- 进入"工具"配置区
- 选择需要的工具
- 配置工具参数
常用工具类型:
| 工具 | 用途 |
|---|---|
| 网络搜索 | 获取实时信息 |
| 代码执行 | 运行代码进行计算 |
| 知识库检索 | 查询内部知识 |
| HTTP 请求 | 调用外部 API |
| 图像生成 | 创建图片 |
3.5.4 Agent 推理模式
Dify 支持两种推理模式:
Function Calling 模式:
- 适用于支持函数调用的模型(GPT-4、GPT-3.5-turbo 等)
- 效果更好、更稳定
- 模型直接输出结构化的函数调用
ReAct 模式:
- 适用于不支持函数调用的模型
- 通过提示词引导模型进行推理
- 使用"思考-行动-观察"循环
模式选择建议:
- 优先使用 Function Calling
- 对于不支持的模型,使用 ReAct
- 可以配置最大迭代次数限制
3.5.5 Agent 调试
调试面板:
- 查看每一步的推理过程
- 检查工具调用的输入输出
- 分析任务完成的路径
常见问题:
- 工具调用失败:检查工具配置和权限
- 无限循环:增加终止条件或限制迭代次数
- 结果不准确:优化指令提示词
3.6 应用配置与调试
3.6.1 调试技巧
预览测试:
- 使用右侧预览区实时测试
- 模拟不同的用户输入
- 观察 AI 的响应质量
日志分析:
- 查看完整的提示词
- 检查 Token 消耗
- 分析响应时间
A/B 测试:
- 创建多个版本的提示词
- 对比不同配置的效果
- 选择最优方案
3.6.2 常见调试问题
问题一:回答不准确
原因:
- 提示词不够明确
- 缺少必要的上下文
- 模型能力限制
解决方案:
- 在提示词中提供更多示例
- 增加知识库支持
- 更换更强的模型
问题二:回答过长/过短
原因:
- max_tokens 设置不当
- 提示词中没有长度要求
解决方案:
- 调整 max_tokens 参数
- 在提示词中明确输出长度要求
问题三:响应缓慢
原因:
- 模型处理时间长
- 网络延迟
- 工具调用耗时
解决方案:
- 使用更快的模型
- 优化提示词减少 Token
- 启用流式输出
3.6.3 发布应用
发布步骤:
- 确认所有配置正确
- 点击"发布"按钮
- 填写版本说明
- 确认发布
发布后可获得:
- WebApp 访问链接
- API 访问密钥
- 嵌入代码(iframe)
3.6.4 版本管理
版本功能:
- 查看历史版本
- 对比版本差异
- 回滚到旧版本
最佳实践:
- 每次重大更改前发布新版本
- 写清晰的版本说明
- 保留有效的历史版本
3.7 实战案例:客服助手
3.7.1 需求分析
创建一个产品客服助手,要求:
- 回答产品功能问题
- 提供使用指导
- 处理简单的投诉
- 收集用户反馈
3.7.2 实现步骤
步骤一:创建知识库
上传产品文档、FAQ、使用手册等。
步骤二:创建聊天助手
选择聊天助手类型,命名为"产品客服小助手"。
步骤三:配置提示词
## 角色
你是[产品名称]的官方客服助手,名叫小D。
## 职责
1. 回答用户关于产品功能和使用的问题
2. 帮助用户解决常见问题
3. 收集用户的意见和建议
4. 引导用户到合适的服务渠道
## 知识来源
请基于提供的知识库内容回答问题。知识库包含:
- 产品功能说明
- 使用教程
- 常见问题解答
## 行为准则
1. 保持友好、专业的态度
2. 回答要准确、简洁
3. 不确定时诚实告知,不要编造信息
4. 对于无法解决的问题,建议联系人工客服(电话:400-xxx-xxxx)
## 输出格式
- 使用简洁的语言
- 重要步骤使用编号
- 关键信息适当强调
步骤四:配置变量
- 用户类型(可选):新用户 / 老用户
- 咨询产品(可选):产品A / 产品B / 产品C
步骤五:关联知识库
选择产品知识库,设置 Top K 为 5。
步骤六:配置开场白
您好!我是产品客服小助手小D 🙋
我可以帮您:
📖 了解产品功能
🔧 解决使用问题
💡 提供操作指导
请问有什么可以帮您的呢?
步骤七:测试和发布
进行充分测试后发布应用。
3.8 本章小结
通过本章的学习,你应该掌握:
- 应用类型:理解五种应用类型的特点和适用场景
- 创建流程:掌握创建应用的完整流程
- 核心配置:熟练配置提示词、变量、上下文
- Agent 开发:了解智能代理的工作原理
- 调试技巧:掌握应用调试和优化方法
3.9 思考与练习
-
实践练习:
- 创建一个翻译助手应用
- 创建一个代码解释器应用
- 尝试创建一个简单的 Agent
-
思考题:
- 如何设计一个高质量的提示词?
- 什么时候应该使用 Agent 而不是普通聊天助手?
- 如何评估应用的效果质量?
-
扩展学习:
- 研究提示词工程的最佳实践
- 了解 ReAct 框架的工作原理
- 探索更多应用模板
下一章预告:第四章将深入介绍知识库管理,包括文档上传、分段策略、检索配置等核心功能。

浙公网安备 33010602011771号