Qwen3-VL-235B-A22B-Thinking 网络视频分析 API 文档
📖 接口说明
通过多模态 AI 模型分析图片内容,理解视频内容、提取视频信息。
✨模型名称
Qwen3-VL-235B-A22B-Thinking
🔗 接口地址
https://www.dmxapi.cn/v1/chat/completions💻 Python 调用示例
python
"""
╔══════════════════════════════════════════════════════════════════════════════╗
║ DMX API 多模态视频识别示例 ║
║ Qwen3-VL-235B-A22B-Thinking 模型调用 ║
╚══════════════════════════════════════════════════════════════════════════════╝
【功能说明】
本脚本演示如何使用 DMX API 的 chat/completions 接口进行视频内容识别。
通过调用 Qwen3-VL (Vision-Language) 多模态大模型,实现对视频内容的
智能分析与描述。该模型支持"思维链"推理,会输出推理过程。
【支持的输入类型】
- 文本 (text) : 用户的文字提示或问题
- 图片 (image_url) : 通过 URL 传入的图片
- 视频 (video_url) : 通过 URL 传入的视频
- 模型名称 : Qwen3-VL-235B-A22B-Thinking
【API 端点】
- 地址 : https://www.dmxapi.cn/v1/chat/completions
- 方法 : POST
- 格式 : OpenAI 兼容格式
【使用方法】
1. 将 API_KEY 替换为您的真实密钥
2. 修改 video_url 为目标视频地址
══════════════════════════════════════════════════════════════════════════════
"""
# ╔══════════════════════════════════════════════════════════════════════════╗
# ║ 导入依赖库 ║
# ╚══════════════════════════════════════════════════════════════════════════╝
import json # JSON 编码/解码,用于构建请求体和解析响应
import sys # 系统相关功能,用于配置输出编码
import requests # HTTP 请求库,用于调用 API 接口
# ────────────────────────────────────────────────────────────────────────────
# 配置标准输出编码为 UTF-8,解决 Windows 终端中文显示乱码问题
# ────────────────────────────────────────────────────────────────────────────
sys.stdout.reconfigure(encoding='utf-8')
# ╔══════════════════════════════════════════════════════════════════════════╗
# ║ API 配置信息 ║
# ╚══════════════════════════════════════════════════════════════════════════╝
# ────────────────────────────────────────────────────────────────────────────
# API 密钥 (API Key)
# ────────────────────────────────────────────────────────────────────────────
# 说明 : 用于身份验证的密钥,请替换为您自己的密钥
# 获取 : 登录 https://www.dmxapi.cn 控制台获取
# 安全 : 请勿将密钥提交到公开代码仓库
# ────────────────────────────────────────────────────────────────────────────
API_KEY = "sk-**********************************"
# ────────────────────────────────────────────────────────────────────────────
# API 请求地址 (Endpoint)
# ────────────────────────────────────────────────────────────────────────────
# 说明 : DMX API 的 chat/completions 端点,兼容 OpenAI 格式
# 协议 : HTTPS (加密传输)
# 版本 : v1
# ────────────────────────────────────────────────────────────────────────────
API_URL = "https://www.dmxapi.cn/v1/chat/completions"
# ╔══════════════════════════════════════════════════════════════════════════╗
# ║ 构建请求头 ║
# ╚══════════════════════════════════════════════════════════════════════════╝
# ────────────────────────────────────────────────────────────────────────────
# HTTP 请求头 (Headers)
# ────────────────────────────────────────────────────────────────────────────
# Content-Type : 指定请求体的数据格式为 JSON
# Authorization : Token 认证方式,携带 API 密钥
# ────────────────────────────────────────────────────────────────────────────
headers = {
"Content-Type": "application/json", # 请求体格式:JSON
"Authorization": f"{API_KEY}" # 认证方式:Token
}
# ╔══════════════════════════════════════════════════════════════════════════╗
# ║ 构建请求体 ║
# ╚══════════════════════════════════════════════════════════════════════════╝
# ────────────────────────────────────────────────────────────────────────────
# 请求体结构说明 (Payload Structure)
# ────────────────────────────────────────────────────────────────────────────
# {
# "model": "模型名称",
# "messages": [
# {
# "role": "user", # 角色:user / assistant / system
# "content": [ # 多模态内容数组
# { "type": "text", "text": "..." }, # 文本内容
# { "type": "video_url", "video_url": {...} } # 视频内容
# ]
# }
# ]
# }
# ────────────────────────────────────────────────────────────────────────────
payload = {
# ========================================================================
# 模型选择 (Model Selection)
# ========================================================================
# Qwen3-VL-235B-A22B-Thinking:
# ========================================================================
"model": "Qwen3-VL-235B-A22B-Thinking",
# ========================================================================
# 消息数组 (Messages Array)
# ========================================================================
# 采用 OpenAI 兼容的消息格式,支持多轮对话
# ========================================================================
"messages": [
{
# ----------------------------------------------------------------
# 消息角色 (Role)
# ----------------------------------------------------------------
# - user : 用户消息
# - assistant : AI 助手回复
# - system : 系统提示词
# ----------------------------------------------------------------
"role": "user",
# ----------------------------------------------------------------
"content": [
# ============================================================
# 文本内容 (Text Content)
# ============================================================
# type : 内容类型标识
# text : 用户的文字提示,引导模型分析视频
# ============================================================
{
"type": "text",
"text": "描述这个视频中的内容"
},
# ============================================================
# 视频内容 (Video Content)
# ============================================================
# type : 内容类型标识,视频使用 "video_url"
# video_url : 视频 URL 配置对象
# └─ url : 视频的完整 URL 地址
#
# ============================================================
{
"type": "video_url",
"video_url": {
"url": "https://doc.dmxapi.cn/0_fenxiang/aa.mp4"
}
},
],
}
],
}
# ╔══════════════════════════════════════════════════════════════════════════╗
# ║ 发送请求 & 处理响应 ║
# ╚══════════════════════════════════════════════════════════════════════════╝
try:
# ========================================================================
# 步骤 1: 发送 POST 请求
# ========================================================================
# 使用 requests.post() 发送 HTTP POST 请求
# - url : API 端点地址
# - headers : 请求头(包含认证信息)
# - data : 请求体(JSON 格式的字符串)
# ========================================================================
print("正在分析视频,请稍候...")
print("─" * 60)
response = requests.post(
url=API_URL,
headers=headers,
data=json.dumps(payload) # 将字典转换为 JSON 字符串
)
# ========================================================================
# 步骤 2: 检查响应状态
# ========================================================================
# raise_for_status() 会在 HTTP 状态码表示错误时抛出异常
# - 4xx : 客户端错误(如 401 未授权、404 未找到)
# - 5xx : 服务器错误(如 500 内部错误、503 服务不可用)
# ========================================================================
response.raise_for_status()
# ========================================================================
# 步骤 3: 解析 JSON 响应
# ========================================================================
# API 返回的响应体为 JSON 格式,需解析为 Python 字典
# ========================================================================
result = response.json()
# ========================================================================
# 步骤 4: 输出结果
# ========================================================================
print("请求成功!")
print("═" * 60)
# ------------------------------------------------------------------------
# 4.1 输出推理过程 (Reasoning Content)
# ------------------------------------------------------------------------
# Thinking 系列模型特有的输出,展示模型的思考过程
# 字段路径: result['choices'][0]['message']['reasoning_content']
# ------------------------------------------------------------------------
reasoning = result['choices'][0]['message'].get('reasoning_content', '')
if reasoning:
print()
print("┌─────────────────────────────────────────────────────────────┐")
print("│ 【推理过程】 │")
print("└─────────────────────────────────────────────────────────────┘")
print(reasoning)
print()
# ------------------------------------------------------------------------
# 4.2 输出分析结果 (Content)
# ------------------------------------------------------------------------
# 模型对视频内容的最终分析描述
# 字段路径: result['choices'][0]['message']['content']
# ------------------------------------------------------------------------
content = result['choices'][0]['message']['content']
print("┌─────────────────────────────────────────────────────────────┐")
print("│ 【分析结果】 │")
print("└─────────────────────────────────────────────────────────────┘")
print(content)
print()
# ------------------------------------------------------------------------
# 4.3 输出 Token 使用统计 (Usage Statistics)
# ------------------------------------------------------------------------
# Token 是模型处理文本的基本单位,用于计费和限制
# - prompt_tokens : 输入消耗的 Token 数(包含视频帧)
# - completion_tokens : 输出消耗的 Token 数
# - total_tokens : 总计消耗的 Token 数
# ------------------------------------------------------------------------
print("═" * 60)
print("┌─────────────────────────────────────────────────────────────┐")
print("│ 【Token 使用统计】 │")
print("└─────────────────────────────────────────────────────────────┘")
usage = result['usage']
print(f" ● 输入 Token (Prompt) : {usage['prompt_tokens']:,}")
print(f" ● 输出 Token (Completion) : {usage['completion_tokens']:,}")
print(f" ● 合计 Token (Total) : {usage['total_tokens']:,}")
print("═" * 60)
# ╔══════════════════════════════════════════════════════════════════════════╗
# ║ 异常处理 ║
# ╚══════════════════════════════════════════════════════════════════════════╝
except requests.exceptions.RequestException as e:
# ========================================================================
# 网络请求异常 (Request Exception)
# ========================================================================
# 捕获所有 requests 库可能抛出的异常,包括:
# - ConnectionError : 网络连接失败
# - Timeout : 请求超时
# - HTTPError : HTTP 状态码错误 (4xx, 5xx)
# - TooManyRedirects: 重定向次数过多
# ========================================================================
print("═" * 60)
print("【请求失败】")
print(f" 错误类型: {type(e).__name__}")
print(f" 错误信息: {e}")
# 如果响应对象存在,尝试输出详细错误信息
if hasattr(e, 'response') and e.response is not None:
print(f" 状态码 : {e.response.status_code}")
print(f" 响应内容: {e.response.text}")
print("═" * 60)
except ValueError as e:
# ========================================================================
# JSON 解析异常 (Value Error)
# ========================================================================
# 当响应内容不是有效的 JSON 格式时抛出
# ========================================================================
print("═" * 60)
print("【数据解析错误】")
print(f" 错误信息: {e}")
print("═" * 60)
except KeyError as e:
# ========================================================================
# 键值缺失异常 (Key Error)
# ========================================================================
# 当响应 JSON 中缺少预期的字段时抛出
# ========================================================================
print("═" * 60)
print("【响应格式错误】")
print(f" 缺少字段: {e}")
print("═" * 60)📤 返回示例
json
正在分析视频,请稍候...
请求成功!
============================================================
【推理过程】
------------------------------------------------------------
用户让我描述视频中的内容,但提供的其实是几张图片,不是视频。首先我需要确认用户的需求,可能他们误将图片序列当作视频。接下来,我需要分析每张图片的内容,然后按顺序描述。
首先看图片1:这是《复仇者联盟4》的中文海报,有“逆转无限”和“不惜一切代价”的标语,底部有上映日期4月24日,漫威标志,还有众多角色的剪影和形象,比如钢铁侠、美国队长、雷神等,背景是宇宙星空,上方有灭霸的剪影。
图片2:美国队长和黑寡妇并肩站立,背景是星空和山脉,美国队长穿蓝红制服,黑寡妇穿黑色紧身衣,两人表情严肃。
图片3:美国队长和黑寡妇的特写,美国队长的制服细节更清晰,黑寡妇手持盾牌,背景是星空,氛围紧张。
图片4:雷神的特写,手持雷神之锤,锤子有闪电,他穿着战甲,红色披风,表情坚定。
图片5:黑寡妇的特写,戴着红色发光的耳机,表情专注,背景是星空和黄昏的天空。
图片6:和图片5类似,但可能光线有变化,黑寡妇的耳机发光,表情严肃。
图片7:另一张海报,顶部有“DMXAPI”字样,角色排列类似图片1,但可能是不同版本,背景是紫色星空,角色更多。
图片8:和图片7类似,可能细节略有不同,但同样有“DMXAPI”标题。
图片9:和图片7、8相似,也是“DMXAPI”海报,角色位置可能调整。
需要注意到用户可能混淆了视频和图片序列,所以描述时要说明这是多张图片组成的序列,按顺序描述每张的内容,重点在角色、场景、文字信息等。
需要注意图片中的角色:钢铁侠、美国队长、雷神、黑寡妇、鹰眼、惊奇队长等,还有灭霸的剪影。文字方面有中文标语、上映日期、DMXAPI(可能是个错误或自定义标题)。
可能用户提供的图片序列是模拟视频帧,所以描述时按时间顺序列出每张图的关键元素,指出可能的错误,比如“DMXAPI”可能是AI生成的错误标题,而原版是“复仇者联盟4”。
需要确认是否有重复或相似的图片,比如图片7-9都是类似海报,可能只是微调。重点描述主要角色和场景变化,以及文字信息的变化。
【分析结果】
------------------------------------------------------------
你提供的内容并非视频,而是**9张静态图片组成的序列**(可能是模拟视频帧的图片集)。以下是按顺序对每张图片的详细描述:
---
### **图片1:《复仇者联盟4》中文官方海报**
- **核心内容**:漫威电影《复仇者联盟4:终局之战》的官方中文海报。
- **视觉元素**:
- 顶部有中文标语“**逆转无限**”“**不惜一切代价**”,背景是巨大的灭霸剪影(紫色皮肤、头盔)。
- 中间密集排列主要角色:钢铁侠(胸前反应堆发光)、美国队长(持盾)、雷神(持斧)、黑寡妇、鹰眼、惊奇队长、蚁人等,角色姿态充满战斗感。
- 底部有“**复仇者联盟4 终局之战**”的金色标题,以及“**4月24日 最后集结**”的上映信息,还有“MARVEL STUDIOS”标志和IMAX/3D等技术标识。
- **氛围**:宇宙星空背景,整体色调偏蓝紫,充满史诗感与紧张感。
---
### **图片2:美国队长与黑寡妇的双人特写**
- **场景**:两人并肩站立于荒凉的星球表面,背景是星空与山脉。
- **角色细节**:
- 美国队长身穿蓝红相间的“新战衣”(胸前有白色星形标志),表情坚毅。
- 黑寡妇穿黑色紧身战斗服,红发随风飘动,手持美国队长的盾牌(红白蓝配色)。
- **氛围**:冷色调星空与暖色地平线对比,突出角色的决绝感。
---
### **图片3:美国队长与黑寡妇的近景特写**
- **细节强化**:
- 美国队长战衣的纹理、腰带装备清晰可见;黑寡妇的盾牌边缘反光明显。
- 背景星空更暗,突出人物轮廓,两人眼神锐利,仿佛正在准备战斗。
- **与图片2差异**:镜头拉近,聚焦角色上半身,光影更强烈。
---
### **图片4:雷神索尔的特写**
- **角色形象**:
- 雷神身穿银色战甲(肩甲有圆形纹路),红色披风,手持“雷神之锤”(锤头有闪电特效)。
- 面部有胡须,眼神凌厉,嘴角微张,似在呐喊。
- **背景**:深蓝色星空,闪电环绕锤子,强调神力。
---
### **图片5:黑寡妇的面部特写**
- **细节**:
- 红发被风吹起,佩戴红色发光的战术耳机(耳侧有“88”数字标识)。
- 眼神专注,嘴唇微张,似乎在接收指令或准备行动。
- **背景**:黄昏与星空交界,色调偏冷,突出科技感与紧张感。
---
### **图片6:黑寡妇特写的微调版本**
- **变化**:与图片5几乎相同,但光影更柔和,耳机红色光芒略微减弱,人物表情稍显沉静。
---
### **图片7-9:AI生成的“DMXAPI”主题海报**
- **共同特征**:
- 顶部有醒目的蓝色3D文字“**DMXAPI**”(非官方标题,可能是AI生成错误或自定义标识)。
- 角色阵容与图片1类似,但部分角色位置调整(如钢铁侠战衣更暗,灭霸剪影更模糊)。
- 背景为紫色星云,整体风格更偏向赛博朋克,而非原版电影海报的写实风格。
- **差异**:
- 图片7-9的“DMXAPI”文字大小、角色光影细节略有不同(如图片9中角色更明亮)。
- **注意**:这些并非官方海报,可能是AI根据原版海报生成的变体,标题“DMXAPI”无实际电影关联。
---
### **关键说明**
1. **非视频内容**:所有内容为静态图片,无动态镜头或情节推进。
2. **官方与AI生成内容混杂**:
- 图片1、2-6是基于《复联4》的官方或粉丝创作内容;
- 图片7-9为AI生成的“伪海报”,标题“DMXAPI”可能是模型错误输出(类似“乱码标题”)。
3. **核心主题**:围绕《复仇者联盟4》的角色集结、战斗氛围,突出英雄的使命感与宇宙级危机。
如果需要分析视频(而非图片序列),请提供真实视频片段或更明确的描述。
============================================================
【Token 使用统计】
Prompt tokens: 6022
Completion tokens: 1617
Total tokens: 7639© 2025 DMXAPI Openai 网络图片分析
