Enha: add (loaded) suffix if model is loaded
This commit is contained in:
24
bot.go
24
bot.go
@@ -403,6 +403,23 @@ func fetchLCPModels() ([]string, error) {
|
||||
return localModels, nil
|
||||
}
|
||||
|
||||
// fetchLCPModelsWithLoadStatus returns models with "(loaded)" indicator for loaded models
|
||||
func fetchLCPModelsWithLoadStatus() ([]string, error) {
|
||||
models, err := fetchLCPModelsWithStatus()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
result := make([]string, 0, len(models.Data))
|
||||
for _, m := range models.Data {
|
||||
modelName := m.ID
|
||||
if m.Status.Value == "loaded" {
|
||||
modelName = modelName + " (loaded)"
|
||||
}
|
||||
result = append(result, modelName)
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
|
||||
// fetchLCPModelsWithStatus returns the full LCPModels struct including status information.
|
||||
func fetchLCPModelsWithStatus() (*models.LCPModels, error) {
|
||||
resp, err := http.Get(cfg.FetchModelNameAPI)
|
||||
@@ -832,6 +849,7 @@ func chatRound(r *models.ChatRoundReq) error {
|
||||
// Variables for handling thinking blocks during streaming
|
||||
inThinkingBlock := false
|
||||
thinkingBuffer := strings.Builder{}
|
||||
justExitedThinkingCollapsed := false
|
||||
out:
|
||||
for {
|
||||
select {
|
||||
@@ -859,6 +877,7 @@ out:
|
||||
if thinkingCollapsed {
|
||||
// Thinking already displayed as placeholder, just update respText
|
||||
respText.WriteString(chunk)
|
||||
justExitedThinkingCollapsed = true
|
||||
if scrollToEndEnabled {
|
||||
textView.ScrollToEnd()
|
||||
}
|
||||
@@ -872,6 +891,11 @@ out:
|
||||
}
|
||||
// If not collapsed, fall through to normal display
|
||||
}
|
||||
// Add spacing after collapsed thinking block before real response
|
||||
if justExitedThinkingCollapsed {
|
||||
chunk = "\n\n" + chunk
|
||||
justExitedThinkingCollapsed = false
|
||||
}
|
||||
fmt.Fprint(textView, chunk)
|
||||
respText.WriteString(chunk)
|
||||
// Update the message in chatBody.Messages so it persists during Alt+T
|
||||
|
||||
12
popups.go
12
popups.go
@@ -17,10 +17,14 @@ func showModelSelectionPopup() {
|
||||
} else if strings.Contains(api, "openrouter.ai") {
|
||||
return ORFreeModels
|
||||
}
|
||||
// Assume local llama.cpp
|
||||
updateModelLists()
|
||||
// Assume local llama.cpp - fetch with load status
|
||||
models, err := fetchLCPModelsWithLoadStatus()
|
||||
if err != nil {
|
||||
logger.Error("failed to fetch models with load status", "error", err)
|
||||
return LocalModels
|
||||
}
|
||||
return models
|
||||
}
|
||||
// Get the current model list based on the API
|
||||
modelList := getModelListForAPI(cfg.CurrentAPI)
|
||||
// Check for empty options list
|
||||
@@ -57,8 +61,10 @@ func showModelSelectionPopup() {
|
||||
modelListWidget.SetCurrentItem(currentModelIndex)
|
||||
}
|
||||
modelListWidget.SetSelectedFunc(func(index int, mainText string, secondaryText string, shortcut rune) {
|
||||
// Strip "(loaded)" suffix if present for local llama.cpp models
|
||||
modelName := strings.TrimSuffix(mainText, " (loaded)")
|
||||
// Update the model in both chatBody and config
|
||||
chatBody.Model = mainText
|
||||
chatBody.Model = modelName
|
||||
cfg.CurrentModel = chatBody.Model
|
||||
// Remove the popup page
|
||||
pages.RemovePage("modelSelectionPopup")
|
||||
|
||||
Reference in New Issue
Block a user