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.
5.7 KiB
5.7 KiB
URL返回问题修复说明
问题描述
生成的创作灵感JSON中,url 字段没有返回作者主页链接,或者返回的是 N/A。
问题原因
在 generate_creative_inspirations() 函数中,格式化视频数据时没有包含 authorLink 字段。
虽然提示词中要求AI使用 authorLink 字段作为URL,但是在传递给AI的视频数据中并没有包含这个字段,所以AI无法获取到URL信息。
错误的代码
# 格式化视频数据
video_data_text = f"## 视频数据\n总数: {actual_count}\n\n"
for i, video in enumerate(videos_to_use, 1):
video_data_text += f"### 视频 {i}\n"
video_data_text += f"- 作者: {video.get('author', 'N/A')}\n"
video_data_text += f"- 描述: {video.get('description', 'N/A')}\n"
# ❌ 缺少 authorLink 字段
if video.get('hot'):
video_data_text += f"- 热度: {video.get('hot')}\n"
...
问题:AI看不到 authorLink 字段,所以无法在生成的JSON中包含正确的URL。
正确的代码
# 格式化视频数据
video_data_text = f"## 视频数据\n总数: {actual_count}\n\n"
for i, video in enumerate(videos_to_use, 1):
video_data_text += f"### 视频 {i}\n"
video_data_text += f"- 作者: {video.get('author', 'N/A')}\n"
video_data_text += f"- 作者主页链接: {video.get('authorLink', 'N/A')}\n" # ✅ 添加这一行
video_data_text += f"- 描述: {video.get('description', 'N/A')}\n"
if video.get('hot'):
video_data_text += f"- 热度: {video.get('hot')}\n"
...
改进:现在AI可以看到 authorLink 字段,并将其包含在生成的JSON中。
修复内容
修复 ai_agent.py
位置:generate_creative_inspirations() 函数,第600-615行
修改:在格式化视频数据时,添加了 authorLink 字段
video_data_text += f"- 作者主页链接: {video.get('authorLink', 'N/A')}\n"
数据流
视频数据结构
{
"author": "清华大学",
"authorLink": "https://www.iesdouyin.com/share/user/100746744340?sec_uid=...",
"description": "我会等! 等枯树生出芽,等你来清华!...",
"hashTags": ["#清华大学", "#我会等", "#校园"],
"hotWords": ["世界", "我会", "等你"]
}
传递给AI的数据
### 视频 1
- 作者: 清华大学
- 作者主页链接: https://www.iesdouyin.com/share/user/100746744340?sec_uid=...
- 描述: 我会等! 等枯树生出芽,等你来清华!...
- 标签: #清华大学, #我会等, #校园
- 热词: 世界, 我会, 等你
AI生成的JSON
{
"id": 1,
"title": "名校励志短片",
"description": "以名校为背景,拍摄励志短片...",
"reference_author": "清华大学",
"reference_description": "我会等! 等枯树生出芽,等你来清华!...",
"url": "https://www.iesdouyin.com/share/user/100746744340?sec_uid=...",
"platform": "抖音",
"tags": ["#清华大学", "#我会等", "#校园"],
"keywords": ["世界", "我会", "等你"]
}
测试方法
方法1:使用测试脚本
python test_url_return.py
这个脚本会:
- 调用Agent生成灵感
- 检查每个灵感是否包含URL
- 验证URL是否有效(包含http)
- 显示统计结果
方法2:手动测试
import asyncio
from ai_agent import create_agent
import json
import re
async def test():
agent = create_agent()
result = await agent.run(
user_input="我想做一些校园相关的短视频",
system_prompt_file="prompts/agent_prompt.md",
max_iterations=15
)
if result["success"]:
# 提取JSON
json_match = re.search(r'```json\s*(.*?)\s*```', result["final_answer"], re.DOTALL)
if json_match:
data = json.loads(json_match.group(1))
for inspiration in data['inspirations']:
print(f"标题: {inspiration['title']}")
print(f"URL: {inspiration['url']}")
print()
asyncio.run(test())
方法3:通过API测试
# 启动服务
python api.py
# 调用接口
curl -X POST "http://localhost:8001/api/agent" \
-H "Content-Type: application/json" \
-d '{"query": "我想做一些校园相关的短视频", "max_iterations": 15}'
验证结果
修复后,生成的JSON应该包含有效的URL:
{
"inspirations": [
{
"id": 1,
"title": "名校励志短片",
"description": "以名校为背景,拍摄励志短片...",
"reference_author": "清华大学",
"reference_description": "我会等! 等枯树生出芽,等你来清华!...",
"url": "https://www.iesdouyin.com/share/user/100746744340?sec_uid=MS4wLjABAAAADPpMCOWGL4ujoEiYrjYKjDQsbWr8QBeW321UxLW-T5Q",
"platform": "抖音",
"tags": ["#清华大学", "#我会等", "#校园", "#上岸"],
"keywords": ["世界", "我会", "等你", "上岸"]
}
]
}
URL格式
- 格式:
https://www.iesdouyin.com/share/user/{user_id}?sec_uid={sec_uid} - 类型:作者主页链接
- 用途:用户可以点击访问作者的抖音主页
注意事项
- URL类型:返回的是作者主页链接,不是视频链接
- 数据来源:URL来自视频数据的
authorLink字段 - 有效性:URL应该以
https://开头 - 可访问性:需要在浏览器中打开,可能需要登录抖音
相关文件
- ✅
ai_agent.py- 添加了authorLink字段到视频数据格式化 - ✅
test_url_return.py- 新建的URL测试脚本 - ✅
URL_FIX.md- 本文件
修复完成
所有修改已完成,现在生成的灵感JSON中应该包含有效的作者主页URL了!
关键是要在传递给AI的数据中包含 authorLink 字段。