前言
本文是ChatGPT&Midjounery私有部署系列的第三篇,前兩篇請(qǐng)閱讀:
本文將詳細(xì)介紹Midjounery私有部署最核心的開(kāi)源項(xiàng)目:Midjounery-Proxy的詳細(xì)配置和使用。
閱讀本文你將了解到:
- Midjounery-Proxy是什么,為什么需要它
- 部署所需的核心參數(shù)有哪些,怎么獲取
- 如何在調(diào)用MJ之前自動(dòng)把中文指令翻譯為英文指令
- 部署的docker腳本示例
- 完整參數(shù)列表
Midjounery-Proxy是什么,為什么需要它
通過(guò)之前的介紹,你應(yīng)該知道了Mijounery的強(qiáng)大,作為目前最優(yōu)秀AI繪畫(huà)產(chǎn)品之一,在國(guó)內(nèi)面臨難訪問(wèn)、貴,并且無(wú)法用接口方式調(diào)用的問(wèn)題。
那么Midjounery-Proxy就是為解決這個(gè)問(wèn)題而誕生的。它可以代理 MidJourney 的discord頻道,實(shí)現(xiàn)api形式調(diào)用AI繪圖。支持以下功能

項(xiàng)目地址:https://github.com/novicezk/midjourney-proxy
核心參數(shù)有哪些,如何獲取
要部署該項(xiàng)目,必不可少的參數(shù)有如下幾個(gè)
參數(shù) | 描述 |
mj.discord.guild-id | discord服務(wù)器ID |
mj.discord.channel-id | discord頻道ID |
mj.discord.user-token | discord用戶(hù)Token |
mj.discord.session-id | discord用戶(hù)SessionId |
注:
1. discord是一個(gè)社區(qū)平臺(tái),midjounery一個(gè)基于 Discord 機(jī)器人的應(yīng)用程序。類(lèi)似于AppStore之于App
2. 這些參數(shù)都必須登錄discord平臺(tái)獲取,所以要魔法
如何獲取以上參數(shù):
1. 注冊(cè)discord 和 MidJourney,在discord上創(chuàng)建自己的頻道,這部分可以參考 :https://docs.midjourney.com/docs/quick-start
2.把midjounery機(jī)器人拉入你的頻道
2.1 在你的服務(wù)器右鍵,依次點(diǎn)擊【服務(wù)器設(shè)置】->【APP目錄】

2.2 搜索midjounery,并點(diǎn)擊【添加至服務(wù)器】,一路繼續(xù)


2.3 在服務(wù)器中輸入/imagine,如果出現(xiàn)下圖表明可以正常使用

3. 獲取服務(wù)器ID和頻道ID

4. 獲取用戶(hù)sessionId
進(jìn)入頻道,打開(kāi)network,發(fā)送/imagine作圖指令,找到 interactions 的請(qǐng)求,這里的 session_id 即用戶(hù)sessionId,后續(xù)設(shè)置到 mj.discord.session-id

5.獲取用戶(hù)Token
進(jìn)入頻道,打開(kāi)network,刷新頁(yè)面,找到 messages 的請(qǐng)求,這里的 authorization 即用戶(hù)Token,后續(xù)設(shè)置到 mj.discord.user-token

如何自動(dòng)將提示詞翻譯成英文
1. gpt翻譯
設(shè)置參數(shù):
mj.translate-way=gpt
mj.openai.gpt-api-key=******
最好需要二次開(kāi)發(fā),對(duì)promot優(yōu)化,目前效果如下:

2. 百度翻譯
參數(shù):
mj.translate-way=baidu
mj.openai.gpt-api-key=******
百度翻譯的就比較中規(guī)中矩
百度獲取api和密鑰:https://fanyi-api.baidu.com/,點(diǎn)控制臺(tái)按提示步驟操作

啟動(dòng)容器腳本示例
-- 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
測(cè)試一下:ip:8080/mj/doc.html,看到如下頁(yè)面表示成功

完整配置
變量名 | 非空 | 描述 |
mj.discord.guild-id | 是 | discord服務(wù)器ID |
mj.discord.channel-id | 是 | discord頻道ID |
mj.discord.user-token | 是 | discord用戶(hù)Token |
mj.discord.session-id | 否 | discord用戶(hù)SessionId,建議從interactions請(qǐng)求中復(fù)制替換掉 |
mj.discord.user-agent | 否 | 調(diào)用discord接口、連接wss時(shí)的user-agent,建議從瀏覽器network復(fù)制 |
mj.discord.user-wss | 否 | 是否使用user-token連接wss,默認(rèn)啟用 |
mj.discord.bot-token | 否 | 自定義機(jī)器人Token,user-wss=false時(shí)必填 |
mj.api-secret | 否 | 接口密鑰,為空不啟用鑒權(quán);調(diào)用接口時(shí)需要加請(qǐng)求頭 mj-api-secret |
mj.include-task-extended | 否 | 接口是否返回任務(wù)擴(kuò)展屬性,默認(rèn)false |
mj.notify-hook | 否 | 全局的任務(wù)狀態(tài)變更回調(diào)地址 |
mj.notify-notify-pool-size | 否 | 通知回調(diào)線程池大小,默認(rèn)10 |
mj.task-store.type | 否 | 任務(wù)存儲(chǔ)方式,默認(rèn)in_memory(內(nèi)存\重啟后丟失),可選redis |
mj.task-store.timeout | 否 | 任務(wù)過(guò)期時(shí)間,過(guò)期后刪除,默認(rèn)30天 |
mj.queue.core-size | 否 | 并發(fā)數(shù),默認(rèn)為3 |
mj.queue.queue-size | 否 | 等待隊(duì)列,默認(rèn)長(zhǎng)度10 |
mj.queue.timeout-minutes | 否 | 任務(wù)超時(shí)時(shí)間,默認(rèn)為5分鐘 |
mj.proxy.host | 否 | 代理host,全局代理不生效時(shí)設(shè)置 |
mj.proxy.port | 否 | 代理port,全局代理不生效時(shí)設(shè)置 |
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(默認(rèn))、baidu、gpt |
mj.baidu-translate.appid | 否 | 百度翻譯的appid |
mj.baidu-translate.app-secret | 否 | 百度翻譯的app-secret |
mj.openai.gpt-api-url | 否 | 自定義gpt的接口地址,默認(rèn)不需要配置 |
mj.openai.gpt-api-key | 否 | gpt的api-key |
mj.openai.timeout | 否 | openai調(diào)用的超時(shí)時(shí)間,默認(rèn)30秒 |
mj.openai.model | 否 | openai的模型,默認(rèn)gpt-3.5-turbo |
mj.openai.max-tokens | 否 | 返回結(jié)果的最大分詞數(shù),默認(rèn)2048 |
mj.openai.temperature | 否 | 相似度(0-2.0),默認(rèn)0 |
spring.redis | 否 | 任務(wù)存儲(chǔ)方式設(shè)置為redis,需配置redis相關(guān)屬性 |
參考:
- 獲取百度翻譯官方接口API與密鑰并授權(quán)至軟件或插件的方法 – 知乎 (http://zhihu.com)
- midjourney-proxy/docs/discord-params.md at main · novicezk/midjourney-proxy · GitHub