package services import ( "fmt" "strings" "github.com/sujit-baniya/fiber-boilerplate/pkg/models" ) // CompletarTextoIA hace una llamada simple (sin tools, sin streaming) al // proveedor configurado para el servicio dado y devuelve el texto. // // Reusa callAI, que es el mismo despachador del bot de Telegram: sabe hablar // Anthropic y OpenAI-compatible, y completa la URL base cuando la config la // tiene vacía. Escribir una segunda implementación acá fue un error: no // soportaba Anthropic y armaba una URL relativa cuando faltaba la base, así // que fallaba con la config que ya estaba en producción. func CompletarTextoIA(servicio, sistema, usuario string) (string, error) { config, err := models.GetAiConfigForService(servicio) if err != nil { return "", fmt.Errorf("no hay configuración de IA activa; configurá una en /app/ai-config") } if strings.TrimSpace(config.ModelName) == "" { return "", fmt.Errorf("la configuración de IA %q no tiene modelo definido (/app/ai-config)", config.Nombre) } msg, _, err := callAI(config, []agentMessage{ {Role: "system", Content: sistema}, {Role: "user", Content: usuario}, }, nil) if err != nil { return "", fmt.Errorf("%s (%s): %w", config.Nombre, config.Provider, err) } texto, _ := msg.Content.(string) if strings.TrimSpace(texto) == "" { return "", fmt.Errorf("%s no devolvió texto", config.Nombre) } return texto, nil }