前段时间还在网上翻到官网教程的,不知道为啥又翻不出来了。写一下。
前言
NextChat 是一个可以在 GitHub 上一键免费部署的私人 LLM 网页应用,支持 GPT3、GPT4 和 Gemini Pro 模型等。 部署简单,只需拉取 Docker 镜像,设置 API Key即可使用。
下面是深色模式的截图。为什么是深色模式,因为截浅色模式的话 ,如果你在用深色模式浏览网页可能会闪你一下。
这个网页可以直接点进去看效果:NextChat。这是GitHub链接:ChatGPTNextWeb/NextChat: ✨ Light and Fast AI Assistant. Support: Web | iOS | MacOS | Android | Linux | Windows
右上角那个按钮点了就是全屏。感觉还挺好看的。
部署前准备
一台Linux服务器,一个域名。服务器自行安装docker,docker compose。域名没有应该也行,直接ip:port访问。但是你都有服务器了买个域名也不贵。
国内的服务器的话,域名未备案是没法访问的。自行备案或者购买香港服务器之类的。
部署操作
docker pull yidadaa/chatgpt-next-web
docker run -d -p 3000:3000 \
-e OPENAI_API_KEY=sk-xxxx \
-e CODE=页面访问密码 \
yidadaa/chatgpt-next-web
docker pull yidadaa/chatgpt-next-web 拉取镜像。拉不过来检查网络,配置代理。
docker run -d -p 3000:3000 可以修改后面的3000来换本地端口,如果端口被占用的话
-e OPENAI_API_KEY=sk-xxxx 设置openai的key。这玩意得自己买。淘宝上买的中转需要加上PROXY_URL。后面说。
-e CODE=页面访问密码 设置页面的访问密码,如果你不设置的话谁都可以用你的apikey,设置了的话用户得先输密码,或者用自己的apikey。
更新就把原来的容器删了重来一遍。
下面是环境变量一览。github复制的。
环境变量
添加方式: -e + 环境变量名=值。例子:-e OPENAI_API_KEY=sk-xxxx
OPENAI_API_KEY
(必填项)
OpenAI 密钥,你在 openai 账户页面申请的 api key,使用英文逗号隔开多个 key,这样可以随机轮询这些 key。
CODE
(可选)
访问密码,可选,可以使用逗号隔开多个密码。
警告:如果不填写此项,则任何人都可以直接使用你部署后的网站,可能会导致你的 token 被急速消耗完毕,建议填写此选项。
BASE_URL
(可选)
Default:
https://api.openai.com
Examples:
http://your-openai-proxy.com
OpenAI 接口代理 URL,如果你手动配置了 openai 接口代理,请填写此选项。
如果遇到 ssl 证书问题,请将
BASE_URL
的协议设置为 http。
OPENAI_ORG_ID
(可选)
指定 OpenAI 中的组织 ID。
AZURE_URL
(可选)
形如:https://{azure-resource-url}/openai
Azure 部署地址。
AZURE_API_KEY
(可选)
Azure 密钥。
AZURE_API_VERSION
(可选)
Azure Api 版本,你可以在这里找到:Azure 文档。
GOOGLE_API_KEY
(可选)
Google Gemini Pro 密钥.
GOOGLE_URL
(可选)
Google Gemini Pro Api Url.
ANTHROPIC_API_KEY
(可选)
anthropic claude Api Key.
ANTHROPIC_API_VERSION
(可选)
anthropic claude Api version.
ANTHROPIC_URL
(可选)
anthropic claude Api Url.
BAIDU_API_KEY
(可选)
Baidu Api Key.
BAIDU_SECRET_KEY
(可选)
Baidu Secret Key.
BAIDU_URL
(可选)
Baidu Api Url.
BYTEDANCE_API_KEY
(可选)
ByteDance Api Key.
BYTEDANCE_URL
(可选)
ByteDance Api Url.
ALIBABA_API_KEY
(可选)
阿里云(千问)Api Key.
ALIBABA_URL
(可选)
阿里云(千问)Api Url.
IFLYTEK_URL
(可选)
讯飞星火Api Url.
IFLYTEK_API_KEY
(可选)
讯飞星火Api Key.
IFLYTEK_API_SECRET
(可选)
讯飞星火Api Secret.
CHATGLM_API_KEY
(可选)
ChatGLM Api Key.
CHATGLM_URL
(可选)
ChatGLM Api Url.
DEEPSEEK_API_KEY
(可选)
DeepSeek Api Key.
DEEPSEEK_URL
(可选)
DeepSeek Api Url.
HIDE_USER_API_KEY
(可选)
如果你不想让用户自行填入 API Key,将此环境变量设置为 1 即可。
DISABLE_GPT4
(可选)
如果你不想让用户使用 GPT-4,将此环境变量设置为 1 即可。
ENABLE_BALANCE_QUERY
(可选)
如果你想启用余额查询功能,将此环境变量设置为 1 即可。
DISABLE_FAST_LINK
(可选)
如果你想禁用从链接解析预制设置,将此环境变量设置为 1 即可。
WHITE_WEBDAV_ENDPOINTS
(可选)
如果你想增加允许访问的webdav服务地址,可以使用该选项,格式要求:
每一个地址必须是一个完整的 endpoint
https://xxxx/xxx
多个地址以,
相连
CUSTOM_MODELS
(可选)
示例:
+qwen-7b-chat,+glm-6b,-gpt-3.5-turbo,gpt-4-1106-preview=gpt-4-turbo
表示增加qwen-7b-chat
和glm-6b
到模型列表,而从列表中删除gpt-3.5-turbo
,并将gpt-4-1106-preview
模型名字展示为gpt-4-turbo
。 如果你想先禁用所有模型,再启用指定模型,可以使用-all,+gpt-3.5-turbo
,则表示仅启用gpt-3.5-turbo
用来控制模型列表,使用 +
增加一个模型,使用 -
来隐藏一个模型,使用 模型名=展示名
来自定义模型的展示名,用英文逗号隔开。
在Azure的模式下,支持使用modelName@Azure=deploymentName
的方式配置模型名称和部署名称(deploy-name)
示例:
+gpt-3.5-turbo@Azure=gpt35
这个配置会在模型列表显示一个gpt35(Azure)
的选项。 如果你只能使用Azure模式,那么设置-all,+gpt-3.5-turbo@Azure=gpt35
则可以让对话的默认使用gpt35(Azure)
在ByteDance的模式下,支持使用modelName@bytedance=deploymentName
的方式配置模型名称和部署名称(deploy-name)
示例:
+Doubao-lite-4k@bytedance=ep-xxxxx-xxx
这个配置会在模型列表显示一个Doubao-lite-4k(ByteDance)
的选项
DEFAULT_MODEL
(可选)
更改默认模型
VISION_MODELS
(可选)
默认值:空 示例:
gpt-4-vision,claude-3-opus,my-custom-model
表示为这些模型添加视觉能力,作为对默认模式匹配的补充(默认会检测包含"vision"、"claude-3"、"gemini-1.5"等关键词的模型)。
在默认模式匹配之外,添加更多具有视觉能力的模型。多个模型用逗号分隔。
DEFAULT_INPUT_TEMPLATE
(可选)
自定义默认的 template,用于初始化『设置』中的『用户输入预处理』配置项
STABILITY_API_KEY
(optional)
Stability API密钥
STABILITY_URL
(optional)
自定义的Stability API请求地址
ENABLE_MCP
(optional)
启用MCP(Model Context Protocol)功能
SILICONFLOW_API_KEY
(optional)
SiliconFlow API Key.
SILICONFLOW_URL
(optional)
SiliconFlow API URL.
估计也没人看。能把这个看完的人估计都看官方文档去了。所以如果你是用的电商平台买的中转,这样配置:
docker pull yidadaa/chatgpt-next-web
docker run -d -p 3000:3000 \
-e OPENAI_API_KEY=sk-xxxx \
-e CODE=页面访问密码 \
-e BASE_URL=商家给你的url\
yidadaa/chatgpt-next-web
他会返回一串字符,这是这个docker进程的id。然后运行 docker ps查看运行情况
有就是正常的。
设置nginx
首先你得装好nginx。
sudo apt update
sudo apt install nginx
systemctl status nginx
running就是正常的。一般第一次下基本都是正常的,后期打不开大概率是你哪个配置写错了。
然后开始写配置。最后一层的nextchat改成啥都行。这是文件名。
sudo nano /etc/nginx/sites-available/nextchat
下面是配置文件,只有http的版本,没配https,自用懒得配证书。将 #你的域名 替换为你自己的域名。
server {
listen 80;
server_name #你的域名;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
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 $scheme;
}
}
Ctrl+X 退出,然后输入Y保存,回车。
如果这里保存不了你看看你上面有没有用sudo。再不行换到root用户。
然后创建符号连接:
sudo ln -s /etc/nginx/sites-available/nextchat /etc/nginx/sites-enable/nextchat
然后运行nginx -t检查:
sudo nginx -t
返回
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
说明没啥问题。运行sudo systemctl reload nginx重启nginx。
sudo systemctl reload nginx
然后通过你的域名在浏览器里面应该能直接访问到。
网页设置
这是直接访问的页面。点击左下角的设置。
第一栏
主要是发送键,主题,Language和预览气泡。
发送键:默认是enter,换行是shift + enter。和大部分的操作是一致的,可以自己改。
主题:auto自动,dark深色,light浅色。
Language:页面的语言,不是llm回复的语言。回复这个你得自己写提示词。
预览气泡:nextchat默认是打开的状态,所以你输入的时候会是下面这样:
你的输入会在聊天位置提前显示。如果不习惯关了就是。
第二 三 四 五栏
主要是访问密码,自定义接口,自定义模型名。
访问密码:就是你docker运行的时候设置的那个。
自定义接口:如果你docker设置的时候设置了BASE_URL,这玩意不用管。自用自部署基本不管这个来着,如果你是用的一开始提到的预览网页:NextChat,那你得自行进行设置:
改接口地址为商家给你的url,改api key为商家给你的key。如果不是中转你就不用动这个url。再次提醒自部署不动自定义接口部分。
自定义模型名: 如果是中转商家购入,有些的模型名可能不是官方的。比如o3-mini,可能商家给的访问这个模型的名称是o3Mini,这个时候你就要自己在这里输入,选择模型的时候才会显示。不过一般没看见这种商家。
第六栏
这里的设置就偏深一些了。一般使用改下模型,附带历史消息数,历史摘要,对话摘要模型。
模型:这是开启一个新对话时候的默认模型。可以在对话里面改,所以可以不改这一项。
附带历史消息数:传给LLM消息的时候,附带的前文消息数量。换个说法可以简单理解为LLM的短期记忆,设置成4他就会记住最近的四条消息,记得不多但是记得牢一点。
历史摘要:传给LLM消息的时候,是否附带前文的摘要。换个说法可以简单理解为LLM的长期记忆,记得多,但是都只记得个大概。
对话摘要模型:附带历史消息数超过压缩阈值的时候,总结历史摘要的时候,需要一个模型来总结上下文。这里设置的就是总结用的模型。这个就不需要太高,3.5-trubo,4o-mini个人感觉就够用了。不至于上个什么o1,o3mini,还是省点token吧。
第七 八 九 栏
这个实时聊天和文本转语音没用过。后面这个重置设置和清除数据应该还是看得懂。
聊天设置
这一行你鼠标移上去会显示用途的。
对话设置
上面这个新增对话可以作为提示词。比如如下所示:
添加system对话,让LLM遵守该要求。
下面这个角色头像 名称应该都看得懂。这个使用全局设置,会使用我们在前文设置里面设置的模型。不选就是下面的设置,和前面的设置是一样的。
上传图片
如果你的模型能够识别图片,可以从这里上传。
模式切换
自动/浅色/深色模式切换。
快捷指令
看一眼就知道是个啥东西。然后你在输入框输入正斜杠也能调用这个出来。
切换面具
其实就是预设角色。
清除聊天
清除聊天记录。
切换模型
可以在这里改这个聊天的模型
插件
没用过。自行研究
键盘快捷键
就是给你展示个这东西。
其他
右上角的四个键。依次是刷新标题,修改聊天记录,导出,全屏。
左边的面具和发现,第一个就是预设,你可以导入导出自定义预设。右边的发现是插件,SD绘画(没用过),搜索聊天记录。
总结
还有其他功能 没写完 可以自己到处看看。
。a
?/