BotOf TechAI / IoT / Full-Stack / 植物养护知识分享
返回首页八 Agent 自学习文档处理:把“学会新格式”做成可验证的图工作流

八 Agent 自学习文档处理:把“学会新格式”做成可验证的图工作流

2026 年 10 月 14 日,AWS 发布自学习智能文档处理方案:八个专用 Agent 在两条基于 Strands Agents 的图工作流中协作。Analyzer 提取文本并识别类型,Matcher 用向量相似度寻找既有格式;遇到新格式时,Instructions、Extractor、Validator、Instructions Fixer 和 Save Instructions 生成并验证抽取指令;已知格式则直接抽取,失败时由 Troubleshooter 修复本次结果。

“自学习”容易被误解为在线训练模型。这里真正被学习并复用的是经过验证的抽取指令与格式知识。它比直接更新模型参数更容易审计、回滚和按租户隔离。

流程图:文档先识别和匹配,未知格式进入训练分支,验证通过后保存指令;已知格式走快速抽取。

多 Agent 的价值来自不同状态转移承担不同责任,而不是给同一提示换八个角色名。

用类型化状态定义工作流

图中的节点不应通过自然语言聊天传递全部信息。定义稳定状态,使每个 Agent 只读写自己负责的字段:

class DocumentState(TypedDict):
    job_id: str
    source_uri: str
    content_hash: str
    sender: str | None
    doc_type: str | None
    match_id: str | None
    match_score: float | None
    instruction_version: str | None
    extracted: dict[str, Any] | None
    validation_errors: list[dict]
    attempts: int
    status: Literal["new", "training", "validated", "failed"]

每次节点执行都记录输入状态版本、输出 patch、模型/提示版本和工具轨迹。失败恢复时从最后一个已提交节点继续,而不是重新 OCR 和重复调用所有 Agent。

路由必须由可测条件决定

Matcher 返回的不应只是“看起来相似”,而是候选格式、相似度、关键特征匹配和阈值决策。阈值过低会错误复用旧指令,过高则频繁进入昂贵训练分支。

def route_after_match(state: DocumentState) -> str:
    if state["match_id"] and (state["match_score"] or 0) >= 0.92:
        return "extract_known"
    return "train_new_format"

def route_after_validation(state: DocumentState) -> str:
    if not state["validation_errors"]:
        return "save_instructions"
    if state["attempts"] >= 3:
        return "human_review"
    return "fix_instructions"

阈值要按文档类别校准。银行账号或金额字段的错误代价远高于备注文本,应使用字段级置信度和硬校验,不能用平均分掩盖关键字段失败。

Validator 必须尽量确定性

Validator Agent 可以解释异常,但 schema、类型、总额平衡、日期范围、供应商白名单等规则应由代码执行。让另一个模型“看一眼是否正确”,会让训练闭环同时受两个随机系统影响。

def validate_invoice(x: dict) -> list[str]:
    errors = []
    if Decimal(x["subtotal"]) + Decimal(x["tax"]) != Decimal(x["total"]):
        errors.append("TOTAL_MISMATCH")
    if not re.fullmatch(r"[A-Z0-9-]{6,32}", x["invoice_no"]):
        errors.append("BAD_INVOICE_NO")
    return errors

业务规则来自受控数据库并版本化。Agent 只看到必要的失败码与有限证据,避免把完整客户数据写进 prompt。

指令库需要像模型注册表一样治理

Save Instructions 不能把任何一次通过的结果直接设为全局模板。记录适用租户、发送方、文档类型、样本哈希、schema 版本、验证集表现和生效状态。新指令先处于 candidate,用多份历史文档回放,达到阈值后才晋升为 active。

已知格式抽取失败时,Troubleshooter 只修正本次结果,而 Instructions Fixer 修改可复用规则。两者必须分开,否则一张异常发票就可能污染之后所有任务。模板回滚也要保留旧版本和命中历史。

八个 Agent 仍需要一个确定性骨架

EventBridge 负责触发,DynamoDB 保存 job,AgentCore Runtime 承载图,Gateway 将 Lambda 暴露为 MCP 工具,Identity 提供机器身份,Observability 关联轨迹。这些基础设施不应由 Agent 临时决定。

生产指标包括:首次出现格式的人工处理率、已知格式直通率、字段级准确率、每份文档 Agent 调用数、指令晋升/回滚率和跨租户误命中率。多 Agent 自学习系统只有在“学到了什么、依据什么通过、影响哪些后续任务”都可重建时,才比传统模板系统更可靠。

参考资料