全网首发!即梦AI+dify工作流,带你领略AI绘画的无限魅力!
laohaibao666
2025年02月04日 16:37
收录于文集
共78篇

1.前言

      即梦AI是一款由字节跳动旗下剪映团队研发的一站式AI创作平台,旨在为用户提供图片与视频生成、编辑和分享的智能创作服务。用户可以通过自然语言或图片输入生成高质量的图像和视频,并利用智能画布、故事创作模式、首尾帧、运镜控制等功能进行创作。

     目前即梦AI提供网页版本和手机版本拥有AI绘画,图生图,图生视频,生成音乐等功能。不提供API调用和第三方系统整合对接。目前即梦AI 绘画支持中文提示词,文生图效果是非常棒的,应该可以说属于AI绘画TOP3。它能够提供非常精美的图片。

   很多小伙伴想如何能够实现API 接口调用的方式实现这些文生图就好了,我今天研究了一下目前已经初步有答案,可以借助第三方开源的jimeng-free-api结合dify实现一个dify即梦AI绘画功能。 话不多说,下面带大家实现这个工作流。

我们先看一下工作流的效果:

上面的工作流生成了4张即梦AI生成的图。我们找一张图片放大看一下效果。

 嗯这个效果图片非常不错 很逼真,所以说即梦AI 生成的图片 可以说是比市面上开源或者闭源的文生图效果要强,关键是即梦AI 还免费。(每天送66点积分)

下面带大家看一下这个工作流是如何实现的。

2.工作流实现

开始

  开始节点这地方设置比较简单,就是接受用户的提示词-prompt

提示词 文本输入,这里主要是接受用户输入的提示词文本信息。

目前dify 文本输入地方最大长度是256,这里小伙伴要注意了,如果提示词过长会截断的。

http请求

这个地方主要是通过http请求调用我在家里的nas(极空间)上部署的jimeng-free-api  docker容器版api 接口服务。

关于jimeng-free-api 容器部署可以在任何支持docker 的windows 、linux、mac 等系统上部署。关于这块的部署我这里就不详细展开,如果有不清楚的地方可以私下和我沟通。关于jimeng-free-api部署可以参考github项目,里面有相关程序部署。https://github.com/LLM-Red-Team/jimeng-free-api?tab=readme-ov-file

上面的部署完成后,我们继续说一下http请求dify节点的配置。

请求地址 https://jimeng.duckcloud.fun/v1/images/generations  这个是nas部署 使用cloudfare 映射的一个带域名公网api接口地址

请求方式 post 请求

heards部署 主要是接口请求的鉴权的配置。其实你也可以理解就是调用openai接口输入的api key 这个API 其实就是你登录即梦web网站产生的sessionid,我这里使用到环境变量的方式来实现的。

关于sessionid的获取同样可以参考上面jimeng-free-api部署,这里也就不在详细说明。给大家贴个图吧

请求的body 部分代码如下:

{ "model":"jimeng-2.1", "prompt":"{{#1738651659789.prompt#​}}", "negativePrompt":"", "width":1024, "height":1024, "sample_strength":0.5 }

 上面的body部分的代码其实也很好理解。model就是模型,目前即梦提供4个模型给大家使用

我这里就填写了最新的2.1模型, 下面的prompt 是开始节点用户传入的参数。negativePrompt 这个可以不填写,现在的模型都非常强不需要用户输入反向提示词了。width 和height 以及sample_strength 对应即梦 宽度、高度以及精细度。我这里就写了1024*1024,精细度填写0.5 默认的

大家可以根据自己的喜好修改上面的这个值。也可以通过开始节点参数化传入,我这里就偷懒写死了。

代码处理

这个地方主要是对上个http请求节点返回值进行处理。我们知道即梦文生图一次性返回4张图片,那么我们也是需要对这4张图片进行处理,返回markdown格式数据在后面结束节点显示使用的。

代码如下:

代码块
Python
自动换行
复制代码
def main(arg1: str) -> str:
   import json

   # 解析输入的 JSON 数据
   try:
       data = json.loads(arg1)
   except json.JSONDecodeError:
       return "输入的字符串不是有效的 JSON 格式,请检查输入数据。"

   # 确保解析后的数据包含 'data' 键
   if not isinstance(data, dict) or 'data' not in data:
       return "输入的数据格式不正确,请确保输入是一个包含 'data' 键的 JSON 对象。"

   # 获取 'data' 键对应的数组数据
   image_data = data.get('data', [])

   # 确保 'data' 键的值是一个列表
   if not isinstance(image_data, list):
       return "输入的数据中 'data' 键的值不是一个数组,请确保其值是一个 JSON 数组对象。"

   # 初始化结果字符串
   markdown_result = ""

   # 遍历每条图片数据
   for index, item in enumerate(image_data, start=1):
       # 检查每条数据是否是字典,并且包含 'url' 字段
       if not isinstance(item, dict) or 'url' not in item:
           markdown_result += f"图片第{index}条内容:无法提取 URL(缺少 'url' 字段)\n"
           continue

       # 提取 URL 并生成 Markdown 格式的图片链接
       url = item['url']
       markdown_result += f"![图片{index}]({url})\n"

   # 返回最终的 Markdown 字符串
   return {"result": markdown_result}
复制成功

请求参数就是上面http返回,我们这里接受body部分

输出变量result 输出类型是string字符串

4 结束

最后我们在工作中拖拽一个结束节点。

输出结果变量imageout ,内容是上个代码处理的输出。

以上就完成了整个工作流的制作了。我们看一下工作流整体效果

总体来说就是4个节点:开始、http请求、代码执行、结束。

以上工作流节点难点在于docker 容器部署jimeng-free-api,部署后的api 使用cloudflare 做内网穿透映射(这块我没有讲到,感兴趣小伙伴可以私聊)、还有就是代码处理返回代码实现。其他都是比较简单的工作流的配置。

3.体验地址

大家可以点击这个体验http://dify.duckcloud.fun/workflow/Fbghlt3gqOYgLc2Z)地址来感受一下效果。

4.总结

即梦ai在文生图这块做出的图效果非常好,另外目前字节也在大力推广他们的产品。所以我们可以利用这个推广实现免费使用高质量的AI绘画。呵呵,目前使用即梦AI+dify工作流整合目前我应该是全网第一个这么玩的,感兴趣的小伙伴可以关注,今天的分享就到这里结束了,我们下个文章见。