likes
comments
collection
share

玩转Midjourney系列三: 使用golang调用Midjourney Bot

作者站长头像
站长
· 阅读数 25

前几章,我介绍了Midjourney以及Midjourney Bot的基本玩法, 本章我将站在一个开发的视角,使用编程的方式来调用Midjourney Bot

原理

由于Midjourney Bot是由Discord开发出来的Application,我们可以先通过阅读Discord Developer Platform Docs文档来了解下Discord开放的一些API能力。

/imagine发生了什么

首先,我们打开浏览器的开发者工具, 通过抓包看下客户端服务端之间的调用请求。

Google Chrome为例:

打开开发者工具: 玩转Midjourney系列三:  使用golang调用Midjourney Bot

当我们给Midjourney Bot发送一个/imagine指令时, 可以看到抓到的请求是:

发送/imagine指令: 玩转Midjourney系列三:  使用golang调用Midjourney Bot

抓包查看请求: 玩转Midjourney系列三:  使用golang调用Midjourney Bot

通过阅读interactions api文档, 我们可以发现这个接口就是与Discord Bot交互用的, 那么,我们完全可以通过curl, postman等一系列工具来模拟同样的请求与实现/imagine, 有兴趣的小伙伴可以手动实践试试。

经过测试,我们只需要改变prompt,其它的参数都可以保持不变,便可以实现给Midjourney Bot发送/imagine指令。

需要注意的是, 由于Discord API接口有鉴权, 我们需要在HTTP请求时带上Authorization头部, 内容可以从这里拿到:

获取Authorization头部内容: 玩转Midjourney系列三:  使用golang调用Midjourney Bot

那么通过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的项目, 然后编辑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

转载自:https://juejin.cn/post/7246924217681117244
评论
请登录