mirror of
https://github.com/yangjian102621/geekai.git
synced 2025-09-19 01:36:38 +08:00
feat: 定期保存 API KEY 的最后一次调用时间
This commit is contained in:
parent
21adfd441c
commit
a897a755b6
31
README.md
31
README.md
@ -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,支持语音聊天
|
||||
|
||||
## 参与贡献
|
||||
|
||||
|
||||
|
@ -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 ""
|
||||
|
@ -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 秒钟清理一次
|
||||
}
|
||||
}()
|
||||
|
Loading…
Reference in New Issue
Block a user