diff --git a/pkg/services/telegram_agent_service.go b/pkg/services/telegram_agent_service.go index 8b55752..64a0f9b 100644 --- a/pkg/services/telegram_agent_service.go +++ b/pkg/services/telegram_agent_service.go @@ -1265,7 +1265,7 @@ func callAI(ai *models.AiConfig, messages []agentMessage, tools []agentTool) (*a func callOpenAICompatibleAI(ai *models.AiConfig, messages []agentMessage, tools []agentTool) (*agentMessage, error) { baseURL := ai.BaseURL if baseURL == "" { - baseURL = providerDefaultURL(ai.Provider) + baseURL = ProviderDefaultURL(ai.Provider) } baseURL = strings.TrimRight(baseURL, "/") @@ -1483,7 +1483,7 @@ func callAnthropicAI(ai *models.AiConfig, messages []agentMessage, tools []agent return result, nil } -func providerDefaultURL(provider string) string { +func ProviderDefaultURL(provider string) string { switch strings.ToLower(provider) { case "openai": return "https://api.openai.com/v1" diff --git a/pkg/services/umind_embeddings_service.go b/pkg/services/umind_embeddings_service.go index 6d352ad..a2c2190 100644 --- a/pkg/services/umind_embeddings_service.go +++ b/pkg/services/umind_embeddings_service.go @@ -29,7 +29,7 @@ func GenerarEmbeddings(ai *models.AiConfig, textos []string) ([][]float32, error baseURL := ai.BaseURL if baseURL == "" { - baseURL = providerDefaultURL(ai.Provider) + baseURL = ProviderDefaultURL(ai.Provider) } baseURL = strings.TrimRight(baseURL, "/") diff --git a/pkg/services/whisper_service.go b/pkg/services/whisper_service.go index 86dbd47..83b61ed 100644 --- a/pkg/services/whisper_service.go +++ b/pkg/services/whisper_service.go @@ -32,7 +32,7 @@ func TranscribirAudio(ai *models.AiConfig, audioPath string) (string, error) { baseURL := ai.BaseURL if baseURL == "" { - baseURL = providerDefaultURL(ai.Provider) + baseURL = ProviderDefaultURL(ai.Provider) } baseURL = strings.TrimRight(baseURL, "/") diff --git a/rest/controllers/ai_config_controller.go b/rest/controllers/ai_config_controller.go index 4d7e163..1e9b410 100644 --- a/rest/controllers/ai_config_controller.go +++ b/rest/controllers/ai_config_controller.go @@ -10,6 +10,7 @@ import ( "github.com/gofiber/fiber/v2" "github.com/sujit-baniya/fiber-boilerplate/pkg/models" + "github.com/sujit-baniya/fiber-boilerplate/pkg/services" ) // AiConfigIndex renderiza la vista del panel de configuraciones de IA. @@ -214,18 +215,13 @@ func TestAiConfigHandler(c *fiber.Ctx) error { req.Header.Set("x-api-key", item.ApiKey) req.Header.Set("anthropic-version", "2023-06-01") default: + // Mismo mapeo proveedor→URL que usa el chat/embeddings real + // (services.ProviderDefaultURL) — antes esta prueba tenía su propia + // copia desactualizada que no conocía proveedores nuevos como Gemini, + // así que "funcionaba" en el chat pero la prueba de conexión fallaba. base := item.BaseURL if base == "" { - switch item.Provider { - case "openai": - base = "https://api.openai.com/v1" - case "qwen": - base = "https://dashscope.aliyuncs.com/compatible-mode/v1" - case "groq": - base = "https://api.groq.com/openai/v1" - default: - return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "BaseURL requerida para este provider"}) - } + base = services.ProviderDefaultURL(item.Provider) } testURL = base + "/models" req, _ = http.NewRequest("GET", testURL, nil)