Error code: 400 - {'error': {'message': "Invalid content. Expected 'video_url' f...

2025年11月15日 15:48 状态: processing

🚨 错误信息

openai.BadRequestError: Error code: 400 - {'error': {'message': "Invalid content. Expected 'video_url' field in video_url type content part to be a string or dict", 'type': 'rix_api_error', 'param': "'messages.[0].content[1].type'", 'code': None}}

🤖 AI解决方案

错误翻译

原文:Invalid content. Expected 'video_url' field in video_url type content part to be a string or dict
译文:无效内容。期望video_url类型内容部分中的'video_url'字段为字符串或字典

原因分析
这是一个OpenAI API调用错误,具体原因是:

  • 在使用video_url类型的内容块时,video_url字段的值格式不正确

  • API期望该字段为字符串或字典类型,但实际传递了其他类型的数据

  • 错误发生在messages数组的第一个消息的第二个内容部分
  • 解决方案

    # 错误示例(会导致400错误)
    {
        "messages": [
            {
                "role": "user",
                "content": [
                    {"type": "text", "text": "请分析这个视频"},
                    {"type": "video_url", "video_url": 12345}  #  ❌ 数字类型,应该用字符串
                ]
            }
        ]
    }
    
    # 正确修复
    {
        "messages": [
            {
                "role": "user",
                "content": [
                    {"type": "text", "text": "请分析这个视频"},
                    {"type": "video_url", "video_url": "https://example.com/video.mp4"}  # ✅ 字符串格式
                ]
            }
        ]
    }
    
    # 或者使用字典格式(如果API支持)
    {
        "type": "video_url", 
        "video_url": {
            "url": "https://example.com/video.mp4",
            "detail": "low"  # 可选参数
        }
    }

    预防措施

  • 类型检查:在使用API前验证所有字段的数据类型,特别是URL字段必须为字符串

  • API文档参考:查阅OpenAI官方文档确认video_url字段的具体格式要求

  • 使用类型提示:在代码中添加类型注解可以帮助捕获这类错误

def create_video_message(video_url: str) -> dict:
    return {
        "type": "video_url",
        "video_url": video_url  # 类型注解确保参数正确
    }