📝 功能介绍
- ✨ AI 聊天会话
- 丰富的格式兼容性
- 支持视觉模型,包括直接上传图片和图片直链或Base64图片输入功能(如GPT-4 Vision预览版、Gemini Pro Vision等)
- 支持使用DALL-E模型进行绘图
- 支持Midjourney / Niji模型的想象 / 升级 / 变体 / 重做操作
- Markdown支持 / 主题切换支持,支持明暗模式、代码高亮、Mermaid、LaTeX公式、表格、进度条、虚拟消息等。
- 消息菜单支持,包括重新回答、复制消息、使用消息、编辑消息、删除消息、保存为文件等操作...
- 多平台适配支持,支持PWA应用程序、桌面平台(桌面端基于Tauri)。
- 对话记忆,云同步,原生支持站点对话的直链分享,支持使用共享对话,将共享对话保存为图片,并进行分享管理(包括查看、删除分享等)。
- 原生支持全模型文件解析,支持pdf、docx、pptx、xlsx、图片等格式的解析(更多详情见项目chatnio-blob-service)。
- 支持全模型DuckDuckGo在线搜索_(详情参考duckduckgo-api项目,需要自行搭建并在系统设置中的网络设置中配置,感谢作者@binjie09,通过在中继api模型前加前缀**web-**启用网络搜索。)_
- 全屏大文本编辑,支持纯文本编辑、编辑预览模式、纯预览模式三种模式切换。
- 模型市场,支持模型搜索,支持顺序拖放,包括模型名称、模型描述、模型标签、模型头像、模型价格的自动绑定、订阅配额的自动绑定(订阅包含的模型将带有plus标签)。
- 预设支持,支持自定义预设和云同步功能,支持预设克隆、预设头像设置、预设介绍设置
- 站点公告支持 支持站点公告和通知
- 偏好设置支持,i18n多语言支持,自定义会话最大携带数、自定义最大回复令牌数、模型参数自定义、重置设置等。
- 国际化支持,支持多语言切换
- 附加功能(附加功能的用户组权限可通过后台系统设置开启和关闭)
- [已停用] 🍎 AI项目生成器功能,支持查看生成过程,支持TAR / ZIP格式下载*(基于预设,可能不稳定)*
- [已停用] 📂 批量文章生成功能,支持进度条,一键生成TAR / ZIP格式下载的DOCX文档*(需要生成数量高于上游模型的最高并发数)*
- [已弃用] 🥪 AI卡片功能(已弃用),AI问答以卡片形式展示,可以通过图片url直接嵌入。(基于动态SVG生成)
- 丰富的格式兼容性
- 🔔 丰富的管理系统
- 丰富美观的仪表盘,包括当天和当月的记账信息、订阅用户、模型使用统计折线图、饼图、收入统计、用户类型统计、模型使用统计、请求次数和模型错误次数统计图等。
- 支持用户管理,用户列表、用户详情、管理操作(更改密码、更改邮箱、封禁/解封用户、设为管理员、积分变动、积分设置、订阅管理、订阅等级设置、解除订阅等)。
- 支持礼品码和兑换码管理 支持管理操作,支持批量生成并保存到文件。
- 价格设置,支持模型价格设置(次数计费、令牌灵活计费、_不计费_等),支持同步上游Chat Nio站点的价格设置(可选是否覆盖本站现有模型的价格规则),未设置价格模型检测(如果非管理员将自动检测并停止使用模型以防止损失)。 !
- 订阅设置,不同于灵活计费,订阅是一种按时间固定价格计费的方式,平台用户可以通过套餐以固定价格订阅,支持是否启用订阅(默认关闭),支持订阅分级,支持订阅配额设置,支持订阅配额覆盖模型设置、图标设置、其他套餐导入配额等功能。 !
- 自定义模型市场,编辑前端模型市场的模型名称、描述、标签、头像(内置模型图片选择和自定义模型图片设置)、是否添加模型模型等信息!
- **系统
🔨 支持的模型
- OpenAI
- Chat 完成 (支持 视觉、工具调用 和 函数调用)
- 图像生成
- Azure OpenAI
- Anthropic Claude (支持 视觉)
- Slack Claude (已弃用)
- Sparkdesk (支持 函数调用)
- Google Gemini (PaLM2)
- 新必应 (创意、平衡、精确)
- ChatGLM (turbo, pro, std, lite)
- DashScope 通义 (plus, turbo)
- Midjourney
- 模式切换 (relax, fast, turbo)
- 支持 U/V/R 操作
- 腾讯混元
- 百川 AI
- Moonshot AI
- Groq Cloud AI
- 字节跳动 Skylark (支持 函数调用)
- 360 GPT
- LocalAI (Stable Diffusion, RWKV, LLaMa 2, 百川 7b, Mixtral, ...) *需要本地部署
📦 部署
部署成功后,管理员账号为 root
,默认密码为 chatnio123456
-
✨ Zeabur (一键部署)
Zeabur 提供一定额度的免费积分,允许在非付费区域进行一键部署,并且支持通过订阅计划和按使用付费选项进行灵活扩展。
- 点击
部署
开始部署过程,输入您希望绑定的域名,等待部署完成。 - 部署完成后,访问您的域名,并使用用户名
root
和密码chatnio123456
登录管理面板。请按照 chatnio 后台的提示,及时修改密码。
- 点击
-
⚡ 使用 Docker Compose 安装 (推荐)
操作成功后主机映射地址为
http://localhost:8000
。git clone --depth=1 --branch=main --single-branch https://github.com/Deeptrain-Community/chatnio.git cd chatnio docker-compose up -d # 启动服务 # 如果要使用稳定版本,请使用 `docker-compose -f docker-compose.stable.yaml up -d`。 # 如果要启用 Watchtower 自动更新,请使用 `docker-compose -f docker-compose.watch.yaml up -d`。
版本更新 (启用 Watchtower 自动更新后,无需手动更新):
docker-compose down docker-compose pull docker-compose up -d
- MySQL 数据库挂载目录:~/db
- Redis 数据库挂载目录:~/redis
- 配置文件挂载目录:~/config
-
⚡ Docker 安装 (在轻量运行时,通常使用外部 Mysql/RDS 服务)
操作成功后主机映射地址为
http://localhost:8094
。如需使用稳定版本,请使用programzmh/chatnio:stable
,而非programzmh/chatnio:latest
。docker run -d --name chatnio \ --network host \ -v ~/config:/config \ -v ~/logs:/logs \ -v ~/storage:/storage \ -e MYSQL_HOST=localhost \ -e MYSQL_PORT=3306 \ -e MYSQL_DB=chatnio \ -e MYSQL_USER=root \ -e MYSQL_PASSWORD=chatnio123456 \ -e REDIS_HOST=localhost \ -e REDIS_PORT=6379 \ -e SECRET=secret \ -e SERVE_STATIC=true \ programzmh/chatnio:latest
- --network host 将容器分配为使用主机网络,使其能够访问主机的网络。您可以根据需要进行修改。
- SECRET: JWT 秘钥,生成一个随机字符串进行修改
- SERVE_STATIC: 是否启用静态文件服务(通常无需更改此项,请参见下方的常见问题解答)
- -v ~/config:/config 挂载主机配置文件目录,-v ~/logs:/logs 挂载主机日志文件目录,-v ~/storage:/storage 挂载附加功能生成的文件
- 您需要配置 MySQL 和 Redis 服务,请参考上述信息自行修改环境变量。
版本更新 (启用 Watchtower 自动更新后,无需手动更新,只需在执行后再次运行上述步骤即可):
docker stop chatnio docker rm chatnio docker pull programzmh/chatnio:latest
-
⚒ 自定义构建和安装 (高度可定制)
部署完成后,默认端口为 8094,访问地址为
http://localhost:8094
。 配置选项 (~/config/config.yaml) 可以通过环境变量覆盖,例如MYSQL_HOST
环境变量可以覆盖mysql.host
配置项。git clone https://github.com/Deeptrain-Community/chatnio.git cd chatnio cd app npm install -g pnpm pnpm install pnpm build cd .. go build -o chatnio nohup ./chatnio > output.log & # 使用 nohup 后台运行
❓ 常见问题解答 Q&A
-
为什么我部署的网站可以访问页面,可以登录,但不能使用聊天功能(一直在转圈)?
- 聊天等功能通过 websockets 通信;请确保您的服务器支持 websockets。(提示:可以通过 HTTP 进行传输,无需 websocket 支持)
- 如果您使用 Nginx、Apache 等反向代理,请确保已配置 websocket 支持。
- 如果您使用端口映射、端口转发、CDN、API 网关等服务,请确保您的服务支持并已启用 WebSocket。
-
我的 Midjourney 代理格式频道一直在转圈或显示错误信息
please provide available notify url
- 如果一直在转圈,请确保您的 Midjourney 代理服务正在运行,并且已配置正确的上游地址。
- Midjourney 填写频道类型时,请使用 Midjourney,而非 OpenAI(不知道为什么很多人填写 OpenAI 类型格式,然后反馈为什么是空响应,除了 mj-chat 类)。
- 解决这些问题后,请检查系统设置中的 后端域名 是否已正确配置。如果未设置,可能会导致 Midjourney 代理服务无法正常运行。
-
该项目有哪些外部依赖?
- MySQL:存储用户信息、聊天记录、管理员详情等持久化数据。
- Redis:存储用户快速认证信息、IP 速率限制、订阅配额、邮箱验证码等。
- 如果环境未正确设置,可能会导致服务无法运行。请确保您的 MySQL 和 Redis 服务运行顺畅(对于 Docker 部署,您需要手动设置外部服务)。
-
我的服务器是 ARM 架构,该项目支持 ARM 架构吗?
- 支持。Chat Nio 项目使用 BuildX 构建多架构镜像,因此您可以直接使用 docker-compose 或 docker 运行,无需额外配置。
- 如果您使用构建安装,可以直接在 ARM 机器上编译,无需额外配置。如果在 x86 机器上编译,请使用
GOARCH=arm64 go build -o chatnio
进行交叉编译,并将其上传到 ARM 机器上执行。
-
如何更改默认的 root 密码?
- 请点击右上角的头像或侧边栏底部的用户框,进入后台管理,在系统设置的常规设置操作栏下点击修改 Root 密码。或者,您也可以选择在用户管理中修改 root 用户的密码。
-
系统设置中的后端域名是什么?
- 后端域名指的是后端 API 服务的地址,通常为站点地址后跟
/api
,例如https://example.com/api
。 - 如果设置为非 SERVE_STATIC 模式,启用前后端分离部署,请将后端域名设置为您的后端 API 服务地址,例如
https://api.example.com
。 - 后端域名在此处用于 Midjourney 代理服务的后端回调地址;如果您不需要使用 Midjourney 代理服务,请忽略此设置。
- 后端域名指的是后端 API 服务的地址,通常为站点地址后跟
-
如何配置支付方式?
- Chat Nio 开源版支持卡密发放模式,只需将系统设置中的购买链接设置为您的卡密发放地址。卡密可通过用户管理中的礼品码管理批量生成。
-
礼品码和兑换码有什么区别?
- 礼品码只能由单个用户绑定一次,并
-
什么是客户端-服务器分离部署模式?
- 通常情况下,前端和后端是在同一个服务中,后端可以通过
/api
访问。在客户端-服务器分离部署中,前端和后端分别部署在不同的服务上:前端作为静态文件服务,后端作为 API 服务。- 例如,前端使用 Nginx(或 Vercel)部署,域名为
https://www.chatnio.net
。 - 后端使用 Docker 部署,域名为
https://api.chatnio.net
。
- 例如,前端使用 Nginx(或 Vercel)部署,域名为
- 你需要手动打包前端并将环境变量
VITE_BACKEND_ENDPOINT
设置为你的后端 URL,例如https://api.chatnio.net
。 - 要配置后端,设置
SERVE_STATIC=false
以防止其提供静态文件服务。
- 灵活计费和订阅说明
按需计费(积分)
,用 云图标 表示,是一种通用的定价模式,10积分固定为1元人民币(CNY)。可以在计费规则的 嵌入模板 中设置自定义兑换率。- 订阅 是具有每项配额的固定价格计划。用户必须有足够的积分才能订阅(例如,如果用户想订阅一个32元的计划,他们需要至少320积分)。订阅是项目的组合,每个项目定义了涵盖的模型、配额(-1表示无限)、名称、ID、图标等。在订阅管理部分中进行管理,你可以启用订阅、设置价格、编辑每个订阅级别的项目,并从其他级别导入项目。
- 订阅支持三个预定义层级:普通用户(0)、基础订阅(1)、标准订阅(2)、专业订阅(3)。订阅级别作为用户组,可以在渠道管理中配置,选择哪些用户组可以访问这些模型。
- 可以管理订阅的配额,包括是否允许 API 转发(默认关闭)。
用户配额不足
的最低积分请求检测
- 为防止滥用,如果积分请求低于最低阈值,将返回积分不足的错误消息。高于或等于最低值的请求将正常处理。
- 模型的最低请求积分规则:
- 免费模型没有限制。
- 每次使用的模型至少需要一个请求积分(例如,如果模型每次使用费用为0.1积分,最低为0.1积分)。
- 基于 Token 的弹性计费模型的最低请求为1K输入 Token 价格加1K输出 Token 价格(例如,如果1K输入 Token 费用为0.05积分,1K输出 Token 费用为0.1积分,最低为0.15积分)。
- 设置 DuckDuckGo API 的注意事项
- 首先,感谢作者 Binjie 提供的 duckduckgo-api 项目,为 Chat Nio 提供了连接搜索功能(提示实现)。
- DDG API 服务需要自行搭建。Binjie 作者的默认站点经常用完配额。请自行搭建,并在系统设置的网络设置中进行设置。
- DuckDuckGo 无法在中国的网络环境中使用,请使用代理或海外服务器来搭建 DDG API 端点。
- 部署成功后,请测试
https://your.domain/search?q=hi
,简单测试设置是否成功。如果无法访问,请检查你的 DDG API 服务是否正常运行,或寻求原项目的帮助。 - 部署成功后,请前往系统设置的网络设置,设置你的 DDG API 端点地址(不要添加
/search
后缀),默认最大结果数量为5
(结果设置为 0 或负数时,默认取 5)。 - 启用后,你可以在聊天中正常使用连接搜索。如果仍然无法使用,通常是模型问题(例如,GPT-3.5 有时无法理解)。
- 此连接搜索通过预设实现,意味着它可以保证所有模型都能支持的通用功能。兼容性无法保证敏感性。它不依赖于模型功能调用。支持连接的其他模型可以选择直接关闭此功能。
- 为什么我的 GPT-4-All 和其他反向模型无法使用上传文件中的图像?
- 上传的模型图像是 Base64 格式。如果反向引擎不支持 Base64 格式,请使用 URL 直接链接而不是上传文件。
- 如何启动严格的跨域检测?
- 通常,后端对所有域名开放跨域请求。如果没有特定需求,则无需启用严格的跨域检测。
- 如果需要启用严格的跨域检测,可以在后端环境变量中配置
ALLOW_ORIGINS
,例如ALLOW_ORIGINS=chatnio.net,chatnio.app
(不需要添加协议前缀,也不需要手动添加 www 解析,后端会自动识别并允许跨域)。这样就会支持严格的跨域检测(例如 http://www.chatnio.app*,*https://chatnio.net 将被允许,其他域名将被拒绝)。 - 即使启用了严格的跨域检测,/v1 接口仍然会允许所有域名的跨域请求,以确保中转 API 的正常使用。
- 如何使用模型映射功能?
- 渠道内的模型映射格式为
[from]>[to]
,映射之间用换行符隔开,from 是请求的模型,to 是实际上游的模型,且需要实际被上游支持。 - 例如,我有一个反向渠道,填写
gpt-4-all>gpt-4
,那么当我的用户从该渠道请求 gpt-4-all 模型时,后端将模型映射为 gpt-4,以便从支持 gpt-4 和 gpt-4-all 的上游请求 gpt-4(本质上 gpt-4 和 gpt-4-all 都是 gpt-4)。 - 如果我不希望我的反向渠道影响 gpt-4 渠道组,我可以在前面加上
!gpt-4-all>gpt-4
,此时渠道 gpt-4 将被忽略,并且该渠道只支持一个模型 gpt-4-all(但本质上是 gpt-4)。
- 渠道内的模型映射格式为
📦 技术栈
- 前端:React + Redux + Radix UI + Tailwind CSS
- 后端:Golang + Gin + Redis + MySQL
- 应用技术:PWA + WebSocket
🎃 贡献者
📚 SDKs
API 分为网关 API 和 Chat Nio 独有功能。
中转 API 是 OpenAI 的通用格式,支持多种格式。详情请参阅 OpenAI API 文档和 SDKs。
以下 SDK 是 Chat Nio API SDK 的独有功能
✨ 一些优秀的开源项目
前端项目指的是以用户聊天界面为主的项目,后端项目指的是以 API 转发和管理为主的项目,一站式项目指的是包括用户聊天界面和 API 转发管理的项目
- Next Chat @yidadaa (前端导向项目)
- Lobe Chat @arvinxx (前端导向项目)
- Chat Box @bin-huang (前端导向项目)
- OpenAI Forward @kenyony (后端导向项目)
- One API @justsong (后端导向项目)
- New API @calon (后端导向项目)
- FastGPT @labring (知识库)
- Quivr @quivrhq (知识库)
- [B