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

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

这个脚本会:

  1. 调用Agent生成灵感
  2. 检查每个灵感是否包含URL
  3. 验证URL是否有效(包含http)
  4. 显示统计结果

方法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}
  • 类型:作者主页链接
  • 用途:用户可以点击访问作者的抖音主页

注意事项

  1. URL类型:返回的是作者主页链接,不是视频链接
  2. 数据来源:URL来自视频数据的 authorLink 字段
  3. 有效性:URL应该以 https:// 开头
  4. 可访问性:需要在浏览器中打开,可能需要登录抖音

相关文件

  • ai_agent.py - 添加了 authorLink 字段到视频数据格式化
  • test_url_return.py - 新建的URL测试脚本
  • URL_FIX.md - 本文件

修复完成

所有修改已完成,现在生成的灵感JSON中应该包含有效的作者主页URL了!

关键是要在传递给AI的数据中包含 authorLink 字段