【ChatGPT&Midjounery私有部署系列03】Midjounery-Proxy进阶指南

【ChatGPT&Midjounery私有部署系列03】Midjounery-Proxy进阶指南

前言

本文是ChatGPT&Midjounery私有部署系列的第三篇,前两篇请阅读:

本文将详细介绍Midjounery私有部署最核心的开源项目:Midjounery-Proxy的详细配置和使用。

阅读本文你将了解到:

  • Midjounery-Proxy是什么,为什么需要它
  • 部署所需的核心参数有哪些,怎么获取
  • 如何在调用MJ之前自动把中文指令翻译为英文指令
  • 部署的docker脚本示例
  • 完整参数列表

Midjounery-Proxy是什么,为什么需要它

通过之前的介绍,你应该知道了Mijounery的强大,作为目前最优秀AI绘画产品之一,在国内面临难访问、贵,并且无法用接口方式调用的问题。

那么Midjounery-Proxy就是为解决这个问题而诞生的。它可以代理 MidJourney 的discord频道,实现api形式调用AI绘图。支持以下功能

项目地址:github.com/novicezk/mid

核心参数有哪些,如何获取

要部署该项目,必不可少的参数有如下几个

参数描述
mj.discord.guild-iddiscord服务器ID
mj.discord.channel-iddiscord频道ID
mj.discord.user-tokendiscord用户Token
mj.discord.session-iddiscord用户SessionId

注:

1. discord是一个社区平台,midjounery一个基于 Discord 机器人的应用程序。类似于AppStore之于App

2. 这些参数都必须登录discord平台获取,所以要魔法

如何获取以上参数:

1. 注册discord 和 MidJourney,在discord上创建自己的频道,这部分可以参考 :docs.midjourney.com/doc

2.把midjounery机器人拉入你的频道

2.1 在你的服务器右键,依次点击【服务器设置】->【APP目录】

2.2 搜索midjounery,并点击【添加至服务器】,一路继续

2.3 在服务器中输入/imagine,如果出现下图表明可以正常使用

3. 获取服务器ID和频道ID

4. 获取用户sessionId

进入频道,打开network,发送/imagine作图指令,找到 interactions 的请求,这里的 session_id 即用户sessionId,后续设置到 mj.discord.session-id

5.获取用户Token

进入频道,打开network,刷新页面,找到 messages 的请求,这里的 authorization 即用户Token,后续设置到 mj.discord.user-token


如何自动将提示词翻译成英文

1. gpt翻译

设置参数:

mj.translate-way=gpt

mj.openai.gpt-api-key=******

最好需要二次开发,对promot优化,目前效果如下:

2. 百度翻译

参数:

mj.translate-way=baidu

mj.openai.gpt-api-key=******

百度翻译的就比较中规中矩

百度获取api和密钥:fanyi-api.baidu.com/,点控制台按提示步骤操作


启动容器脚本示例

-- gpt翻译
docker run -d --name midjourney-proxy \
 -p 8081:8080 \
 -e mj.discord.guild-id= \
 -e mj.discord.channel-id= \
 -e mj.discord.user-token= \
 -e mj.discord.session-id= \
 -e mj.translate-way=gpt \
 -e mj.openai.gpt-api-key= \
 -e mj.queue.timeout-minutes=10 \
 --restart=always \
 novicezk/midjourney-proxy:2.3.5

-- 百度翻译
docker run -d --name midjourney-proxy \
 -p 8080:8080 \
 -e mj.discord.guild-id= \
 -e mj.discord.channel-id= \
 -e mj.discord.user-token= \
 -e mj.discord.session-id= \
 -e mj.translate-way=baidu \
 -e mj.baidu-translate.appid= \
 -e mj.baidu-translate.app-secret= \
 -e mj.queue.timeout-minutes=10 \
 --restart=always \
 novicezk/midjourney-proxy:2.3.5

测试一下:ip:8080/mj/doc.html,看到如下页面表示成功



完整配置

变量名非空描述
mj.discord.guild-iddiscord服务器ID
mj.discord.channel-iddiscord频道ID
mj.discord.user-tokendiscord用户Token
mj.discord.session-iddiscord用户SessionId,建议从interactions请求中复制替换掉
mj.discord.user-agent调用discord接口、连接wss时的user-agent,建议从浏览器network复制
mj.discord.user-wss是否使用user-token连接wss,默认启用
mj.discord.bot-token自定义机器人Token,user-wss=false时必填
mj.api-secret接口密钥,为空不启用鉴权;调用接口时需要加请求头 mj-api-secret
mj.include-task-extended接口是否返回任务扩展属性,默认false
mj.notify-hook全局的任务状态变更回调地址
mj.notify-notify-pool-size通知回调线程池大小,默认10
mj.task-store.type任务存储方式,默认in_memory(内存\重启后丢失),可选redis
mj.task-store.timeout任务过期时间,过期后删除,默认30天
mj.queue.core-size并发数,默认为3
mj.queue.queue-size等待队列,默认长度10
mj.queue.timeout-minutes任务超时时间,默认为5分钟
mj.proxy.host代理host,全局代理不生效时设置
mj.proxy.port代理port,全局代理不生效时设置
mj.ng-discord.serverdiscord.com 反代地址
mj.ng-discord.cdncdn.discordapp.com 反代地址
mj.ng-discord.wsswss://gateway.discord.gg 反代地址
mj.translate-way中文prompt翻译方式,可选null(默认)、baidu、gpt
mj.baidu-translate.appid百度翻译的appid
mj.baidu-translate.app-secret百度翻译的app-secret
mj.openai.gpt-api-url自定义gpt的接口地址,默认不需要配置
mj.openai.gpt-api-keygpt的api-key
mj.openai.timeoutopenai调用的超时时间,默认30秒
mj.openai.modelopenai的模型,默认gpt-3.5-turbo
mj.openai.max-tokens返回结果的最大分词数,默认2048
mj.openai.temperature相似度(0-2.0),默认0
spring.redis任务存储方式设置为redis,需配置redis相关属性

参考:

  • 获取百度翻译官方接口API与密钥并授权至软件或插件的方法 - 知乎 (zhihu.com)
  • midjourney-proxy/docs/discord-params.md at main · novicezk/midjourney-proxy · GitHub


这是一个持续探索可能性的账号,包含但不限最新AI、学术工具,或有关知识的方法论。
创作不易,如内容对你有帮助,请不吝点赞关注,这是我创作最大动力~~
发布于 2023-07-13 00:46・IP 属地上海