diff --git a/pkg/service/ai/video_vl.go b/pkg/service/ai/video_vl.go index 3150b8ec..9e4f4bca 100644 --- a/pkg/service/ai/video_vl.go +++ b/pkg/service/ai/video_vl.go @@ -146,41 +146,73 @@ func AICompetitorReport(ctx *gin.Context) { // 根据是否有视频来判断作品类型 isVideo := len(req.Videos) > 0 - // 根据作品类型设置差异化内容 - var extraPoint, extraData string + // 构建文本生成提示词:理解内容 + 用户要求(JSON格式) + var textPrompt string if isVideo { - extraPoint = "6. 配乐亮点:" - extraData = "2. 完播率表现:\n3. 点赞/分享/评论表现:" - } else { - extraData = "2. 点赞/分享/评论表现:" - } - - // 构建文本生成提示词:理解内容 + 用户要求 - textPrompt := fmt.Sprintf(`基于以下视频和图片的内容描述: + textPrompt = fmt.Sprintf(`基于以下视频和图片的内容描述: %s -请根据以下要求生成竞品报告。注意不要输出markdown格式来进行排版,请直接输出纯文本。只需要回复竞品报告的内容,其他无关的内容不要输出,输出的内容第一行不要标题,直接输出竞品报告的正文即可 +请根据以下要求生成竞品报告,输出严格的JSON格式,不要输出markdown格式,不要输出其他无关内容。 我的要求是: %s -请严格按照以下模板输出: +请严格按照以下JSON模板输出(注意不要修改key,只填写value): +{ + "highlight_analysis": { + "summary": "[78字以内的概述]", + "points": { + "theme": "[标题亮点,最多60字]", + "narrative": "[题材亮点,最多60字]", + "content": "[内容亮点,最多60字]", + "copywriting": "[文案亮点,最多60字]", + "data": "[数据亮点,最多60字]", + "music": "[配乐亮点,仅视频,最多60字]" + } + }, + "data_performance_analysis": { + "views": "[浏览量表现,最多60字]", + "completion_rate": "[完播率表现,仅视频,最多60字]", + "engagement": "[点赞/分享/评论表现,最多60字]" + }, + "overall_summary_and_optimization": "[整体总结及可优化建议,最多300字]" +} -一、亮点表现分析 -[100字以内的概述] - -1. 标题亮点: -2. 题材亮点: -3. 内容亮点: -4. 文案亮点: -5. 数据亮点: +重要约束: +1. 严禁输出 JSON 以外的任何字符(包括换行说明、注释、Markdown) +2. 若无法满足字数限制,请主动压缩内容,而不是省略字段`, vlContent, req.TextPrompt) + } else { + textPrompt = fmt.Sprintf(`基于以下视频和图片的内容描述: %s -二、数据表现分析 -1. 浏览量表现: +请根据以下要求生成竞品报告,输出严格的JSON格式,不要输出markdown格式,不要输出其他无关内容。 + +我的要求是: %s -三、整体总结及可优化建议`, vlContent, req.TextPrompt, extraPoint, extraData) +请严格按照以下JSON模板输出(注意不要修改key,只填写value): +{ + "highlight_analysis": { + "summary": "[78字以内的概述]", + "points": { + "theme": "[标题亮点,最多60字]", + "narrative": "[题材亮点,最多60字]", + "content": "[内容亮点,最多60字]", + "copywriting": "[文案亮点,最多60字]", + "data": "[数据亮点,最多60字]" + } + }, + "data_performance_analysis": { + "views": "[浏览量表现,最多60字]", + "engagement": "[点赞/分享/评论表现,最多60字]" + }, + "overall_summary_and_optimization": "[整体总结及可优化建议,最多300字]" +} + +重要约束: +1. 严禁输出 JSON 以外的任何字符(包括换行说明、注释、Markdown) +2. 若无法满足字数限制,请主动压缩内容,而不是省略字段`, vlContent, req.TextPrompt) + } chatReq, err := buildChatRequest(textPrompt, nil) if err != nil {