问题
用户发来一张报错截图、一段语音、一份 PDF 扫描件。多模态信息各走各的处理通道,文本 Agent 只拿到一句"用户上传了附件"——上下文里模态是割裂的。
核心模式
多模态融合:不同模态在入口处统一转写为结构化描述,汇入同一条上下文流。核心思想是尽早归一:图像走视觉模型提取描述+OCR 文本,语音走 ASR 转写,PDF 走版面解析——全部变成带元信息的文本块。
def ingest(attachment):
if attachment.type == "image":
return ContextBlock(
kind="image",
summary=vision_model.describe(attachment), # 语义描述
text=ocr(attachment), # 图中文字
ref=attachment.url) # 原文指针
if attachment.type == "audio":
return ContextBlock(
kind="audio",
text=asr.transcribe(attachment),
meta={"duration": attachment.duration},
ref=attachment.url)
上下文里每个块保留原文指针:模型需要"亲眼看图"时(多模态模型),可按 ref 把原图重新加载进上下文;纯文本模型则靠描述+OCR 文本工作。
实战要点
- 归一化时机在入口,不在推理中——推理循环里每步都调视觉模型,成本和延迟都扛不住
- 描述质量决定下游质量:给视觉模型的提示词要针对业务("重点提取报错码和堆栈"),别让通用描述漏掉关键信息
- 保留原文 ref 是底线:转写永远有损,关键场景(合同条款)必须能回溯原图
- 多模态模型可跳过部分转写,但成本敏感场景仍建议"先转写、必要时再看原图"的两级策略