之前我们所做到的都十分简单, 用户给出输入, 我们得到 AI 输出的文字内容.
但很多情况下我们需要利用 AI 输出的内容进行多次操作
今天我们尝试使用 Dify 来搭建一个简单的工作流, 让 AI 能够根据用户给出的简单提示生成一张图片
确定需求和流程
首先我们先确定好我们的需求:
- 我们需要获取到用户的输入
- 将用户的输入进行处理, 剔除掉无用的指令并且丰富细节方便 AI 生成图片
- 将处理后的结果交给 AI 进行生成
- 将生成的图片返回给用户
注册 Dify
首先我们前往 Dify 官网注册一个账号 Dify

配置模型
注册好后我们可以看到这样的页面, 首先我们先配置下模型
打开个人的设置

打开后切换到模型供应商页面, 在下方找到火山方舟, 点击安装


安装好后我们可以点击上面的添加模型
我们再前往 火山平台 重新拿一下我们的 API Key 备用, 点击那个小眼睛即可显示

接下来我们来添加下模型:
在 在线推理 这里我们可以找到我们可以用的一些模型, 我们需要每个模型的接入点 ID 备用

我们可以先试着添加一下大语言模型, 例如 Doubao-1.5-vision-pro-32k, 上图的最后一个
我们先选择模型类型为 LLM, 模型名称随意, 鉴权方式修改为 API Key, 在 API Key 这一栏填写平台上的 API Key (还没填完, 见下面一段)

Endpoint id 就填入上面你复制的接入点 ID
基础模型我们就填写 Doubao-1.5-vision-pro-32k, 也就是接入点最左边那一栏的名称, 之后我们就可以保存了

接下来我们还需要了解下生成图片的, 由于 Dify 并没有直接提供生成图片的插件, 需要我们手动调用
保存好后我们就可以开始构建我们的工作流了
我们可以再提前查看一下 火山引擎文档, 了解一下如何调用这个图片生成功能
创建工作流
我们前往工作室, 点击创建空白应用

在这里我们选择 Chatflow

创建好后我们可以看到预制的一个 Flow, 我们将中间节点右键删除 (你无法删除开始这个入口)

还记得我们的流程吗? 我们先将用户的输入交给大模型进行处理
添加大模型处理
我们点击开始右边的加号可以添加一个节点

我们先选择好模型


之后我们填写一下提示词, 在 System 处写入一下系统提示词指示 AI 干什么, 例如我这里的:
将用户的要求改成直接描述图像内容的一段话, 直接输出这一段话, 如果用户输入的内容不当(NSFW), 请直接输出 `<content_policy_abuse>`
之后我们再添加一个消息, 传入用户的参数, 我们在框中按下 / 即可弹出可用的变量, 我们选择 sys.query 表示用户的输入
传入指令给绘图模型
由于 Dify 对于绘图的支持并不是很好, 我们需要手动调用.
我们创建一个 HTTP 请求节点, 根据火山引擎文档, 我们需要调整请求方法为 POST, 并填入请求的网址: https://ark.cn-beijing.volces.com/api/v3/images/generations
之后我们需要添加一下鉴权 KEY, 点击上面的鉴权按钮后:

我们选择 API-KEY, Bearer 后, 填入我们的 API Key, 点击保存
Body 处我们参考官方, 填写

{
"model": "doubao-seedream-3-0-t2i-250415",
"prompt": "",
"response_format": "url",
"size": "1024x1024",
"seed": 12,
"guidance_scale": 2.5,
"watermark": true
}
在 prompt 的引号里面, 我们同样要传入 LLM 输出的内容, 我们在那个空引号中按下 /, 选择 LLM 的 Text
最后的效果如上图
解析返回参数
由于绘图返回后并不是直接是图片, 我们需要进行解析, 我们添加一个参数提取器节点

选择好模型, 输入变量处传入 HTTP 请求的 Body, 输入好指令, 提取参数处添加提取参数, 弹出的框中我们描述一下这个参数

最后的效果如下

创建回复
之后我们再添加直接回复节点
由于要显示图片, 我们需要进行一些处理
这个直接回复支持 Markdown 语法, 我们可以利用 Markdown 来创建一个图片显示 (有关 Markdown 语法可以参考 https://www.runoob.com/markdown/md-image.html)

我们可以这样配置, 将括号中同样使用参数提取器获取到的变量 url (同样的方法添加变量)
最后的效果如下图

测试工作流
我们可以点击右上角的预览来测试我们的工作流


可以看到能够正常完成用户的请求
优化工作流
当然啦, 我们的工作流也不一定是线性的, 我们也可以加入一些判断逻辑
例如我们要阻止用户生成一些不好的图片, 我们可以让 AI 先对用户的请求进行判断, 如果是恶意内容我们要阻止 AI 生成
在我们之前的指令中已经加入了对用户不良输入的输出指令, 我们现在要做的只是当 AI 输出了 <content_policy_abuse> 时停止生成并告知用户
我们可以将大模型的输出后面的链接到下一个节点的线中添加一个节点, 选择那根连接线点击加号, 添加一个条件分支节点

条件为 AI 输出的内容包含指定内容
之后我们再将这个输出的 IF 端点后添加一个直接回复节点, 直接回复用户 你的请求不当
ELSE 端点直接连到原本的 HTTP 请求
最后的效果如下


我们可以看到 AI 能够正常阻止
发布应用

我们点击发布按钮, 再点击下面的发布, 之后我们就可以点击运行按钮来打开

引申阅读
如果你不想用 Doubao (火山引擎), 而是想用硅基流动可以跟着下面来
硅基流动提供了更多的大模型, 并且通过邀请也可以获得赠送 Token
你可以使用我的邀请链接来获取: https://cloud.siliconflow.cn/i/HDxXOweI

在模型安装这里我们选择硅基流动
注册平台后我们同样需要创建 API 密钥

在 Dify 的模型配置这里我们安装硅基流动的模型插件

安装好后我们可以进行设置 API Key, 将之前生成的 API Key 填入

之后我们稍等片刻后刷新就可以看到模型列表

如果卡顿你可以手动添加

你还可以设置系统默认的模型

之后你便可以使用硅基流动的模型了
原创:Kengwang 编辑:GoForth
练习
完成文中的实践操作。