feat: 定期保存 API KEY 的最后一次调用时间

This commit is contained in:
RockYang 2023-05-06 09:33:26 +08:00
parent 21adfd441c
commit a897a755b6
3 changed files with 28 additions and 12 deletions

View File

@ -1,20 +1,29 @@
# Wechat-GPT
# Chat-Plus 智能助手
基于 ChatGPT 的聊天应用
基于 OpenAI API 实现的 ChatGPT Web 应用,一共分为两个版本:
* 通用版:交互体验跟 ChatGPT 官方一致,聊天记录保存在客户端(浏览器)
* 角色版:内置了各种预训练好的角色,比如小红书写手,英语翻译大师,苏格拉底,孔子,乔布斯,周报助手等。轻松满足你的各种聊天和应用需求。
聊天记录保存在云端(可以配置是否保存聊天记录)
每个版本都有 PC 版和移动版PC 版本的体验要略优于移动版。
**本项目基于 MIT 协议,免费开放全部源代码,可以作为个人学习使用或者商用。如需商用建议联系作者登记,仅做统计使用,优秀项目我们将在项目首页为您展示。**
## 项目功能介绍
## TODOLIST
* [x] 使用 level DB 保存用户聊天记录
* [x] 用户聊天鉴权,设置口令模式
* [x] 使用 level DB 保存用户,角色和聊天记录数据
* [x] 引入用户角色,添加用户聊天鉴权,设置口令模式
* [x] 定期清理不在线的会话 sessionID 和聊天上下文记录
* [x] 给 Token 设置调用次数
* [x] OpenAI API 负载均衡,限制每个 API Key 每分钟之内调用次数不超过 15次防止被封
* [x] 角色设定,预设一些角色,比如程序员,客服,作家,老师,艺术家...
* [x] markdown 语法解析和代码高亮
* [x] 实现 markdown 语法解析和代码高亮,支持复制回复内容功能
* [ ] 用户配置界面,配置用户的使用习惯,可以让用户配置自己的 API KEY调用自己的 API Key将不记 Token 的使用次数
* [ ] **新增管理后台功能,实现用户,角色的动态管理**
* [ ] 嵌入 AI 绘画功能,支持根据描述词生成图片
* [x] 点卡用完之后,提示加入知识星球
* [ ] 增加 Buffer 层,将相同的问题答案缓存起来,相同问题直接返回答案。
* [ ] 界面改版,支持创建会话功能,支持发语音
* [x] 允许修改角色训练数据
* [ ] 接入自己训练的开源大语言模型
* [ ] 接入 Google 语音 API支持语音聊天
## 参与贡献

View File

@ -332,7 +332,12 @@ func (s *Server) getApiKey(failedKey string) string {
rand.NewSource(time.Now().UnixNano())
if len(keys) > 0 {
key := keys[rand.Intn(len(keys))]
key.LastUsed = time.Now().Unix()
// 更新选中 Key 的最后使用时间
for i, item := range s.Config.Chat.ApiKeys {
if item.Value == key.Value {
s.Config.Chat.ApiKeys[i].LastUsed = time.Now().Unix()
}
}
return key.Value
}
return ""

View File

@ -143,6 +143,8 @@ func (s *Server) Run(webRoot embed.FS, path string, debug bool) {
delete(s.ChatContexts, key)
}
}
// 保存配置文档
_ = utils.SaveConfig(s.Config, s.ConfigPath)
time.Sleep(time.Second * 5) // 每隔 5 秒钟清理一次
}
}()