OneApi使用

目录

1、OneApi

2、OneApi本地构建

2.1、安装Go

2.1.1、Windows安装

2.1.2、Mac安装

2.2、Go国内镜像加速

3、服务器部署

4、本地docker部署

5、本地部署(非docker,可进行二次开发)

6、导出container和导入container

7、环境变量

8、One-api 启动命令

1、OneApi

OneApi是一个方便管理和分发 API 密钥的工具,它支持多个常用的 LLMs 服务,用户可以轻松管理多个LLMs服务的密钥,并进行二次分发管理。

Github地址:https://github.com/songquanpeng/one-api

2、OneApi本地构建

# 从 GitHub Releases 下载可执行文件或者从源码编译:
git clone https://github.com/songquanpeng/one-api.git
 
# 构建前端cd one-api/web/default
# 前端技术:react
npm install
npm run build
 
# 构建后端cd ..
# 后端技术:go
go mod download
go build -ldflags "-s -w" -o one-api
 
# 运行
chmod u+x one-api
./one-api --port 3000 --log-dir ./logs
 
# 访问 http://localhost:3000/ 并登录。初始账号用户名为 root,密码为 123456。
2.1、安装Go
2.1.1、Windows安装
1.下载 Go 的 MSI 安装程序,选择适用于您系统架构的版本(32 位或 64 位):https://go.dev/dl/
2.运行 MSI 安装程序并按照提示进行安装。
3.配置环境变量。将 Go 的安装路径添加到系统的 PATH 环境变量中。通常,默认安装路径是 C:\Go。
4.打开命令提示符(Command Prompt)或 PowerShell,运行以下命令验证安装是否成功
go version
2.1.2、Mac安装
1.下载 Go 的 PKG 安装程序,选择适用于您系统架构的版本(32 位或 64 位):https://go.dev/dl/
2.运行 PKG安装程序并按照提示进行安装。
3.配置环境变量。将以下内容添加到您的 ~/.bash_profile 或 ~/.zshrc 文件中:
export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
4.运行以下命令使更改生效:
source ~/.bash_profile
5.或者
source ~/.zshrc
6.打开命令提示符(Command Prompt)或 PowerShell,运行以下命令验证安装是否成功:
go version
2.2、Go国内镜像加速
需要运行下面命令或可以把以下命令写到 .bashrc 或 .bash_profile 文件中
 
# 启用 Go Modules 功能
go env -w GO111MODULE=on
  
# 配置 GOPROXY 环境变量,以下三选一
  
# 1. 七牛 CDN
go env -w  GOPROXY=https://goproxy.cn,direct
  
# 2. 阿里云
go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct
  
# 3. 官方
go env -w  GOPROXY=https://goproxy.io,direct
 
查看当前环境变量配置
go env | grep GOPROXY

3、服务器部署

# 本地进入one-api项目
# 在Dockerfile文件所在的根目录构建镜像包
docker build -f Dockerfile -t one-api .
 
#将镜像包转换成tar归档文件
docker save one-api > one-api.tar
​
# 同时上传一个本地根目录下的docker-compose.yml(环境变量)文件到服务器项目的根目录下
 
# 服务器操作:
# 进入到镜像包所在目录,加载导入镜像(自建目录)
cd /data/project/one-api/
docker load -i one-api.tar
 
# 因为是内网环境,需要导入mysql镜像包、reids镜像包以
# 同时也需要从外网下载token计数包,这个可以通过导出container,可查看目录(导出container和导入container)
 
# 启动容器
docker start 【container name | container id】
# 需要从容器内部退出 按下 ctrl+p  再按 ctrl+q  退出容器,不会停止容器
# 第一次启动不一样,后续启动可以使用:
docker-compose up -d
# 查看部署状态
docker-compose ps

4、本地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,具体参考 #482 。
# 如果上面的镜像无法拉取,可以尝试使用 GitHub 的 Docker 镜像,将上面的 justsong/one-api 替换为 ghcr.io/songquanpeng/one-api 即可。
# 如果你的并发量较大,务必设置 SQL_DSN
 
基于 Docker Compose 进行部署
# 目前支持 MySQL 启动,数据存储在 ./data/mysql 文件夹内
docker-compose up -d
 
# 查看部署状态
docker-compose ps

5、本地部署(非docker,可进行二次开发)

# 从 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
 
# 运行
chmod u+x one-api
./one-api --port 3000 --log-dir ./logs
 
# 访问 http://localhost:3000/ 并登录。初始账号用户名为 root,密码为 123456。

6、导出container和导入container

# 1.查看正在运行的容器:
docker ps
# 记下你要导出的容器的 CONTAINER ID。
 
# 2.使用 docker export 导出容器:
# 使用以下命令将容器导出到一个 tar 归档文件:
docker export CONTAINER_ID > container_export.tar
# 将 CONTAINER_ID 替换为你要导出的容器的实际 ID。
 
# 3.复制 tar 归档文件到另一台机器或位置:
# 将 container_export.tar 文件复制到需要导入容器的地方,可以使用 SCP、FTP 或其他文件传输工具。
 
# 4.在另一台机器上导入容器:
# 在另一台机器上,可以使用 docker import 命令导入容器:
docker import container_export.tar new_image_name:tag
# 将 container_export.tar 替换为你复制的 tar 归档文件的路径,new_image_name:tag 是你为导入的容器设置的新的镜像名称和标签。
docker import container_export.tar my_exported_container:latest
# 在这个例子中,容器将被导入并创建一个名为 my_exported_container 的新镜像,标签为 latest。
 
# 5.检查导入的容器:
# 使用 docker images 命令检查新导入的容器:
docker images
# 确保新创建的镜像在列表中。
# 请注意,docker export 不包括容器的元数据和历史记录,仅包含文件系统快照。这意味着导入的容器不会保留原始容器的一些信息。如果你需要保留这些信息,可以考虑使用 Docker 镜像和 Docker 镜像仓库进行导入和导出。

7、环境变量

REDIS_CONN_STRING:设置之后将使用 Redis 作为缓存使用。
例子:REDIS_CONN_STRING=redis://default:redispw@localhost:49153
如果数据库访问延迟很低,没有必要启用 Redis,启用后反而会出现数据滞后的问题。
 
 
SESSION_SECRET:设置之后将使用固定的会话密钥,这样系统重新启动后已登录用户的 cookie 将依旧有效。
例子:SESSION_SECRET=random_string
 
 
SQL_DSN:设置之后将使用指定数据库而非 SQLite,请使用 MySQL 或 PostgreSQL。
例子:
MySQL:SQL_DSN=root:123456@tcp(localhost:3306)/oneapi
PostgreSQL:SQL_DSN=postgres://postgres:123456@localhost:5432/oneapi
​
注意需要提前建立数据库 oneapi,无需手动建表,程序将自动建表。
如果使用本地数据库:部署命令可添加 --network="host" 以使得容器内的程序可以访问到宿主机上的 MySQL。
如果使用云数据库:如果云服务器需要验证身份,需要在连接参数中添加 ?tls=skip-verify。
请根据你的数据库配置修改下列参数(或者保持默认值):
SQL_MAX_IDLE_CONNS:最大空闲连接数,默认为 100。
SQL_MAX_OPEN_CONNS:最大打开连接数,默认为 1000。
如果报错 Error 1040: Too many connections,请适当减小该值。
 
SQL_CONN_MAX_LIFETIME:连接的最大生命周期,默认为 60,单位分钟。
 
FRONTEND_BASE_URL:设置之后将重定向页面请求到指定的地址,仅限从服务器设置。
例子:FRONTEND_BASE_URL=https://openai.justsong.cn
 
MEMORY_CACHE_ENABLED:启用内存缓存,会导致用户额度的更新存在一定的延迟,可选值为 true 和 false,未设置则默认为 false。
例子:MEMORY_CACHE_ENABLED=true
 
SYNC_FREQUENCY:在启用缓存的情况下与数据库同步配置的频率,单位为秒,默认为 600 秒。
例子:SYNC_FREQUENCY=60
 
NODE_TYPE:设置之后将指定节点类型,可选值为 master 和 slave,未设置则默认为 master。
例子:NODE_TYPE=slave
  
CHANNEL_UPDATE_FREQUENCY:设置之后将定期更新渠道余额,单位为分钟,未设置则不进行更新。
例子:CHANNEL_UPDATE_FREQUENCY=1440
 
CHANNEL_TEST_FREQUENCY:设置之后将定期检查渠道,单位为分钟,未设置则不进行检查。
例子:CHANNEL_TEST_FREQUENCY=1440
 
POLLING_INTERVAL:批量更新渠道余额以及测试可用性时的请求间隔,单位为秒,默认无间隔。
例子:POLLING_INTERVAL=5
​
BATCH_UPDATE_ENABLED:启用数据库批量更新聚合,会导致用户额度的更新存在一定的延迟可选值为 true 和 false,未设置则默认为 false。
例子:BATCH_UPDATE_ENABLED=true
如果你遇到了数据库连接数过多的问题,可以尝试启用该选项。
 
BATCH_UPDATE_INTERVAL=5:批量更新聚合的时间间隔,单位为秒,默认为 5。
例子:BATCH_UPDATE_INTERVAL=5
 
请求频率限制:
GLOBAL_API_RATE_LIMIT:全局 API 速率限制(除中继请求外),单 ip 三分钟内的最大请求数,默认为 180。
GLOBAL_WEB_RATE_LIMIT:全局 Web 速率限制,单 ip 三分钟内的最大请求数,默认为 60。
 
编码器缓存设置:
TIKTOKEN_CACHE_DIR:默认程序启动时会联网下载一些通用的词元的编码,如:gpt-3.5-turbo,在一些网络环境不稳定,或者离线情况,可能会导致启动有问题,可以配置此目录缓存数据,可迁移到离线环境。
DATA_GYM_CACHE_DIR:目前该配置作用与 TIKTOKEN_CACHE_DIR 一致,但是优先级没有它高。
 
RELAY_TIMEOUT:中继超时设置,单位为秒,默认不设置超时时间。
SQLITE_BUSY_TIMEOUT:SQLite 锁等待超时设置,单位为毫秒,默认 3000。
GEMINI_SAFETY_SETTING:Gemini 的安全设置,默认 BLOCK_NONE。

8、One-api 启动命令

docker run --name one-api111 -d \
 --restart always -p 3020:3000 -e TZ=Asia/Shanghai \
 -v /data/project/one-api/one-api-data:/data \
 IP地址/justsong/one-api:v0.6.5-2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值