Enha: model list based on current api
This commit is contained in:
41
bot.go
41
bot.go
@@ -826,6 +826,30 @@ func charToStart(agentName string) bool {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func updateModelLists() {
|
||||||
|
var err error
|
||||||
|
if cfg.OpenRouterToken != "" {
|
||||||
|
ORFreeModels, err = fetchORModels(true)
|
||||||
|
if err != nil {
|
||||||
|
logger.Warn("failed to fetch or models", "error", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// if llama.cpp started after gf-lt?
|
||||||
|
LocalModels, err = fetchLCPModels()
|
||||||
|
if err != nil {
|
||||||
|
logger.Warn("failed to fetch llama.cpp models", "error", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func updateModelListsTicker() {
|
||||||
|
updateModelLists() // run on the start
|
||||||
|
ticker := time.NewTicker(time.Minute * 1)
|
||||||
|
for {
|
||||||
|
<-ticker.C
|
||||||
|
updateModelLists()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
var err error
|
var err error
|
||||||
cfg, err = config.LoadConfig("config.toml")
|
cfg, err = config.LoadConfig("config.toml")
|
||||||
@@ -878,22 +902,6 @@ func init() {
|
|||||||
playerOrder = []string{cfg.UserRole, cfg.AssistantRole, cfg.CluedoRole2}
|
playerOrder = []string{cfg.UserRole, cfg.AssistantRole, cfg.CluedoRole2}
|
||||||
cluedoState = extra.CluedoPrepCards(playerOrder)
|
cluedoState = extra.CluedoPrepCards(playerOrder)
|
||||||
}
|
}
|
||||||
if cfg.OpenRouterToken != "" {
|
|
||||||
go func() {
|
|
||||||
ORModels, err := fetchORModels(true)
|
|
||||||
if err != nil {
|
|
||||||
logger.Error("failed to fetch or models", "error", err)
|
|
||||||
} else {
|
|
||||||
ORFreeModels = ORModels
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
}
|
|
||||||
go func() {
|
|
||||||
LocalModels, err = fetchLCPModels()
|
|
||||||
if err != nil {
|
|
||||||
logger.Error("failed to fetch llama.cpp models", "error", err)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
choseChunkParser()
|
choseChunkParser()
|
||||||
httpClient = createClient(time.Second * 15)
|
httpClient = createClient(time.Second * 15)
|
||||||
if cfg.TTS_ENABLED {
|
if cfg.TTS_ENABLED {
|
||||||
@@ -902,4 +910,5 @@ func init() {
|
|||||||
if cfg.STT_ENABLED {
|
if cfg.STT_ENABLED {
|
||||||
asr = extra.NewSTT(logger, cfg)
|
asr = extra.NewSTT(logger, cfg)
|
||||||
}
|
}
|
||||||
|
go updateModelListsTicker()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"slices"
|
"slices"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/gdamore/tcell/v2"
|
"github.com/gdamore/tcell/v2"
|
||||||
"github.com/rivo/tview"
|
"github.com/rivo/tview"
|
||||||
@@ -134,9 +135,16 @@ func makePropsTable(props map[string]float32) *tview.Table {
|
|||||||
addListPopupRow("Select an api", apiLinks, cfg.CurrentAPI, func(option string) {
|
addListPopupRow("Select an api", apiLinks, cfg.CurrentAPI, func(option string) {
|
||||||
cfg.CurrentAPI = option
|
cfg.CurrentAPI = option
|
||||||
})
|
})
|
||||||
|
var modelList []string
|
||||||
|
// INFO: modelList is chosen based on current api link
|
||||||
|
if strings.Contains(cfg.CurrentAPI, "api.deepseek.com/") {
|
||||||
|
modelList = []string{chatBody.Model, "deepseek-chat", "deepseek-reasoner"}
|
||||||
|
} else if strings.Contains(cfg.CurrentAPI, "opentouter.ai") {
|
||||||
|
modelList = ORFreeModels
|
||||||
|
} else { // would match on localhost but what if llama.cpp served non localy?
|
||||||
|
modelList = LocalModels
|
||||||
|
}
|
||||||
// Prepare model list dropdown
|
// Prepare model list dropdown
|
||||||
modelList := []string{chatBody.Model, "deepseek-chat", "deepseek-reasoner"}
|
|
||||||
modelList = append(modelList, ORFreeModels...)
|
|
||||||
addListPopupRow("Select a model", modelList, chatBody.Model, func(option string) {
|
addListPopupRow("Select a model", modelList, chatBody.Model, func(option string) {
|
||||||
chatBody.Model = option
|
chatBody.Model = option
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user