/chattyai-web

用 Express 和 Vue3 搭建的 ChatGPT 演示网页

Primary LanguageVueMIT LicenseMIT

ChatGPT Web

声明:此项目 Fork Chanzhaoyu/chatgpt-web, 遵从原项目 MIT 协议,如有侵权,请及时告知。

cover cover2

介绍

支持单模型,提供了官方 OpenAI API 方法

方式 免费? 可靠性 质量
ChatGPTAPI(gpt-3.5-turbo-0301) 可靠 相对较笨

对比:

  1. ChatGPTAPI 使用 gpt-3.5-turbo 通过 OpenAI 官方 API 调用 ChatGPT

警告:

  1. 你应该首先使用 API 方式
  2. 使用 API 时,如果网络不通,那是国内被墙了,你需要自建代理,绝对不要使用别人的公开代理,那是危险的。
  3. 使用 accessToken 方式时反向代理将向第三方暴露您的访问令牌,这样做应该不会产生任何不良影响,但在使用这种方法之前请考虑风险。
  4. 使用 accessToken 时,不管你是国内还是国外的机器,都会使用代理。默认代理为 pengzhile 大佬的 https://ai.fakeopen.com/api/conversation,这不是后门也不是监听,除非你有能力自己翻过 CF 验证,用前请知悉。社区代理(注意:只有这两个是推荐,其他第三方来源,请自行甄别)
  5. 把项目发布到公共网络时,你应该设置 AUTH_SECRET_KEY 变量添加你的密码访问权限,你也应该修改 index.html 中的 title,防止被关键词搜索到。

待实现路线

  • 双模型
  • 多会话储存和上下文逻辑
  • 对代码等消息类型的格式化美化处理
  • 访问权限控制
  • 数据导入、导出
  • 保存消息到本地图片
  • 界面多语言
  • 界面主题

前置要求

Node

node 需要 ^16 || ^18 || ^19 版本(node >= 14 需要安装 fetch polyfill),使用 nvm 可管理本地多个 node 版本

node -v

PNPM

如果你没有安装过 pnpm

npm install pnpm -g

安装依赖

根目录下运行以下命令

pnpm install

测试环境运行

根目录下运行以下命令

pnpm dev

环境变量

API 可用:

  • OPENAI_API_KEYOPENAI_ACCESS_TOKEN 二选一
  • OPENAI_API_MODEL 设置模型,可选,默认:gpt-3.5-turbo
  • OPENAI_API_BASE_URL 设置接口地址,可选,默认:https://api.openai.com
  • OPENAI_API_DISABLE_DEBUG 设置接口关闭 debug 日志,可选,默认:empty 不关闭

ACCESS_TOKEN 可用:

  • OPENAI_ACCESS_TOKENOPENAI_API_KEY 二选一,同时存在时,OPENAI_API_KEY 优先
  • API_REVERSE_PROXY 设置反向代理,可选,默认:https://ai.fakeopen.com/api/conversation社区(注意:只有这两个是推荐,其他第三方来源,请自行甄别)

通用:

  • AUTH_SECRET_KEY 访问权限密钥,可选
  • MAX_REQUEST_PER_HOUR 每小时最大请求次数,可选,默认无限
  • TIMEOUT_MS 超时,单位毫秒,可选
  • SOCKS_PROXY_HOSTSOCKS_PROXY_PORT 一起时生效,可选
  • SOCKS_PROXY_PORTSOCKS_PROXY_HOST 一起时生效,可选
  • HTTPS_PROXY 支持 httphttps, socks5,可选
  • ALL_PROXY 支持 httphttps, socks5,可选

防止爬虫抓取

nginx

将下面配置填入nginx配置文件中,可以参考 docker-compose/nginx/nginx.conf 文件中添加反爬虫的方法

    # 防止爬虫抓取
    if ($http_user_agent ~* "360Spider|JikeSpider|Spider|spider|bot|Bot|2345Explorer|curl|wget|webZIP|qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Feedfetcher-Google|Yahoo! Slurp|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot|ia_archiver|Tomato Bot|NSPlayer|bingbot")
    {
      return 403;
    }

使用 Railway 部署

Deploy on Railway

Railway 环境变量

环境变量名称 必填 备注
PORT 必填 默认 3002
AUTH_SECRET_KEY 可选 访问权限密钥
MAX_REQUEST_PER_HOUR 可选 每小时最大请求次数,可选,默认无限
TIMEOUT_MS 可选 超时时间,单位毫秒
OPENAI_API_KEY OpenAI API 二选一 使用 OpenAI API 所需的 apiKey (获取 apiKey)
OPENAI_ACCESS_TOKEN Web API 二选一 使用 Web API 所需的 accessToken (获取 accessToken)
OPENAI_API_BASE_URL 可选,OpenAI API 时可用 API接口地址
OPENAI_API_MODEL 可选,OpenAI API 时可用 API模型
API_REVERSE_PROXY 可选,Web API 时可用 Web API 反向代理地址 详情
SOCKS_PROXY_HOST 可选,和 SOCKS_PROXY_PORT 一起时生效 Socks代理
SOCKS_PROXY_PORT 可选,和 SOCKS_PROXY_HOST 一起时生效 Socks代理端口
SOCKS_PROXY_USERNAME 可选,和 SOCKS_PROXY_HOST 一起时生效 Socks代理用户名
SOCKS_PROXY_PASSWORD 可选,和 SOCKS_PROXY_HOST 一起时生效 Socks代理密码
HTTPS_PROXY 可选 HTTPS 代理,支持 http,https, socks5
ALL_PROXY 可选 所有代理 代理,支持 http,https, socks5

注意: Railway 修改环境变量会重新 Deploy

手动打包

1、修改根目录下 .env 文件中的 VITE_APP_API_ALL_BASE_URL 为你的实际后端接口地址

2、根目录下运行以下命令,然后将 dist 文件夹内的文件复制到你网站服务的根目录下

参考信息

pnpm build

常见问题

参与贡献

贡献之前请先阅读 贡献指南

感谢所有做过贡献的人!

赞助

如果你觉得这个项目对你有帮助,并且情况允许的话,可以给我一点点支持,总之非常感谢支持~

License

MIT © ChenZhaoYu