使用 Dify 搭建 AI 图片生成助手并不是什么难事,而且不需要你会编程知识,也能轻松实现。
但是,Dify 在搭建 AI 图片生成助手的过程中会遇到很多坑,例如以下这些:
- 有些组件随着时间的推移,已经不能正常调用了;
- 有些组件在国内需要魔法才能使用;
- 有些组件需要复杂的本地部署才能正常调用;
- 有些组件虽然能用,但生成的速度、成本、质量,是无法应用于生产环境的。
所以,接下来本文就带你来避开这些坑。
1.搭建AI图片生成助手
在 Dify 中,搭建 AI 图片生成助手的步骤主要分为以下几步:
- 添加"文生图"组件(这一步有很多坑)。
- 获取组件 API Key,通常需要去官网注册账号,申请 API Key。
- 在 Dify 中创建"Agent"应用。
- 添加提示词。
- 添加"文生图"工具。
- 编写提示词,生成图片。
接下来我们分别来看。
2.添加文生图组件
所谓"文生图"组件,指的是根据文字生成图片的组件(工具),Dify 中提供的和"图片"有关的插件如下:

这些组件大致可以这样分类:
- 本地模型
- 云端模型
- 需要魔法
- 不需要魔法
当然,其中本地模型因为部署麻烦,所以我们这里不会使用(但企业级应用为了考虑数据隐私性可能会用),需要魔法的云端模型我们也不会用,执行速度慢,并且对于小白用户不友好。所以最符合预期的模型为不需要魔法的云端大模型。
不需要魔法的(好用一点的)云端大模型有以下这些:
- Doubao:字节旗下大模型,非官方维护插件,对使用者来说无影响。
- 智普 AI:清华团队开发的国内知名大模型,并且智普 AI 提供了可以免费生成图片的大模型(生成图片效果一般)。
- 讯飞星火:讯飞公司旗下生成图片的大模型。
- Stability :国际知名图片生成大模型,不需要魔法可调用,但不支持中文提示词,以及只为新用户提供了 25 积分(一次图片生成大概会消耗 4 积分)。
2.1 避坑硅基流动(SiliconFlow)
有人这里会说生成图片为什么不选择硅基流动(SiliconFlow)啊?它支持 Flux 和 Stable Diffusion 都是图片生成届注明的大模型,如下图所示:

当然,我刚开始的时候也是这么想的,把 SiliconFlow 插件添加上,申请一个 API Key 可以选择调用多个大模型,看起来是很美好的时候。
但是当我尝试的时候,发现这两种图片生成的大模型压根就调用不了,起初我以为是配置权限或 API Key 填写的某个环节出现了问题,各种折腾,到最后发现效果还是一样的,完全不用了。
于是就 Google 了一把,发现了问题,原来是早些时候确实是能正常调用的,但是在今年 2 月份,硅基流动为了规范化运营,已经把很多大模型给下线了,其中也包括咱们要使用的 Flux 和 Stable Diffusion,这是不能调用的关键,但 Dify 中的插件并没有将这两个工具去掉,所以调用就会出现各种奇怪的报错信息,如下图所示:

2.2 推荐图片模型
不同的使用场景,推荐使用的图片模型是不同的,例如以下这些:
- 如果对生成图片的成本比较敏感:可以使用智普 AI 的免费文生图的模型。
- 如果对生成图片的质量要求比较高:建议使用 Doubao 文生图模型,Doubao 3.0 版本之前生成图片的质量很差,但 3.0 版本之后,不知道是不是和即梦 AI 整合了,视觉生成质量有一个很多的提升,并且也为新用户送 500 次的免费调用次数,开发环境够用了。但在调用插件的时候也有一些坑,需要注意。
3.调用Doubao文生图工具
调用 Doubao 图片生成有几个坑,这个需要给大家详细说一下,不然很容易出错。
首先在插件市场,安装 Doubao 插件:

之后是去 Doubao 平台开通图片生成权限和添加生成 API Key,这两个步骤都很容易出错。

插件提供的访问地址不对,一定要去火山方舟平台 ,也就是这个地址:https://console.volcengine.com/ark/region:ark+cn-beijing/openManagement
我们需要以下三步:

实名认证完成之后,一定是选择下面栏目并开通服务:

接下来是容易出错的地方,当你点击获取 API Key 有可能会到这个地址,但这个地址不对(是火山方舟不是火山引擎):

如果获取的是这个地方的 API Key 就会在生成调用的时候,提示 401 没有权限 ,正常的操作是点击上面的"方舟大模型专用 API Key",进入到这个页面,点击创建 API Key 才行:

4.Dify创建Agent编排任务
创建 Agent 应用:

什么是 Agent?
Agent 是一种模拟人类行为和能力的 AI 系统,它通过自然语言处理与环境交互,能够理解输入信息并生成相应的输出。Agent 还具有 "感知" 能力,可以处理和分析各种形式的数据。此外,Agent 能够调用和使用各种外部工具和 API 来完成任务,扩展其功能范围。这种设计使 Agent 能够更灵活地应对复杂情况,在一定程度上模拟人类的思考和行为模式。
因此,很多人都会将 Agent 称为"智能体"。
4.1 撰写提示词
提示词(Prompt)是 Agent 的灵魂,直接影响到输出的效果。通常来说越具体的提示词输出的效果越好,但是过冗长的提示词也会导致一些负面效果。
调整提示词的工程,我们称之为提示词工程(Prompt Engineering)
在本次实验中,你不必担心没有掌握提示词工程,我们会在后面循序渐进地学习它。
让我们从最简单的提示词开始:
plain
根据用户的提示,使用工具绘画指定内容。
用户每次输入命令的时候,Agent 都会知晓这样的系统级的指令,从而了解要执行用户绘画的任务的时候需要调用一个叫 Doubao 的工具进行绘图。
4.2 添加绘图工具

4.3 测试图片生成

5.发布
点击右上角的发布按钮,发布后选择运行就可以获得一个在线运行的 Agent 的网页。

复制这个网页的 URL,可以分享给其他好友使用。
6.优化:指定图片风格
我们可以在用户输入的命令中加上画风的指令,例如:二次元风格,画一个女孩,手中拿着一本打开的书

但是如果我们希望风格默认都是二次元风格呢,那么我们加在系统提示词里就行了,因为我们之前了解到系统提示词是每次执行用户命令都会知晓的,优先级更高。
plain
根据用户的提示,使用工具绘画指定内容,画面是二次元风格
7.优化:拒绝某些不当请求?
在许多业务场景中,我们需要避免输出一些不合理的内容,但是 LLM 很多时候比较 "傻",用户下指令时会照做不误,即使输出的内容是错的,这种模型为了努力回答用户而编造虚假内容的现象称为模型幻觉(Hallucinations),那么我们需要让模型必要的时候拒绝用户的请求。
此外,用户也可能提一些和业务无关的内容,我们也需要让 Agent 这个时候拒绝请求。
我们可以使用 markdown 格式给不同的提示词进行划分,将上述教 Agent 拒绝不合理内容的提示词写到 "约束" 标题下。当然,这样的格式仅仅是为了规范化,你可以有自己的格式。
plain
## 任务
根据用户的提示,使用工具绘画指定内容,画面是二次元风格。
## 约束
如果用户在请求和绘画无关的内容,回复:"对不起,我不明白你在说什么"
例如,我们尝试提问:今晚吃什么

在一些更正式的业务场景中,我们可以调用敏感词库来拒绝用户的请求。
在添加功能 - 内容审查中添加关键词 "晚饭",当用户输入关键词时,则 Agent 应用输出 "对不起,我不明白你在说什么"。

小结
Dify 是一个入门简单,但用好比较难的技术,这点和 Java 有点像,但没关系,跟我一起,快速上手学习 AI 技术,避免踩坑。一起动手试起来吧~
本文已收录到我的技术小站 www.javacn.site,其中包含的内容有:Spring AI、LangChain4j、Dify、AI Agent、MCP、Function Call、RAG、向量数据库、Prompt、多模态、向量数据库、嵌入模型等内容。