ForkSiliconFlowSiliconFlowpublished Aug 5, 2024seen 5d

siliconflow/one-api

forked from songquanpeng/one-api

Open original ↗

Captured source

source ↗
published Aug 5, 2024seen 5dcaptured 9hhttp 200method plain

siliconflow/one-api

Description: OpenAI 接口管理 & 分发系统,支持 Azure、Anthropic Claude、Google PaLM 2 & Gemini、智谱 ChatGLM、百度文心一言、讯飞星火认知、阿里通义千问、360 智脑以及腾讯混元,可用于二次分发管理 key,仅单可执行文件,已打包好 Docker 镜像,一键部署,开箱即用. OpenAI key management & redistribution system, using a single API for all LLMs, and features an English UI.

License: MIT

Stars: 2

Forks: 1

Open issues: 0

Created: 2024-08-05T09:13:24Z

Pushed: 2024-08-05T12:21:28Z

Default branch: main

Fork: yes

Parent repository: songquanpeng/one-api

Archived: no

README:

中文 | English | 日本語

部署教程 · 使用方法 · 意见反馈 · 截图展示 · 在线演示 · 常见问题 · 相关项目 · 赞赏支持

> [!NOTE] > 本项目为开源项目,使用者必须在遵循 OpenAI 的使用条款以及法律法规的情况下使用,不得用于非法用途。 > > 根据《生成式人工智能服务管理暂行办法》的要求,请勿对中国地区公众提供一切未经备案的生成式人工智能服务。

> [!WARNING] > 使用 Docker 拉取的最新镜像可能是 alpha 版本,如果追求稳定性请手动指定版本。

> [!WARNING] > 使用 root 用户初次登录系统后,务必修改默认密码 123456

功能

1. 支持多种大模型: + [x] OpenAI ChatGPT 系列模型(支持 Azure OpenAI API) + [x] Anthropic Claude 系列模型 (支持 AWS Claude) + [x] Google PaLM2/Gemini 系列模型 + [x] Mistral 系列模型 + [x] 字节跳动豆包大模型 + [x] 百度文心一言系列模型 + [x] 阿里通义千问系列模型 + [x] 讯飞星火认知大模型 + [x] 智谱 ChatGLM 系列模型 + [x] 360 智脑 + [x] 腾讯混元大模型 + [x] Moonshot AI + [x] 百川大模型 + [x] MINIMAX + [x] Groq + [x] Ollama + [x] 零一万物 + [x] 阶跃星辰 + [x] Coze + [x] Cohere + [x] DeepSeek + [x] Cloudflare Workers AI + [x] DeepL + [x] together.ai + [x] novita.ai 2. 支持配置镜像以及众多第三方代理服务。 3. 支持通过负载均衡的方式访问多个渠道。 4. 支持 stream 模式,可以通过流式传输实现打字机效果。 5. 支持多机部署,[详见此处](#多机部署)。 6. 支持令牌管理,设置令牌的过期时间、额度、允许的 IP 范围以及允许的模型访问。 7. 支持兑换码管理,支持批量生成和导出兑换码,可使用兑换码为账户进行充值。 8. 支持渠道管理,批量创建渠道。 9. 支持用户分组以及渠道分组,支持为不同分组设置不同的倍率。 10. 支持渠道设置模型列表。 11. 支持查看额度明细。 12. 支持用户邀请奖励。 13. 支持以美元为单位显示额度。 14. 支持发布公告,设置充值链接,设置新用户初始额度。 15. 支持模型映射,重定向用户的请求模型,如无必要请不要设置,设置之后会导致请求体被重新构造而非直接透传,会导致部分还未正式支持的字段无法传递成功。 16. 支持失败自动重试。 17. 支持绘图接口。 18. 支持 Cloudflare AI Gateway,渠道设置的代理部分填写 https://gateway.ai.cloudflare.com/v1/ACCOUNT_TAG/GATEWAY/openai 即可。 19. 支持丰富的自定义设置, 1. 支持自定义系统名称,logo 以及页脚。 2. 支持自定义首页和关于页面,可以选择使用 HTML & Markdown 代码进行自定义,或者使用一个单独的网页通过 iframe 嵌入。 20. 支持通过系统访问令牌调用管理 API,进而在无需二开的情况下扩展和自定义 One API 的功能,详情请参考此处 [API 文档](./docs/API.md)。。 21. 支持 Cloudflare Turnstile 用户校验。 22. 支持用户管理,支持多种用户登录注册方式: + 邮箱登录注册(支持注册邮箱白名单)以及通过邮箱进行密码重置。 + 支持使用飞书进行授权登录。 + GitHub 开放授权。 + 微信公众号授权(需要额外部署 WeChat Server)。 23. 支持主题切换,设置环境变量 THEME 即可,默认为 default,欢迎 PR 更多主题,具体参考[此处](./web/README.md)。 24. 配合 Message Pusher 可将报警信息推送到多种 App 上。

部署

基于 Docker 进行部署

# 使用 SQLite 的部署命令:
docker run --name one-api -d --restart always -p 3000:3000 -e TZ=Asia/Shanghai -v /home/ubuntu/data/one-api:/data justsong/one-api
# 使用 MySQL 的部署命令,在上面的基础上添加 `-e SQL_DSN="root:123456@tcp(localhost:3306)/oneapi"`,请自行修改数据库连接参数,不清楚如何修改请参见下面环境变量一节。
# 例如:
docker run --name one-api -d --restart always -p 3000:3000 -e SQL_DSN="root:123456@tcp(localhost:3306)/oneapi" -e TZ=Asia/Shanghai -v /home/ubuntu/data/one-api:/data justsong/one-api

其中,-p 3000:3000 中的第一个 3000 是宿主机的端口,可以根据需要进行修改。

数据和日志将会保存在宿主机的 /home/ubuntu/data/one-api 目录,请确保该目录存在且具有写入权限,或者更改为合适的目录。

如果启动失败,请添加 --privileged=true,具体参考 https://github.com/songquanpeng/one-api/issues/482 。

如果上面的镜像无法拉取,可以尝试使用 GitHub 的 Docker 镜像,将上面的 justsong/one-api 替换为 ghcr.io/songquanpeng/one-api 即可。

如果你的并发量较大,务必设置 SQL_DSN,详见下面[环境变量](#环境变量)一节。

更新命令:docker run --rm -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower -cR

Nginx 的参考配置:

server{
server_name openai.justsong.cn; # 请根据实际情况修改你的域名

location / {
client_max_body_size 64m;
proxy_http_version 1.1;
proxy_pass http://localhost:3000; # 请根据实际情况修改你的端口
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_cache_bypass $http_upgrade;
proxy_set_header Accept-Encoding gzip;
proxy_read_timeout 300s; # GPT-4 需要较长的超时时间,请自行调整
}
}

之后使用 Let's Encrypt 的 certbot 配置 HTTPS:

# Ubuntu 安装 certbot:
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
# 生成证书 & 修改 Nginx 配置
sudo certbot --nginx
# 根据指示进行操作
# 重启 Nginx
sudo service nginx restart

初始账号用户名为 root,密码为 123456

基于 Docker Compose 进行部署

> 仅启动方式不同,参数设置不变,请参考基于 Docker 部署部分

# 目前支持 MySQL 启动,数据存储在 ./data/mysql 文件夹内
docker-compose up -d

# 查看部署状态
docker-compose ps

手动部署

1. 从 GitHub Releases 下载可执行文件或者从源码编译:

git clone https://github.com/songquanpeng/one-api.git

# 构建前端
cd one-api/web/default
npm install
npm run build

# 构建后端
cd ../..
go mod download
go build -ldflags "-s -w" -o one-api

2. 运行:

chmod u+x one-api
./one-api --port 3000 --log-dir ./logs

3. 访问 http://localhost:3000/ 并登录。初始账号用户名为 root,密码为 123456

更加详细的部署教程参见此处

多机部署

1. 所有服务器 SESSION_SECRET 设置一样的值。 2. 必须设置 SQL_DSN,使用 MySQL 数据库而非 SQLite,所有服务器连接同一个数据库。 3. 所有从服务器必须设置 NODE_TYPEslave,不设置则默认为主服务器。 4. 设置 SYNC_FREQUENCY 后服务器将定期从数据库同步配置,在使用远程数据库的情况下,推荐设置该项并启用 Redis,无论主从。 5. 从服务器可以选择设置 FRONTEND_BASE_URL,以重定向页面请求到主服务器。 6. 从服务器上分别装好 Redis,设置好 REDIS_CONN_STRING,这样可以做到在缓存未过期的情况下数据库零访问,可以减少延迟。 7. 如果主服务器访问数据库延迟也比较高,则也需要启用 Redis,并设置 SYNC_FREQUENCY,以定期从数据库同步配置。…

Excerpt shown — open the source for the full document.

Notability

notability 1.0/10

Routine fork with minimal stars.