决定了,将ChatGPTer开源!主打一个大模型人人可用。

2024-05-26 15:20

本文主要是介绍决定了,将ChatGPTer开源!主打一个大模型人人可用。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一个快速上手且极易部署的类ChatGPT开源应用,可接入 OPENAI API通义千问API

开源地址: https://github.com/isnl/EsChat

大声(偷偷)告诉你:通义千问有免费API额度可白嫖!!!

版本特性

  • OPENAI 和 通义千问双模型可选
  • 支持暗黑主题 🌙
  • 完美的移动端兼容 📱
  • 打字机回复效果 ⌨️
  • 上下文对话支持,可创建多轮对话记录
  • 整段生成内容支持复制、代码复制、代码高亮
  • 双登录模式:
    • 1.关联公众号登录(个人订阅号即可) - 可实现公众号引流
    • 2.普通的授权码登录模式(手动分发授权码)
  • Lowdb 本地JSON数据库
  • 自定义调用次数及文本输入上限

关于使用个人订阅号实现网站授权登录的具体技术方案可参考如下文章,非常详细
https://juejin.cn/post/7234394174274158650


目录

  • 前置要求
    • Node
    • .env 配置文件
      • 1.通义千问配置
        • TY_API_KEY
        • TY_MODEL
      • 2.OPENAI相关配置
        • GPT3_BASE_URL
        • GPT3_API_KEY
        • GPT3_MODEL
      • 3.用户配置及公众号相关
        • WECHAT_TOKEN
        • JWT_SECRET_KEY
        • MAX_LENGTH
        • DAILY_LIMIT
        • 网站登录 - 公众号二维码存放路径
  • 截图展示
    • 🏠 首页
    • 内容生成
    • 保存为图片
    • 昵称头像修改
    • 移动端兼容
  • 技术栈
    • 客户端
    • 服务端
  • 目录结构
    • 客户端
    • 服务端
  • 安装部署
    • 本地开发
  • 本地构建
    • Docker
  • 常见问题

前置要求

Node

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

node -v

.env 配置文件

请参考 server/.env.example 文件,将配置项替换为实际值,并在相同目录下保存为 .env 文件

以下 通义千问OPENAI 二选一,默认优先取通义千问配置

1.通义千问配置
TY_API_KEY
  • 必须: true
  • 描述: 用于访问通义千问平台的 apiKey。
TY_MODEL
  • 必须: false
  • 默认值: qw-max
  • 描述: 指定要调用的通义千问大语言模型。若不设置,将使用默认值 qw-plus
2.OPENAI相关配置
GPT3_BASE_URL
  • 必须: false
  • 默认值: https://api.openai.com/v1
  • 描述: gpt3服务的基础URL。如无特殊需求,建议使用默认值。
GPT3_API_KEY
  • 必须: true
  • 描述: openai平台提供的 API 密钥,用于访问 gpt3 服务。
GPT3_MODEL
  • 必须: false
  • 默认值: gpt-3.5-turbo
  • 描述: 指定使用的 gpt3 模型。如果不指定,系统将使用默认模型 gpt-3.5-turbo
3.用户配置及公众号相关
WECHAT_TOKEN
  • 必须: true
  • 描述: 对应微信公众号后台设置的 token,可按需自定义。
JWT_SECRET_KEY
  • 必须: true
  • 描述: 设置用于 jwt 鉴权的 secret key。
MAX_LENGTH
  • 必须: true
  • 默认值: 2000
  • 描述: 用户允许的最大输入字符长度。默认限制为 2000 字符。
DAILY_LIMIT
  • 必须: true
  • 默认值: 20
  • 描述: 每日调用接口的额度上限。默认设定为每日最多调用 20 次。
网站登录 - 公众号二维码存放路径

client/static/imgs/mp_qrcode.jpg

请注意,如果是 Docker 部署,则路径如下

server/clientDist/static/imgs/mp_qrcode.jpg

截图展示

🏠 首页

空对话-浅色主题

空对话-深色主题

内容生成

深色模式下的内容生成

保存为图片

对话记录保存为图片

导出的图片内容

昵称头像修改

修改头像

昵称修改

移动端兼容

移动端对话管理 移动端内容生成
## 技术栈

客户端

Vue3 + Element Plus + Pinia + Unocss

服务端

Express + Lowdb

目录结构

客户端

/src/assets 静态资源

/src/components 公共组件

/src/hooks 公共hooks

/src/router 路由配置

/src/service 接口请求、响应拦截器

/src/stores 状态管理

/src/utils 全局工具类

/src/views 页面

服务端

/src/constant 常量

/src/lowdb Lowdb本地数据库及配置

  • user.ts 用户数据库配置
  • users.json 用户数据库文件
  • userServiceCall.ts 用户调用记录数据库配置
  • userServiceCall.json 用户调用记录数据库文件

/src/routes 路由

  • wechat.ts 公众号验证、获取验证码、登录校验
  • home.ts status 状态校验
  • chat.ts 大模型对话
  • user.ts 用户信息相关

/src/store node-cache配置,主要用于验证码的生成及校验

/src/utils 工具类

.env.example 配置文件示例,请务必创建自己的 .env 文件

app.ts 应用入口,可配置端口、跨域等

安装部署

本地开发

克隆项目

git clone git@github.com:isnl/EsChat.git

服务端

进入服务端根目录

cd server

安装依赖

npm install  

参考 .env.example ,在服务端根目录下新建 .env 文件,并配置环境变量

启动服务端

npm run dev

客户端

进入客户端根目录

cd client

安装依赖

npm install  

启动客户端

npm run dev

本地构建

客户端构建

进入客户端根目录

cd client

执行构建命令

npm run build

此时会在服务端根目录生成客户端的构建产物 clientDist


服务端构建

进入服务端根目录

cd server

执行构建命令

npm run build

此时会在服务端根目录产生两个构建产物 app.mjsapp.mjs.map

接下来使用如下命令启动服务即可

npm start

当然,你也可以使用 pm2 来守护进程,防止进程被杀死

pm2 start npm --name ai -- start

Docker

docker pull webpeanut/eschatdocker run -d --name eschat \-p 3100:3100  \-e TY_API_KEY=YOUR_TY_API_KEY \-e TY_MODEL=qwen-turbo  \-e WECHAT_TOKEN=YOUR_WECHAT_TOKEN  \-e JWT_SECRET_KEY=YOUR_JWT_SECRET_KEY  \-e MAX_LENGTH=2000  \-e DAILY_LIMIT=20  \webpeanut/eschat

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

常见问题

Q: 部署后为啥不是流式响应

A: 检查 nginx 配置

proxy_buffering off;
chunked_transfer_encoding on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;

Q: 授权码登录方式,授权码在哪创建?

A/server/db/user.jsonopenId 为授权码字段,自行生成即可,长度和内容随机,确保唯一性即可

{"openId": "nf71b7-nsh167-7n21b1","id": "poRElv1koxGkvYriOlM61","avatar": "E053","name": "GFN1E-ChatGPTer","createdAt": "2024-04-05 15:38:15"
}

Q: 除了微信公众号和授权码登录方式外,能不能让用户自己注册账号自行使用?

A: 用户相关模块逻辑很清晰,自行开发注册相关功能即可


Q: 能不能给指定的用户单独设置每日调用次数和文本长度限制?

A: 需要写点代码,将调用次数和文本长度字段存入数据库中的用户表里。在你使用的模型 chat 路由模块(server/src/routes/chat/xxx),先根据id获取到用户信息,再将调用次数和文本长度限制改为从用户信息中获取的方式即可

  • process.env.MAX_LENGTH -> 用户信息中的 MAX_LENGTH
  • process.env.DAILY_LIMIT -> 用户信息中的 DAILY_LIMIT

Q: Docker部署,如何查看镜像文件夹中的内容,例如查看数据库?

A: 要查看 Docker 镜像中的内容,你可以通过以下步骤操作:

首先,使用以下命令列出本地的 Docker 镜像:

docker images

找到你想要查看的镜像的 REPOSITORY 和 TAG。

使用以下命令创建并启动一个临时容器,使得你能够在其中查看镜像中的文件内容:

docker run -it --rm webpeanut/eschat sh

这将创建并启动一个新的容器,并进入容器的 shell 命令行界面。

在容器的命令行界面中,你可以使用标准的 Linux 命令来查看镜像中的文件内容,例如 ls 命令来列出目录中的文件。

通过以上步骤,你可以在容器中查看 Docker 镜像中的文件内容。


Q: 没有服务器和域名怎么办?

A: 买!阿里云现在服务器价格新老用户都很便宜
2核4G,5M固定带宽,80G ESSD Entry盘一年只需要199(企业用户),2核2G,3M固定带宽,40G ESSD Entry盘只需 99(个人企业同享)
不是哥们,这价格你敢信!!! 最重要的是 续费同价,这你受得了吗!

当然,新用户更优惠,.com域名 + 2核2G ECS包年 只需 9999 你买不了吃亏,买不了上当

阿里云-即刻上车

这篇关于决定了,将ChatGPTer开源!主打一个大模型人人可用。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1004842

相关文章

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

AI绘图怎么变现?想做点副业的小白必看!

在科技飞速发展的今天,AI绘图作为一种新兴技术,不仅改变了艺术创作的方式,也为创作者提供了多种变现途径。本文将详细探讨几种常见的AI绘图变现方式,帮助创作者更好地利用这一技术实现经济收益。 更多实操教程和AI绘画工具,可以扫描下方,免费获取 定制服务:个性化的创意商机 个性化定制 AI绘图技术能够根据用户需求生成个性化的头像、壁纸、插画等作品。例如,姓氏头像在电商平台上非常受欢迎,

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

AI一键生成 PPT

AI一键生成 PPT 操作步骤 作为一名打工人,是不是经常需要制作各种PPT来分享我的生活和想法。但是,你们知道,有时候灵感来了,时间却不够用了!😩直到我发现了Kimi AI——一个能够自动生成PPT的神奇助手!🌟 什么是Kimi? 一款月之暗面科技有限公司开发的AI办公工具,帮助用户快速生成高质量的演示文稿。 无论你是职场人士、学生还是教师,Kimi都能够为你的办公文

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验