From 4f6000a43ad2ee019a799c5b5154af9f853e2b83 Mon Sep 17 00:00:00 2001 From: Grail Finder Date: Mon, 2 Mar 2026 11:25:20 +0300 Subject: Enha: check if model has vision before giving it vision tools --- bot.go | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'bot.go') diff --git a/bot.go b/bot.go index 661ade0..98dd27f 100644 --- a/bot.go +++ b/bot.go @@ -433,6 +433,33 @@ func isModelLoaded(modelID string) (bool, error) { return false, nil } +func ModelHasVision(api, modelID string) bool { + switch { + case strings.Contains(api, "deepseek"): + return false + case strings.Contains(api, "openrouter"): + resp, err := http.Get("https://openrouter.ai/api/v1/models") + if err != nil { + logger.Warn("failed to fetch OR models for vision check", "error", err) + return false + } + defer resp.Body.Close() + orm := &models.ORModels{} + if err := json.NewDecoder(resp.Body).Decode(orm); err != nil { + logger.Warn("failed to decode OR models for vision check", "error", err) + return false + } + return orm.HasVision(modelID) + default: + models, err := fetchLCPModelsWithStatus() + if err != nil { + logger.Warn("failed to fetch LCP models for vision check", "error", err) + return false + } + return models.HasVision(modelID) + } +} + // monitorModelLoad starts a goroutine that periodically checks if the specified model is loaded. func monitorModelLoad(modelID string) { go func() { @@ -1381,6 +1408,7 @@ func updateModelLists() { chatBody.Model = m cachedModelColor = "green" updateStatusLine() + UpdateToolCapabilities() app.Draw() return } -- cgit v1.2.3