大数跨境
0
0

5分钟本地搭建一个 Midjourney 服务

5分钟本地搭建一个 Midjourney 服务 数翼
2023-07-10
0
导读:众所周知 Midjourney 没有提供 API,不能想 OpenAI 一样集成在本地服务里面。但是方法总比困难多,Midjourney 的载体 Discord 是有 API 的,曲线救国就可以 在本

众所周知 Midjourney 没有提供 API,不能想 OpenAI 一样集成在本地服务里面。但是方法总比困难多,Midjourney 的载体 Discord 是有 API 的,曲线救国就可以 在本地搭建一个 Midjourney 的服务。

方案

我们的方案就是使用本地服务连接 Discord 服务,然后发送消息,拿到返回的数据,进行给 UI。

开源项目

在我准备动手写代码的时候,想起了 Github,于是乎去搜了下 Midjourney,很多个封装好的项目映入眼帘。

这不就省下了大把的时间。

midjourney-proxy

我们选择 midjourney-proxy 项目做后端,

项目功能

  • • 支持 Imagine 指令和相关U、V操作

  • • Imagine 时支持添加图片base64,作为垫图

  • • 支持 Blend(图片混合) 指令和相关U、V操作

  • • 支持 Describe 指令,根据图片生成 prompt

  • • 支持 Imagine、V、Blend 图片生成进度

  • • 支持中文 prompt 翻译,需配置百度翻译或 gpt

  • • prompt 敏感词判断,支持覆盖调整

  • • 任务队列,默认队列10,并发3。可参考 MidJourney订阅级别 调整mj.queue

  • • user-token 连接 wss,可以获取错误信息和完整功能

  • • 支持 discord域名(server、cdn、wss)反代,配置 mj.ng-discord

使用前提

  • • 注册 MidJourney,创建自己的频道,参考 https://docs.midjourney.com/docs/quick-start

  • • 获取用户Token、服务器ID、频道ID

1. 获取用户Token

进入频道,打开network,刷新页面,找到 messages 的请求,这里的 authorization 即用户Token,后续设置到 mj.discord.user-token

2. 获取用户sessionId

进入频道,打开network,发送/imagine作图指令,找到 interactions 的请求,这里的 session_id 即用户sessionId,后续设置到 mj.discord.session-id

3. 获取服务器ID、频道ID

频道的url里取出 服务器ID、频道ID,后续设置到配置项

分享须知

  • • 作图频繁等行为,可能会触发midjourney账号警告,请谨慎使用

  • • 为减少风险,请设置mj.discord.user-agent 和 mj.discord.session-id

  • • 默认使用user-wss方式,可以获取midjourney的错误信息、图片变换进度等,但可能会增加账号风险

  • • 支持设置mj.discord.user-wss为false,使用bot-token连接wss,需添加自定义机器人:流程说明

部署

这是一个Java 项目,你可以使用 jre 本地运行或者 Docker 运行,也可以使用 Railway 等网络平台运行。

Railway

这里使用 Railway 部署, 设置变量如下,克隆项目运行即可:

本地 Docker

这里给出大家 compose 配置:

version: "3"
services:
  midjourney-proxy:
    container_name: midjourney-proxy
    image: novicezk/midjourney-proxy:2.3.5
    ports:
    - 18080:8080
    volumes:
    - ./config:/home/spring/config

Discord 配置在 ./config/application.yml 文件里:

运行如下:

ChatGPT-Midjourney

Midjourney-proxy 项目只是后端对接了 discord 和 midjourney 服务, 关于前端 UI,Github 上也有,比如 ChatGPT-Midjourney

直接看效果把:

ps: 项目还继承了 ChatGPT,不需要可以不配置。

运行

仍然使用 Compose 运行,:我们把两个配置文件放在一起:

version: "3"
services:
  midjourney-proxy:
    container_name: midjourney-proxy
    image: novicezk/midjourney-proxy:2.3.5
    ports:
    - 18080:8080
    volumes:
    - ./config:/home/spring/config

  chatgpt-midjourney:
    container_name: chatgpt-midjourney
    image: licoy/chatgpt-midjourney:v1.3.9
    ports:
    - 13000:3000
    environment:
      OPENAI_API_KEY: "sk-xx"
      #CODE: "789789"
      BASE_URL: "https://api.openai.com"
      MIDJOURNEY_PROXY_URL: "http://midjourney-proxy:8080"

执行:

docker-compose up

然后访问 http://localhost:3000就可以看到 UI:

如果要使用 V1 - V4 的图像变换,要在 Midjourney 设置快速变化,

如下(取消勾选 Remix mode):

不然执行变换会提示任务超时:

最后看下放大的图片:




--- END ---

【声明】内容源于网络
0
0
数翼
专注 AIGC 人工智能知识传播和实践
内容 228
粉丝 0
数翼 专注 AIGC 人工智能知识传播和实践
总阅读29
粉丝0
内容228