96人参与 • 2024-08-05 • aigc
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可能会过期,过期后重新获取,更改环境配置后重启容器。
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论