![chatnio](/app/public/logo.png) # [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) [![code-stats](https://stats.deeptrain.net/repo/Deeptrain-Community/chatnio)](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 ![landspace](/screenshot/landspace.png) ![feature](/screenshot/code.png) ![latex](/screenshot/latex.jpg) ![generation](/screenshot/generation.png) ![shop](/screenshot/shop.png) ![subscription](/screenshot/subscription.png) ![admin](/screenshot/admin.png) ![channel](/screenshot/channel.png) ![charge](/screenshot/charge.png) ## 🔨 配置 | 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 ![Contributors](https://stats.deeptrain.net/contributor/Deeptrain-Community/chatnio/?column=6&theme=light) ## 📚 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 提问题永远不是值得推荐的,同样适用于社区群中。 - 顺带一提,不要以一个非友好状态来提问,学会良好的提问是推荐的。我不推荐你认为你自己是高人一等的。