package utils import ( "encoding/json" "strings" ) func CleanAIResponse(response string) string { result := strings.TrimSpace(response) for i := 0; i < 10; i++ { changed := false if strings.HasPrefix(result, "```json") { result = strings.TrimSpace(strings.TrimPrefix(result, "```json")) changed = true } else if strings.HasPrefix(result, "```") { result = strings.TrimSpace(strings.TrimPrefix(result, "```")) changed = true } if strings.HasSuffix(result, "```") { result = strings.TrimSpace(strings.TrimSuffix(result, "```")) changed = true } if !changed { break } } firstBrace := strings.Index(result, "{") lastBrace := strings.LastIndex(result, "}") if firstBrace >= 0 && lastBrace >= 0 && lastBrace > firstBrace { result = result[firstBrace : lastBrace+1] } result = strings.ReplaceAll(result, "`", "") result = strings.ReplaceAll(result, "\\n", "\n") result = strings.ReplaceAll(result, "\\r", "\r") result = strings.ReplaceAll(result, "\\t", "\t") return strings.TrimSpace(result) } func IsValidJSON(s string) bool { var js json.RawMessage return json.Unmarshal([]byte(s), &js) == nil } func ExtractJSONFromText(text string) string { firstBrace := strings.Index(text, "{") lastBrace := strings.LastIndex(text, "}") if firstBrace >= 0 && lastBrace >= 0 && lastBrace > firstBrace { return text[firstBrace : lastBrace+1] } return "" }