From ee6677c1f8729d2b60f4127712a81a1374bd2679 Mon Sep 17 00:00:00 2001 From: qhd <1766646056@qq.com> Date: Fri, 5 Jun 2026 11:48:27 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=93=8D=E5=BA=94?= =?UTF-8?q?=E4=BD=93=E8=A7=A3=E6=9E=90=E9=80=BB=E8=BE=91=E5=B9=B6=E7=BB=9F?= =?UTF-8?q?=E4=B8=80=E7=BB=93=E6=9E=84=E5=8C=85=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- service/prompt/prompt_compose_service.go | 33 ++++++++++++------------ 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/service/prompt/prompt_compose_service.go b/service/prompt/prompt_compose_service.go index d0032fb..2a6ac9d 100644 --- a/service/prompt/prompt_compose_service.go +++ b/service/prompt/prompt_compose_service.go @@ -274,29 +274,23 @@ func ParseStructResult(raw map[string]any, responseBody string) map[string]any { } contentVal := raw[responseBody] - if contentVal == nil { - return map[string]any{ - "total_rounds": 1, - "rounds": []map[string]any{raw}, - } - } + var rounds []map[string]any + + // 是字符串,尝试解析 contentStr := gconv.String(contentVal) if contentStr == "" || contentStr == "0" { + rounds = append(rounds, map[string]any{responseBody: raw}) return map[string]any{ "total_rounds": 1, - "rounds": []map[string]any{raw}, + "rounds": rounds, } } // 尝试解析为数组 - var arr []map[string]any + var arr []any if err := json.Unmarshal([]byte(contentStr), &arr); err == nil && len(arr) > 0 { - // 数组的每个元素包一层 content - var rounds []map[string]any - for _, item := range arr { - rounds = append(rounds, map[string]any{"content": item}) - } + rounds = append(rounds, map[string]any{responseBody: arr}) return map[string]any{ "total_rounds": len(rounds), "rounds": rounds, @@ -304,15 +298,20 @@ func ParseStructResult(raw map[string]any, responseBody string) map[string]any { } // 尝试解析为单个对象 - var parsed map[string]any + var parsed any if err := json.Unmarshal([]byte(contentStr), &parsed); err == nil { - raw[responseBody] = parsed + rounds = append(rounds, map[string]any{responseBody: parsed}) + return map[string]any{ + "total_rounds": 1, + "rounds": rounds, + } } - // 兜底:包标准结构 + // 兜底:原始字符串作为内容 + rounds = append(rounds, map[string]any{responseBody: contentStr}) return map[string]any{ "total_rounds": 1, - "rounds": []map[string]any{raw}, + "rounds": rounds, } }