package service import ( "encoding/json" "fmt" "strings" ) // ============================================ // 消息解析 // ============================================ func parseModelOutput(text string) (map[string]any, error) { var result map[string]any if err := json.Unmarshal([]byte(text), &result); err != nil { return nil, fmt.Errorf("解析模型输出失败: %w", err) } return result, nil } // cleanJSONString 清理字符串中可能导致JSON解析失败的字符 func cleanJSONString(s string) string { s = strings.ReplaceAll(s, "\u2018", "'") // 左单引号 ‘ s = strings.ReplaceAll(s, "\u2019", "'") // 右单引号 ’ s = strings.ReplaceAll(s, "\u201c", "\"") // 左双引号 “ s = strings.ReplaceAll(s, "\u201d", "\"") // 右双引号 ” return s } func truncateStr(s string, maxLen int) string { if len(s) <= maxLen { return s } return s[:maxLen] } // sessionParseModelOutput 解析会话模型输出 func sessionParseModelOutput(text string) (map[string]any, error) { var result map[string]any if err := json.Unmarshal([]byte(text), &result); err != nil { return nil, fmt.Errorf("解析模型输出失败: %w", err) } return result, nil }