[!NOTE] 本项目为开源项目,在One API与New API的基础上进行二次开发,感谢原作者的无私奉献。 使用者必须在遵循 OpenAI 的使用条款以及法律法规的情况下使用,不得用于非法用途。
[!WARNING] 本项目为个人学习使用,不保证稳定性,且不提供任何技术支持,使用者必须在遵循 OpenAI 的使用条款以及法律法规的情况下使用,不得用于非法用途。 根据《生成式人工智能服务管理暂行办法》的要求,请勿对中国地区公众提供一切未经备案的生成式人工智能服务。
# 使用 SQLite 的部署命令:
docker run --name chat-api -d --restart always -p 3000:3000 -e TZ=Asia/Shanghai ai365/chat-api:latest
# 使用 MySQL 的部署命令,在上面的基础上添加 `-e SQL_DSN="root:123456@tcp(localhost:3306)/oneapi"`,请自行修改数据库连接参数。
# 例如:
docker run --name chat-api -d --restart always -p 3000:3000 -e SQL_DSN="root:123456@tcp(localhost:3306)/oneapi" -e TZ=Asia/Shanghai ai365/chat-api:latest
仅启动方式不同,参数设置不变,请参考基于 Docker 部署部分修改docker-compose.yml文件内容
# 执行
docker-compose up -d
# 查看部署状态
docker-compose ps
从 GitHub Releases 下载可执行文件或者从源码编译:
git clone https://github.com/ai365vip/chat-api.git
# 构建前端(管理端)
cd chat-api/web-admin
npm install
npm run build
# 构建前端(C端)
cd ..
cd web-user
npm install
npm run build
# 构建后端
cd ..
go mod download
go build -ldflags "-s -w" -o chat-api
运行:
chmod u+x chat-api
.env //设置环境变量 放在同一目录下
./chat-api --port 3000 --log-dir ./logs
root
,密码为 123456
。root
,密码为 123456
。REDIS_CONN_STRING
:设置之后将使用 Redis 作为缓存使用。
REDIS_CONN_STRING=redis://default:redispw@localhost:49153
SESSION_SECRET
:设置之后将使用固定的会话密钥,这样系统重新启动后已登录用户的 cookie 将依旧有效。
SESSION_SECRET=random_string
SQL_DSN
:设置之后将使用指定数据库而非 SQLite,请使用 MySQL 或 PostgreSQL。
SQL_DSN=root:123456@tcp(localhost:3306)/oneapi
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
。
如果觉得这个软件对你有所帮助,欢迎请作者喝可乐、喝咖啡~
<img
src="https://github.com/ai365vip/chat-api/assets/154959065/bf2d09f4-4569-481c-9328-754a4bc9f67c" width="250">