VSS子代理机制详解:report_agent与multi_report_agent如何协作生成视频报告

发布时间:2026/9/21 2:59:25
VSS子代理机制详解:report_agent与multi_report_agent如何协作生成视频报告 VSS子代理机制详解report_agent与multi_report_agent如何协作生成视频报告【免费下载链接】video-search-and-summarizationNVIDIA AI Blueprint for video search and summarization (VSS) is a GPU-accelerated reference architecture for building video analytics agents with real-time verified alerts, visual QA, and automated reporting. The VSS Blueprint uses vision language models (VLMs) such as NVIDIA Cosmos, LLMs such as NVIDIA Nemotron, RAG, and NVIDIA NIMs.项目地址: https://gitcode.com/GitHub_Trending/vi/video-search-and-summarization在 NVIDIA 的 VSSVideo Search and Summarization视频搜索与摘要开源项目中子代理Sub-agent机制是整个智能体的核心设计顶层路由代理 top_agent 负责理解用户意图再把生成视频报告这类专业任务分发给 report_agent单事件报告与 multi_report_agent多事件报告两个确定性子代理执行。本文面向新手用最少代码、最多图示讲清这套子代理协作机制的工作原理与配置方式。一、VSS 整体架构子代理站在哪里VSS 是一套 GPU 加速的视频分析智能体参考架构集成了视觉语言模型VLM、大语言模型LLM如 Nemotron、RAG 与 NIM 微服务。从架构图可以直观看到智能体层Agent向上提供对话入口向下调用视频分析 MCP 工具、视频理解工具与各微服务。在智能体层内部代理分为两类角色角色说明典型例子顶层代理Top AgentLLM 驱动负责规划、路由、决定调哪个工具top_agent.py子代理Sub-agent预定义流程被当作高级工具调用report_agent、multi_report_agent、search_agent、critic_agent普通工具Tool单一能力直接返回数据video_understanding、vst_video_clip、get_sensor_names注册入口很简洁——导入即注册见 register.pycritic_agent / multi_report_agent / report_agent / search_agent / top_agent二、两个报告子代理的分工1. report_agent单事件深度报告源码位于 report_agent.py。它的最大特点是确定性工作流不使用 LLM 做决策而是按固定工具序列执行保证输出稳定可复现。它有两种运行模式由配置自动检测切换模式一事件模式检测到事件 → 调用 Video Analytics MCP 的get_incidents/get_incident拉取最近或指定 ID 的事件 → 调用template_report_gen生成含视频分析的 Markdown PDF 报告模式三上传视频/RTSP 流模式未配置事件库时直接基于上传视频或实时流做分析支持多视频并行处理。生成的报告会通过side_effects返回下载链接Markdown/PDF和媒体链接事件快照、视频片段并自动附加到最终回复中——子代理还会附一条artifact_note提醒顶层 LLM链接已自动展示不要重复贴。在 UI 中向助手提出帮我生成一份视频报告就会触发 report_agent 走完整流程2. multi_report_agent多事件汇总报告源码位于 multi_report_agent.py。它只对应一条更短的工具链调用multi_incident_formatter一次完成拉取多个事件 → 补充 URL → 格式化列表 → 生成图表。关键输入参数source/source_type按传感器或地点过滤sensor或placestart_time/end_timeISO 时间范围缺省时取最近事件max_result_size返回事件数量上限未指定时回落到配置项max_incidents默认 10000UI 展示前几条图表统计全部。它的side_effects输出chart_html图表与formatted_incidents格式化事件列表顶层代理会指示 LLM 不要重复粘贴已自动展示的完整列表。三、协作机制top_agent 如何调度子代理这是子代理机制最核心的部分。调度逻辑全部在 top_agent 中完成可以概括为五步绑定初始化时把普通工具和子代理合并为一个列表绑定给 LLMllm.bind_tools(subagents_plus_tools)因此 LLM 眼里子代理就是一个功能强大的工具但实际执行走原生流式接口规划开启planning_enabled时先用不绑定工具的 LLM 起草编号执行计划再按计划执行避免模型漏步识别与调用LLM 发出工具调用后tool_or_subagent_node检查工具名是否在subagent_names中若是则发出SUBAGENT_CALL事件并用astream原生流式执行子代理流式透传子代理执行中产生的TOOL_CALL、THOUGHT等中间步骤如Tool: get_incidents…被逐块转发给前端用户在 UI 里能看到子代理内部的每一步推理结果回收子代理的FINAL块被解析为统一的AgentOutputmessages / side_effects / metadata / status定义见 data_models.py其中下载链接、媒体 URL 等 side_effects 会累积到state.subagent_side_effects在最终回复时统一追加展示。子代理执行期间还会发出 TOOL_START / TOOL_END 遥测事件接入 OpenTelemetry 链路追踪方便排查性能与错误。另外top_agent 内置了相同工具调用去重机制同一名称参数的调用最多重试 2 次防止 LLM 陷入重复调用循环——对长耗时的报告生成任务尤为重要。四、在哪里配置子代理不同开发配置dev profile通过subagent_names字段声明启用的子代理。例如告警配置 config.yml 中workflow: _type: top_agent planning_enabled: true tool_names: - video_understanding - rtvi_vlm_alert ... subagent_names: - report_agent而搜索配置 dev-profile-search config.yml 只启用search_agent。可见子代理机制让同一个 top_agent 框架在不同业务场景下插拔不同能力——同一份调度代码换一份配置就是不同的智能体。五、小结report_agent负责单事件/上传视频的深度报告multi_report_agent负责多事件列表图表的广度汇总两者都是确定性工作流输出统一走AgentOutput模型top_agent把子代理包装成工具绑定给 LLM通过原生流式接口调用、逐块透传中间步骤、集中收集 side_effects 后统一呈现实现了LLM 负责决策、子代理负责执行的清晰分工想扩展自己的子代理只需仿照 agents/ 目录下的实现注册并在 dev profile 的subagent_names中声明即可更多细节可参考官方文档 VSS-Agent-Overview.mdx 与 VSS-Agent-Configuration.mdx。【免费下载链接】video-search-and-summarizationNVIDIA AI Blueprint for video search and summarization (VSS) is a GPU-accelerated reference architecture for building video analytics agents with real-time verified alerts, visual QA, and automated reporting. The VSS Blueprint uses vision language models (VLMs) such as NVIDIA Cosmos, LLMs such as NVIDIA Nemotron, RAG, and NVIDIA NIMs.项目地址: https://gitcode.com/GitHub_Trending/vi/video-search-and-summarization创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考