所有大模型封裝成統(tǒng)一API:快捷使用各種大模型
之前同事在部署大模型的時(shí)候,一直想怎么解決不同大模型部署之后,怎么提供統(tǒng)一的Api而苦惱。
我也在做大模型項(xiàng)目的時(shí)候,遇到這個(gè)問(wèn)題。在之前一直是利用不同家的大模型自己去封裝協(xié)議。非常麻煩!??!
別急,今天介紹的這個(gè) GitHub 開(kāi)源項(xiàng)目滿足你我所有幻想:OneAPI,一款接口管理和分發(fā)神器,將所有大模型一鍵封裝成OpenAI協(xié)議。
傳送門(mén):https://github.com/songquanpeng/one-api
話不多說(shuō),上實(shí)操!
1. 服務(wù)部署
作者了提供了源碼部署和 Docker 部署兩種方式,其中源碼部署需要分別構(gòu)建前端和后端,相對(duì)麻煩一點(diǎn)。
接下來(lái),就把 OneAPI 部署在這臺(tái)云服務(wù)器上,如果你用本地 Linux 虛擬機(jī)當(dāng)然也沒(méi)問(wèn)題。
因?yàn)楸卷?xiàng)目還依賴數(shù)據(jù)庫(kù)的服務(wù),所以我們采用 docker-compose 的方式來(lái)進(jìn)行部署,簡(jiǎn)單幾步就能搞定,極大降低小白的部署門(mén)檻。
1.1 創(chuàng)建 docker-compose 文件
打開(kāi)一個(gè)終端:
mkdir oneapi
cd oneapi/
touch docker-compose.yml
把下述腳本復(fù)制到 docker-compose.yml 中:
version: '3.8'
services:
oneapi:
container_name: oneapi
image: justsong/one-api:latest
restart: unless-stopped
network_mode: bridge
ports:
- 13000:3000
volumes:
- ./data:/data
environment:
- TZ=Asia/Shanghai
簡(jiǎn)單介紹下上面幾個(gè)參數(shù):
- version: 指定了Compose文件格式的版本,用于確保配置文件與Docker Compose的版本兼容,最新版docker-compose已不需要這個(gè)字段;
- services: 定義了應(yīng)用程序中的服務(wù),每個(gè)服務(wù)運(yùn)行在獨(dú)立的容器中;
- image:鏡像地址,國(guó)內(nèi)服務(wù)器用阿里云的鏡像會(huì)非??欤M夥?wù)器不建議用阿里云的鏡像;
- ports: 3001:3000 意味著容器內(nèi)部的3000端口映射到宿主機(jī)的3001端口,用于防止宿主機(jī)端口沖突;
- volumes: ./mysql:/var/lib/mysql 意味著將本地的./mysql目錄掛載到容器的/var/lib/mysql目錄,用于數(shù)據(jù)持久化。
1.2 服務(wù)啟動(dòng)
配置好 docker-compose.yml 文件后,采取如下命令一鍵啟動(dòng):
sudo docker-compose up -d
等待拉取鏡像,終端出現(xiàn)如下提示,說(shuō)明成功啟動(dòng):
[+] Running 3/3
? Network oneapi_default Created
? Container mysql Started
? Container oneapi Started
2. OneAPI 登錄
還記得 OneAPI 的端口號(hào)不?3001!
因此,瀏覽器中的訪問(wèn)地址應(yīng)該是:http://IP:Port,例如:http://129.150.63.xxx:3001
但這時(shí),上述地址是打不開(kāi)的,還需要到服務(wù)器中把 3001/3306 端口的防火墻打開(kāi)。防火墻打開(kāi)后,上述地址就可以訪問(wèn)了:
圖片
首先需要登錄,初始賬號(hào)名 root,密碼 123456,登錄后立即修改密碼。
圖片
登錄成功后,你會(huì)發(fā)現(xiàn) Tab 頁(yè)多了幾個(gè)選項(xiàng),這些只有超級(jí)管理員能看到:
圖片
接下來(lái),我們一一了解下系統(tǒng)的幾個(gè)模塊。
2.1 用戶
首先我們看下用戶管理模塊,左下角可以新增用戶。
圖片
點(diǎn)擊右側(cè)編輯,可以發(fā)現(xiàn)用戶分組有三個(gè)。分組有什么用?假如你在這個(gè)系統(tǒng)中代理 10 種大模型并商業(yè)化,可以設(shè)定 VIP 可以使用其中的 2 種模型,而 SVIP 可以使用全部。如果自己玩,那隨意。
圖片
2.2 渠道
渠道用來(lái)管理和添加各個(gè)大模型廠商的 LLM。只有超級(jí)管理員才能設(shè)置。
在渠道管理中,左下角點(diǎn)擊添加新的渠道:
圖片
2.2.1 渠道添加
圖片
提交后,點(diǎn)擊右側(cè)測(cè)試,看看是否能夠調(diào)用成功。
圖片
再次,比如我們還要用Ollama部署的模型,添加則更加簡(jiǎn)單根據(jù)配置就好了:
圖片
但是,要特別注意代理的地址:如果是Ollama記得用http://host.docker.internal:11434
2.2.2 渠道列表
其他廠商基本和上述一致,最后,給大家看下我的渠道列表:
圖片
2.3 令牌
這個(gè)模塊用于創(chuàng)建令牌,供客戶端或調(diào)用方使用,其作用跟 LLM的令牌(或密鑰)的作用是一樣的。點(diǎn)擊復(fù)制后,會(huì)顯示在上方搜索框。
圖片
當(dāng)然也可以選擇添加新的令牌,如果僅僅是自用,可以設(shè)為無(wú)限額度,永不過(guò)期;如果是外發(fā)給其他人使用的,你可以給他設(shè)置一個(gè)限量:
圖片
有了令牌,就可以采用 OpenAI 協(xié)議的 API 調(diào)用了。
2.4 兌換 和 充值
這兩個(gè)模塊是為了商業(yè)化準(zhǔn)備的。
兌換模塊,用于管理兌換碼,類似話費(fèi)充值卡。
圖片
充值模塊,用于給賬戶充值,與兌換配合使用。輸入一個(gè)有效兌換碼,就相當(dāng)于給當(dāng)前賬戶充值對(duì)應(yīng)的額度,用于供令牌調(diào)用消耗。
圖片
2.5 日志 和 設(shè)置
日志模塊,用于展示用戶充值和額度消耗記錄。
圖片
設(shè)置模板,包括個(gè)人設(shè)置、運(yùn)營(yíng)設(shè)置、系統(tǒng)設(shè)置和其他設(shè)置,整個(gè)系統(tǒng)的商業(yè)化功能還是挺完備的。
圖片
3. 總結(jié)
OneAPI 是一個(gè)開(kāi)源項(xiàng)目,旨在幫助用戶將不同的大模型封裝成統(tǒng)一的 OpenAI 協(xié)議接口。它支持源碼部署和 Docker 部署,其中 Docker 部署更為簡(jiǎn)便。
通過(guò) docker-compose.yml 文件,可以快速啟動(dòng)服務(wù),包括數(shù)據(jù)庫(kù)和 OneAPI 本身。部署后,用戶可以通過(guò)設(shè)定的端口訪問(wèn) OneAPI 的 Web 界面,進(jìn)行用戶管理、渠道管理、令牌創(chuàng)建等操作。OneAPI 還提供了商業(yè)化功能,如兌換碼管理和充值模塊,以及日志和設(shè)置模塊,以滿足不同用戶的需求。
通過(guò) OneAPI,用戶可以輕松管理和調(diào)用多個(gè)大模型,無(wú)需為每個(gè)模型單獨(dú)封裝協(xié)議。