问题

用户发来一张报错截图、一段语音、一份 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 是底线:转写永远有损,关键场景(合同条款)必须能回溯原图
  • 多模态模型可跳过部分转写,但成本敏感场景仍建议"先转写、必要时再看原图"的两级策略