VSS视频问答Skill vss-ask-video

该技能用于通过VSS代理的video_understanding工具对视频片段进行视觉问答,适用于需要查看视频帧像素才能回答的细节问题。关键词:视频问答、VSS、VLM、视频理解、视觉模型、视频检索、视频分析、NVIDIA VSS。

视频智能服务(VSS) 0 次安装 0 次浏览 更新于 9/6/2026
名称 vss-ask-video
描述 使用此技能向VSS代理的video_understanding工具询问关于已录制片段的全新视觉问题。不适用于先前工具输出、搜索命中或可通过元数据回答的问题。
开源协议 Apache-2.0 metadata:
版本 “3.2.0” github-url: “https://github.com/NVIDIA-AI-Blueprints/video-search-and-summarization” tags: “nvidia blueprint operational”

通过VSS代理使用VLM进行视频问答

当您需要视频中需要VLM查看视频帧的细节时,请使用此技能——例如代理没有可用的先前答案,需要针对某个特定片段重新查看像素


使用时机

  • 用户询问视频中发生了什么,出现哪些物体/人物/动作颜色时间安全性或其他需要观看片段的视觉事实
  • 用户询问的细节无法仅从现有消息、摘要、Elasticsearch/MCP结果或文件名中回答——您需要对视频进行模型推理
  • 在粗略摘要或报告生成之后,跟进询问内容细节

数据库/MCP/先前工具输出已经回答了该问题时,请不要使用此技能,除非用户明确希望对照视频进行验证


部署前提

此技能需要一个提供 video_understanding 工具的VSS配置——通常是 base(推荐)或 lvs。在任何请求之前:

  1. 探测VSS代理:

    curl -sf --max-time 5 "http://${HOST_IP}:8000/docs" >/dev/null
    
  2. 如果探测失败,询问用户:

    “没有VSS配置运行在 $HOST_IP 上。是否要使用 /vss-deploy-profile 技能部署 base(推荐用于每个片段的VLM问答)?如果您更喜欢 lvs,请说明。”

    • 如果是 → 转交 /vss-deploy-profile -p base(如果用户偏好lvs则使用 -p lvs)。成功后返回此处。
    • 如果否 → 停止。
  3. 如果探测通过,继续。


传感器前提

在任何 /generate 调用之前,您必须列出VST传感器。 即使当用户明确指定了传感器名称,即使当用户断言视频已经上传,即使之前的轮次似乎使用了相同的视频,这也是必需的。不要跳过此步骤。

  1. 列出传感器:

    curl -sf --max-time 5 "http://${HOST_IP}:30888/vst/api/v1/sensor/list" | jq '.[].name'
    
  2. 将返回的 name 值与用户提供的 <sensor-id>(或文件名主干,例如 warehouse_safety_0001)进行比较。

  3. 如果存在匹配的传感器 → 进入下面的代理工作流程。

  4. 如果不存在匹配的传感器 —— 首先上传视频,然后重新列出以确认新传感器出现:

    # 文件名:不能包含空白字符
    # 时间戳:ISO 8601 UTC — 如果用户未指定,默认为2025-01-01T00:00:00.000Z
    curl -s -X PUT "http://${HOST_IP}:30888/vst/api/v1/storage/file/<filename>?timestamp=<timestamp>" \
      -H "Content-Type: application/octet-stream" \
      -H "Content-Length: <file_size_in_bytes>" \
      --upload-file /path/to/<filename> | jq .
    

    查看 /vss-manage-video-io-storage 获取完整的上传语义(v1 vs v2、冲突处理、删除流程)。在交互式运行中,上传前与用户确认。在未先执行上述传感器列表检查之前,绝不要发出无条件的PUT——这正是此前提要防止的失败模式。


代理工作流程

上述传感器前提必须已经确认(或创建)传感器存在于VST上。然后:

  1. 片段 — 确定一个视频片段的传感器ID文件名URL。如果不明确,询问用户。
  2. 调用带有传感器ID的vss代理,并要求其调用video_understanding工具来回答用户的问题。
  3. 将vss代理的答案返回给用户。

查询VSS代理 (/generate)

# 从部署中设置(compose / .env / vss-agent监听的主机)
export VSS_AGENT_BASE_URL="http://localhost:8000"

curl -s -X POST "${VSS_AGENT_BASE_URL}/generate" \
  -H "Content-Type: application/json" \
  -d '{"input_message": "Call video_understanding tool to answer the following question about <sensor-id>: <user query>"}' | jq .

响应契约和提取

/generate 返回一个JSON对象,其中助手输出在 value 中,例如:

{"value":"<agent-think><agent-think-step ...>...</agent-think-step></agent-think>

<final answer>

"}

没有单独的干净答案字段。可消费的答案是 .value 中删除任何 <agent-think>...</agent-think> 块之后的文本。

此技能(以及任何下游调用者)必须处理的内容:

  1. 从JSON响应中读取 .value
  2. 无论出现在哪里,都去除 <agent-think>...</agent-think> 部分。
  3. 仅向用户返回剩余的最终答案文本。

示例提取:

curl -s -X POST "${VSS_AGENT_BASE_URL}/generate" \
  -H "Content-Type: application/json" \
  -d '{"input_message":"Call video_understanding tool to answer the following question about <sensor-id>: <user query>"}' \
| jq -r '.value' \
| python3 -c 'import re,sys; t=sys.stdin.read(); t=re.sub(r"<agent-think>.*?</agent-think>\s*", "", t, flags=re.S); print(t.strip())'

交叉参考

  • vss-manage-video-io-storage — VST存储/重放URL,使**VIDEO_URL**对VLM有效。
  • vss-generate-video-report — 通过模式A(直接VLM)模式B(视频分析事件)生成带时间戳的报告;此技能是用于临时视频问答VSS代理 /generate