// utils 工具函数 package service import ( "encoding/json" "fmt" "github.com/gogf/gf/v2/encoding/gjson" "github.com/gogf/gf/v2/util/gconv" ) // ============================================ // json 相关处理 // ============================================ // parseOutput 解析模型输出为 JSON 格式 func parseOutput(text string) (map[string]any, error) { j, err := gjson.LoadJson([]byte(text)) if err != nil { return nil, fmt.Errorf("解析模型输出失败: %w", err) } return j.Map(), nil } func convertToMessages(raw any) []map[string]any { if raw == nil { return nil } j, err := gjson.LoadJson(gconv.Bytes(raw)) if err != nil { return nil } // 1. 如果有 messages if j.Contains("messages") { return gconv.Maps(j.Get("messages").Array()) } // 2. 否则当成单条 message return []map[string]any{ j.Map(), } } // isMessageValid 校验推理结果是否合法 func isMessageValid(message map[string]any) bool { if message == nil { return false } return true } func formToJSON(form map[string]any) string { if form == nil { return "{}" } b, _ := json.Marshal(form) return string(b) } func mustMarshal(v any) string { b, err := json.Marshal(v) if err != nil { return "{}" } return string(b) }