Dify集成Midjourney:AI绘画助手深度测评
要在Dify中搭建一个能够解析自然语言并自动触发Midjourney生成图像的AI绘画助手,首先必须认清一个关键前提:Midjourney至今没有开放官方API。所有图像生成操作依赖Discord上的/imagine斜杠命令完成。因此,唯一可行的路径是通过Discord机器人进行间接通信。具体而言,你需要在Dify中创建一个Custom Tool,用于对接Discord,将用户输入的提示词提交给机器人,再从中拉取生成的图片。
先搭建合规的Discord运行环境
注册一个Discord账户,加入Midjourney的官方服务器(或者你被邀请的任何付费订阅服务器)。账号必须升级为Pro或标准订阅用户——免费试用期结束后若不续费,所有图像生成请求都会失效,这一点务必留意。
在Discord客户端中开启开发者模式:设置 → 高级 → 开启“开发者模式”。接着右键点击你的用户头像,选择“复制用户ID”,保存该ID备用。
定位到Midjourney Bot所在的频道——通常是#newbies或你自建的专用图文频道。先手动验证:发送一条/imagine prompt: a cyberpunk cat,等待Bot返回四张缩略图以及U1/U2/U3/U4/V1/V2按钮。这一步不可跳过,它直接决定环境配置是否有效。
在Dify中配置Discord机器人接入
进入Dify控制台,新建一个应用,选择“Text Generation”类型。在“Model Configuration”中,不要选用LLM模型,而是切换到“Custom Tool”模式。这一步常被忽略,但它是将Dify转变为调度中心的核心操作。
集成Midjourney的两种可行方案
方法一:Webhook + 自建Node.js中转服务(推荐)
部署一个轻量级的Node.js服务,监听HTTP POST请求。Dify将用户编写的prompt发送过来后,该服务自动构造Discord API请求(需提供bot token、频道ID、用户ID),向目标频道发送/imagine命令。同时,该服务持续轮询该频道的最新消息,提取Bot返回的图片URL,再回传给Dify。注意一个潜在问题:Discord对Bot的发信频率有限制,两次/imagine之间至少间隔5秒,否则请求会被静默丢弃。数据量大时需要做好请求排队。
方法二:利用第三方自动化工具(如Zapier或Make)
无需编写代码的方案。在Zapier中新建一个Zap:触发器设为“Webhook by Zapier → Catch raw hook”,动作设为“Discord → Send channel message”,填入频道ID,消息内容设置为/imagine {{input.prompt}}。然后追加一个Delay步骤(建议30秒,留足Bot生成图片的时间),再用第二个Discord动作获取最新消息的附件链接。此方案的缺点是无法可靠捕获Vary/Upscale之后的二次结果,适合对出图质量要求不高的快速验证场景。
在Dify中定义图像生成工具
第一步:在Dify应用的“Tools”模块中点击“+ Add Tool”,选择“Custom Tool”。
第二步:为工具命名,例如“midjourney_imagine”,描述填写“通过Discord Bot调用Midjourney生成图片”。
第三步:在Schema字段中粘贴JSON Schema,明确声明输入字段为string类型且required,输出字段定义为object,包含url(string)、prompt(string)、job_id(string)等字段。这是Dify识别工具接口的依据。
第四步:在Endpoint URL中填入你部署的Node.js中转服务地址(例如 https://your-domain.com/api/midjourney),Method选择POST。
第五步:启用该工具,保存。至此,整个链路即搭建完成。
