前言
本文是ChatGPT&Midjounery私有部署系列的第三篇,前两篇请阅读:
本文将详细介绍Midjounery私有部署最核心的开源项目:Midjounery-Proxy的详细配置和使用。
阅读本文你将了解到:
- Midjounery-Proxy是什么,为什么需要它
- 部署所需的核心参数有哪些,怎么获取
- 如何在调用MJ之前自动把中文指令翻译为英文指令
- 部署的docker脚本示例
- 完整参数列表
Midjounery-Proxy是什么,为什么需要它
通过之前的介绍,你应该知道了Mijounery的强大,作为目前最优秀AI绘画产品之一,在国内面临难访问、贵,并且无法用接口方式调用的问题。
那么Midjounery-Proxy就是为解决这个问题而诞生的。它可以代理 MidJourney 的discord频道,实现api形式调用AI绘图。支持以下功能
项目地址:https://github.com/novicezk/midjourney-proxy
核心参数有哪些,如何获取
要部署该项目,必不可少的参数有如下几个
参数 | 描述 |
mj.discord.guild-id | discord服务器ID |
mj.discord.channel-id | discord频道ID |
mj.discord.user-token | discord用户Token |
mj.discord.session-id | discord用户SessionId |
注:
1. discord是一个社区平台,midjounery一个基于 Discord 机器人的应用程序。类似于AppStore之于App
2. 这些参数都必须登录discord平台获取,所以要魔法
如何获取以上参数:
1. 注册discord 和 MidJourney,在discord上创建自己的频道,这部分可以参考 :https://docs.midjourney.com/docs/quick-start
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和密钥:https://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-id | 是 | discord服务器ID |
mj.discord.channel-id | 是 | discord频道ID |
mj.discord.user-token | 是 | discord用户Token |
mj.discord.session-id | 否 | discord用户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.server | 否 | https://discord.com 反代地址 |
mj.ng-discord.cdn | 否 | https://cdn.discordapp.com 反代地址 |
mj.ng-discord.wss | 否 | wss://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-key | 否 | gpt的api-key |
mj.openai.timeout | 否 | openai调用的超时时间,默认30秒 |
mj.openai.model | 否 | openai的模型,默认gpt-3.5-turbo |
mj.openai.max-tokens | 否 | 返回结果的最大分词数,默认2048 |
mj.openai.temperature | 否 | 相似度(0-2.0),默认0 |
spring.redis | 否 | 任务存储方式设置为redis,需配置redis相关属性 |
参考:
- 获取百度翻译官方接口API与密钥并授权至软件或插件的方法 – 知乎 (http://zhihu.com)
- midjourney-proxy/docs/discord-params.md at main · novicezk/midjourney-proxy · GitHub