使用docker以及vercel搭建NextChat—好用的AI聊天服务
Lincol29 2024-10-13 15:31:06 阅读 80
前言
nextchat是一个目前非常流行的 AI 聊天服务,支持许多的 AI 模型供应商。如:支持 GPT3、GPT4 和 Gemini Pro。
学习网站文章更全:Lincol29'S Blog
如果文章信息错误或过时,请移步至我的博客:https://www.lincol29.cn
内容更新仅在个人博客可见(请到我的博客获取第一手信息),欢迎关注!
可以点击直接使用。基础界面如下:
https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web 在 Github 非常受欢迎,当时也是看重 Star 数很多,就选择部署 NextChat。
谈一谈为什么我推荐 NextChat?
1、先入为主的概念,第一次搜索到就被吸引了。
2、在上文中也提到 github 的 start 数量非常多,更新很活跃。
3、有较多的面具和插件可支持使用
4、支持 docker 部署
5、支持许多常用的 AI 模型。例如我正在使用的:<code>gpt-4o、gpt-4o-min
准备工作
拥有 Open API key。如果没有官网的,可以使用代理商:(目前 lincol29
正在使用,注册即送一美金的使用资格。小伙伴可以先试试,如果觉得性价比好,可以通过 lincol29
推广链接进行注册。)域名(可选)服务器或者 NASdocker
一、使用 Vercel 部署 NextChat
1、在 github 界面点击 Fork NextChat 项目
2、打开vercel,点击 Add New – Project
3、导入 NextChat 的 github 项目
记得在环境变量页填入 API Key 和 CODE;
类似这个样子,自行填写即可。
4、解析到自己的域名(可选)
目前 Vercel 分配的域名 DNS 在某些区域被污染了,绑定自定义域名即可直连。
至此,已经部署完成,可以使用域名进行访问。
二、使用 docker 部署 NextChat
Docker 版本需要在 20 及其以上,否则会提示找不到镜像。
⚠️ 注意:docker 版本在大多数时间都会落后最新的版本 1 到 2 天,所以部署后会持续出现 “存在更新” 的提示,属于正常现象。
如果你已经拥有第三方 API 代理,请直接跳转 docker 部署。
1、指定 proxy 代理 – 第三方 API 供应商 turboai
TurboAI 为您提供全面的 AI 模型接口代理服务,以支持您的软件和应用程序,助您轻松应用领先的 AI 技术。提供反向代理的 API 接口,无需境外网络环境即可便捷访问 OpenAI、Claude、Midjourney 等 AI 模型,在自然语言处理、图像识别、智能推荐和自动问答等不同场景中发挥作用。高度自由的 API 管理,可根据您需求轻松创建 API key 并管理使用金额,仅需修改接口地址为 <code>https://api.turboai.io(国外)/https://api.turboai.one
(国内) 即可快速使用。多种渠道来源 *,官方 / Azure / 逆向等渠道,不同渠道享受不同折扣,可随时在令牌页面切换,详情请查看。
(目前
lincol29
正在使用,注册即送一美金的使用资格。小伙伴可以先试试,如果觉得性价比好,可以通过lincol29
推广链接进行注册。)
TurboAI 拥有颜值非常顶的仪表盘
TurboAI 的模型价格表
可以通过日志查看模型使用情况,能了解每次对话产生的 token 以及费用。
如果你是小白,不想动手。可直接使用 TurboAI 已经安装好的三个服务进行使用。(新手推荐)
NextChat 、LobeChat、MidjourneyProxy
直接点击 playground , 选择服务商。
2、docker-compose 部署 NextChat
防火墙放行端口
<code>ufw allow 3219/tcp |
创建工作目录
work=/docker/nextchat && mkdir -p $work && cd $work |
创建 docker-compose.yml 文件
vim docker-compose.yml |
将以下代码复制进 yml 中
version: '3' | |
services: | |
chatgpt-next-web: | |
container_name: nextchat | |
image: yidadaa/chatgpt-next-web:latest | |
restart: always | |
ports: | |
- "3219:3000" | |
environment: | |
- OPENAI_API_KEY=sk-xxx #你的api key | |
- CODE=995415ada #密码 | |
- BASE_URL=https://xx.xx.io #第三方代理地址 | |
- DEFAULT_MODEL=gpt-4o-mini #默认模型 | |
- ENABLE_BALANCE_QUERY=1 #启用余额查询 |
点击 查看环境变量含义
上线服务
docker-compose up -d |
使用 ip + 端口即可访问了。
如果你按照我的配置文件搭建的 nextchat,那么会提示你需要使用密码访问。输入你配置文件中的 CODE 即可
现在就可以愉快的使用了,先向他提问吧。鲁迅和周树人谁更聪明呢?
3、环境变量
<code>OPENAI_API_KEY (必填项)
OpanAI 密钥,你在 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。
DEFAULT_MODEL
(可选)
更改默认模型
HIDE_USER_API_KEY
(可选)
如果你不想让用户自行填入 API Key,将此环境变量设置为 1 即可。
DISABLE_GPT4
(可选)
如果你不想让用户使用 GPT-4,将此环境变量设置为 1 即可。
ENABLE_BALANCE_QUERY
(可选)
如果你想启用余额查询功能,将此环境变量设置为 1 即可。
三、使用 NextChat
什么是面具?它和提示词的区别是什么?
面具 = 多个预设提示词 + 模型设置 + 对话设置。
其中预设提示词(Contextual Prompts)一般用于 In-Context Learning,用于让 ChatGPT 生成更加符合要求的输出,也可以增加系统约束或者输入有限的额外知识。
模型设置则顾名思义,使用此面具创建的对话都会默认使用对应的模型参数。
什么是历史摘要?
历史摘要功能,也是历史消息压缩功能,是保证长对话场景下保持历史记忆的关键,合理使用该功能可以在不丢失历史话题信息的情况下,节省所使用的 token。
由于 ChatGPT API 的长度限制,我们以 3.5 模型为例,它只能接受小于 4096 tokens 的对话消息,一旦超出这个数值,就会报错。
同时为了让 ChatGPT 理解我们对话的上下文,往往会携带多条历史消息来提供上下文信息,而当对话进行一段时间之后,很容易就会触发长度限制。
为了解决此问题,我们增加了历史记录压缩功能,假设阈值为 1000 字符,那么每次用户产生的聊天记录超过 1000 字符时,都会将没有被总结过的消息,发送给 ChatGPT,让其产生一个 100 字所有的摘要。
这样,历史信息就从 1000 字压缩到了 100 字,这是一种有损压缩,但已能满足大多数使用场景。
什么时候应该关闭历史摘要?
历史摘要可能会影响 ChatGPT 的对话质量,所以如果对话场景是翻译、信息提取等一次性对话场景,请直接关闭历史摘要功能,并将历史消息数设置为 0。
如果你想节省 token,请调节历史消息数。
当用户发送一条消息时,有哪些信息被发送出去了?
当用户在对话框输入了一条消息后,发送给 ChatGPT 的消息,包含以下几个部分:
系统级提示词:用于尽可能贴近 ChatGPT 官方 WebUI 的使用体验,可在设置中关闭此信息;历史摘要:作为长期记忆,提供长久但模糊的上下文信息;预设提示词:当前对话内设置的预设提示词,用于 In-Context Learning 或者注入系统级限制;最近 n 条对话记录:作为短期记忆,提供短暂但精确的上下文信息;用户当前输入的消息。
问题
Q:如果不是国外的服务器,请在 docker 部署的时候添加代理
添加环境变量 <code>- PROXY_URL=http://127.0.0.1:7890
Q:使用时提示 “现在是未授权状态,请在设置页输入访问密码”?
项目通过环境变量 CODE 设置了访问密码。第一次使用时,需要到设置中,输入访问码才可以使用。
Q:最好不要使用备案域名
Q : 什么是代理,如何使用?
由于 OpenAI 的 IP 限制,中国和其他一些国家 / 地区无法直接连接 OpenAI API,需要通过代理。你可以使用代理服务器(正向代理),或者已经设置好的 OpenAI API 反向代理。
正向代理例子:科学上网梯子。docker 部署的情况下,设置环境变量 HTTP_PROXY 为你的代理地址(例如:10.10.10.10:8002)。反向代理例子:可以用别人搭建的代理地址,或者通过 Cloudflare 免费设置。设置项目环境变量 BASE_URL 为你的代理地址。
Q : 国内服务器可以部署吗?
可以但需要解决的问题:
需要代理才能连接 github 和 openAI 等网站;国内服务器要设置域名解析的话需要备案;国内政策限制代理访问外网 / ChatGPT 相关应用,可能被封。
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。