You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
7.7 KiB
7.7 KiB
JSON格式输出更新说明
更新时间
2026-01-07
更新内容
将创作灵感的输出格式从Markdown改为JSON格式,方便前端解析和使用。
JSON格式定义
完整格式
{
"inspirations": [
{
"id": 1,
"title": "灵感标题",
"description": "核心创意描述和执行建议",
"reference_author": "参考视频作者",
"reference_description": "参考视频描述片段",
"url": "参考视频作者主页链接",
"platform": "抖音",
"tags": ["#标签1", "#标签2", "#标签3"],
"keywords": ["关键词1", "关键词2", "关键词3"]
}
]
}
字段说明
| 字段 | 类型 | 说明 | 示例 |
|---|---|---|---|
id |
number | 灵感编号 | 1 |
title |
string | 灵感标题(15字以内) | "5分钟晨起唤醒操" |
description |
string | 核心创意和执行建议的综合描述(100字以内) | "设计一套简单的晨起拉伸动作..." |
reference_author |
string | 参考视频的作者名 | "健身教练小李" |
reference_description |
string | 参考视频的描述片段(30字以内) | "每天5分钟,唤醒身体活力!..." |
url |
string | 参考视频作者的主页链接 | "https://www.iesdouyin.com/share/user/xxxxx" |
platform |
string | 平台名称,固定为"抖音" | "抖音" |
tags |
array | 推荐使用的标签数组 | ["#健身", "#晨起运动"] |
keywords |
array | 热门关键词数组 | ["晨起", "拉伸", "唤醒"] |
数据来源
字段映射关系
JSON字段与视频数据的映射关系:
| JSON字段 | 视频数据字段 | 说明 |
|---|---|---|
reference_author |
author |
直接使用 |
reference_description |
description |
截取前30字 |
url |
authorLink |
直接使用 |
platform |
固定值 | "抖音" |
tags |
hashTags |
直接使用 |
keywords |
hotWords |
直接使用 |
示例数据
视频数据:
{
"author": "清华大学",
"description": "我会等! 等枯树生出芽,等你来清华!一起看外面世界到底多大~#清华大学 #我会等",
"authorLink": "https://www.iesdouyin.com/share/user/100746744340?sec_uid=MS4wLjABAAAADPpMCOWGL4ujoEiYrjYKjDQsbWr8QBeW321UxLW-T5Q",
"hashTags": ["#清华大学", "#我会等", "#校园", "#上岸"],
"hotWords": ["世界", "我会", "等你", "上岸"]
}
生成的灵感:
{
"id": 1,
"title": "名校励志短片",
"description": "以名校为背景,拍摄励志短片,展现学生的奋斗历程和对未来的期待。使用航拍和特写镜头,配合励志音乐,传递正能量。",
"reference_author": "清华大学",
"reference_description": "我会等! 等枯树生出芽,等你来清华!...",
"url": "https://www.iesdouyin.com/share/user/100746744340?sec_uid=MS4wLjABAAAADPpMCOWGL4ujoEiYrjYKjDQsbWr8QBeW321UxLW-T5Q",
"platform": "抖音",
"tags": ["#清华大学", "#我会等", "#校园", "#上岸"],
"keywords": ["世界", "我会", "等你", "上岸"]
}
使用方法
1. 通过API调用
curl -X POST "http://localhost:8001/api/agent" \
-H "Content-Type: application/json" \
-d '{
"query": "我想做一些校园相关的短视频",
"max_iterations": 15
}'
2. 解析返回结果
import json
import re
# 从API返回的final_answer中提取JSON
json_match = re.search(r'```json\s*(.*?)\s*```', final_answer, re.DOTALL)
if json_match:
data = json.loads(json_match.group(1))
inspirations = data['inspirations']
for inspiration in inspirations:
print(f"ID: {inspiration['id']}")
print(f"标题: {inspiration['title']}")
print(f"描述: {inspiration['description']}")
print(f"作者: {inspiration['reference_author']}")
print(f"链接: {inspiration['url']}")
print(f"标签: {', '.join(inspiration['tags'])}")
print(f"关键词: {', '.join(inspiration['keywords'])}")
print("-" * 80)
3. 前端使用示例
// 解析API返回的数据
const response = await fetch('/api/agent', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
query: '我想做一些校园相关的短视频',
max_iterations: 15
})
});
const result = await response.json();
// 提取JSON格式的灵感数据
const jsonMatch = result.final_answer.match(/```json\s*([\s\S]*?)\s*```/);
if (jsonMatch) {
const data = JSON.parse(jsonMatch[1]);
const inspirations = data.inspirations;
// 渲染到页面
inspirations.forEach(item => {
console.log(`${item.id}. ${item.title}`);
console.log(`描述: ${item.description}`);
console.log(`参考: @${item.reference_author}`);
console.log(`链接: ${item.url}`);
console.log(`标签: ${item.tags.join(', ')}`);
});
}
优势
1. 易于解析
- 标准JSON格式,所有编程语言都支持
- 不需要复杂的文本解析
- 减少解析错误
2. 结构化数据
- 字段明确,类型固定
- 便于数据库存储
- 便于前端渲染
3. 易于扩展
- 可以轻松添加新字段
- 保持向后兼容
- 便于版本管理
4. 便于集成
- 可以直接传递给前端
- 可以存储到数据库
- 可以导出为其他格式
测试方法
方法1:使用测试脚本
python test_json_format.py
这个脚本会:
- 调用Agent生成灵感
- 验证JSON格式
- 检查必需字段
- 显示示例输出
方法2:使用API测试
# 启动服务
python api.py
# 调用接口
curl -X POST "http://localhost:8001/api/agent" \
-H "Content-Type: application/json" \
-d '{"query": "我想做一些美食相关的短视频", "max_iterations": 15}'
注意事项
- JSON提取:返回的
final_answer是文本格式,需要从中提取JSON部分 - URL字段:目前使用的是作者主页链接(authorLink),不是视频链接
- 平台字段:目前固定为"抖音"
- 数组字段:tags和keywords都是数组类型,可能为空数组
- 字符限制:
- title: 15字以内
- description: 100字以内
- reference_description: 30字以内
修改的文件
- ✅
prompts/agent_prompt.md- 更新输出格式要求 - ✅
ai_agent.py- 修改generate_creative_inspirations()函数 - ✅
test_json_format.py- 新建JSON格式测试脚本 - ✅
JSON_FORMAT_UPDATE.md- 本文件
完整示例
输入
{
"query": "我想做一些校园相关的短视频",
"max_iterations": 15
}
输出
{
"inspirations": [
{
"id": 1,
"title": "名校励志短片",
"description": "以名校为背景,拍摄励志短片,展现学生的奋斗历程和对未来的期待。使用航拍和特写镜头,配合励志音乐,传递正能量。",
"reference_author": "清华大学",
"reference_description": "我会等! 等枯树生出芽,等你来清华!...",
"url": "https://www.iesdouyin.com/share/user/100746744340",
"platform": "抖音",
"tags": ["#清华大学", "#我会等", "#校园", "#上岸"],
"keywords": ["世界", "我会", "等你", "上岸"]
},
{
"id": 2,
"title": "校园情感故事",
"description": "记录校园中的温暖瞬间,展现同学之间的友谊和互助。通过真实的场景和自然的表演,传递校园正能量。",
"reference_author": "Lily Peng",
"reference_description": "男生的哪一个瞬间 让你觉得他特别有教养...",
"url": "https://www.iesdouyin.com/share/user/3355314087006819",
"platform": "抖音",
"tags": ["#校园", "#温暖瞬间"],
"keywords": ["特别", "一个", "瞬间", "男生"]
}
]
}
所有修改已完成,可以开始使用JSON格式的输出了!