一、前言
大家好,我是攻城狮阿程。由于目前NextChat从上次写稿到现在已经过去了快一年时间了,它自身的功能也变得更强,因此今天给大家带来截至到9月份的关于NextChat的补充。
码字不易,喜欢我的教程欢迎各位多提建议多评论,畅所欲言,涉及破解、打倒美帝走近科学和资源分享的教程容易被和谐,也欢迎各位关注我的公众号和博客,以防走丢。
公众号:攻城狮阿程
知乎:攻城狮阿程
小红书:阿程数码
个人博客:strider1230.cn
淘宝:阿程数码
二、NextChat 的更新变化
2.1 NextChat 的版本、功能变化
NextChat 截至本文成稿,目前最新的版本是v2.15.3
,项目目前最大的一个特点就是真的做到了AI集成,利用 Openai 密钥集成了 GPT AI 模型,不论是国内还是国外的,并且其内置了多种场景 prompt ,可以充当你的互联网写手、文案写手、以文搜图、小红书写手等等,这里列出阿程提供的中转API在NextChat上支持调用的模型:
2.2 NextChat 的代码变量说明
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。
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.
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
(可选)
更改默认模型
DEFAULT_INPUT_TEMPLATE
(可选)
自定义默认的 template,用于初始化『设置』中的『用户输入预处理』配置项
STABILITY_API_KEY
(optional)
Stability API密钥
STABILITY_URL
(optional)
自定义的 Stability API 请求地址
2.3 NextChat 目前的部署建议
虽然 NextChat 官方目前更倾向于通过 Vercel 平台进行部署,但是出于隐私、规避麻烦和安全考虑,个人建议还是部署在自己的NAS上。
三、如何使用新版的 NextChat
这里结合笔者的使用,给出一些个人的心得。
3.1 什么是面具?它和提示词的区别是什么?
面具 = 多个预设提示词 + 模型设置 + 对话设置
其中预设提示词(Contextual Prompts)一般用于 In-Context Learning,用于让 GPT 生成更加符合要求的输出,也可以增加系统约束或者输入有限的额外知识。
模型设置则顾名思义,使用此面具创建的对话都会默认使用对应的模型参数。
3.2 什么是历史摘要?
历史摘要功能,也是历史消息压缩功能,是保证长对话场景下保持历史记忆的关键,合理使用该功能可以在不丢失历史话题信息的情况下,节省所使用的 token。
由于 GPT API 的长度限制,我们以 3.5 模型为例,它只能接受小于 4096 tokens 的对话消息,一旦超出这个数值,就会报错。
同时为了让 GPT 理解我们对话的上下文,往往会携带多条历史消息来提供上下文信息,而当对话进行一段时间之后,很容易就会触发长度限制。
为了解决此问题而增加了历史记录压缩功能,假设阈值为 1000 字符,那么每次用户产生的聊天记录超过 1000 字符时,都会将没有被总结过的消息,发送给 GPT,让其产生一个 100 字左右关于这所有内容的摘要。
这样,历史信息就从 1000 字压缩到了 100 字,这是一种有损压缩,但已能满足大多数使用场景。
3.3 什么时候应该关闭历史摘要?
历史摘要可能会影响 GPT 的对话质量,所以如果对话场景是翻译、信息提取等一次性对话场景,请直接关闭历史摘要功能,并将历史消息数设置为 0。
PS:如果你想节省 token,请调节历史消息数。
3.4 当用户发送一条消息时,有哪些信息被发送出去了?
当用户在对话框输入了一条消息后,发送给 GPT 的消息,包含以下几个部分:
系统级提示词:用于尽可能贴近 GPT 官方 WebUI 的使用体验,可在设置中关闭此信息;
历史摘要:作为长期记忆,提供长久但模糊的上下文信息;
预设提示词:当前对话内设置的预设提示词,用于 In-Context Learning 或者注入系统级限制;
最近 n 条对话记录:作为短期记忆,提供短暂但精确的上下文信息;
用户当前输入的消息。
3.5 我提问的记录该如何保存?
NextChat 目前提供两种保存记录的方式,一种是默认的本地存储方式,你的每一条提问都会被NextChat自身保存,但如若是通过容器方式部署,则需要指定好本地的存储路径,优点是数据安全,缺点是需要手动导出导入进行备份和还原,操作相对繁琐。
另一种方式是配置云端数据保存同步,NextChat支持Webdav及UpStash两种方式实现云端同步。
四、一些常见问题的答疑
Q1:如果不是国外的服务器该怎么办?
A:请在 docker 部署时候添加你的代理,添加环境变量 - PROXY_URL=http://127.0.0.1:7890
Q2:使用时提示 “现在是未授权状态,请在设置页输入访问密码”?
A:项目通过环境变量CODE
设置了访问密码。第一次使用时,需要到设置中,输入访问码才可以使用。
Q3:可以使用一级域名或者搭建到公网吗?
A:非常不建议这样操作,除非你想被叫去喝茶。
Q4: 什么是代理,该如何使用?
A:由于 OpenAI 的 IP 限制,中国和其他一些国家 / 地区无法直接连接 OpenAI API,需要通过代理。你可以使用代理服务器(正向代理),或者已经设置好的 OpenAI API 反向代理。
正向代理例子:科学上网。docker 部署的情况下,设置环境变量 HTTP_PROXY 为你的代理地址(例如:10.10.10.10:8002)。
反向代理例子:可以用别人搭建的代理地址,或者通过 Cloudflare 免费设置。设置项目环境变量 BASE_URL 为你的代理地址。
Q5: 国内服务器可以部署吗?
A:可以但需要解决的问题:
需要代理才能连接 Github 和 OpenAI 等网站,除非你使用中转API;
国内服务器设置域名解析的话需要备案;
国内政策限制代理访问外网 / GPT 相关应用,可能被封。
五、结语
本文在之前对 NextChat 容器项目进行教程的基础上,继续补充了在配置和使用过程中可能会遇到的一些问题。如果你的极空间是 Z4Pro 性能版、Z423 标准版及以上,那么机器长期运行NextChat是没有压力的。无论是作为一个学习实战项目,还是用来个人部署使用,NextChat 都是一个值得尝试的优秀开源项目,赶快部署一个属于自己的私人GPT 网页助理吧!
如果你感觉搭建困难极大或需要中转API,也可以扫描下方的二维码光临小店,我会有偿帮你部署和配置。