同行1800多公里,跟着货车司机跑长途(人民眼·货车司机
图①:山西临汾经济技术开发区兴荣供应链有限公司的货车整装待发。资料图片 图②:司机王勇平驾驶货车行驶在
最近想着把 Midjourney 接入到自己的平台,但由于 Midjourney 没有开放接口,所以退而求其次。利用 Discord 的 Bot API,通过下发/imagine
命令,创建 Midjourney bot 的绘画任务。并实时监听 Midjourney bot 的消息,回传给平台。这样就基本上满足我的需求了。
本篇文章我会介绍下我实现的 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
如果大家知道如何获取这几个参数,可以跳到下一节。
登录网页端 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。
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
# 构建镜像 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
直接调用接口 /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
监听服务,已经监听到消息日志:
这里我觉得第二张比较符合预期,我们接续调接口放大图片增加细节。这里需要取到 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
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 对新手更加友好。大家自行体验。
标签:
图①:山西临汾经济技术开发区兴荣供应链有限公司的货车整装待发。资料图片 图②:司机王勇平驾驶货车行驶在
2022年北京冬奥会的筹办过程,为中国冰雪运动发展提供了巨大动力。科技创新,成为中国冰雪运动前进道路上嘹亮的号角。在科学技术部社会发展
游客在银川市黄河横城旅游度假区观看花灯展(2月5日摄)。春节假期,“2022黄河横城冰雪彩灯艺术节”在宁夏银川市
新华社香港2月6日电题:狮子山下的舞狮人新华社记者韦骅“左眼精,右眼灵,红光万象,富贵繁荣!”“口食八方财,
正在进行围封或强制检测的葵涌邨居民在登记(资料照片)。新华社发新华社香港2月6日电 题:凝聚香港社会共克时艰
2月6日,航拍青海省西宁市雪后美景。受较强冷空气影响,2月5日至6日,青海迎来大范围降雪天气过程,古城西宁银装
[ 相关新闻 ]