Midjourney是一款AI制图工具,只要输入关键字,透过AI算法就能生成相对应的图片。
使用Spring接口与Midjourney官方API交互涉及几个步骤。首先,确保你已经在Midjourney官方网站上注册了账户并获取了API密钥。
以下是一个简单的示例,展示如何使用Spring Boot创建一个接口来与Midjourney API进行交互:
1.添加依赖:
在你的pom.xml中,确保你已经添加了Spring Boot的依赖。
XML
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
2.创建配置类:
创建一个配置类来存储Midjourney API的密钥和其他相关配置。
java
@Configuration
public class MidjourneyConfig {
@Value("${midjourney.apiKey}")
private String apiKey;
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
3.创建接口:
创建一个接口来封装与Midjourney API的交互。
java
@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的密钥和其他相关配置。
java
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可能会过期,过期后重新获取,更改环境配置后重启容器。