ChatGPT Web:基于Vue3与Express的AI智能对话应用实践
引言
随着人工智能技术的飞速发展,AI对话系统已经成为众多应用场景中的核心组件。无论是客户服务、教育辅导还是娱乐互动,AI对话系统都以其高效、便捷的特点赢得了广泛的关注和应用。本文将介绍一个基于Vue3和Express开发的ChatGPT Web项目,它不仅具备强大的AI对话功能,还包含了界面主题设置、国际化语言支持、多会话存储、权限控制等丰富特性。通过这一项目,我们可以深入了解AI对话系统的构建与部署,以及其在不同场景下的应用实践。
一、项目简介
ChatGPT Web是一个集AI对话、界面定制、多会话管理等功能于一体的Web端应用。它利用Vue3构建前端界面,结合Node.js开发框架Express处理后端逻辑,为用户提供了一个简洁、高效、易用的AI对话平台。该项目旨在提供一个学习和交流的平台,帮助开发者深入了解AI对话系统的构建与优化。
二、技术框架
ChatGPT Web项目采用了以下技术栈:
- 前端:Vue3 + TypeScript + Vite + Naive UI + Pinia + Axios
- 后端:Express
Vue3作为最新的Vue版本,带来了性能提升和更好的类型支持;TypeScript为JavaScript添加了类型系统,提高了代码的可读性和可维护性;Vite是一个现代的前端构建工具,提供了极快的冷启动和热模块更新;Naive UI是一套简洁易用的Vue3组件库;Pinia是Vue3的官方状态管理库;Axios是一个基于Promise的HTTP客户端,用于前后端通信;Express是一个灵活且高效的Node.js Web应用框架。
三、项目介绍与API选择
ChatGPT Web项目支持双模型,提供了两种非官方的ChatGPT API方法:
- ChatGPTAPI(gpt-3.5-turbo-0301)
:通过OpenAI官方API调用ChatGPT,可靠性高但非免费。
- ChatGPTUnofficialProxyAPI(网页accessToken)
:使用非官方代理服务器访问ChatGPT后端API,绕过Cloudflare限制,相对不可靠但免费。
在使用这两种API时,需要注意以下几点:
-
优先使用ChatGPTAPI,因其可靠性更高。
-
若国内网络不通,可考虑自建代理或使用推荐的社区代理(如pengzhile的https://ai.fakeopen.com/api/conversation)。
-
使用accessToken方式时,需考虑暴露访问令牌的风险,并设置AUTH_SECRET_KEY变量添加密码访问权限。
切换API方式时,只需修改service/.env文件中的相关配置即可。
四、功能与特性
ChatGPT Web项目具备以下功能与特性:
- AI对话
:通过集成大模型,实现人工智能对话,快速响应用户问题。
- 保存下载
:支持会话记录保存为图片并下载,方便分享、记录与存档。
- 快捷输入
:聊天框输入“/”可触发提示词,提高对话效率。
- 功能扩展
:支持自定义开发其他功能模块,满足更多需求。
- 打包部署
:支持Docker、Railway、Sealos等多种方式打包部署应用。
- 自适应
:支持移动端与PC端,根据设备分辨率进行优化,提供最佳用户体验。
五、应用场景及案例说明
ChatGPT Web项目可广泛应用于以下场景:
-
客户服务:企业可将其集成到官网或APP中,为用户提供24/7的在线客服支持。例如,电商网站可利用AI对话系统解答用户关于商品、订单、支付等问题的疑问,提高客户满意度。
-
教育辅导:教育机构可将其应用于在线学习平台,为学生提供个性化的学习辅导。例如,英语学习平台可利用AI对话系统进行口语练习、语法纠正等,帮助学生提高英语水平。
-
娱乐互动:游戏开发者可将其集成到游戏中,为玩家提供有趣的AI角色互动。例如,角色扮演游戏可利用AI对话系统实现NPC与玩家的对话交流,增强游戏的沉浸感和趣味性。
案例说明:
某在线教育平台集成了ChatGPT Web项目作为其在线辅导工具。学生可通过平台与AI对话系统进行实时互动,获取个性化的学习建议和解答。该平台还利用AI对话系统的保存下载功能,将学生的对话记录保存为图片并分享给教师,以便教师进行针对性的辅导和评估。通过这一应用实践,该平台显著提高了学生的学习效率和满意度。
五、安装部署
Node
node 需要 ^16 || ^18 || ^19 版本(node >= 14 需要安装 fetch polyfill),使用 nvm 可管理本地多个 node 版本
node -v
PNPM
如果你没有安装过 pnpm
-
npm install pnpm -g
填写密钥
获取 Openai Api Key 或 accessToken 并填写本地环境变量 跳转
-
# service/.env 文件# OpenAI API Key - https://platform.openai.com/overviewOPENAI_API_KEY=# change this to an `accessToken` extracted from the ChatGPT site's `https://chat.openai.com/api/auth/session` responseOPENAI_ACCESS_TOKEN=
安装依赖
为了简便 后端开发人员 的了解负担,所以并没有采用前端 workspace 模式,而是分文件夹存放。如果只需要前端页面做二次开发,删除 service 文件夹即可。
后端
进入文件夹 /service 运行以下命令
-
pnpm install
前端
根目录下运行以下命令
-
pnpm bootstrap
测试环境运行
后端服务
进入文件夹 /service 运行以下命令
-
pnpm start
前端网页
根目录下运行以下命令
-
pnpm dev
环境变量
API 可用:
- OPENAI_API_KEY
和 OPENAI_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_TOKEN
和 OPENAI_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_HOST
和 SOCKS_PROXY_PORT 一起时生效,可选
- SOCKS_PROXY_PORT
和 SOCKS_PROXY_HOST 一起时生效,可选
- HTTPS_PROXY
支持 http,https, socks5,可选
- ALL_PROXY
支持 http,https, socks5,可选
打包
使用 Docker
Docker 参数示例
Docker build & Run
-
docker build -t chatgpt-web .# 前台运行docker run --name chatgpt-web --rm -it -p 127.0.0.1:3002:3002 --env OPENAI_API_KEY=your_api_key chatgpt-web# 后台运行docker run --name chatgpt-web -d -p 127.0.0.1:3002:3002 --env OPENAI_API_KEY=your_api_key chatgpt-web# 运行地址http://localhost:3002/
Docker compose
Hub 地址
-
version: '3'services: app: image: chenzhaoyu94/chatgpt-web # 总是使用 latest ,更新时重新 pull 该 tag 镜像即可 ports: - 127.0.0.1:3002:3002 environment: # 二选一 OPENAI_API_KEY: sk-xxx # 二选一 OPENAI_ACCESS_TOKEN: xxx # API接口地址,可选,设置 OPENAI_API_KEY 时可用 OPENAI_API_BASE_URL: xxx # API模型,可选,设置 OPENAI_API_KEY 时可用,https://platform.openai.com/docs/models # gpt-4, gpt-4o, gpt-4o-mini, gpt-4-turbo, gpt-4-turbo-preview, gpt-4-0125-preview, gpt-4-1106-preview, gpt-4-0314, gpt-4-0613, gpt-4-32k, gpt-4-32k-0314, gpt-4-32k-0613, gpt-3.5-turbo-16k, gpt-3.5-turbo-16k-0613, gpt-3.5-turbo, gpt-3.5-turbo-0301, gpt-3.5-turbo-0613, text-davinci-003, text-davinci-002, code-davinci-002 OPENAI_API_MODEL: xxx # 反向代理,可选 API_REVERSE_PROXY: xxx # 访问权限密钥,可选 AUTH_SECRET_KEY: xxx # 每小时最大请求次数,可选,默认无限 MAX_REQUEST_PER_HOUR: 0 # 超时,单位毫秒,可选 TIMEOUT_MS: 60000 # Socks代理,可选,和 SOCKS_PROXY_PORT 一起时生效 SOCKS_PROXY_HOST: xxx # Socks代理端口,可选,和 SOCKS_PROXY_HOST 一起时生效 SOCKS_PROXY_PORT: xxx # HTTPS 代理,可选,支持 http,https,socks5 HTTPS_PROXY: http://xxx:7890
- OPENAI_API_BASE_URL
可选,设置 OPENAI_API_KEY 时可用
- OPENAI_API_MODEL
可选,设置 OPENAI_API_KEY 时可用
防止爬虫抓取
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; }
七、总结与展望
ChatGPT Web项目是一个基于Vue3和Express开发的AI智能对话应用。它集成了多种先进技术,具备强大的功能和丰富的特性。通过这一项目,我们可以深入了解AI对话系统的构建与部署过程,以及其在不同场景下的应用实践。未来,我们将继续优化和完善该项目,探索更多创新的应用场景和技术方案,为AI对话系统的发展贡献更多的力量。
项目地址
https://github.com/Chanzhaoyu/chatgpt-web
-
- OPENAI_API_BASE_URL
-
-
- AUTH_SECRET_KEY
- OPENAI_ACCESS_TOKEN
- OPENAI_API_KEY
-
-
-
-
-
- AI对话
- ChatGPTAPI(gpt-3.5-turbo-0301)