🌟自建chatgpt-web是一个非常实用的AI服务,它可以帮助我们完成很多任务,而且,OpenAI的收费也非常实惠,自用一个月也就一两美刀,真的不贵!💸
🤖需要注册一个账号,获取API的key,就可以开始使用了。而且,OpenAI还有很多实用的功能,比如可以分享给朋友用,保存聊天记录,出门在外也可以使用。这样就不用担心记录丢失,非常方便。👍
总结一下好处
1. 便宜
2. 保存记录
3. 出门在外随时能用
4. 分享朋友
5. 免代理👉(需要用上写的另外一篇免代理自建API的教程)
简单图文介绍
1. 对话界面
2. 模型界面
3. 统计界面
4. 登录界面
项目说明
1. 项目地址
Kerwin1202/chatgpt-web: 用 Express 和 Vue3 搭建的 ChatGPT 演示网页 (github.com)
2. 功能说明
此项目 Fork 自 Chanzhaoyu/chatgpt-web, 新增了部分特色功能:
[✓] 注册&登录&重置密码
[✓] 同步历史会话
[✓] 前端页面设置apikey
[✓] 自定义敏感词
[✓] 每个会话设置独有 Prompt
[✓] 用户管理
[✓] 多 Key 随机
部署教程
1. 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/
2. Docker compose
1. 官方
version: '3'services:app:image: kerwin1202/chatgpt-web # 总是使用latest,更新时重新pull该tag镜像即可container_name: chatgptwebrestart: unless-stoppedports:- 3002:3002depends_on:- databaseenvironment:TZ: Asia/Shanghai# 二选一OPENAI_API_KEY: sk-xxx# 二选一OPENAI_ACCESS_TOKEN: xxx# API接口地址,可选,设置 OPENAI_API_KEY 时可用OPENAI_API_BASE_URL: xxx# ChatGPTAPI ChatGPTUnofficialProxyAPIOPENAI_API_MODEL: ChatGPTAPI# 反向代理,可选API_REVERSE_PROXY: xxx# 每小时最大请求次数,可选,默认无限MAX_REQUEST_PER_HOUR: 0# 超时,单位毫秒,可选TIMEOUT_MS: 600000# Socks代理,可选,和 SOCKS_PROXY_PORT 一起时生效SOCKS_PROXY_HOST: xxx# Socks代理端口,可选,和 SOCKS_PROXY_HOST 一起时生效SOCKS_PROXY_PORT: xxx# HTTPS 代理,可选,支持 http,https,socks5HTTPS_PROXY: http://xxx:7890# 访问jwt加密参数,可选 不为空则允许登录 同时需要设置 MONGODB_URLAUTH_SECRET_KEY: xxx# 网站名称SITE_TITLE: ChatGpt Web# mongodb 的连接字符串MONGODB_URL: 'mongodb://chatgpt:xxxx@database:27017'# 网站是否开启注册REGISTER_ENABLED: 'true'# 开启注册之后 网站注册允许的邮箱后缀 如果空 则允许任意后缀REGISTER_MAILS: '@qq.com,@sina.com,@163.com'# 开启注册之后 密码加密的盐PASSWORD_MD5_SALT: xxx# 开启注册之后 超级管理邮箱ROOT_USER: me@example.com# 开启注册之后 网站域名 不含 / 注册的时候发送验证邮箱使用SITE_DOMAIN: http://127.0.0.1:3002# 开启注册之后 发送验证邮箱配置SMTP_HOST: smtp.exmail.qq.comSMTP_PORT: 465SMTP_TSL: 'true'SMTP_USERNAME: noreply@examile.comSMTP_PASSWORD: xxx# 是否开启敏感词审核, 因为响应结果是流式 所以暂时没审核AUDIT_ENABLED: 'false'# https://ai.baidu.com/ai-doc/ANTIPORN/Vk3h6xagaAUDIT_PROVIDER: baiduAUDIT_API_KEY: xxxAUDIT_API_SECRET: xxxAUDIT_TEXT_LABEL: xxxlinks:- databasedatabase:image: mongocontainer_name: chatgptweb-databaserestart: unless-stoppedports:- '27017:27017'expose:- '27017'volumes:- mongodb:/data/dbenvironment:MONGO_INITDB_ROOT_USERNAME: chatgptMONGO_INITDB_ROOT_PASSWORD: xxxxMONGO_INITDB_DATABASE: chatgptvolumes:mongodb: {}
2. 自用部署模版
version: '3'services:app:image: kerwin1202/chatgpt-web # 总是使用latest,更新时重新pull该tag镜像即可container_name: chatgptwebrestart: unless-stoppedports:- 3002:3002 #端口depends_on:- databaseenvironment:TZ: Asia/Shanghai# 二选一OPENAI_API_KEY: sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx# 二选一OPENAI_ACCESS_TOKEN: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ik1UaEVOVUpHTkVNMVFURTRNMEZCTWpkQ05UZzVNRFUxUlRVd1FVSkRNRU13UmtGRVFrRXpSZyJ9.eyJodHRwczovL2FwaS5vcGVuYWkuY29tL3Byb2ZpbGUiOnsiZW1haWwiOiJoZW1wbGVkYW1oQGhvdG1haWwuY29tIiwiZW1haWxfdmVyaWZpZWQiOnRydWV9LCJodHRwczovL2FwaS5vcGVuYWkuY29tL2F1dGgiOnxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxpbGUgZW1haWwgbW9kZWwucmVhZCBtb2RlbC5yZXF1ZXN0IG9yZ2FuaXphdGlvbi5yZWFkIG9yZ2FuaXphdGlvbi53cml0ZSJ9.ucc7XHaqMO4HUvsrID9jsGIhMDxzgTaChytOw_Y57avgvok8hr6bVSpU1DF1bv-ikmI3semWmg6z9pxT3AHd69nCFNK1IvF2myIAGw-GZoVYJaIu3vCNM #Token 建议用api模式 Token需要用上反代服务器# API接口地址,可选,设置 OPENAI_API_KEY 时可用OPENAI_API_BASE_URL: https://api.xxxxx.xyz #自建API接口 cloudflare搭建就行# ChatGPTAPI(API用) ChatGPTUnofficial(网页用) ProxyAPIOPENAI_API_MODEL: ChatGPTAPI# API模型,可选,设置 OPENAI_API_KEY 时可用,https://platform.openai.com/docs/models# gpt-4, gpt-4-0314, gpt-4-32k, gpt-4-32k-0314, gpt-3.5-turbo, gpt-3.5-turbo-0301, text-davinci-003, text-davinci-002, code-davinci-002OPENAI_CHAT_MODEL: gpt-3.5-turbo-0301# 反向代理,可选API_REVERSE_PROXY: http://10.0.0.88:3080/chatgpt/conversation #用Token时使用# 每小时最大请求次数,可选,默认无限MAX_REQUEST_PER_HOUR: 0# 超时,单位毫秒,可选TIMEOUT_MS: 600000# Socks代理,可选,和 SOCKS_PROXY_PORT 一起时生效SOCKS_PROXY_HOST: # Socks代理端口,可选,和 SOCKS_PROXY_HOST 一起时生效SOCKS_PROXY_PORT: # HTTPS 代理,可选,支持 http,https,socks5HTTPS_PROXY: # 访问jwt加密参数,可选 不为空则允许登录 同时需要设置 MONGODB_URLAUTH_SECRET_KEY: 8hr83dh8399ey2rj3# 网站名称SITE_TITLE: 智障AI# mongodb 的连接字符串MONGODB_URL: 'mongodb://用户名:密码@database:27017'# 网站是否开启注册REGISTER_ENABLED: 'true'# 开启注册之后 网站注册允许的邮箱后缀 如果空 则允许任意后缀REGISTER_MAILS: '@qq.com,@sina.com,@163.com,@gmail.com'# 开启注册之后 密码加密的盐PASSWORD_MD5_SALT: 2$kJq0ndA7Vjd9023jk6Nma7QHkq3uN# 开启注册之后 超级管理邮箱ROOT_USER: xxxxxxx@gmail.com# 开启注册之后 网站域名 不含 / 注册的时候发送验证邮箱使用SITE_DOMAIN: https://ai.xxxxxx.net# 开启注册之后 发送验证邮箱配置SMTP_HOST: smtp.gmail.comSMTP_PORT: 465SMTP_TSL: 'true'SMTP_USERNAME: xxxxxxx@gmail.comSMTP_PASSWORD: xxxxxxx #邮箱的授权码AUDIT_ENABLED: 'false'AUDIT_PROVIDER: baiduAUDIT_API_KEY: xxxAUDIT_API_SECRET: xxxAUDIT_TEXT_LABEL: xxxlinks:- databasedatabase:image: mongocontainer_name: chatgptweb-databaserestart: unless-stoppedports:- '27017:27017'expose:- '27017'volumes:- /volume1/docker/ai/chatgpt-web-db/mongodb:/data/dbenvironment:MONGO_INITDB_ROOT_USERNAME: 用户名MONGO_INITDB_ROOT_PASSWORD: 密码MONGO_INITDB_DATABASE: chatgptgui:image: mongo-express:1.0.0-alpharestart: unless-stoppedports:- "1005:8081"environment:ME_CONFIG_OPTIONS_EDITORTHEME: ambianceME_CONFIG_BASICAUTH_USERNAME: 用户名ME_CONFIG_BASICAUTH_PASSWORD: 密码ME_CONFIG_MONGODB_URL: 'mongodb://用户名:密码@database:27017'ME_CONFIG_MONGODB_ENABLE_ADMIN: true # 可能不是必要的ME_CONFIG_MONGODB_ADMINUSERNAME: user01 # 可能不是必要的ME_CONFIG_MONGODB_ADMINPASSWORD: password01 # 可能不是必要的go-chatgpt-api: #Token模式的时候需要用上反代,API可以不需要container_name: go-chatgpt-apiimage: linweiyuan/go-chatgpt-api:latestports:- 3080:8080environment:- GO_CHATGPT_API_PROXY=http://10.0.0.10:1080 #这一段表示你的局域网http代理地址可以openwrt安装openclash来搭建http代理地址restart: unless-stopped
最后说明
最后的dockercompose看似复杂,其实你可以分成几个部分
1. chatgpt-web本体
2. data数据存储
3. Gui为数据库的ui,可以管理数据库
4. go-chatgpt-api为Token模式的反代
如果你只有api模式的话可以去掉token模式的反代,可以进一步精简
version: '3'services:app:image: kerwin1202/chatgpt-web # 总是使用latest,更新时重新pull该tag镜像即可container_name: chatgptwebrestart: unless-stoppedports:- 3002:3002 #端口depends_on:- databaseenvironment:TZ: Asia/ShanghaiOPENAI_API_KEY: sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx# API接口地址,可选,设置 OPENAI_API_KEY 时可用OPENAI_API_BASE_URL: https://api.xxxxx.xyz #自建API接口 cloudflare搭建就行OPENAI_API_MODEL: ChatGPTAPIOPENAI_CHAT_MODEL: gpt-3.5-turbo-0301# 每小时最大请求次数,可选,默认无限MAX_REQUEST_PER_HOUR: 0# 超时,单位毫秒,可选TIMEOUT_MS: 600000# Socks代理,可选,和 SOCKS_PROXY_PORT 一起时生效SOCKS_PROXY_HOST: # Socks代理端口,可选,和 SOCKS_PROXY_HOST 一起时生效SOCKS_PROXY_PORT: # HTTPS 代理,可选,支持 http,https,socks5HTTPS_PROXY: # 访问jwt加密参数,可选 不为空则允许登录 同时需要设置 MONGODB_URLAUTH_SECRET_KEY: 8hr83dh8399ey2rj3# 网站名称SITE_TITLE: 智障AI# mongodb 的连接字符串MONGODB_URL: 'mongodb://用户名:密码@database:27017'# 网站是否开启注册REGISTER_ENABLED: 'true'# 开启注册之后 网站注册允许的邮箱后缀 如果空 则允许任意后缀REGISTER_MAILS: '@qq.com,@sina.com,@163.com,@gmail.com'# 开启注册之后 密码加密的盐PASSWORD_MD5_SALT: 2$kJq0ndA7Vjd9023jk6Nma7QHkq3uN# 开启注册之后 超级管理邮箱ROOT_USER: xxxxxxx@gmail.com# 开启注册之后 网站域名 不含 / 注册的时候发送验证邮箱使用SITE_DOMAIN: https://ai.xxxxxx.net# 开启注册之后 发送验证邮箱配置SMTP_HOST: smtp.gmail.comSMTP_PORT: 465SMTP_TSL: 'true'SMTP_USERNAME: xxxxxxx@gmail.comSMTP_PASSWORD: xxxxxxx #邮箱的授权码AUDIT_ENABLED: 'false'AUDIT_PROVIDER: baiduAUDIT_API_KEY: xxxAUDIT_API_SECRET: xxxAUDIT_TEXT_LABEL: xxxlinks:- databasedatabase:image: mongocontainer_name: chatgptweb-databaserestart: unless-stoppedports:- '27017:27017'expose:- '27017'volumes:- /volume1/docker/ai/chatgpt-web-db/mongodb:/data/dbenvironment:MONGO_INITDB_ROOT_USERNAME: 用户名MONGO_INITDB_ROOT_PASSWORD: 密码MONGO_INITDB_DATABASE: chatgptgui:image: mongo-express:1.0.0-alpharestart: unless-stoppedports:- "1005:8081"environment:ME_CONFIG_OPTIONS_EDITORTHEME: ambianceME_CONFIG_BASICAUTH_USERNAME: 用户名ME_CONFIG_BASICAUTH_PASSWORD: 密码ME_CONFIG_MONGODB_URL: 'mongodb://用户名:密码@database:27017'ME_CONFIG_MONGODB_ENABLE_ADMIN: true # 可能不是必要的ME_CONFIG_MONGODB_ADMINUSERNAME: user01 # 可能不是必要的ME_CONFIG_MONGODB_ADMINPASSWORD: password01 # 可能不是必要的