当前位置:AIGC资讯 > AIGC > 正文

Midjourney

知数云 | 数字化服务的智慧之选

Midjourney Quick Start Guide

Midjourney是一款AI制图工具,只要输入关键字,透过AI算法就能生成相对应的图片。

使用Spring接口与Midjourney官方API交互涉及几个步骤。首先,确保你已经在Midjourney官方网站上注册了账户并获取了API密钥。

以下是一个简单的示例,展示如何使用Spring Boot创建一个接口来与Midjourney API进行交互:

1.添加依赖:

在你的pom.xml中,确保你已经添加了Spring Boot的依赖。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

2.创建配置类:

创建一个配置类来存储Midjourney API的密钥和其他相关配置。

@Configuration
public class MidjourneyConfig {
    @Value("${midjourney.apiKey}")
    private String apiKey;
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

3.创建接口:

创建一个接口来封装与Midjourney API的交互。

@RestController
public class MidjourneyController {
    @Autowired
    private RestTemplate restTemplate;
    @Value("${midjourney.apiKey}")
    private String apiKey;
    @GetMapping("/generate")
    public ResponseEntity<String> generateImage(@RequestParam String prompt) {
        String url = "https://api.midjourney.com/v3/image"; // 注意: 这是一个示例URL,请使用实际的Midjourney API URL。
        HttpHeaders headers = new HttpHeaders();
        headers.set("Authorization", "Bearer " + apiKey); // 设置你的API密钥
        headers.set("Content-Type", "application/json");
        HttpEntity<String> entity = new HttpEntity<>("{\"prompt\":\"" + prompt + "\"}", headers);
        ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST, entity, String.class);
        return response; // 这里返回响应体,根据Midjourney的实际返回值进行适当的处理。
    }
}

4.配置属性:

在application.properties或application.yml中,添加Midjourney API的密钥和其他相关配置。

midjourney.apiKey=YOUR_MIDJOURNEY_API_KEY_HERE

5.运行你的Spring Boot应用:

使用Spring Boot运行你的应用,并测试你的接口。例如,通过发送GET请求到/generate?prompt=your+prompt来生成图像。

6.注意事项:

确保你遵循Midjourney的使用条款和条件。

Midjourney 官方并没有提供接口,市面上一般是通过抓取 Discord 频道内的 Midjourney Bot 绘图数据提供相应的接口,GitHub 上也有一些开源项目,下面就来介绍一下几个热门开源 Midjourney API 项目的使用体验。

一、idjourney-proxy

https://github.com/novicezk/midjourney-proxy

midjourney-proxy 项目使用 Java 开发的 Midjourney API 服务,目前 3.5k Star。该项目通过 User Token 获取 Discord 用户实时消息实现 API 服务,有完善的接口文档,基本可以说是开箱即用。

这个项目有一些优点:

1.能够比较准确的获取任务进度和错误信息;

2.支持 base64 作为垫图;

3.支持中文翻译;

4.支持多账号配置;

5.支持多种搭建使用方式。

二、erictik/midjourney-api

https://github.com/erictik/midjourney-api

midjourney-api 项目使用 Nodejs 开发的工具库,目前 1.4k Star。这个项目也是通过 User Token 获取 Discord 用户实时消息提供绘图方法,注意不是提供的 API,因此还是要二次开发成接口。

这个项目的优点是提供的功能比较全面,几乎包含 Midjourney Bot 所有功能,还支持 Niji Bot 和换脸 AI。

不足的是可能还要自己实现中文翻译、多账号配置等,还有图片链接错误、提示词匹配结果不准确、封号风险问题可能同样存在。

三、yokonsan/midjourney-api

https://github.com/yokonsan/midjourney-api

这个项目是通过Nodejs实现的API项目,是通过Discord实现机器人监听用户消息,功能相对比较全面。Discord机器人是官方提供的实现,因此不会有封号风险。不过获取消息可能没有那么准确,获取不到私有信息。还有中文翻译、多账号配置等功能也要自己实现。

详细介绍Midjourney代理服务api搭建

搭建一个服务来代理 MidJourney 的discord频道,实现api形式调用AI绘图。

需要准备:

1.一台能魔法上网的服务器,开启8080端口

2.一个midjourney付费discord账号

安装步骤:

一、discord部分

如何购买midjourney账号和加入midjourney官方频道这里就不多说了,有需要的参考下官方的文档https://docs.midjourney.com/docs/quick-start

有账号后,我们需要创建一个自己的频道和机器人,请使用网页版进行以下操作。

1、在discord内添加一个自己的频道

2、邀请midjourney机器人到自己的频道

在midjourney官方频道找到midjourney机器人进行邀请

成功后在自己的频道就能看见Midjourney Bot,可以在自己频道用/imagine试一下。

3、创建添加自己的discord机器人

我们需要创建一个自己的discord机器人来读取midjourney机器人的消息

网址:https://discord.com/developers/applications

刷新token后显示,即机器人Token,请做好记录,后续它将配置到 mj.discord.bot-token

如图勾选后,在底部复制url,然后打开进行授权,选择Midjourney Bot所在的服务器

勾选上图这两个选项,点击 Save Changes
进入频道,打开F12 选择network,然后在频道内随便发个消息,这里的 authorization 即用户Token,请做好记录,后续它将设置到 mj.discord.user-token

频道的url里取出 服务器ID、频道ID ,前者为服务器ID,后者为频道ID,后续配置到mj.discord.guild-id和mj.discord.channel-id,请做好记录

在频道中确认是否存在mj机器人和新创建的机器人,注意mj机器人名称为"Midjourney Bot",不一致时需要改启动参数 mj.discord.mj-bot-name

到这里discord的部分就配置完成了。

二、服务部署

1、安装docker

服务部署用的方法是使用docker部署,因此我们需要在服务器内先安装一个docker。

(1)宝塔安装

在宝塔面板的软件商店找到宝塔Docker模块进行安装。

安装完成后可以在首页找到对应模块,打开菜单左侧开关

在这个界面可以安装管理docker容器

(2)服务器直接安装

参考https://docs.docker.com/engine/install/,选择自己的系统进行安装

2、服务部署

(1)下载镜像

docker pull novicezk/midjourney-proxy:1.4

(2)启动容器,并设置参数

方法A:复制出 src/main/resources/application.yml,更改配置

docker run -d --name midjourney-proxy \
 -p 8080:8080 \
 -v /home/xxx/data/application.yml:/home/spring/config/application.yml \
 --restart=always \
 novicezk/midjourney-proxy:1.4

方法B:或者直接在启动命令中设置参数,将xxx替换为前边记录的相关参数

docker run -d --name midjourney-proxy \
 -p 8080:8080 \
 -e mj.discord.guild-id=xxx \
 -e mj.discord.channel-id=xxx \
 -e mj.discord.user-token=xxx \
 -e mj.discord.bot-token=xxx \
 --restart=always \
 novicezk/midjourney-proxy:1.5

如果有的同学对guild-id、channel-id、discord.user-token、discord.bot-token这四个参数的具体位置还模糊不清,可以看看以下几张标注图片:

方法C:有的同学反馈宝塔Docker 容器设置时一直无法成功,具体原因我目前还不清楚,但可以直接在宝塔的管理界面运行命令,点击终端,输入用户名密码登录,然后还是采用方法B,编辑好命令粘贴回车。

配置成功标志:

1.访问 http://你的服务器IP:8080/mj 提示 "项目启动成功"

2.discord频道中新创建的个人机器人显示在线

建议:

1、调用api接口的根路径为 http://你的服务器IP:port/mj

2、接口最好本地调用,如果需要远程调用的时候,建议开启防火墙IP白名单。

3、Midjourney本身不支持中文prompt,接口代理程序本身集成了百度翻译进行机翻,如果需要使用:

进入https://fanyi-api.baidu.com/manage/developer获取自己的APP ID和密钥

在启动指令中配置环境

-e mj.translate-way=baidu \
-e mj.baidu-translate.appid=XXX \
-e mj.baidu-translate.app-secret=XXX \

4、mj.discord.user-token可能会过期,过期后重新获取,更改环境配置后重启容器。

更新时间 2024-03-12