视频 Agent 能听能看,为什么还会把话记错人?
面试日记 第 33 天转录结果把“这个排期做不完”记在了产品经理名下。可会议录像里产品经理只是先把方案投到屏幕上。过了两分钟真正说出这句话的是研发。我把演示暂停在发言人识别结果上面试官只问了一句“你怎么证明这句话属于后面这个人而不是前一个镜头里的人”这是我带来的多模态 Agent Demo。它会抽取视频关键帧也会把音轨转成文本。我原以为把两份结果一起塞进上下文模型自然就能还原会议过程。“所以你现在的判断依据是什么”她问。“关键帧里出现的人加上转录文本。”“镜头切换比说话晚半秒呢有人插话但画面还停在上一位发言人身上呢”我这才发现Demo 认出了画面也认出了句子却没有保存每一帧和每一句话各自的时间戳。两种模态都识别对了事件归因仍然可能错。屏幕上还开着一条刚核过的产品动态Grok 可以分析任何视频。真正到了面试现场“能分析视频”只是能力入口。面试官要确认的是画面、声音和文字进入 Agent 后怎样被表示、对齐再按时间顺序参与推理。她把原题写了下来LLM Agent 在多模态任务中如何执行推理我重新回答先用视觉编码器、语音识别或专用工具把图像、音频等输入转换为模型能消费的表示再保留时间戳、对象和来源把不同模态按同一条时间线组织进上下文。LLM 负责跨模态推理工具链负责提供可核对的观察结果。“那长视频怎么办”“不能只机械地多抽几帧。”我说“要根据场景变化挑关键片段也可以用视频编码器捕捉连续动作。视频太长时先做分层摘要再回到关键片段精查。”她又指向那条记错人的转录结果“这次你准备怎么改”“先让画面帧、音频片段和转录句子都带时间范围再检查说话人和镜头是否真的对齐。最后输出结论时把每个事件对应到具体片段证据对不上就保留不确定而不是替模型补完会议剧情。”这次说话人与顺序都对上了。我也在项目清单里补了一项视频 Agent 不只要认出发生了什么还得说清谁在什么时候做了什么。回答重点LLM Agent 在多模态推理中核心是先把不同模态的数据转换成统一的向量表示再将这些表示注入到大模型进行跨模态融合和推理。主流方案有三种1视觉-语言融合用 CLIP、BLIP-2 等视觉编码器将图像转为 embeddings然后与文本输入一起提供给 LLM。或者直接使用 GPT-4V 这种内置视觉理解能力的模型一站式处理图像并输出自然语言回答。2语音-文本桥接用 Whisper 等 ASR 模型将音频转换成文本再交给 LLM 分析和生成响应。这种串联方式简单直接工程上容易落地。3工具链调用LLM Agent 根据任务需求按需调用 OCR、物体检测、视频帧提取等工具将结果合并进上下文再由模型执行更高级别的推理或决策。以 GPT-4V 为例多模态调用大概是这样importopenaiimportbase64# 读取图片并转为 base64withopen(image.jpg,rb)asf:image_database64.standard_b64encode(f.read()).decode(utf-8)responseopenai.chat.completions.create(modelgpt-4-vision-preview,messages[{role:user,content:[{type:text,text:这张图里有什么},{type:image_url,image_url:{url:fdata:image/jpeg;base64,{image_data}}}]}])扩展知识跨模态对齐的底层原理多模态推理不是简单地把图拼上、把字读出来就完事了关键在于模态对齐。不同模态的数据天生就在不同的向量空间里图像是像素矩阵文本是 token 序列音频是波形信号。要让 LLM 能理解这些信息必须把它们映射到同一个语义空间。CLIP 的做法是用对比学习让图像和对应文本描述的 embedding 尽量靠近不相关的尽量远离。训练完成后图像编码器和文本编码器输出的向量就天然在同一个空间里了可以直接做相似度计算。BLIP-2 的轻量化思路BLIP-2 提供了一种资源友好的方案图像编码器和 LLM 都保持冻结只在中间加一个小型的 Q-Former 映射层。这个映射层用一组可学习的 query token 去询问图像编码器提取出最相关的视觉特征再传给 LLM。好处很明显不用重新训练几十亿参数的大模型只需要训练几百万参数的映射层显存占用和训练成本都大幅降低。在资源受限的场景下这个架构很实用。视频的时序推理处理视频会比单张图片复杂不少。一般的做法是1对视频做关键帧抽取比如每秒取 1-2 帧2对每个关键帧用图像编码器提取特征3如果有音轨用 Whisper 提取语音转文本4把所有模态的信息按时间顺序排列塞进 LLM 的上下文这样 LLM 就能理解先发生了什么、后发生了什么做时序相关的推理。比如分析一段会议录像模型能知道张三在第 3 分钟提出了方案李四在第 5 分钟表示反对。工程实践中的注意点1上下文长度多模态输入会占用大量 token一张图片可能就要消耗几百上千个 token。要注意控制输入规模避免超出模型的上下文窗口2延迟问题图像编码、语音转文本都需要时间串联多个模型会导致端到端延迟累加。实时场景下要做好预处理和缓存3幻觉风险多模态模型的幻觉问题比纯文本更严重可能会看到图里压根没有的东西。关键场景建议加一层校验时序对齐为什么不能只靠画面视频里的“谁先说、谁后说”不是纯视觉问题。镜头可能晚于声音切换字幕可能比语音延迟会议软件也可能因为网络抖动让画面和音轨短暂错位。如果 Agent 只按当前画面给转录文本归因就会出现“内容识别正确、人物和顺序却错了”的结果。工程上更稳妥的做法是给关键帧、音频片段和转录句子保留各自的时间范围再通过重叠区间完成对齐。说话人识别、口型或当前高亮头像可以提供辅助信号但这些信号冲突时系统应降低置信度并回到原始片段核验。对会议纪要、合规审查或事故复盘来说一个无法定位证据时间段的结论不应该直接进入最终结果。面试官追问追问CLIP 的对比学习具体是怎么做的为什么能让图像和文本在同一个空间里回答CLIP 用的是 InfoNCE loss。训练时每个 batch 里有 N 对图像-文本模型要学会把配对的图像和文本 embedding 拉近把不配对的推远。具体来说对于每张图它的正样本是对应的文本描述负样本是 batch 里其他 N-1 条文本。反过来对文本也一样。训练完成后图像编码器和文本编码器虽然结构不同但输出的向量天然就在同一个语义空间里可以直接算余弦相似度。追问视频太长关键帧抽取会丢失信息有没有更好的处理方式回答几个方向。一是用更智能的抽帧策略比如基于场景切换检测只在内容变化明显的地方抽帧避免冗余。二是用视频编码器而不是图像编码器比如 VideoMAE它能直接处理连续帧序列捕捉时序动态。三是分层处理先用轻量模型做视频摘要提取关键片段再对关键片段做精细分析。四是如果视频实在太长可以让用户指定时间段或者用 LLM 先看一遍粗略摘要再决定重点看哪里。追问多模态模型的幻觉问题怎么缓解回答几个常用手段。一是在 prompt 里明确要求模型只描述图中确实存在的内容不要推测。二是用 grounding 技术让模型输出时标注每个描述对应图中的哪个区域强制它建立图文对应关系。三是后处理校验把模型输出再送给一个专门的检测模型验证描述的物体是否真的存在于图中。四是用 Chain of Thought让模型分步先识别、再描述、最后总结每一步都可审计。