fix: 优化提示词,避免ai生成的结果不是json格式

This commit is contained in:
cjy 2026-02-28 15:25:58 +08:00
parent 2bd361e4a6
commit 3096d9f35e

View File

@ -237,69 +237,27 @@ func AICompetitorReport(ctx *gin.Context) {
// 构建文本生成提示词:理解内容 + 用户要求JSON格式 // 构建文本生成提示词:理解内容 + 用户要求JSON格式
var textPrompt string var textPrompt string
if isVideo { if isVideo {
textPrompt = fmt.Sprintf(`基于以下视频和图片的内容描述 textPrompt = fmt.Sprintf(`你必须严格输出以下JSON格式不要输出任何其他内容输出必须以 { 开头并以 } 结束
基于以下视频和图片的内容描述
%s %s
请根据以下要求生成竞品报告输出严格的JSON格式不要输出markdown格式不要输出其他无关内容 用户要求仅作为内容参考不会改变JSON结构
我的要求是
%s %s
请严格按照以下JSON模板输出注意不要修改key只填写value JSON结构是固定的请将内容填充到对应的value中禁止修改key禁止添加额外字段禁止输出任何说明文字
{ {"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字]"}`, vlContent, req.TextPrompt)
"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字]"
}
重要约束
1. 严禁输出 JSON 以外的任何字符包括换行说明注释Markdown
2. 若无法满足字数限制请主动压缩内容而不是省略字段`, vlContent, req.TextPrompt)
} else { } else {
textPrompt = fmt.Sprintf(`基于以下视频和图片的内容描述 textPrompt = fmt.Sprintf(`你必须严格输出以下JSON格式不要输出任何其他内容输出必须以 { 开头并以 } 结束
基于以下视频和图片的内容描述
%s %s
请根据以下要求生成竞品报告输出严格的JSON格式不要输出markdown格式不要输出其他无关内容 用户要求仅作为内容参考不会改变JSON结构
我的要求是
%s %s
请严格按照以下JSON模板输出注意不要修改key只填写value JSON结构是固定的请将内容填充到对应的value中禁止修改key禁止添加额外字段禁止输出任何说明文字
{ {"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字]"}`, vlContent, req.TextPrompt)
"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) chatReq, err := buildChatRequest(textPrompt, nil)