/ChatGPT-Next-Web-LangChain

一键拥有你自己的 ChatGPT 网页服务。 One-Click to deploy your own ChatGPT web UI.(基于 langchain 实现的插件版本 Plugin version implemented based on langchain)

Primary LanguageTypeScriptMIT LicenseMIT

icon

ChatGPT Next Web LangChain

一键免费部署你的跨平台私人 ChatGPT 应用, 支持 GPT3, GPT4 & Gemini Pro 模型。(基于 LangChain 实现插件功能)

Web

网页版 / 反馈 / Discord / QQ群: 763467624

Deploy with Vercel

Open in Gitpod

Warning

本项目插件功能基于 OpenAI API 函数调用 功能实现,转发 GitHub Copilot 接口或类似实现的模拟接口并不能正常调用插件功能!

[实验性] 新增 claude 模型函数调用支持。

由于 Anthropic 不提供嵌入模型,请添加 RAG 功能的 ollama 嵌入模型配置,如不配置,WebBrowserPDFBrowser 插件将无法使用。

cover

plugin-example

wiki-plugin

dall-e-plugin

主要功能

  • RAG 功能

  • 除插件工具外,与原项目保持一致 ChatGPT-Next-Web 主要功能

  • 支持 TTS (文本转语音)

  • 支持语音输入,需要使用 HTTPS 访问 Hk-Gosuto#208

  • 支持 GPT-4V(视觉) 模型

    • 需要配置对象存储服务,请参考 对象存储服务配置指南 配置
    • 已同步上游仓库视觉模型调用方式(压缩图片),这里还是会有撑爆 LocalStorage 的风险 Hk-Gosuto#77 (comment) ,后面如果出现类似问题会再适配对象存储来存储图像。
  • 基于 LangChain 实现的插件功能,目前支持以下插件,未来会添加更多

    • 搜索(优先级:GoogleCustomSearch > SerpAPI > BingSerpAPI > ChooseSearchEngine > DuckDuckGo

      • GoogleCustomSearch

        • 环境变量:
          • GOOGLE_PLUGIN_API_PROXY_PREFIXDDG_API_PROXY_PREFIX 变量使用方法一致
          • GOOGLE_API_KEY GOOGLE_SEARCH_API_KEY
          • GOOGLE_CSE_ID
        • 申请参考:说明
      • SerpAPI

      • BingSerpAPI

      • ChooseSearchEngine(作者:hang666

        • 环境变量:

          • CHOOSE_SEARCH_ENGINE
          • GOOGLE_PLUGIN_API_PROXY_PREFIXDDG_API_PROXY_PREFIX 变量使用方法一致,只会对 google 进行代理

          可选项如下:

          • google
          • baidu
        • 说明:此项为直连搜索引擎,免去api试用量小的烦恼,但可能因为网络问题导致无法使用

        • ⚠ 注意:已知在 vercel 环境下会出现调用不稳定的情况 Hk-Gosuto#89 (comment)

      • DuckDuckGo

        • 环境变量:DDG_API_PROXY_PREFIX

          配置后将在 DuckDuckGo 插件相关接口前拼接配置内容,如:DDG_API_PROXY_PREFIX=https://example.com/ 则最终请求为:https://example.com/https://duckduckgo.com

          可以结合类似 1234567Yang/cf-proxy-ex 这类代理项目来实现 DuckDuckGo 插件相关接口的代理

    • 计算

    • 网络请求

      • WebBrowser
        • 需要使用 text-embedding-ada-002 嵌入模型
      • PDFBrowser
        • 需要使用 text-embedding-ada-002 嵌入模型
        • ⚠ 仅在非 vercel 环境部署时可用 ⚠
    • 其它

      • Wiki
      • DALL-E 3
        • DALL-E 3 插件需要配置对象存储服务,请参考 对象存储服务配置指南 配置
        • 如无需图像转存则可以配置 DALLE_NO_IMAGE_STORAGE=1 ,此时将直接将 DALL-E 服务返回的临时 URL 用于图像显示,注意:该链接具有时效性
        • 默认使用 dall-e-3 模型,如果想使用 dall-e-2 ,可以配置环境变量 DALLE_MODEL=dall-e-2
      • StableDiffusion
        • 本插件目前为测试版本,后续可能会有较大的变更,请谨慎使用
        • 使用本插件需要一定的专业知识,Stable Diffusion 本身的相关问题不在本项目的解答范围内,如果您确定要使用本插件请参考 Stable Diffusion 插件配置指南 文档进行配置
        • StableDiffusion 插件需要配置对象存储服务,请参考 对象存储服务配置指南 配置
      • Arxiv
      • B站相关插件(作者:fred913
        • bilibili 视频信息获取(建议使用以下插件时同时启用本插件)
        • bilibili 视频搜索
          • 需配置环境变量 BILIBILI_COOKIES
        • bilibili 听歌识曲
        • bilibili视频总结
          • 需配置环境变量 BILIBILI_COOKIES
  • 支持 gemini-pro, gemini-pro-vision 模型

    • 以下功能目前还不支持
      • 插件功能
    • 如何启用
    • 常见问题参考:Gemini Prompting FAQs
    • gemini-pro-vision 模型需要配置对象存储服务,请参考 对象存储服务配置指南 配置
    • ⚠ gemini-pro-vision 注意事项 Hk-Gosuto#203
      • 每次对话必须包含图像数据,不然会出现 Add an image to use models/gemini-pro-vision, or switch your model to a text model. 错误。
      • 只支持单轮对话,多轮对话会出现 Multiturn chat is not enabled for models/gemini-pro-vision 错误。
  • 非 Vercel 运行环境下支持本地存储

    • 如果你的程序运行在非 Vercel 环境,不配置 S3_ENDPOINTR2_ACCOUNT_ID 参数,默认上传的文件将存储在 /app/uploads 文件夹中

开发计划

  • 支持使用 DuckDuckGo 作为默认搜索引擎

    不配置时默认使用 DuckDuckGo 作为搜索插件。

  • 插件列表页面开发

  • 支持开关指定插件

  • 支持 Agent 参数配置( agentType, maxIterations, returnIntermediateSteps 等)

  • 支持 ChatSession 级别插件功能开关

    仅在使用非 03010314 版本模型时会出现插件开关,其它模型默认为关闭状态,开关也不会显示。

    最新版本中已经移除上面两个模型。

  • 支持语音输入 Hk-Gosuto#208

  • 支持其他类型文件上传 Hk-Gosuto#77

  • 支持 Azure Storage Hk-Gosuto#217

  • 支持 Fooocus-API 插件 Hk-Gosuto#58

  • 支持在 UI 配置插件需要的 Key Hk-Gosuto#70

开始使用

  1. 准备好你的 OpenAI API Key;
  2. 点击右侧按钮开始部署: Deploy with Vercel,直接使用 Github 账号登录即可,记得在环境变量页填入 API Key 和页面访问密码 CODE;
  3. 部署完毕后,即可开始使用;
  4. (可选)绑定自定义域名:Vercel 分配的域名 DNS 在某些区域被污染了,绑定自定义域名即可直连。

FAQ

简体中文 > 常见问题

English > FAQ

Azure OpenAI

配置页面访问密码

配置密码后,用户需要在设置页手动填写访问码才可以正常聊天,否则会通过消息提示未授权状态。

警告:请务必将密码的位数设置得足够长,最好 7 位以上,否则会被爆破

本项目提供有限的权限控制功能,请在 Vercel 项目控制面板的环境变量页增加名为 CODE 的环境变量,值为用英文逗号分隔的自定义密码:

code1,code2,code3

增加或修改该环境变量后,请重新部署项目使改动生效。

环境变量

本项目大多数配置项都通过环境变量来设置,教程:如何修改 Vercel 环境变量

OPENAI_API_KEY (必填项)

OpanAI 密钥,你在 openai 账户页面申请的 api 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。

HIDE_USER_API_KEY (可选)

如果你不想让用户自行填入 API Key,将此环境变量设置为 1 即可。

DISABLE_GPT4 (可选)

如果你不想让用户使用 GPT-4,将此环境变量设置为 1 即可。

ENABLE_BALANCE_QUERY (可选)

如果你想启用余额查询功能,将此环境变量设置为 1 即可。

GOOGLE_API_KEY (可选)

Google Gemini Pro Api Key.

GEMINI_BASE_URL (可选)

Google Gemini Pro Api Url.

AZURE_URL (可选)

形如:https://{azure-resource-url}/openai/deployments

⚠️ 注意:这里与原项目配置不同,不需要指定 {deploy-name},将模型名修改为 {deploy-name} 即可切换不同的模型

⚠️ DALL-E 等需要 openai 密钥的插件暂不支持 Azure

Azure 部署地址。

AZURE_API_KEY (可选)

Azure 密钥。

AZURE_API_VERSION (可选)

Azure Api 版本,你可以在这里找到:Azure 文档

NEXT_PUBLIC_DISABLE_AUTOGENERATETITLE (可选)

如果你不想让用户使用自动生成标题功能,将此环境变量设置为 1 即可。

NEXT_PUBLIC_DISABLE_SENDMEMORY (可选)

如果你不想让用户使用历史摘要功能,将此环境变量设置为 1 即可。

ANTHROPIC_API_KEY (optional)

anthropic claude Api Key.

ANTHROPIC_API_VERSION (optional)

anthropic claude Api version.

ANTHROPIC_URL (optional)

anthropic claude Api Url.

DISABLE_FAST_LINK (可选)

如果你想禁用从链接解析预制设置,将此环境变量设置为 1 即可。

For Azure: use modelName@azure=deploymentName to customize model name and deployment name.

Example: +gpt-3.5-turbo@azure=gpt35 will show option gpt35(Azure) in model list. If you only can use Azure model, -all,+gpt-3.5-turbo@azure=gpt35 will gpt35(Azure) the only option in model list.

For ByteDance: use modelName@bytedance=deploymentName to customize model name and deployment name.

Example: +Doubao-lite-4k@bytedance=ep-xxxxx-xxx will show option Doubao-lite-4k(ByteDance) in model list.

DEFAULT_MODEL (optional)

Change default model

WHITE_WEBDAV_ENDPOINTS (optional)

如果你想增加允许访问的webdav服务地址,可以使用该选项,格式要求:

  • 每一个地址必须是一个完整的 endpoint

https://xxxx/xxx

  • 多个地址以,相连

DEFAULT_INPUT_TEMPLATE (可选)

自定义默认的 template,用于初始化『设置』中的『用户输入预处理』配置项

EDGE_TTS_VOICE_NAME (可选)

配置 Edge TTS 使用的语音声音,默认为:zh-CN-YunxiNeural 可访问 https://learn.microsoft.com/zh-cn/azure/ai-services/speech-service/language-support?tabs=tts#supported-languages 查看支持的参数

USE_OPENAI_ENDPOINT_FOR_ALL_MODELS (可选)

配置所有模型都使用 OpenAI 路由,在使用类似 one-api 的中转项目时会很有用 将此环境变量设置为 1 即可

部署

容器部署 (推荐)

Docker 版本需要在 20 及其以上,否则会提示找不到镜像。

⚠️ 注意:docker 版本在大多数时间都会落后最新的版本 1 到 2 天,所以部署后会持续出现“存在更新”的提示,属于正常现象。

也可以使用镜像 gosuto/chatgpt-next-web-langchain:nightly,该镜像为每日更新。

docker run -d -p 3000:3000 \
   -e OPENAI_API_KEY="sk-xxxx" \
   -e CODE="页面访问密码" \
   gosuto/chatgpt-next-web-langchain

你也可以指定 proxy:

docker run -d -p 3000:3000 \
   -e OPENAI_API_KEY="sk-xxxx" \
   -e CODE="页面访问密码" \
   --net=host \
   -e PROXY_URL="http://127.0.0.1:7890" \
   gosuto/chatgpt-next-web-langchain

如果你的本地代理需要账号密码,可以使用:

-e PROXY_URL="http://127.0.0.1:7890 user password"

如果你需要指定其他环境变量,请自行在上述命令中增加 -e 环境变量=环境变量值 来指定。

同步聊天记录(UpStash)

| 简体中文 | English | Italiano | 日本語 | 한국어

Star History

Star History Chart

捐赠

请项目原作者喝杯咖啡

感谢

JetBrains Logo (Main) logo.

感谢 jetbrains 为本项目提供的 开源许可证

开源协议

MIT