Dify搭建AI图片生成助手中的坑!
使用 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)
在本次实验中,你不必担心没有掌握提示词工程,我们会在后面循序渐进地学习它。
让我们从最简单的提示词开始:
根据用户的提示,使用工具绘画指定内容。
用户每次输入命令的时候,Agent 都会知晓这样的系统级的指令,从而了解要执行用户绘画的任务的时候需要调用一个叫 Doubao 的工具进行绘图。
4.2 添加绘图工具

4.3 测试图片生成

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

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

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

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

小结
Dify 是一个入门简单,但用好比较难的技术,这点和 Java 有点像,但没关系,跟我一起,快速上手学习 AI 技术,避免踩坑。一起动手试起来吧~
本文已收录到我的技术小站 www.javacn.site,其中包含的内容有:Spring AI、LangChain4j、Dify、AI Agent、MCP、Function Call、RAG、向量数据库、Prompt、多模态、向量数据库、嵌入模型等内容。
Dify搭建AI图片生成助手中的坑!的更多相关文章
- AI智能问答助手 AI智能批量文章生成器 网站优化SEO批量内容生成工具 原创文章生成软件
<AI智能问答助手> 软件基于当下热门的OpenAI的ChatGPT技术,导入问题列表就可以批量生成对应的内容,内容质量高.原创度高.适合对内容生成需求量大的场景,如网站优化.广告文案 ...
- Python中使用Flask、MongoDB搭建简易图片服务器
主要介绍了Python中使用Flask.MongoDB搭建简易图片服务器,本文是一个详细完整的教程,需要的朋友可以参考下 1.前期准备 通过 pip 或 easy_install 安装了 pymong ...
- Gradio入门到进阶全网最详细教程[一]:快速搭建AI算法可视化部署演示(侧重项目搭建和案例分享)
Gradio入门到进阶全网最详细教程[一]:快速搭建AI算法可视化部署演示(侧重项目搭建和案例分享) 常用的两款AI可视化交互应用比较: Gradio Gradio的优势在于易用性,代码结构相比Str ...
- Gradio入门到进阶全网最详细教程[二]:快速搭建AI算法可视化部署演示(侧重参数详解和案例实践)
Gradio入门到进阶全网最详细教程[二]:快速搭建AI算法可视化部署演示(侧重参数详解和案例实践) 相关文章:Gradio入门到进阶全网最详细教程[一]:快速搭建AI算法可视化部署演示(侧重项目搭建 ...
- InkImageDataSetGenerator-开源一个可用于机器学习的书写轨迹图片生成的小工具
这是一个简单易用的图片数据集生成小工具,基于OpenCV和UWP Ink API,它可以根据指定的手写轨迹生成一系列各个角度的图片.每张图片的尺寸和总体数量都是可以指定的,均存放在统一的生成目录中.h ...
- Windows下搭建Nginx图片服务器
在项目最开始,上传图片的时候,服务器先保存原图再使用ImageMagick生成上传图片缩略图,这种方法有很多缺点,例如生成的缩略图的大小是固定的,不能动态请求指定大小的缩略图. 虽然有非常多的图片云存 ...
- 保姆级教程:用GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话
导读 在当今的人工智能时代,大型AI模型已成为获得人工智能应用程序的关键.但是,这些巨大的模型需要庞大的计算资源和存储空间,因此搭建这些模型并对它们进行交互需要强大的计算能力,这通常需要使用云计算服务 ...
- 验证码图片生成工具类——Captcha.java
验证码图片生成工具,使用JAVA生成的图片验证码,调用getRandcode方法获取图片验证码,以流的方式传输到前端页面. 源码如下:(点击下载 Captcha.java) import java. ...
- CSS3鼠标移入移出图片生成随机动画
今天分享使用html+css3+少量jquery实现鼠标移入移出图片生成随机动画,我们先看最终效果图(截图为静态效果,做出来可是动态的哟) 左右旋转 上下移动 缩放 由于时间关系我就不一步步解析各段代 ...
- 最简单的基于FFmpeg的libswscale的示例附件:测试图片生成工具
===================================================== 最简单的基于FFmpeg的libswscale的示例系列文章列表: 最简单的基于FFmpeg ...
随机推荐
- redis bind protected-mode
概要 redis bind.protected-mode 配置 安装并启动 yum install -y redis systemctl enable --now redis # 使用 redis-s ...
- C++17 Filesystem 实用教程
点击查看代码 C++17 标准带来了 std::filesystem库, 提供了强大的工具来处理文件路径, 目录以及其他与文件系统相关的操作. 这篇文章适合 C++ 初学者以及希望掌握 C++17 新 ...
- NumPy学习6
今天学习 NumPy位运算 12, NumPy位运算NumPy 中提供了以下按位运算函数:numpy按位运算函数序号 函数 位运算符 描述说明1 bitwise_and & 计算数组元素之间的 ...
- http://eslint.org/docs/rules/semi
报错: Errors: 88 http://eslint.org/docs/rules/semi 56 http://eslint.org/docs/rules/quotes 34 http://es ...
- 查看当前linux占用的端口号
Linux 查看端口占用情况可以使用 lsof 和 netstat 命令. centos 下无法使用lsof命令:"-bash: lsof: command not found"1 ...
- oracle中的aix,Oracle在AIX上一些处理
一.Oracle在aix上连接 1.su - oracle //进入oracle用户: 2.export ORACLE_SID=house //指定实例,多个实例的情况下: 3.sqlplus / ...
- java的反射是要先实例化的!
java两种获得反射的方法 ,一种是Class.forName("A"); 另一种是 A a = new A(); a.getClass(); 第二种是自己实例化之后,我们在类的静 ...
- 【虚拟机】Windows(x86)上部署ARM虚拟机(Ubuntu)
[虚拟机]Windows(x86)上部署ARM虚拟机(Ubuntu) 零.起因 最近在学嵌入式,这就不得不涉及ARM指令集,但是电脑是x86指令集的,用手机不太方便,买开发板又要等几天--,总之就是要 ...
- C# Office COM 加载项
Office COM 加载项开发笔记 一.实现接口 IDTExtensibility2 这是实现 Office COM 加载项最基本的接口 添加 COM 引用 Microsoft Add-In Des ...
- SpringBoot启动方法分析
SpringBoot启动run方法分析 1.场景引入 在项目启动的时候,有时候我们需要在启动的时候,执行一些逻辑. 比如说,项目启动的时候,我想把一些热门商品的数据加载到缓存中去: 比如说,自定义了一 ...