最近想着把 Midjourney 接入到自己的平台,但由于 Midjourney 没有开放接口,所以退而求其次。利用 Discord 的 Bot API,通过下发/imagine
命令,创建 Midjourney bot 的绘画任务。并实时监听 Midjourney bot 的消息,回传给平台。这样就基本上满足我的需求了。
本篇文章我会介绍下我实现的 Midjourney API 项目,并且附上使用教程。
(资料图)
大致的流程如图:
midjourney-api
开源地址:https://github.com/yokonsan/midjourney-api
该仓库是我在将 Midjourney 接入到平台,开发的一套接口。个人使用下来基本满足大部分需求,现在开源出来,仅供大家参考。大家觉得有用可以点个 star,发现有 bug 可以提 issue 或 pr。
具体的开发细节就不展开了,本篇文章说下如何使用该仓库。
准备工作
注意:本仓库依赖于 Discord 开发的 API,对于如何访问 Discord,大家自行寻找方法。这里默认大家已经在 Discord 创建了自己的服务器,并且将 Midjourney 添加到服务器内。
使用该仓库我们需要 4 个参数:
用户 Token(调用 API 需要身份验证)
创建的 Discord 机器人 Token(实时监听 Midjourney 会话)
Discord 自建服务器 ID
Midjourney bot 所在频道 ID
如果大家知道如何获取这几个参数,可以跳到下一节。
用户 Token
登录网页端 discord 按F12
打开开发者工具,然后刷新页面。参考下图点击Network
,在 filter 栏输入/api/library
找到这条请求记录,然后在请求体中找到authorization
字段,他的值就是我们需要的 Token。
注意:该 Token 属于隐私信息,不要直接暴露在代码中发布到 Github。
机器人 Token
这里需要先创建 discord 机器人,地址:https://discord.com/developers/applications
创建过程很简单,不做赘述。
我们点击Reset Token
,然后copy
这串 Token 即可。
但是我们需要我们的机器人能够干活,还需要给他添加些 Scopes。
勾选上 Scope 后,页面下方会生成一个 Oauth2 授权链接。我们复制该链接然后在浏览器打开。
打开后会出现 OAuth2 授权页面,我们将机器人添加到我们的服务器即可。
服务器 ID、频道 ID
这里比较简单,我们先打开开发者模式:
然后鼠标右击服务器头像,复制服务器 ID。频道也一样,右击频道,复制频道 ID。
安装启动
git clonepip install -r requirements.txt
将.env.template
重命名为.env
,并填入参数值:
USER_TOKEN=用户token
BOT_TOKEN=机器人token
GUILD_ID=服务器ID
CHANNEL_ID=频道ID
CALLBACK_URL=回调地址,默认http post请求
直接启动
# 启动监听机器人python task_bot.py# 启动http服务python server.py
docker 启动
# 构建镜像 sh build.sh # 启动容器 sh start.sh
启动后访问接口swagger
文档:http://127.0.0.1:8061/docs
midjourney-api
提供接口:
/v1/api/trigger/bot
:触发绘画任务,已完成
/v1/api/upload
:上传图片,触发任务,待开发
使用
目前只完成了触发绘画任务的接口,我们以此为示例。该接口调用需要参数:
class TriggerType(str, Enum): generate = "generate" # /imagine 根据提示词,生成图片 upscale = "upscale" # U 选择索引高清放大 variation = "variation" # V 基于索引风格变化 reset = "reset" # 重绘class TriggerBotIn(BaseModel): type: TriggerType # 触发类型 prompt: str = "" # 提示词 msg_id: str = "" # 消息ID, msg_hash: str = "" # 消息hash index: int = 0 # 图片索引,1-4
generate
直接调用接口 /v1/api/trigger/bot
生成,提示词:half fish half dragon hybrid, retro screencap --ar 2:3 --niji 5
curl -X 'POST' \ 'http://127.0.0.1:8062/v1/api/trigger/bot' \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -d '{ "type": "generate", "prompt": "half fish half dragon hybrid, retro screencap --ar 2:3 --niji 5", "msg_id": "", "msg_hash": "", "index": 0}'
可以看到我们启动的task_bot.py
监听服务,已经监听到消息日志:
upscale
这里我觉得第二张比较符合预期,我们接续调接口放大图片增加细节。这里需要取到 msg_id 和 msg_hash 字段的值。msg_id 就是 CallbackData 的 id 字段,msg_hash 是 Attachment 的 url 去掉后缀,根据_
分割的最后一段。
class Attachment(TypedDict): id: int url: str proxy_url: str filename: str content_type: str width: int height: int size: int ephemeral: boolclass CallbackData(TypedDict): type: str id: int content: str attachments: List[Attachment]
curl -X 'POST' \ 'http://127.0.0.1:8062/v1/api/trigger/bot' \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -d '{ "type": "upscale", "prompt": "", "msg_id": "1109686524045443093", "msg_hash": "c937b5aa-3f58-4ae5-8dd6-932952243034", "index": 2}'
注意:这里索引是图片的 1-4,不是 0-3
variation
curl -X 'POST' \ 'http://127.0.0.1:8062/v1/api/trigger/bot' \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -d '{ "type": "variation", "prompt": "", "msg_id": "1109686524045443093", "msg_hash": "c937b5aa-3f58-4ae5-8dd6-932952243034", "index": 2}'
这里我们基于第 2 张图的风格,再生成 4 张。
reset
基于提示词重绘:
curl -X 'POST' \ 'http://127.0.0.1:8062/v1/api/trigger/bot' \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -d '{ "type": "reset", "prompt": "", "msg_id": "1109686524045443093", "msg_hash": "c937b5aa-3f58-4ae5-8dd6-932952243034", "index": 0}'
总结
本篇文章主要介绍了如何接入 Midjourney,然后介绍了我的开源项目 midjourney-api,并介绍了如何使用该项目。
依据改仓库,大家可以很方便的将 Midjourney 对接到 QQ、微信、钉钉等平台。如果大家感兴趣,我将会带大家制作一个微信机器人或者将它接入到我的个人公众号。
当然,改仓库还有很多未完善的地方,比如图生图。这些功能我后续会继续补充,也欢迎大家参与进来。开源地址:https://github.com/yokonsan/midjourney-api
相比于 Stable-Diffusion,Midjourney 对新手更加友好。大家自行体验。
-
杂项·入门|快看点Misc杂项MISC,中文即杂项,包括隐写,数据还原,脑洞、社会工程、压缩包解密、流量分析取证、与信息安全相
-
当前快讯:尿白蛋白高怎么回事1、检结果通常只是作为一个提示,应该进一步检查。2、造成尿蛋白微量升高,因素很多。3、例如头天夜里遗精
-
天天热讯:中证指数有限公司:聚焦能源安全、数字经济等国家战略,油气资源、港股通互联网等一批指数即将发布与优化上交所和中证指数公司于近日新发及修订中证油气资源指数、中证港股通互联网指数、上证地方政府债指数系列等
-
华商银行股份有限公司 华商银行官网_热消息今天来聊聊关于华商银行股份有限公司,华商银行官网的文章,现在就为大家来简单介绍下华商银行股份有限公司
-
亮剑手游最强阵容怎么搭配亮剑最近进行了版本更新,新版本更新了很多东西,亮剑手游最强阵容怎么搭配就是其中之一。下面九游小编将带
-
杂项·入门|快看点
2023-05-21 20:13:38
-
当前快讯:尿白蛋白高怎么回事
2023-05-21 19:10:59
-
天天热讯:中证指数有限公司:聚焦能源安全、数字经济等国家战略,油气资源、港股通互联网等一批指数即将发布与优化
2023-05-21 18:34:15
-
华商银行股份有限公司 华商银行官网_热消息
2023-05-21 17:56:59
-
亮剑手游最强阵容怎么搭配
2023-05-21 17:05:08