
# [Chat Nio](https://chatnio.net)
🚀 强大精美的 **AI聚合** 聊天平台
🚀 Powerful and beautiful **AI Aggregation** chat platform
[官网](https://chatnio.net) | [开放文档](https://docs.chatnio.net) | [SDKs](https://docs.chatnio.net/kuai-su-kai-shi) | [QQ 群](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=1mv1Y8SyxnQVvQCoqhmIgVTbwQmkNmvQ&authKey=5KUA9nJPR29nQwjbsYNknN2Fj6cKePkRes%2B1QZy84Dr4GHYVzcvb0yklxiMMNVJN&noverify=0&group_code=749482576)
[](https://stats.deeptrain.net)
## 📝 功能 | Features
1. ✨ **AI 联网功能**
- ✨ **AI online searching service**
2. ⚡ 多账户均衡负载
- ⚡ Multi-account load balancing
3. 🎉 HTTP2 Stream 实时响应功能
- 🎉 HTTP2 Stream real-time response function
4. 🚀 节流和鉴权体系
- 🚀 Throttling and authentication system
5. 🌈 丰富的聊天功能 (代码高亮,latex支持,卡片生成,右键菜单)
- 🌈 Rich chat features (code highlight, latex support, card generation, right-click menu)
6. 🎨 多端适配
- 🎨 Multi-device adaptation
7. 📦 缓存系统
- 📦 Cache system
8. 🎈 对话记忆功能
- 🎈 Conversation memorization
9. 👋 对话分享
- 👋 Conversation sharing
10. 🎁 图片生成功能
- 🎁 Image generation
11. 🔔 PWA 应用
- 🔔 PWA application
12. 📚 逆向工程模型支持
- 📚 Reverse engineering model support
13. 🌏 国际化支持
- 🌏 Internationalization support
- 🇨🇳 简体中文
- 🇺🇸 English
- 🇷🇺 Русский
14. 🍎 主题切换
- 🍎 Theme switching
15. 🥪 Key 中转服务
- 🥪 Key relay service
16. 🔨 多模型支持
- 🔨 Multi-model support
17. ⚙ 后台管理系统 (仪表盘,用户管理,公告管理等)
- ⚙ Admin system (dashboard, user management, announcement management, etc.)
18. ⚒ 渠道管理 (多账号均衡负载,优先级调配,权重负载,模型映射,渠道状态管理)
- ⚒ Channel management (multi-account load balancing, priority allocation, weight load, model mapping, channel status management)
19. ⚡ 计费系统 (支持匿名计费,按次数计费,Token 弹性计费等方式)
- ⚡ Billing system (support anonymous billing, billing by number of times, Token billing, etc.)
20. 📂 文件上传功能 (支持 pdf, docx, pptx, xlsx, 音频, 图片等)
- 📂 File upload function (support pdf, docx, pptx, xlsx, audio, images, etc.)
21. 🥪 All in one (支持 smtp 发件,用户管理等功能)
- 🥪 All in one (supports smtp sending, user management, etc.)
## 🔨 模型 | Models
- [x] OpenAI ChatGPT (GPT-3.5, GPT-4, Instruct, DALL-E 2, DALL-E 3, ...)
- [x] Azure OpenAI
- [x] Anthropic Claude (claude-2, claude-instant)
- [x] Slack Claude (deprecated)
- [x] Sparkdesk (v1.5, v2, v3)
- [x] Google Gemini (PaLM2)
- [x] New Bing (creative, balanced, precise)
- [x] ChatGLM (turbo, pro, std, lite)
- [x] DashScope Tongyi (plus, turbo)
- [x] Midjourney (relax, fast, turbo)
- [x] Stable Diffusion XL
- [x] Tencent Hunyuan
- [x] Baichuan AI
- [x] Douyin Skylark (lite, plus, pro, chat)
- [x] 360 GPT
- [x] LocalAI (RWKV, LLaMa 2, Baichuan 7b, Mixtral, ...) _*requires local deployment_
## 📦 部署 | Deploy
*部署成功后,管理员账号为 `root`,密码默认为 `chatnio123456`*
1. ⚡ Docker Compose 安装 (推荐)
> 运行成功后,宿主机映射地址为 `http://localhost:8000`,使用 Nginx / Apache 进行反代是一个不错的选择(以及 SSL 配置)
```shell
git clone https://github.com/Deeptrain-Community/chatnio.git
cd chatnio # project directory
docker-compose up -d # start service in background
```
版本更新:
```shell
docker-compose down
docker-compose pull # pull latest image
docker-compose up -d # start service in background
```
> - MySQL 数据库挂载目录项目 ~/**db**
> - Redis 数据库挂载目录项目 ~/**redis**
> - 配置文件挂载目录项目 ~/**config**
2. ⚡ Docker 安装 (轻量运行时, 常用于外置 _MYSQL/RDS_ 服务)
> **使用本地 MySQL 等服务时需加入 -`--network host`使 docker 可使用本地网络**
```shell
docker run -d --name chatnio \
-p 8000:8094 \
-v ~/config:/config \
-v ~/logs:/logs \
-e MYSQL_HOST= \
-e MYSQL_PORT=3306 \
-e MYSQL_DATABASE=chatnio \
-e MYSQL_USER= \
-e MYSQL_PASSWORD= \
-e REDIS_HOST= \
-e REDIS_PORT=6379 \
-e SECRET= \
-e SERVE_STATIC=true \
programzmh/chatnio:latest
```
> - *-p 8000:8094* 指映射宿主机端口为 8000,可自行修改冒号前的端口号
> - MYSQL_HOST: MySQL 数据库地址
> - MYSQL_PORT: MySQL 数据库端口
> - MYSQL_DATABASE: MySQL 数据库名称
> - MYSQL_USER: MySQL 数据库用户名
> - MYSQL_PASSWORD: MySQL 数据库密码
> - REDIS_HOST: Redis 数据库地址
> - REDIS_PORT: Redis 数据库端口
> - SECRET: JWT 密钥,自行生成随机字符串修改即可
> - SERVE_STATIC: 是否启用静态文件服务 (仅在前后端分离部署时,如 https://chatnio.net 后端部署为 https://api.chatnio.net 的情况才需关闭静态文件服务,默认情况下api地址为 **/api**,如需修改,请自行修改)
> - *-v ~/config:/config* 指挂载至宿主机配置文件目录为 ~/config,可自行修改冒号前的目录进行挂载
> - *-v ~/logs:/logs* 指挂载至宿主机日志目录为 ~/logs,可自行修改冒号前的目录进行挂载
版本更新(执行后按照上述步骤重新运行即可):
```shell
docker stop chatnio
docker rm chatnio
docker pull programzmh/chatnio:latest
```
3. ⚒ 编译安装 (自定义性强)
```shell
git clone https://github.com/Deeptrain-Community/chatnio.git
cd chatnio # project directory
go build -o chatnio # build backend
nohup ./chatnio > output.log & # run backend
cd app # frontend directory (~/app)
npm install -g pnpm # install pnpm
pnpm install # install frontend dependencies
pnpm build # build frontend
# run frontend
# a common way is to use nginx/apache to serve the static files
```
## 📚 预览 | Screenshots









## 🔨 配置 | Config
> Config 配置项可以使用环境变量进行覆盖,如 `MYSQL_HOST` 环境变量可覆盖 `mysql.host` 配置项
~/config/**config.yaml**
```yaml
mysql:
db: chatnio
host: localhost
password: chatnio123456
port: 3306
user: root
redis:
host: localhost
port: 6379
secret: SbitdyN5ZH39cNxSrG3kMNZ1GfiyyQ43 # jwt secret
auth:
use_deeptrain: false
server:
port: 8094
system:
general:
backend: ""
mail:
host: ""
port: 465
username: ""
password: ""
from: ""
search:
endpoint: https://duckduckgo-api.vercel.app
query: 5
serve_static: false # serve static files (false if only using backend)
```
## 📚 开发文档 | Docs
[开发文档](https://docs.chatnio.net)
## ⚡ Key 中转服务 | Key Relay Service
- 支持多模型兼容层,这意味着你可以使用一次代码,同时兼容多家 AI 模型
- Support multi-model compatible layer, which means you can use one code to be compatible with multiple AI models at the same time
- 支持多账户均衡负载,高并发
- Support multi-account load balancing, high concurrency
将 `https://api.openai.com` 替换为 `https://api.chatnio.net`,填入控制台中的 `API 设置` 中的 API Key 即可使用
Replace `https://api.openai.com` with `https://api.chatnio.net` and fill in the API Key in the `API Settings` in the console to use
## 📦 技术栈 | Tech Stack
- 前端: React + Radix UI + Tailwind CSS + Redux
- 后端: Golang + Gin + Redis + MySQL + Tiktoken (OpenAI)
- 应用技术: PWA + HTTP2 + WebSocket + Stream Buffer
## 🎃 贡献者 | Contributors

## 📚 SDKs
- [JavaScript SDK](https://github.com/Deeptrain-Community/chatnio-api-node)
- [Python SDK](https://github.com/Deeptrain-Community/chatnio-api-python)
- [Golang SDK](https://github.com/Deeptrain-Community/chatnio-api-go)
- [Java SDK](https://github.com/hujiayucc/ChatNio-SDK-Java) (感谢 [@hujiayucc](https://github.com/hujiayucc))
## ✨ 其他项目 | Other Projects
- [Fyrrum Start](https://fystart.com)
- [ChatNio Next Web](https://nextweb.chatnio.net)
## 📄 开源协议 | License
Apache License 2.0
## ❤ 捐助 | Sponsor
[@4EvEr](https://github.com/3081394176) ¥1000
- [晞云 LightXi](https://open.lightxi.com) 提供字体 CDN 支持
- [BootCDN](https://bootcdn.cn) 和 [Static File](https://staticfile.org) 提供资源 CDN 支持
## 写在最后
Chat Nio 方向更多是提供一站式服务:
- 不会考虑前端自定义 Endpoint (考虑到 token 的安全性),不会考虑脱离后端纯前端运行来支持 Vercel / Netify 一键部署,如追求轻量化部署请前往 [Next Web](https://github.com/Yidadaa/ChatGPT-Next-Web) / [Chat Box](https://github.com/Bin-Huang/chatbox) 等优秀的开源项目, Chat Nio 相较于轻量化的优势在于更便捷的跨设备同步,仅需登录账户就可同步设置 / 对话等功能,以及平台内置的功能。然而仍然可以通过 Key 中转来使用此类项目。
- 不会考虑支持 Midjourney Proxy 中转回调等其他一众格式的中转,如仅需搭建中转服务请右转 [One API](https://github.com/songquanpeng/one-api) 等项目即使在其项目架构和代码并非 *"最佳方案"* 的情况下,我仍然推荐你使用其服务进行中转,毕竟活跃的开发者们和社区,以及项目的方向性和针对性,经过时间考验是值得推荐的成熟的方案。 Chat Nio 的中转偏向 **Chat**,带来的好处是你可以无需自行兼容代码在 nextweb 等项目中直接使用该格式,如 GPT 4 Vision Preview(仅需在消息中复制 URL 即可),DALL-E,Midjourney 类等模型可直接使用聊天接口,依托于 Chat Nio 的 Adapter 层设计,可进行方便使用而无需自行兼容格式。
- 还有一点需要注意的是,正如上文所说,我后期在时间不宽裕的情况下不会去考虑支持非导向为 Chat 的 Fine Tuning / Embeddings 等微调类模型,请右转。在 issue 里被我忽略或者关闭请不要不满。作为中学生(无他意,我不喜欢打年龄牌),我的时间有限,如果我不认为你的建议是值得去实现的,我不会去浪费时间。同时,不看文档提问题,不看相同 issue 提问题永远不是值得推荐的,同样适用于社区群中。
- 顺带一提,不要以一个非友好状态来提问,学会良好的提问是推荐的。我不推荐你认为你自己是高人一等的。