GithubHelp home page GithubHelp logo

Chat API

Note

本项目为开源项目,在One APINew API的基础上进行二次开发,感谢原作者的无私奉献。 使用者必须在遵循 OpenAI 的使用条款以及法律法规的情况下使用,不得用于非法用途。

Warning

本项目为个人学习使用,不保证稳定性,且不提供任何技术支持,使用者必须在遵循 OpenAI 的使用条款以及法律法规的情况下使用,不得用于非法用途。 根据《生成式人工智能服务管理暂行办法》的要求,请勿对**地区公众提供一切未经备案的生成式人工智能服务。

此分叉版本的主要变更

  1. 全新的UI界面,C端与管理端 (/admin)
  2. 支持在线支付按钮的启用关闭
  3. 支持模型按次数收费,可在 系统设置-运营设置 中设置
  4. 支持普通用户自行选择令牌按倍率、按次计费(倍率和按次全启用)
  5. 支持令牌分组,模型限制
  6. 支持WxPusher消息推送,在线充值通知
  7. 支持通知更换邮箱
  8. 支持渠道自启时间设置
  9. 支持渠道显示调用次数
  10. 支持显示新用户注册时间
  11. 支持自定义渠道测试模型
  12. 管理员日志增加详细(接收与回复内容)
  13. 支持自定义网站描述(TG网站预览)
  14. 支持数据面板统计
  15. 支持新用户设置默认分组
  16. 支持充值用户设置默认分组(充值后自动切换)
  17. 支持邀请用户充值返利(后台设置返利百分比。最低提现额度)
  18. 支持设置普号渠道每分钟限制使用3次
  19. 支持渠道显示可用模型,可自定义排序
  20. 支持gpt-4v通用格式(添加模型gpt-4-vision,对话中放入图像链接即可)
  21. 支持按日期设置充值不同倍率

部署

基于 Docker 进行部署

# 使用 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 Compose 进行部署

仅启动方式不同,参数设置不变,请参考基于 Docker 部署部分修改docker-compose.yml文件内容

# 执行
docker-compose up -d

# 查看部署状态
docker-compose ps

手动部署

  1. 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
  2. 运行:

    chmod u+x chat-api
    .env //设置环境变量 放在同一目录下
    ./chat-api --port 3000 --log-dir ./logs
  3. 访问 http://localhost:3000/ 并登录。初始账号用户名为 root,密码为 123456

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

环境变量

  1. REDIS_CONN_STRING:设置之后将使用 Redis 作为缓存使用。
    • 例子:REDIS_CONN_STRING=redis://default:redispw@localhost:49153
    • 如果数据库访问延迟很低,没有必要启用 Redis,启用后反而会出现数据滞后的问题。
  2. SESSION_SECRET:设置之后将使用固定的会话密钥,这样系统重新启动后已登录用户的 cookie 将依旧有效。
    • 例子:SESSION_SECRET=random_string
  3. 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,单位分钟。
  4. FRONTEND_BASE_URL:设置之后将重定向页面请求到指定的地址,仅限从服务器设置。
    • 例子:FRONTEND_BASE_URL=https://openai.justsong.cn
  5. MEMORY_CACHE_ENABLED:启用内存缓存,会导致用户额度的更新存在一定的延迟,可选值为 truefalse,未设置则默认为 false
    • 例子:MEMORY_CACHE_ENABLED=true
  6. SYNC_FREQUENCY:在启用缓存的情况下与数据库同步配置的频率,单位为秒,默认为 600 秒。
    • 例子:SYNC_FREQUENCY=60
  7. NODE_TYPE:设置之后将指定节点类型,可选值为 masterslave,未设置则默认为 master
    • 例子:NODE_TYPE=slave
  8. CHANNEL_UPDATE_FREQUENCY:设置之后将定期更新渠道余额,单位为分钟,未设置则不进行更新。
    • 例子:CHANNEL_UPDATE_FREQUENCY=1440
  9. CHANNEL_TEST_FREQUENCY:设置之后将定期检查渠道,单位为分钟,未设置则不进行检查。
    • 例子:CHANNEL_TEST_FREQUENCY=1440
  10. POLLING_INTERVAL:批量更新渠道余额以及测试可用性时的请求间隔,单位为秒,默认无间隔。
    • 例子:POLLING_INTERVAL=5
  11. BATCH_UPDATE_ENABLED:启用数据库批量更新聚合,会导致用户额度的更新存在一定的延迟可选值为 truefalse,未设置则默认为 false
    • 例子:BATCH_UPDATE_ENABLED=true
    • 如果你遇到了数据库连接数过多的问题,可以尝试启用该选项。
  12. BATCH_UPDATE_INTERVAL=5:批量更新聚合的时间间隔,单位为秒,默认为 5
    • 例子:BATCH_UPDATE_INTERVAL=5
  13. 请求频率限制:
    • GLOBAL_API_RATE_LIMIT:全局 API 速率限制(除中继请求外),单 ip 三分钟内的最大请求数,默认为 180
    • GLOBAL_WEB_RATE_LIMIT:全局 Web 速率限制,单 ip 三分钟内的最大请求数,默认为 60
  14. 编码器缓存设置:
    • TIKTOKEN_CACHE_DIR:默认程序启动时会联网下载一些通用的词元的编码,如:gpt-3.5-turbo,在一些网络环境不稳定,或者离线情况,可能会导致启动有问题,可以配置此目录缓存数据,可迁移到离线环境。
    • DATA_GYM_CACHE_DIR:目前该配置作用与 TIKTOKEN_CACHE_DIR 一致,但是优先级没有它高。
  15. RELAY_TIMEOUT:中继超时设置,单位为秒,默认不设置超时时间。
  16. SQLITE_BUSY_TIMEOUT:SQLite 锁等待超时设置,单位为毫秒,默认 3000

界面截图

image

image

image

image image

image image image

赞助

如果觉得这个软件对你有所帮助,欢迎请作者喝可乐、喝咖啡~

wocnzco's Projects

99ai icon 99ai

99AI 稳定版:基于 NineAI 二开的可商业化 AI Web 应用(免授权,无后门,支持快速部署)。目标 ALL-IN-CHAT

chatgpt-web icon chatgpt-web

A cross-platform ChatGPT/Gemini UI (Web / PWA / Linux / Win / MacOS). 一键拥有你自己的跨平台 ChatGPT/Gemini 应用。

chatnewapi icon chatnewapi

基于One API与New API的基础上进行二次开发

chatnio icon chatnio

🚀 Next Generation AI One-Stop Internationalization Solution. 🚀 下一代 AI 一站式 B/C 端解决方案,支持 OpenAI,Midjourney,Claude,讯飞星火,Stable Diffusion,DALL·E,ChatGLM,通义千问,腾讯混元,360 智脑,百川 AI,火山方舟,新必应,Gemini,Moonshot 等模型,支持对话分享,自定义预设,云端同步,模型市场,支持弹性计费和订阅计划模式,支持图片解析,支持联网搜索,支持模型缓存,丰富美观的后台管理与仪表盘数据统计。

gpt4free icon gpt4free

The official gpt4free repository | various collection of powerful language models

gpt4free-ts icon gpt4free-ts

Providing a free OpenAI GPT-4 API ! This is a replication project for the typescript version of xtekky/gpt4free

gzm-design icon gzm-design

🚀🚀🚀一款漂亮易用的在线设计器,支持PSD导入、PSD解析,可用于海报设计器、广告设计器、logo设计器、AI创作图片合成器等。常用于生成二维码海报,图片海报,二维码推广海报,图片处理,名片设计,电商产品图,节假日海报等。http://gzm-design.guozimi.cn/#/editor

new-api icon new-api

基于One API的二次开发版本,仅供个人管理渠道使用,请勿用于商业API分发!

one-api icon one-api

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.

vercel-api-proxy icon vercel-api-proxy

vercel反向代理。完全免费,万能代理,可代理全网一切接口,包括openai、github、google、Telegram、全面代理ai项目一键安装

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.