summaryrefslogtreecommitdiff
path: root/bot.go
diff options
context:
space:
mode:
authorGrail Finder <wohilas@gmail.com>2026-03-02 11:25:20 +0300
committerGrail Finder <wohilas@gmail.com>2026-03-02 11:25:20 +0300
commit4f6000a43ad2ee019a799c5b5154af9f853e2b83 (patch)
treec0a74081e043aeb1e479c8540789050be468c4d9 /bot.go
parent9ba46b40cc7fb058ff506ff554ba19e7337448d9 (diff)
Enha: check if model has vision before giving it vision tools
Diffstat (limited to 'bot.go')
-rw-r--r--bot.go28
1 files changed, 28 insertions, 0 deletions
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
}