compress wip
This commit is contained in:
@@ -7,7 +7,6 @@ import (
|
|||||||
"kurumibot/database/mdb"
|
"kurumibot/database/mdb"
|
||||||
"kurumibot/database/psql"
|
"kurumibot/database/psql"
|
||||||
"kurumibot/database/red"
|
"kurumibot/database/red"
|
||||||
"kurumibot/utils"
|
|
||||||
"kurumibot/utils/ai"
|
"kurumibot/utils/ai"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
@@ -602,17 +601,49 @@ func generate(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
|
|||||||
compressMethod := rpUser.CompressMethod
|
compressMethod := rpUser.CompressMethod
|
||||||
if compressMethod == "messages" {
|
if compressMethod == "messages" {
|
||||||
if counter+2 >= rpUser.CompressLimit {
|
if counter+2 >= rpUser.CompressLimit {
|
||||||
compress(ctx, db)
|
m := ctx.EditCallback("Запущено сжатие чата…", nil)
|
||||||
|
_compress(ctx, db)
|
||||||
|
m.Delete()
|
||||||
}
|
}
|
||||||
} else if compressMethod == "token" {
|
} else if compressMethod == "tokens" {
|
||||||
if tokens >= rpUser.CompressLimit*1000 {
|
if tokens >= rpUser.CompressLimit*1000 {
|
||||||
compress(ctx, db)
|
m := ctx.EditCallback("Запущено сжатие чата…", nil)
|
||||||
|
_compress(ctx, db)
|
||||||
|
m.Delete()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func compress(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
|
func compress(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
|
||||||
m := ctx.EditCallback("Запущено сжатие чата…", nil)
|
m := ctx.EditCallback("Запущено сжатие чата…", nil)
|
||||||
|
_compress(ctx, db)
|
||||||
|
m.Delete()
|
||||||
|
return
|
||||||
|
//chatId = uuid.New().String()
|
||||||
|
//err = redisRpRep.SetChatId(ctx.FromID, waifuId, chatId)
|
||||||
|
//if err != nil {
|
||||||
|
// ctx.Error(err)
|
||||||
|
// return
|
||||||
|
//}
|
||||||
|
//
|
||||||
|
//err = mdb.UpdateChatHistory(db, chatId, "assistant", compressedHistory)
|
||||||
|
//if err != nil {
|
||||||
|
// ctx.Error(err)
|
||||||
|
//}
|
||||||
|
//offset := utils.Min(len(history), 20)
|
||||||
|
//for _, m := range history[len(history)-offset:] {
|
||||||
|
// err = mdb.UpdateChatHistory(db, chatId, m.Role, m.Message)
|
||||||
|
// if err != nil {
|
||||||
|
// ctx.Error(err)
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
//kb := laniakea.NewInlineKeyboard(1)
|
||||||
|
//kb = kb.AddCallbackButton("Назад", "rp.chat_stat")
|
||||||
|
//kb = kb.AddCallbackButton("На главную", "rp.info")
|
||||||
|
//ctx.EditCallback("Сжатие завершено", kb)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _compress(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
|
||||||
redisRpRep := red.NewRPRepository(db)
|
redisRpRep := red.NewRPRepository(db)
|
||||||
waifuId := redisRpRep.GetSelectedWaifu(ctx.FromID)
|
waifuId := redisRpRep.GetSelectedWaifu(ctx.FromID)
|
||||||
if waifuId == 0 {
|
if waifuId == 0 {
|
||||||
@@ -648,36 +679,13 @@ func compress(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
|
|||||||
ctx.Error(err)
|
ctx.Error(err)
|
||||||
}
|
}
|
||||||
if len(res.Choices) == 0 {
|
if len(res.Choices) == 0 {
|
||||||
m.Edit("Не удалось сжать чат")
|
ctx.Answer("Не удалось сжать чат")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
compressedHistory := strings.TrimSpace(res.Choices[0].Message.Content)
|
compressedHistory := strings.TrimSpace(res.Choices[0].Message.Content)
|
||||||
compressedHistory = strings.ReplaceAll(compressedHistory, "*", "")
|
compressedHistory = strings.ReplaceAll(compressedHistory, "*", "")
|
||||||
|
|
||||||
m.Edit(compressedHistory)
|
ctx.Answer(compressedHistory)
|
||||||
return
|
|
||||||
chatId = uuid.New().String()
|
|
||||||
err = redisRpRep.SetChatId(ctx.FromID, waifuId, chatId)
|
|
||||||
if err != nil {
|
|
||||||
ctx.Error(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
err = mdb.UpdateChatHistory(db, chatId, "assistant", compressedHistory)
|
|
||||||
if err != nil {
|
|
||||||
ctx.Error(err)
|
|
||||||
}
|
|
||||||
offset := utils.Min(len(history), 20)
|
|
||||||
for _, m := range history[len(history)-offset:] {
|
|
||||||
err = mdb.UpdateChatHistory(db, chatId, m.Role, m.Message)
|
|
||||||
if err != nil {
|
|
||||||
ctx.Error(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
kb := laniakea.NewInlineKeyboard(1)
|
|
||||||
kb = kb.AddCallbackButton("Назад", "rp.chat_stat")
|
|
||||||
kb = kb.AddCallbackButton("На главную", "rp.info")
|
|
||||||
ctx.EditCallback("Сжатие завершено", kb)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var messagesMethodCount = []int{
|
var messagesMethodCount = []int{
|
||||||
|
|||||||
Reference in New Issue
Block a user