前几章,我介绍了Midjourney以及Midjourney Bot的基本玩法, 本章我将站在一个开发的视角,运用编程的方法来调用Midjourney Bot。
原理
因为Midjourney Bot是由Discord开发出来的Application,咱们能够先经过阅览Discord Developer Platform Docs文档来了解下Discord敞开的一些API才能。
/imagine发生了什么
首要,咱们翻开浏览器的开发者东西, 经过抓包看下客户端与服务端之间的调用恳求。
以Google Chrome为例:
当咱们给Midjourney Bot发送一个/imagine指令时, 能够看到抓到的恳求是:
经过阅览interactions api文档, 咱们能够发现这个接口就是与Discord Bot交互用的, 那么,咱们完全能够经过curl, postman等一系列东西来模仿同样的恳求与完成/imagine, 有兴趣的小伙伴能够手动实践试试。
经过测试,咱们只需要改动prompt,其它的参数都能够坚持不变,便能够完成给Midjourney Bot发送/imagine指令。
需要留意的是, 因为Discord API接口有鉴权, 咱们需要在HTTP恳求时带上Authorization头部, 内容能够从这里拿到:
那么经过curl测试的恳求为:
curl -d '{payload_json}' -H 'Authorization: {your token}' -H 'Content-Type: application/json' https://discord.com/api/v9/interactions -v
那么经过同样的方法,咱们能够完成大部分给Midjourney Bot发送的指令。
midjourney-go介绍
midjourney-go主要是便利调用Midjourney Bot, 进行以下指令的操作:
-
/imagine
-
/upscale
-
/variation
-
/describe
-
/blend
-
/reroll
它被规划为不包括任何事务逻辑,且十分轻量级,所以能够很便利的被集成到运用Golang开发的项目中,比如咱们在Discord中开发了自己的Bot, 便能够很轻松的集成Midjourney Bot的才能。
环境预备
- 科学上网
- 装置golang环境
- 预备
discord token - 预备
guild_id和channel_id
运用方法
运用方法十分简单, 新建一个Golang的项目, 然后修改main.go, 只需几行代码就能够完成/imagine:
package main
import (
"context"
"log"
"github.com/hongliang5316/midjourney-go/midjourney"
)
func main() {
client := midjourney.NewClient(&midjourney.Config{
UserToken: "",
})
// imagine
err := client.Imagine(context.Background(), &midjourney.ImagineRequest{
GuildID: "",
ChannelID: "",
Prompt: "",
})
if err != nil {
log.Fatalf("Call client.Imagine failed, err: %+v", err)
}
}
然后运转:
go mod tidy
go run main.go
然后观察discord频道里的Midjourney Bot的消息即可。
总结
本章介绍了怎么运用Golang调用Midjourney Bot, 咱们有了midjourney-go, 能够在咱们的使用中调用Midjourney Bot了, 但是因为Midjourney Bot的输出的图片是在Discord中的, 咱们仍是无法完全将Midjourney的输出图片的才能集成到咱们的使用中, 好在Discord十分敞开, 支撑经过编程的方法获取Midjourney Bot的消息, 下一章我将介绍一下怎么脱离Discord, 自建Midjourney APIServer。




