vual / ChatGPT-Next-Web-Pro

基于chatgpt-next-web,增加了midjourney绘画功能,接入了stable-diffusion,支持oss,支持dall-e-3、gpt-4-vision-preview、whisper、tts等多模态模型,支持gpt-4-all,支持GPTs商店。新增加了支持后台管理的版本,包括登录注册,平台模型apikey管理,套餐管理,消息保存等。
573 stars 114 forks source link
admin annyun-ai chatgpt chatgpt-next-web claude-3 dall-e-3 fastgpt gpt-4-all gpt-4-vision-preview gpts login midjourney midjourney-proxy-plus register stable-diffusion

声明

本项目代码没开源,但安全性跟原版ChatGPT-Next-Web完全一致。
人格保证,所有版本没有任何恶意代码,不会偷key或者泄露key!!!
如果担心,可自行在部署应用的服务器上安装抓包工具,分析每个对外的请求。

推广

介绍购买付费版得佣金,无后台版本一个¥30,有后台版本一个¥60。

欢迎体验另一个项目lobe-chat-pro

基于lobe-chat,增加了midjourney绘图功能,地址:https://github.com/vual/lobe-chat-pro

版本

无后台:

有后台版本:

特性(无后台版本):

特性(社区版,无后台)

特性(有后台版本):

SpringCloud微服务版

本后端项目基于SpringCloud开发,天生就是微服务,但是微服务需要消耗更多的服务器资源,部署和配置也更加复杂,如有需要,可以联系咨询。

后续待实现

无后台版本示例图片

有后台版本示例图片

参数说明

兼容原版ChatGPT-Next-Web所有参数,

参数名称 必填 说明
OPENAI_API_KEY openai的api key
BASE_URL openai的接口代理或中转地址,默认https://api.openai.com
OPENAI_ORG_ID OpenAI organization ID
AZURE_URL azure的接口地址,Example: https://{azure-resource-url}/openai/deployments/{deploy-name}
AZURE_API_KEY azure的api key
AZURE_API_VERSION Azure Api Version, find it at Azure Documentation.
GOOGLE_API_KEY Google Gemini Pro Api Key
GOOGLE_URL Google Gemini Pro Api Url
CODE 应用的访问密码,可以设置多个,用英文逗号分割
HIDE_USER_API_KEY 如果不想让用户输入自己的apikey,则设成 1
DISABLE_GPT4 如果不想让用户使用GPT-4,则设成 1
ENABLE_BALANCE_QUERY 如果想让用户可以查询余额,则设成 1 ,否则设成 0
DISABLE_FAST_LINK 如果要禁用url中的解析设置,则设成 1
CUSTOM_MODELS 自定义模型设置,"+"号增加模型,"-"号隐藏模型,"="号设置模型展示的别名,"-all"禁用所有应用自带模型,例如:CUSTOM_MODELS="-all,+llama,-gpt-3.5-turbo,+gpt-4=模型别名"。本项目还对该参数进行扩展,支持fastgpt,详细设置请看下面新增参数里该参数的说明。
DEFAULT_MODEL 自定义默认模型

本项目新增参数

参数名称 必填 说明
AUTHORIZE_CODE 本项目授权码,启动就需要有授权码,不然无法启动,获取方式,请看后面
MIDJOURNEY_PROXY_URL Midjourney代理地址,详细请看midjourney-proxy
MIDJOURNEY_PROXY_API_SECRET Midjourney代理地址接口密钥,详细请看midjourney-proxy
USE_MJ_IMG_SELF_PROXY 如果不需要自代理mj图片地址,则把该参数设成false
REPLACE_MJURL_WITH_BASEURL 该参数设成1,则如果用户设置里和启动参数都没设置mj的地址和密钥,则直接把base_url和openai_api_key当作mj代理地址和密钥
HIDE_MIDJOURNEY_SETTING 如果需要隐藏Midjourney设置,则把值设成 1
DISCORDCDN_PROXY_URL Discordcdn图片地址代理,不填的话,如果访问不了discordcdn,就获取不到图片
STABLE_DIFFUSION_BASE_URL Stable-diffusion的接口地址,需要启动stable-diffusion-webui开启api。如果要用该功能,必须要配置后面的OSS相关参数,因为stable-diffusion返回的是图片base64,需要有地方存图片
STABLE_DIFFUSION_TIMEOUT Stable-diffusion的接口超时时间,默认10分钟
HIDE_SD_SETTING 是否隐藏Stable-diffusion自定义接口设置,默认不隐藏,如需隐藏,则设成 1。
OSS_TYPE OSS 类型,取值( aliyun 或 tencent 或 minio )。填了代表需要上传到oss,且下面的相关参数都得填,具体看下面的参数说明
OSS_ENDPOINT 服务器地址,aliyun例如:oss-accelerate.aliyuncs.com;tencent填Region,例如: ap-guangzhou;minio例如:192.168.2.120(这边只填ip,不需要http前缀,端口填在下面那个参数)
OSS_PORT type为minio,且endpoint为ip时,则需要有端口,minio有两个端口,一个管理端口,一个api端口,这里要填api端口。
OSS_HTTPS type为minio,根据实际情况开启,如果endpoint是ip,那一般填false。如果网站https,那minio也得要通过https访问,不然可能会出现无法预览图片的问题,可以参考
OSS_ACCESS_KEY aliyun则填accessKeyId,tencent则填SecretId,minio则填username
OSS_SECRET_KEY aliyun则填accessKeySecret,tencent则填SecretKey,minio则填password
OSS_BUCKET 桶名称(minio的桶权限需要设成public或者参照minio权限进行配置,阿里云和腾讯云的桶可以不用设成public,但上传的文件会设成public)
OSS_DOMAIN aliyun oss 绑定的域名,只填域名,不要加http://。 2019.9.23后创建的bucket,需要绑定域名,不然无法预览,绑定方法参考
APP_TITLE 自定义网站标题,需要获得授权后才会生效
APP_SUB_TITLE 自定义网站副标题,需要获得授权后才会生效
APP_ICON 自定义网站浏览器标题icon,填icon图标链接,需要获得授权后才会生效
KNOWLEDGE_BASE_URL fastgpt的接口根地址,比如:https://ai.fastgpt.in/api ,需配合自定义模型参 CUSTOM_MODELS
CUSTOM_MODELS 自定义模型参数,基于原版参数拓展,兼容原版功能。通过自定义模型名称对应fastgpt里的应用,及对应key,格式:+知识库名称==知识库对应apikey,例如:CUSTOM_MODELS=+知识库1==fastgpt-xxxxxx,只会把知识库名称传到前端,apikey不会传到用户端,只会在服务端,可以放心。
INPUT_PLACEHOLDER 自定义输入框提示。
HIDE_VOICE_INPUT 如果需要屏蔽语音输入,则把该参数设成1。
HIDE_GPTS 如果需要隐藏GPTS,则把该参数设成1。
FILE_UPLOAD_URL 自定义文件上传地址(包括上传按钮和输入框粘贴文件上传,以及画图模型返回的图片),上传时的表单参数名:file,返回的数据格式不限,但需要有文件地址,文件地址需要公网可以访问。填了这个参数,所有文件会优先上传到这个接口,没填则上传配置的OSS。
FILE_UPLOAD_KEY 自定义文件上传接口的鉴权key,填了会在headers里增加 Authorization: "Bearer " + key,为了key的安全,填了key后,默认走服务端上传,要浏览器直接上传,则需要设置下面那个参数
FILE_UPLOAD_FROM_BROWSER 自定义文件上传接口填了key后,如果需要在浏览器直接把文件上传到该接口,则需要把这参数值设成:1。设置后,会把鉴权key暴露在浏览器端,有风险,但在文件服务器跟应用不是同一个服务器时,可以节省服务器带宽资源。
ALWAYS_DISPLAY_MODEL 如果需要在模型选择那边常显模型名称,则把该参数设成1。
SEND_IMG_URL vision或claude模型,发送图片时,默认发送base64,如果需要发送url,则把该参数设成1,前提是配置了文件存储功能,且模型那边能识别url并通过url得到图片。发送url可以节省服务器带宽。
DEFAULT_SUMMARIZE_MODEL 总结标题的默认模型,设置后,无论使用哪个模型聊天,都会使用该参数指定的模型进行总结。
HIDE_USER_API_URL 如果需要隐藏用户自定义接口地址,则把该参数设置为1。
USE_CUSTOM_CONFIG 如果需默认启用用户自定义接口地址,则把该参数设置为1。
CHAT_GEMINI_THROUGH_OPENAI 如果需让gemini模型走openai接口地址,则把该参数设置为1,前提是接口接收的报文格式要跟openai的一样。
CHAT_CLAUDE_THROUGH_OPENAI 如果需让claude模型走openai接口地址,则把该参数设置为1,前提是接口接收的报文格式要跟openai的一样。
ENABLE_INJECT_SYSTEM_PROMPTS 如果需要关闭注入系统及提示信息,则把该参数设成0,默认是开启的。
SKIP_MASK_PICK 如果新建聊天需要跳过面具选择,则设成1。
ZHIPU_API_VERSION 智谱api的版本,比如目前是v4,则填v4,当使用智谱glm-*模型时,会自动api替换版本号。
PLUGIN_BUTTON_CUSTOM (有后台版本有效)自定义插件按钮,可以配置名称和图标,以及点击超链,格式:PLUGIN_BUTTON_CUSTOM={"text": "自定义", "icon": "https://", "url": "https://"}。

需要准备什么

无后台版本部署和启动

1.拉取镜像
docker pull registry.cn-hangzhou.aliyuncs.com/ann-chat/chatgpt-next-web-pro:3.7.24
2.启动应用
docker run -d -p 3000:3000 \
  -e OPENAI_API_KEY="sk-xxxxxx" \
  -e AUTHORIZE_CODE="授权码" \
  registry.cn-hangzhou.aliyuncs.com/ann-chat/chatgpt-next-web-pro:3.7.24

有后台版本部署和启动

1.下载docker-compose.yml文件,文件在本项目 /docker/with-backend/目录下
wget https://github.com/vual/ChatGPT-Next-Web-Pro/tree/main/docker/with-backend/docker-compose.yml
2.编辑docker-compose.yml文件,根据需要,修改里面的环境变量
3.拉取最新镜像,并启动,如果遇到无法执行 docker-compose 命令,则需要先安装 docker-compose
docker compose pull
docker compose up -d

首次启动建议不加 -d ,看看是否有报错,没报错后,结束运行,并加上 -d 重新启动

详细部署说明请看后台版本部署步骤
nginx配置参考nginx参考配置

重要!!!后台管理默认账号密码 admin/123456,进入之后记得马上改密码!

授权码价格

授权绑定你自己的二级域名,绑定后,只能通过绑定的域名访问!!!也不能更改绑定的域名!!!也可以绑定公网IP,但不建议。试用可以绑定内网IP。

无后台版本(后续更新也不会接入后台相关功能):

有后台版本价格

(授权不包含源码。可以先试用,试用不收费。)

授权码获取方式

微信:822784588

image

交流群:

image

常见问题

1.通过ngnix转发,页面停留在【需要密码】的页面进不去,

img.png

需要在ngnix的server或者location下增加配置,如果是宝塔,记得关闭ng缓存:

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto http;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;

2.配置了minio,出现图片无法预览。这个是因为网站是https,所以访问minio也要https,建议用ngnix转发域名方式,可以参考

3.如果配置了aliyun oss,出现图片无法预览、或文件上传不了、或语音长度为0的问题,建议检查access_key权限(不是bucket权限),可以参考添加权限

4.配置了aliyun oss,出现图片无法预览,点击链接变成下载,那就是需要绑定自己的域名,然后启动参数增加 OSS_DOMAIN="绑定的域名",绑定方法参考

5.腾讯云oss跨域问题,可以参考

6.如果出现画图的聊天记录导出图片时,无法下载,则要排查下,图片地址是否是https,如果不是,则需要开启https,具体开启方式要看对应的oss,或画图接口那边,地址域名要有ssl证书。 img_1.png

有后台版本常见问题:

1.用户套餐相关问题:

2.阿里云短信发送提示“该账号找不到对应签名”。