
如何快速實現REST API集成以優化業務流程
-p 3000:3000 \
-e TZ=Asia/Shanghai \
-v /home/kevin/one-api:/data \
--restart always \
justsong/one-api
如果你不想丟失你后面辛苦設置的配置,就需要像上面掛載一個卷給它。當然如果你有一個 MySQL,將數據持久化給它是更棒的想法。你想試玩一下,上面就夠啦~
部署完畢后,訪問所在機器的 3000 端口即可打開其 Web 頁面。使用管理員用戶 root 密碼 123456(看 docker 啟動日志可得)登錄后,就可以配置渠道了,這里的渠道可以理解為提供模型的平臺。你可以根據手上的資源來創建相應的渠道。如下圖是我創建的一個列表:
同時,我們可以給每個渠道設置它所提供的模型列表,如下圖:
需要注意清理一些你并不需要的模型,也可能需要手動錄入一些模型名。當模型調用和實際不一致時,可能稍麻煩點配置個重定向(在 azure openai 時或能用上)。多數時候密鑰填寫一個即可,像百度文心一言的密鑰需要如它提供所言,使用 APIKey|SecretKey 的方式,不要錯填。而部分模型如果需要訪問代理,也可以針對性的配置。
看起來這些配置還是挺合情合理的,每個都是有實打實用途。配置后想知道是否能正常,可以回到上面渠道頁點擊測試即可,順便還可以看一下訪問速度如何:)
當然,我相信每個玩模型的人手里都握了好多個 key,如果你沒有的話,國內隨便申請幾個玩一下,給你張機票順便求三連:
其中零一萬物注冊送 60 元,還是可以隨便玩一下的,智能程度還不錯:)遺憾的是騰訊混云大模型我還不能申請,要企業身份,希望早日開放吧~
經過上面配置,我們渠道和模型已經準備好了,接下來就是獲得一個 Key 供使用。OneAPI 有個好處便是,你訪問各大模型的敏感信息如密鑰和賬戶都是在它上面配置。然后它可創建令牌給你用于在其它 Web 端填寫,甚至你可以放心的給朋友發送一個令牌,它有一個有效期和可設置費用情況。我們可以使用剛才的 root 賬戶創建,也可以另建一個賬戶創建令牌。
然后點復制會獲得你的 API Key。注意新的賬戶創建后是沒有錢的,你可以使用 root 用戶在兌換
->添加新的兌換碼
后生成一個兌換碼給剛才這個用戶,然后這個用戶去兌換即可。這雖然多了一兩步,但是很簡單的操作。
現在,你可以選擇一個自己喜歡的 chatgpt-Web 端來部署了,這里我推薦使用ChatGPT-Next-Web,主要原因是它支持隨便切換模型,并且通知啟動參數自定義模型列表。
docker run -d -p 3003:3000 \
-e OPENAI_API_KEY=<上面獲得的OneAPI sk-開頭的密鑰> \
-e BASE_URL=http://<你的OneAPI部署的地址>:3000 \
-e CUSTOM_MODELS=ERNIE-3.5-8K,Llama-2-70B-Chat,ERNIE-4.0-8K,Yi-34B-Chat,yi-34b-chat-0205,mistral,gemma,gemma-7b,gemma:7b \
yidadaa/chatgpt-next-web
我們可以從如下地方選擇切換模型,可以方便的和各處模型對話啦!
如果你有多個渠道提供了同一個模型,OneAPI 后端會自動作負載均衡,當然你也可以指定使用某個渠道。當我看到 OneAPI 的渠道還支持Ollama時,便知道本地模型也有機會統一進來啦~
本地模型意味著量大管飽,看到 OneAPI 支持 Ollama 后,我便打開了臺式機的電源,我們一起試試看~
如果你沒有使用過Ollama
,那么容我簡單介紹兩句,不對,只需要一句:
Get up and running with large language models locally.
它支持蠻多的主流開源模型的,你可以在這里查到,我就不搬運啦!為了獲得較好的推理速度,你可能需要使用到 GPU 加速,我試過 Macbook M 系列芯片速度也是不錯的。然后給幾個命令(以下是在 Windows 中執行的,Linux 也類似):
# 查看當前已經下載的模型列表
ollama list
# 下載模型(去選擇你喜歡的模型吧)
ollama pull Mistral
# 修改監聽端口(默認監聽在127.0.0.1,為了能被外部訪問到,需要修改)
$env:ollama_host = "0.0.0.0:8899"
# 開啟服務
ollama serve
啟動后,我們可驗證是否可用:
curl http://<你的ollama部署的機器IP>:8899/api/chat -d '{
"model": "mistral:latest",
"messages": [
{ "role": "user", "content": "why is the sky blue?" }
]
}'
有返回即準備工作完成啦!恭喜!!如果網絡不通,請檢查防火墻或端口等是否正常哈~
我們在創建渠道時選擇Ollama
,然后手工填上自己要使用的模型,最重要的是后面在代理中寫上自己 ollama 服務的地址即可,如下圖所示:
之后我們修改一下ChatGPT-Next-Web
的啟動參數,將這些 Ollama 的模型暴露出去即可在頁面中選擇和使用啦~
到這里,本文接近尾聲了。OneAPI 的功能不止于此,還有 Embeding,繪畫等 API 也適配了,未來還有進一步折騰的空間。不過雖說看起來完美了,但我還有點不爽。主要原因是模型的使用觀測上依然不太夠,我希望對各個模型使用的 token 數量和時間有詳細統計,或許在 OneAPI 中集成 Prometheus 是個不錯的主意,看了下 Issue 還沒有涉及相關討論,未來有空給集成一版看看效果,如果你也想要此功能,歡迎持續關注!
文章轉自微信公眾號@愛折騰的風