在前两篇文章中,我们介绍了 Dify 的基本概念和部署方式,并通过创建一个简单的翻译助手初步体验了聊天助手的构建流程。今天,我们将继续学习 Dify 的另外两种应用类型:文本生成应用Agent 应用,了解它们的用法、特点以及应用场景。

文本生成应用

文本生成应用是 Dify 提供的一种专门用于内容创作的应用类型,它专注于根据用户输入生成特定格式的文本内容。与聊天助手的多轮对话不同,文本生成应用采用 单次输入、单次输出 的交互模式,非常适合批量处理和标准化内容生成场景。比如:

  • 内容创作:文章摘要、产品描述、营销文案
  • 文本处理:翻译、分类、情感分析
  • 模板化生成:邮件回复、报告生成、技术文档
  • 批量处理:大规模内容生成和数据处理等

我们进入 “工作室” 页面,点击 “创建空白应用”,应用类型选择 “文本生成应用”:

text-generator-ui.png

我们继续以之前翻译助手为例,填写助手名称,以及可选的图标和描述,进入应用的配置页面:

text-generator-config.png

文本生成应用和聊天助手的配置页面几乎完全一样,整个配置页面也是分为左侧的 编排 和 右侧的 调试与预览 两大块。在编排区域里,同样可以配置 提示词变量知识库视觉 四个选项。

我们在这里添加两个变量:

  • lang - 目标语言,字段类型为下拉选项,选项配置有中文、英文、日文等
  • query - 翻译文本,字段类型为段落

然后在提示词中以 {{lang}}{{query}} 占位符插入变量,完整的提示词如下:

你是一个翻译助手,你的任务是将用户输入翻译成 {{lang}}
用户输入:{{query}}

这里定义的变量将以表单的形式显现在右侧的调试区域,和聊天助手不同的是,文本生成应用的对话页面就只有一个表单,用户填写的表单内容将自动替换提示词中的变量,然后调用大模型输出结果。

使用变量

Dify 变量支持的字段类型包括:文本(string)、段落(string)、下拉选项(string)、数字(number)和复选框(boolean)。

这里不支持文件上传类型,功能其实是很受限的,如果有上传文件的需求,可以考虑使用工作流。

此外,Dify 还支持以 API 扩展的方式创建 基于 API 的变量

dify-variable-api.png

关于 API 变量,我们后面在学习 API 扩展时再作讨论。

批量生成

文本生成应用的一个强大特性是支持 CSV 批量处理,非常适合批量数据处理或内容生产场景。点击右上角的 “发布” 按钮,可以看到 “批量运行” 的选项:

text-generator-publish.png

点击后进入翻译应用,页面有 “Run Once” 和 “Run Batch” 两个标签页:

text-generator-batch-1.png

要使用批量运行功能,需要准备一个 CSV 格式的文件,包含多条要处理的数据,文件内容要满足一定的格式要求,可以下载模版文件填写:

翻译文本,目标语言
"Hello","中文"
"What's your name?","中文"

批量运行结果如下:

text-generator-batch-2.png

运行的结果可以点击下载按钮导出。

和聊天助手的区别

文本生成应用和聊天助手在架构和使用方式上存在显著差异:

特性文本生成应用聊天应用
WebApp 界面表单 + 结果展示聊天对话框
API 端点completion-messageschat-messages
交互模式单次问答多轮对话
上下文保持仅当前会话跨会话持久化
开场白支持不支持支持
批量处理支持 CSV 批量处理不支持

Agent 应用

Agent(智能体)是 Dify 中最强大的应用类型之一,它利用大语言模型的推理能力,能够 自主规划目标、分解任务、调用工具并迭代执行,无需人工干预即可完成复杂任务。

我们进入 “工作室” 页面,点击 “创建空白应用”,应用类型选择 “Agent”:

agent-ui.png

我们创建一个 “生活小能手”,可以调用各种小工具解答用户的各种生活问题,填写应用名称,以及可选的图标和描述,进入应用的配置页面:

agent-config.png

Agent 应用和聊天助手以及文本生成应用的配置页面也没有太多的区别,总的来说有两点不同:

  • 工具配置:可以使用工具扩展 Agent 应用的能力,比如联网搜索或科学计算等;
  • Agent 设置:可以配置 Agent 的工作模式,默认支持 Function Calling 策略;

Dify 很贴心地内置了几个小工具:

  • 语音转写:支持文本转语音(Text to Speech)和语音转文本(Speech to Text);
  • 代码执行:运行一段代码并返回结果;
  • 时间计算:各种时间小工具,比如获取当前时间、计算星期几、时区转换等;
  • 网页抓取:根据网页链接获取网页内容;

我们不妨全都加上:

agent-tools.png

这样一个 “生活小能手” 智能体就做好了:

agent-chat.png

工具配置

值得注意的是,这里语音转写的两个工具需要配置后才能使用,可以点击工具右侧的 “信息和设置” 图标:

agent-tools-tts-1.png

在工具配置页面选择 TTS 或 ASR 模型即可:

agent-tools-tts-2.png

需要提前在设置中的模型供应商里配置对应的模型。

不过经过我的测试,这两个工具配在智能体里其实有点多余。首先对话窗口不支持上传音频文件,因此调不了语音转文本的工具;其次生成的音频文件直接保存在本地文件,也无法直接播放,也无法下载:

agent-chat-2.png

Agent 设置

在 Agent 设置中,Dify 会根据模型特性自动设置 Agent 的推理模式。Dify 在源码中定义了 9 种不同的模型特性:

class ModelFeature(Enum):
  # 单工具调用,模型能够理解工具描述并生成符合格式的工具调用请求
  TOOL_CALL = "tool-call"
  # 多工具调用,模型能够在一次响应中同时调用多个工具
  MULTI_TOOL_CALL = "multi-tool-call"
  # 流式工具调用,在流式响应中实时输出工具调用信息
  STREAM_TOOL_CALL = "stream-tool-call"
  # 思考能力,模型具备思维链推理能力
  AGENT_THOUGHT = "agent-thought"
  # 视觉理解能力,模型支持图像输入和理解
  VISION = "vision"
  # 文档理解能力,模型支持处理和理解文档格式内容
  DOCUMENT = "document"
  # 视频理解能力,模型支持视频内容的处理和分析
  VIDEO = "video"
  # 音频处理能力,模型支持音频内容的理解和处理
  AUDIO = "audio"
  # 结构化输出,模型能够按照指定的 JSON Schema 输出结果
  STRUCTURED_OUTPUT = "structured-output"

当模型支持工具调用能力时,默认使用 Function Calling 模式,拥有效果更佳、更稳定的表现:

agent-mode-function-call.png

对于不支持工具调用的模型系列,Dify 通过 ReAct 推理框架实现类似的效果:

agent-mode-react.png

我们可以在这里对 ReAct 提示词进行适当调整。此外,我们还可以修改最大迭代次数防止死循环,默认 10 次。

文件上传

当模型具备处理图片、文档、视频或音频时,智能体的对话入口会多一个文件上传按钮,比如 Gemini 2.5 Pro 同时支持视觉、文档和音频:

agent-files.png

开启之后,我们就可以对话时处理上传的文件:

agent-files-chat.png

小结

今天我们探索了 Dify 的文本生成和 Agent 应用:

  • 文本生成应用:专注于单次输入输出的内容生成场景,支持批量处理,它不维护对话状态,特别适合标准化内容生产;
  • Agent 应用:通过 Function Calling 或 ReAct 策略实现,支持工具调用和多步骤执行,利用大模型推理能力自主完成复杂任务;

文本生成、Agent 与之前学习的聊天助手这三种应用很相似,都是围绕大模型的调用来实现的,根据不同的业务场景选择合适的应用类型:

  • 简单对话:选择聊天助手
  • 内容生成:选择文本生成应用
  • 复杂任务:选择 Agent 应用

下一篇文章中,我们继续学习 Dify 的工作流应用和对话流应用,了解如何通过可视化编排构建更加复杂的业务逻辑。