多模型统一接口的国产大语言模型适配工具
simple-one-api是一个开源项目,通过标准OpenAI API格式统一访问多种国产大语言模型。支持讯飞星火、百度千帆、腾讯混元等多个免费模型,解决了不同平台接口差异问题。项目特点包括多模型配置、API密钥负载均衡和模型名称重定向,为开发者提供统一便捷的大模型调用方式。
目前市面上免费可用的国产大模型越来越多,对于个人用户来说,one-api的使用还是有些麻烦。我们只需要一个不涉及统计、流量和计费等功能的简单适配程序即可。
另一个问题是:即使有些厂商声称兼容OpenAI的接口,实际上还是存在一些差异!
simple-one-api主要解决以上两个问题,旨在兼容多种大模型接口,并统一对外提供OpenAI接口。通过该项目,用户可以方便地集成和调用多种大模型,简化了不同平台接口差异带来的复杂性。
大模型 | 免费版本 | 免费限制 | 控制台(api_key等) | 文档地址 |
---|---|---|---|---|
讯飞星火大模型 | spark-lite | tokens:总量无限<br/>QPS:2<br/>有效期:不限 | 访问链接 | 文档查看 |
百度千帆大模型平台 | yi_34b_chat , ERNIE-Speed-8K , ERNIE-Speed-128K , ERNIE-Lite-8K , ERNIE-Lite-8K-0922 , ERNIE-Tiny-8K | Lite、Speed-8K:RPM = 300,TPM = 300000<br/>Speed-128K:RPM = 60,TPM = 300000 | 访问链接 | 文档查看 |
腾讯混元大模型 | hunyuan-lite | 限制并发数为5路 | 访问链接 | 链接 |
Cloudflare Workers AI | 所有模型 | 免费每天可使用1万次,每月30万次;测试版模型无限制 | 访问链接 | 文档查看 |
字节扣子(coze.cn) | 豆包·Function call模型(32K)、通义千问-Max(8K)、MiniMax 6.5s(245K)、Moonshot(8K)、Moonshot(32K)、Moonshot(128K) | 当前扣子API免费供开发者使用,每个空间的API请求限额如下:QPS (每秒请求数):2<br/>QPM (每分钟请求数):60<br/>QPD (每天请求数):3000 | 访问链接 | 文档查看 |
字节火山方舟 | doubao系列、Moonshot系列等 | 2024年5月15日至8月30日期间,提供高达5亿tokens的免费权益 | 访问链接 | 文档查看 |
Llama Family | "Atom-13B-Chat","Atom-7B-Chat","Atom-1B-Chat","Llama3-Chinese-8B-Instruct" | 1.每天8-22点:接口限速每分钟20次并发<br/>2.每天22-次日8点:接口限速每分钟50次并发 | 访问链接 | 文档查看 |
groq | gemma-7b-it、mixtral-8x7b-32768、llama3-70b-8192、llama3-8b-8192 | rpm为30,rpd为14400,TOKENS PER MINUTE也有限制 | 访问链接 | 文档查看 |
Google Gemini | gemini-1.5-pro、gemini-1.5-flash、gemini-1.0-pro、gemini-pro-vision | 15RPM(每分钟请求数);100万TPM(每分钟令牌);1500RPD(每天请求数) | 访问链接 | 文档查看 |
硅基流动 | Qwen2-7B-Instruct,Qwen2-1.5B-Instruct,Qwen1.5-7B-Chat,glm-4-9b-chat,chatglm3-6b,Yi-1.5-9B-Chat-16K,Yi-1.5-6B-Chat | RPM限制为100,QPS限制为3,更多可申请 | 访问链接 | 文档查看 |
为了更加方便申请和接入,我们也整理了各个模型的接入指南,可以查阅:
社群小伙伴反馈验证可用的客户端
支持多种大模型:
如果兼容某个已经支持OpenAI的接口,那么可以在simple-one-api中直接使用。参考文档docs/兼容OpenAI模型协议接入指南.md
api_key
,并且可以随机负载均衡api_key
random
模型,后台自动寻找配置的可用的模型/v1/models
和/v1/models/:model
接口查看 CHANGELOG.md 获取本项目的详细更新历史。
git clone https://github.com/fruitbars/simple-one-api.git
首先确保你已经安装了go,版本需要是1.21以上,具体安装教程参考官网地址:https://go.dev/doc/install
可以通过go version
查看go的版本。
linux/macOS
chmod +x quick_build.sh ./quick_build.sh
将会在当前目录生成simple-one-api
Windows
双击quick_build.bat
执行
quick_build.bat
将会在当前目录生成simple-one-api.exe
交叉编译不同平台版本
有时需要编译不同平台的版本,比如windows、linux、macOS; 确保安装好go之后,执行build.sh
chmod +x build.sh ./build.sh
会自动编译出对于以上3种平台不同架构的可执行文件,生成在build
目录中。
接下来配置你的模型服务和凭证:
在 config.json
文件中添加你的模型服务和凭证信息,参考下文的配置文件说明。
默认读取和simple-one-api
相同目录下的config.json
启动
./simple-one-api
如果想指定config.json
的路径,可以这样启动
./simple-one-api /path/to/config.json
以下是如何使用 Docker 部署 simple-one-api
的步骤:
运行
使用以下命令运行 Docker 容器,同时挂载你的配置文件 config.json
:
docker run -d --name simple-one-api -p 9090:9090 -v /path/to/config.json:/app/config.json fruitbars/simple-one-api
注意: 请确保将 /path/to/config.json 替换为 config.json 文件在你主机上的绝对路径。
查看容器日志 你可以使用以下命令查看容器的日志输出:
docker logs -f simple-one-api
或
docker logs -f <container_id>
其中,<container_id> 是容器的 ID,可以通过 docker ps 命令查看。
docker-compose.yml
中首先确保你已经将你的 config.json
文件的路径替换成了正确的绝对路径。docker-compose.yml
文件的目录下运行以下命令:
这个命令会在后台启动docker-compose up -d
simple-one-api
服务。其他查看命令参考docker-compose的文档。
其他启动方式:
现在,你可以通过 OpenAI 兼容的接口调用你配置的各大模型服务。服务地址: http://host:port/v1
,api-key
可以任意设置
支持模型名称设置为random
,后台会自动找一个"enabled": true
的模型来使用。
{ "load_balancing": "random", "services": { "xinghuo": [ { "models": ["spark-lite"], "enabled": true, "credentials": { "appid": "xxx", "api_key": "xxx", "api_secret": "xxx" } } ] } }
其他模型的配置文件示例可以参考:https://github.com/fruitbars/simple-one-api/tree/main/samples
配置文件在线生成
感谢来自社群小伙伴提供在线生成配置
https://simple-one-api-ui.vercel.app/
参考文档:config.json详细说明
各个厂商详细的配置说明:https://github.com/fruitbars/simple-one-api/tree/main/docs
各个厂商详细的示例config:https://github.com/fruitbars/simple-one-api/tree/main/samples
具体文档查看config.json详细说明.md,以下是一个完整的配置示例,涵盖了多个大模型平台和不同模型:
{ "server_port":":9090", "load_balancing": "random", "services": { "qianfan": [ { "models": ["yi_34b_chat", "ERNIE-Speed-8K", "ERNIE-Speed-128K", "ERNIE-Lite-8K", "ERNIE-Lite-8K-0922", "ERNIE-Tiny-8K"], "enabled": true, "credentials": { "api_key": "xxx", "secret_key": "xxx" } } ], "xinghuo": [ { "models": ["spark-lite"], "enabled": true, "credentials": { "appid": "xxx", "api_key": "xxx", "api_secret": "xxx" }, "server_url": "ws://spark-api.xf-yun.com/v1.1/chat" } ], "hunyuan": [ { "models": ["hunyuan-lite"], "enabled": true, "credentials": { "secret_id": "xxx", "secret_key": "xxx" } } ], "openai": [ { "models": ["deepseek-chat"], "enabled": true, "credentials": { "api_key": "xxx" }, "server_url": "https://api.deepseek.com/v1" } ], "minimax": [ { "models": ["abab6-chat"], "enabled": true, "credentials": { "group_id": "xxx", "api_key": "xxx" }, "server_url": "https://api.minimax.chat/v1/text/chatcompletion_pro" } ] } }
请参考docs/在沉浸式翻译中使用simple-one-api
详细文档请查看config.json详细说明.md
以下是一个配置示例,针对免费的讯飞星火spark-lite模型,由于其有2qps限制,可以这样设置:
{ "server_port": ":9090", "debug": false, "load_balancing": "random", "services": { "xinghuo": [ { "models": ["spark-lite"], "enabled": true, "credentials": { "appid": "xxx", "api_key": "xxx", "api_secret": "xxx" }, "limit": { "qps":2, "timeout": 10 } } ] } }
从v0.9.1版本开 始,更新了代理设置方式,现在每个服务都支持独立代理设置。 请参考文档《simple‐one‐api代理配置说明》
可以通过api_key
字段来设置,如下所示:
{ "api_key":"123456", "load_balancing": "random", "services": { "xinghuo": [ { "models": ["spark-lite"], "enabled": true, "credentials": { "appid": "xxx", "api_key": "xxx", "api_secret": "xxx" } } ] } }
以客户端选择spark-lite为例,可以按照以下方式配置,系统会随机选择credentials:
{ "api_key":"123456", "load_balancing": "random", "services": { "xinghuo": [ { "models": ["spark-lite"], "enabled": true, "credentials": { "appid": "xxx", "api_key": "xxx", "api_secret": "xxx" } }, { "models": ["spark-lite"], "enabled": true, "credentials": { "appid": "xxx", "api_key": "xxx", "api_secret": "xxx" } } ] } }