model selecting

This commit is contained in:
2026-01-22 22:56:51 +03:00
parent 4d543a2260
commit f8b67317b7
3 changed files with 94 additions and 15 deletions

View File

@@ -23,6 +23,8 @@ func RegisterRP(bot *laniakea.Bot) {
rp.Payload(rpWaifuSet, "rp.waifu_set")
rp.Payload(rpPresetsList, "rp.preset_list")
rp.Payload(rpPresetSet, "rp.preset_set")
rp.Payload(rpModelList, "rp.model_list")
rp.Payload(rpModelSet, "rp.model_set")
rp.Payload(rpScenarioList, "rp.scenario_list")
rp.Payload(chatStat, "rp.tokens")
rp.Payload(newChat, "rp.new_chat")
@@ -40,13 +42,13 @@ func RegisterRP(bot *laniakea.Bot) {
func rpInfo(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
rpRepRed := red.NewRPRepository(db)
rpRepPsql := psql.NewRPRepository(db)
waifuId := rpRepRed.GetSelectedWaifu(ctx.FromID)
waifuRep := psql.NewWaifuRepository(db)
waifu, err := waifuRep.GetById(waifuId)
rpUser, err := rpRepPsql.GetOrCreateUser(int64(ctx.FromID))
if err != nil {
ctx.Error(err)
}
rpUser, err := rpRepPsql.GetUser(int64(ctx.FromID))
waifuId := rpRepRed.GetSelectedWaifu(ctx.FromID)
waifuRep := psql.NewWaifuRepository(db)
waifu, err := waifuRep.GetById(waifuId)
if err != nil {
ctx.Error(err)
}
@@ -54,13 +56,15 @@ func rpInfo(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
fmt.Sprintf("Привет, %s!", ctx.From.FirstName),
fmt.Sprintf("*Выбранная вайфу*: %s", waifu.Name),
fmt.Sprintf("*Выбранный пресет*: %s", laniakea.EscapeMarkdown(rpUser.Preset.Name)),
fmt.Sprintf("*Выбранная модель*: %s", rpUser.Model.Name),
fmt.Sprintf("*Твое описание персонажа*: %s", rpUser.UserPrompt),
}
kb := laniakea.NewInlineKeyboard(1)
kb.AddCallbackButton("Статистика чата", "rp.tokens")
kb.AddCallbackButton("Сменить пресет", "rp.preset_list")
kb.AddCallbackButton("Сменить вайфу", "rp.waifu_list")
kb.AddCallbackButton("Сменить пресет", "rp.preset_list")
kb.AddCallbackButton("Сменить модель", "rp.model_list")
kb.AddCallbackButton("Новый чат", "rp.scenario_list")
if ctx.CallbackMsgId > 0 {
ctx.EditCallback(strings.Join(out, "\n"), kb)
@@ -155,6 +159,46 @@ func rpPresetSet(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
ctx.EditCallbackf("Был выбран пресет %s", kb, preset.Name)
}
func rpModelList(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
rep := psql.NewRPRepository(db)
models, err := rep.GetAllModels()
if err != nil {
ctx.Error(err)
return
}
out := make([]string, len(models))
kb := laniakea.NewInlineKeyboard(2)
for i, model := range models {
out[i] = fmt.Sprintf("*%s* - размер контекста %dK", model.Name, model.ContextSize)
kb.AddCallbackButton(model.Name, "rp.model_set", model.ID)
}
kb.AddLine()
kb.AddCallbackButton("Назад", "rp.info")
ctx.EditCallback(strings.Join(out, "\n"), kb)
}
func rpModelSet(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
rep := psql.NewRPRepository(db)
user, err := rep.GetOrCreateUser(int64(ctx.FromID))
if err != nil {
ctx.Error(err)
return
}
model, err := rep.GetModel(ctx.Args[0])
if err != nil {
ctx.Error(err)
return
}
user.SelectedModel = model.ID
err = rep.UpdateUser(user)
if err != nil {
ctx.Error(err)
return
}
kb := laniakea.NewInlineKeyboard(1).AddCallbackButton("На главную", "rp.info")
ctx.EditCallback(fmt.Sprintf("Была установлена модель %s", model.Name), kb)
}
func rpScenarioList(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
rep := psql.NewRPRepository(db)
scenarios, err := rep.GetAllScenarios()
@@ -293,6 +337,12 @@ func rpUserPromptSet(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
func generate(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
redisRpRep := red.NewRPRepository(db)
rpRep := psql.NewRPRepository(db)
rpUser, err := rpRep.GetOrCreateUser(int64(ctx.FromID))
if err != nil {
ctx.Error(err)
return
}
waifuId := redisRpRep.GetSelectedWaifu(ctx.FromID)
if waifuId == 0 {
ctx.Answer("Не выбрана вайфу")
@@ -313,12 +363,6 @@ func generate(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
ctx.Error(err)
return
}
rpRep := psql.NewRPRepository(db)
rpUser, err := rpRep.GetUser(int64(ctx.FromID))
if err != nil {
ctx.Error(err)
return
}
preset, err := rpRep.GetUserPreset(rpUser)
if err != nil {
ctx.Error(err)
@@ -369,7 +413,7 @@ func generate(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
}
m := ctx.Answer("Генерация запущена...")
api := ai.NewOpenAIAPI(ai.GPTBaseUrl, "", "deepseek-ai/deepseek-v3.1-terminus")
api := ai.NewOpenAIAPI(ai.GPTBaseUrl, "", rpUser.Model.Key)
res, err := api.CreateCompletion(ai.CreateCompletionReq{
Messages: messages,
Verbosity: "low",