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)界面。这里展示了你创建的所有应用,也是创建新应用的入口。

创建应用的方式

  1. 创建空白应用

    • 点击"创建空白应用"按钮
    • 选择应用类型
    • 填写应用名称和描述
    • 从零开始配置
  2. 从模板创建

    • 进入"探索"页面
    • 浏览应用模板库
    • 选择感兴趣的模板
    • 添加到工作区并定制
  3. 导入 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 能够基于你的专有数据回答问题:

配置步骤

  1. 点击"上下文"区域
  2. 选择已创建的知识库
  3. 配置检索参数:
    • 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 工具

添加工具

  1. 进入"工具"配置区
  2. 选择需要的工具
  3. 配置工具参数

常用工具类型

工具 用途
网络搜索 获取实时信息
代码执行 运行代码进行计算
知识库检索 查询内部知识
HTTP 请求 调用外部 API
图像生成 创建图片

3.5.4 Agent 推理模式

Dify 支持两种推理模式:

Function Calling 模式

  • 适用于支持函数调用的模型(GPT-4、GPT-3.5-turbo 等)
  • 效果更好、更稳定
  • 模型直接输出结构化的函数调用

ReAct 模式

  • 适用于不支持函数调用的模型
  • 通过提示词引导模型进行推理
  • 使用"思考-行动-观察"循环

模式选择建议

  • 优先使用 Function Calling
  • 对于不支持的模型,使用 ReAct
  • 可以配置最大迭代次数限制

3.5.5 Agent 调试

调试面板

  • 查看每一步的推理过程
  • 检查工具调用的输入输出
  • 分析任务完成的路径

常见问题

  1. 工具调用失败:检查工具配置和权限
  2. 无限循环:增加终止条件或限制迭代次数
  3. 结果不准确:优化指令提示词

3.6 应用配置与调试

3.6.1 调试技巧

预览测试

  • 使用右侧预览区实时测试
  • 模拟不同的用户输入
  • 观察 AI 的响应质量

日志分析

  • 查看完整的提示词
  • 检查 Token 消耗
  • 分析响应时间

A/B 测试

  • 创建多个版本的提示词
  • 对比不同配置的效果
  • 选择最优方案

3.6.2 常见调试问题

问题一:回答不准确

原因:
- 提示词不够明确
- 缺少必要的上下文
- 模型能力限制

解决方案:
- 在提示词中提供更多示例
- 增加知识库支持
- 更换更强的模型

问题二:回答过长/过短

原因:
- max_tokens 设置不当
- 提示词中没有长度要求

解决方案:
- 调整 max_tokens 参数
- 在提示词中明确输出长度要求

问题三:响应缓慢

原因:
- 模型处理时间长
- 网络延迟
- 工具调用耗时

解决方案:
- 使用更快的模型
- 优化提示词减少 Token
- 启用流式输出

3.6.3 发布应用

发布步骤

  1. 确认所有配置正确
  2. 点击"发布"按钮
  3. 填写版本说明
  4. 确认发布

发布后可获得

  • 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 本章小结

通过本章的学习,你应该掌握:

  1. 应用类型:理解五种应用类型的特点和适用场景
  2. 创建流程:掌握创建应用的完整流程
  3. 核心配置:熟练配置提示词、变量、上下文
  4. Agent 开发:了解智能代理的工作原理
  5. 调试技巧:掌握应用调试和优化方法

3.9 思考与练习

  1. 实践练习

    • 创建一个翻译助手应用
    • 创建一个代码解释器应用
    • 尝试创建一个简单的 Agent
  2. 思考题

    • 如何设计一个高质量的提示词?
    • 什么时候应该使用 Agent 而不是普通聊天助手?
    • 如何评估应用的效果质量?
  3. 扩展学习

    • 研究提示词工程的最佳实践
    • 了解 ReAct 框架的工作原理
    • 探索更多应用模板

下一章预告:第四章将深入介绍知识库管理,包括文档上传、分段策略、检索配置等核心功能。

posted @ 2025-11-29 13:06  我才是银古  阅读(0)  评论(0)    收藏  举报