对接OpenAI API格式的对话API,并提供扩展功能。
语言模型基于RWKV-Runner,使用方法详见本机搭建RWKV语言模型(最低只需2G显存)。
本项目使用SpringBoot2.6+MyBatisPlus框架,采用MVC设计模式实现。
前端见智能聊天机器人前端页面。
- 对话的存储
- 模型的管理(可对接多个模型API)
- 搭档功能(可自定义角色)
- 评分系统(支持用户对模型、搭档、机器人回复内容进行评分)
- 用户Tokens的管理,可限制用户的Tokens
- 后台统计图
- 对话消息的导入导出
主页面
搭档管理页面
导出消息
后台页面
登录页面
-
查看本机搭建RWKV语言模型(最低只需2G显存),部署RWKV轻量语言模型(官方说明文档)。
-
使用最新的
/resource/chatbot-xxxx-xx-xx.sql
sql脚本构建数据库 -
在
/src/main/resources
目录下新建application-dev.yml
配置文件,写入以下内容(根据自己的信息进行替换):# 应用服务 WEB 访问端口 server: port: 9001 spring: # 数据源配置 datasource: url: jdbc:mysql://127.0.0.1:3307/chatbot?useSSL=false username: xxxx password: xxxx driver-class-name: com.mysql.jdbc.Driver # 配置redis数据库连接参数 redis: # redis数据库配置 host: 127.0.0.1 # ip port: 6379 # 默认端口 password: xxxxx # 密码 # 邮件发送配置 mail: host: smtp.qq.com # QQ邮件服务器的SMTP地址 port: 465 # 邮件服务器的SMTP端口,465端口通常用于SSL加密的SMTP服务 username: [email protected] # 用于发送邮件的邮箱账户用户名 password: xxxxxxxx # 申请的16位授权码 properties: mail.smtp.auth: true # 是否需要SMTP验证,通常设置为true mail.smtp.starttls.enable: true # 是否启用TLS加密,通常设置为true以提高安全性 mail.smtp.socketFactory.port: 465 # 用于创建SSL套接字的端口,通常与SMTP端口相同 mail.smtp.socketFactory.class: javax.net.ssl.SSLSocketFactory # 用于创建SSL套接字的工厂类 default-encoding: UTF-8 # 邮件内容的默认编码,这里设置为UTF-8以支持中文等非ASCII字符 # JWT,配置JWT的签发人、秘钥、过期时间等 jwt: # 签发人 subject: xxxxxxx # 加密密钥 secret: xxxxx # 令牌前缀 prefix: xxxxx # 过期时间(ms) expire: 604800000 # AES加密 aes: # 密钥 secret-key: xxxxxxx # 初始化向量(16位) init-vector: xxxxxxx # 系统设置 system: # 管理员用户邮箱 root-email: - [email protected] # 项目IP地址 address: 127.0.0.1 default-password: xxxxxxxxxxxxxx # 默认头像 default-head: xxxxxxx.png # 前端地址 front-end-url: http://127.0.0.1:8080 # 本项目地址 url: http://127.0.0.1:9001 # 阿里云OSS相关配置 aliyun: oss: endpoint: 'https://oss-cn-chengdu.aliyuncs.com' access-key-id: 'xxxxxxxxx' access-key-secret: 'xxxxxxxxxx' bucket-name: 'xxxxxxxx' url: 'https://xxxxxxxx.oss-cn-chengdu.aliyuncs.com/' path-user-head: 'chatbot-web/user-head/' # Slf4j配置 logging: level: root: info #基础日志级别 TRACE < DEBUG < INFO < WARN < ERROR < FATAL cn: insectmk: chatbotweb: controller: info # controller包下的类使用info级别 service.impl: info # impl包下的类使用debug级别
-
运行项目。
在application.yml
中配置如下内容:
spring:
datasource:
hikari:
# 解决插入表情报错
connection-init-sql: set names utf8mb4
idea使用docker生成镜像(打包镜像,导入镜像,导出镜像)
#FROM openjdk:8-alpine
FROM anapsix/alpine-java:8_server-jre_unlimited
#对时作用
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#目录是终端默认在此目录下
WORKDIR /test
EXPOSE 9001
#如果是到文件夹后面必须加上“/”,不然会找不到文件,./代表当前目录即是/test目录
COPY ./target/chatbot-web-0.0.1-SNAPSHOT.jar ./app/
#poi.jar包就会在根目录/test/app/poi.jar下
CMD java -jar ./app/chatbot-web-0.0.1-SNAPSHOT.jar --spring.profiles.active=pro
# 查看镜像
docker images
# 保存镜像(镜像名:tag)
docker save -o chatbot.tar chatbot:latest
- 对话页面随意更换会话的模型
- 对话的导入导出
- 后台增加对搭档的管理
- 后台增加对API文档的在线编辑
- 智能话题推荐
- 用户消息缓存