AB
AiBoss站
教程

传统机器学习与智能体推理结合实战:从模型预测到多步工作流

教程

传统机器学习与智能体推理结合实战:从模型预测到多步工作流

传统机器学习模型擅长把输入映射成输出,却无法规划步骤、调用工具、适应变化或执行动作。本文说明两者的能力边界,给出智能体编排加模型预测的混合架构设计方法,并以保险理赔场景为例,完整演示从特征准备、模型打分到阈值路由与推理留痕的落地流程。

训练好的分类器收到一张医学影像,返回一个概率;回归模型收到一组特征,返回一个数值。模型严格按训练时学到的方式工作,不多做一步。这种可靠性同时也是它的边界:现实中的问题很少以干净的「输入—输出」对的形式出现,它们需要先收集信息、判断下一步做什么、处理意外情况,并在多步操作之后才可能得出最终答案。传统机器学习本身没有机制去完成这些事,而智能体推理正好补上这一段。本文讲清传统机器学习的能力边界、智能体推理补上的四类能力,以及两者如何组合成比任何单一方案都更强的系统,并给出一个可以照着搭的最小实现。

准备工作

在动手之前,先把概念和依赖理清楚。混合系统不是把大模型套在模型外面那么简单,它需要几个明确的组成部分各自到位。

概念上的准备

需要先分清两类组件各自的职责。传统机器学习指的是有监督学习训练出来的模型:欺诈检测模型学会区分欺诈交易与正常交易,流失预测模型学会哪些客户画像与取消订阅相关,需求预测模型学会历史模式与未来销量之间的关系。这类模型速度快、可解释、可直接上生产,训练完成后推理在毫秒级完成,能承受极大的请求量,输出一致且可审计。

但它们是静态的。训练好的模型反映的是训练时刻的世界状态,它无法在推理过程中更新理解,无法追问澄清性问题,无法判断自己是否需要更多信息再作答,也无法在世界上执行动作并观察结果。模型收到输入、施加学到的函数、返回输出,这就是它运作的全部范围。

智能体则是感知环境、决定做什么、采取行动、观察结果的东西。它与传统模型的关键差别在于:智能体跨越时间运作,与环境交互,而不是单纯把输入变换成输出。现代智能体系统通常围绕一个大语言模型构建,这个模型充当推理引擎,负责规划步骤序列、解释中间结果、决定使用哪些工具或资源、并根据观察到的结果调整做法。它做的不是传统意义上的统计预测,而是对「下一步该做什么」进行推理。

工程上的准备

搭建混合系统需要以下几类资源:

  • 已训练好的预测模型:至少一个在特定任务上表现良好的模型,例如欺诈评分模型、风险分类模型或需求预测模型。它需要能以服务或函数的形式被调用,输入输出接口稳定。
  • 推理引擎:一个具备规划与工具调用能力的大语言模型接口。它需要支持多轮决策,并能接收工具返回的结构化结果。
  • 工具层:把模型、数据库、检索接口、业务系统封装成智能体可以调用的工具。每个工具要有清晰的名称、参数说明和返回格式。
  • 状态存储:用于保存中间结果、已执行步骤和推理轨迹,便于审计与调试。
  • 阈值与路由规则:哪些分数触发哪些后续动作,需要有明确的配置,而不是交给推理引擎即兴决定。

关于模型版本、接口配额、调用价格等易变信息,请以各服务官网当前公布的信息为准,本文不给出具体数字。

操作步骤

第一步:界定问题属于哪一类

先判断手上的任务是不是传统机器学习能独立完成的。传统机器学习的局限在三种情形下会暴露出来。

问题需要多个步骤时。预测一个贷款申请人是否会违约是单步问题:给定一组特征,返回一个概率。但决定是否批准一笔贷款涉及更多步骤:核实收入证明、检查材料是否自相矛盾、把边缘案例标记给人工复核、为决策生成书面说明。模型可以为这个过程贡献一个预测值,但它无法管理这个过程本身。

上下文在任务中途发生变化时。传统模型假设所有相关信息在推理时都已具备并编码在输入里。但很多真实任务是在推进过程中逐步发现信息的。分析人员调查一起潜在的安全事件时,事先并不知道哪些日志是相关的;客服系统也无法预判一段对话可能走向哪个方向。当相关上下文只能通过与环境的交互来确定时,一个只处理固定输入的静态模型无法适应。

需要执行动作时。预测设备故障的模型无法安排维修预约;识别出供应链中断的模型无法改道货运。传统机器学习产出的是数字、标签、概率,它不在世界上采取行动。从模型预测到现实响应之间的这段距离,必须由别的东西来弥合。

这三类情形不是边缘案例,它们恰恰描述了大多数期望 AI 产生实质影响的高价值业务问题。如果任务落在其中任何一类,就需要引入智能体推理。

第二步:明确智能体要补上的四类能力

智能体推理相对传统机器学习多出四项能力,搭建系统时要逐项确认它们是否被真正实现。

规划。智能体能把一个复杂目标拆解成步骤序列,并在多次动作之间跟踪目标进展。它不是产出单个输出,而是维护一个关于「想达成什么」和「还差什么」的表示。工程上这通常体现为一个显式的任务状态对象,包含目标、已完成步骤、待办步骤和当前判断。

工具调用。智能体能调用外部工具,包括数据库、API、搜索引擎或其他模型,并把结果纳入推理。这意味着智能体不受训练时编码进参数的知识所限,它可以按需检索当前信息、执行计算或查询专用系统。在混合系统里,最重要的工具之一就是那个训练好的预测模型。

适应。智能体能根据观察到的结果更新计划。如果某个工具返回了意料之外的结果,智能体可以修改做法;如果一次查询没有返回有用信息,它可以换一个查询。这个反馈回路在传统机器学习的推理中是不存在的。

行动。智能体能在世界上做事:发送消息、写入数据库、触发工作流、调用 API。它的输出不只是预测,而是操作。

第三步:设计分层架构

让混合系统成立的关键认识是:传统机器学习与智能体推理不是竞争关系。它们处在系统的不同层次,解决不同的问题。

传统机器学习擅长在结构化数据上做模式识别。一个在数百万笔交易上训练出来的模型,检测欺诈的准确度会高于任何从基本原理出发的推理过程;一个在数千张影像上训练出来的模型,识别肿瘤的可靠性会高于一个没有专门训练、试图靠推理得出诊断的智能体。训练好的模型在它们被设计的具体任务上,速度快、经过校准、表现一致。

智能体推理擅长编排:决定用哪些工具、按什么顺序、传什么参数,以及如何解释和组合它们的输出以服务于更大的目标。

在混合系统中,智能体管理工作流,机器学习模型做专门的预测工作。智能体决定何时调用欺诈模型,把合适的交易数据传给它,接收概率分数,并在更大任务的语境中决定如何使用这个信息。它可能依次调用多个模型、比较它们的输出、从数据库检索额外上下文,然后生成综合回复或触发下游动作。

两个组件都不做对方的工作。机器学习模型不去尝试规划,智能体不去尝试在原始特征上做细粒度模式识别。各司其职。

第四步:把模型封装成工具

模型要能被智能体调用,必须先有稳定的接口。一个典型的封装包含三部分:输入模式、输出模式、以及调用逻辑。

def score_fraud_claim(claim_amount, claimant_history_score,
                      provider_risk_score, claim_frequency_30d):
    """
    调用已训练的欺诈评分模型。
    输入:结构化特征
    输出:{"fraud_probability": float, "model_version": str}
    """
    features = [[claim_amount, claimant_history_score,
                 provider_risk_score, claim_frequency_30d]]
    proba = fraud_model.predict_proba(features)[0][1]
    return {
        "fraud_probability": float(proba),
        "model_version": fraud_model_version
    }

封装时要注意几点:输入字段的名称和含义要写清楚,供推理引擎理解何时该调用;输出要包含模型版本,便于事后追溯是哪一版模型给出的分数;异常情况要有明确返回,例如模型服务不可用时返回错误标记而不是抛异常中断整个工作流。

第五步:定义编排逻辑与阈值

智能体负责编排,但阈值这类业务规则应当显式配置,而不是让推理引擎每次即兴判断。下面是一个理赔场景的编排骨架。

THRESHOLD_HIGH = 0.80
THRESHOLD_LOW  = 0.30

steps = []

# 1. 检索保单持有人记录
policy = fetch_policyholder(claim.policyholder_id)
steps.append({"action": "fetch_policyholder", "result": policy.status})

# 2. 调用欺诈评分模型
score = score_fraud_claim(
    claim_amount=claim.amount,
    claimant_history_score=policy.history_score,
    provider_risk_score=claim.provider_risk,
    claim_frequency_30d=claim.frequency_30d
)
steps.append({"action": "score_fraud",
              "result": score["fraud_probability"],
              "model_version": score["model_version"]})

# 3. 按分数分流
if score["fraud_probability"] >= THRESHOLD_HIGH:
    similar = search_similar_claims(claim)
    related = search_claims_by_provider(claim.provider_id)
    inconsistencies = check_documentation(claim)
    steps.append({"action": "gather_evidence",
                  "similar_count": len(similar),
                  "related_count": len(related),
                  "inconsistencies": inconsistencies})
    summary = synthesize_findings(steps)
    route_to_queue(claim, queue="manual_review",
                   reasoning=summary, trace=steps)
elif score["fraud_probability"] <= THRESHOLD_LOW:
    route_to_queue(claim, queue="auto_approve",
                   reasoning="low risk score", trace=steps)
else:
    route_to_queue(claim, queue="standard_review",
                   reasoning="mid-band score", trace=steps)

这段逻辑里,欺诈检测模型做的正是它被训练来做的事,而智能体做了模型做不到的一切:收集上下文、按顺序做决策、采取行动。组合系统的输出——一笔被路由并附带推理记录的理赔——是任何一个组件单独都无法产出的。

第六步:保留推理轨迹

混合系统的一个关键产出是推理轨迹。每一步调用了什么工具、传了什么参数、返回了什么结果、据此做了什么判断,都应当被记录下来。这既是审计需要,也是调试需要:当路由结果不符合预期时,能快速定位是模型分数异常、阈值配置不当,还是证据收集环节漏掉了关键信息。

轨迹记录建议包含:时间戳、步骤序号、动作名称、输入参数摘要、输出结果摘要、以及该步骤之后的目标状态。对于涉及个人数据的字段,记录时按合规要求做脱敏处理。

一个完整示例

下面把上述步骤串成一个可以跑通的最小例子。场景是保险理赔的自动分流。

场景设定

一笔新理赔到达系统。系统需要判断它应当进入自动批准队列、标准复核队列,还是人工深度复核队列,并为每个决定留下可解释的理由。

完整流程

def handle_claim(claim):
    trace = []

    # 阶段一:上下文收集
    policy = fetch_policyholder(claim.policyholder_id)
    if policy is None:
        return {"queue": "manual_review",
                "reason": "policyholder_not_found",
                "trace": trace}
    trace.append({"step": 1, "action": "fetch_policyholder",
                  "status": policy.status})

    # 阶段二:模型打分
    score = score_fraud_claim(
        claim_amount=claim.amount,
        claimant_history_score=policy.history_score,
        provider_risk_score=claim.provider_risk,
        claim_frequency_30d=claim.frequency_30d
    )
    trace.append({"step": 2, "action": "score_fraud",
                  "probability": score["fraud_probability"],
                  "model_version": score["model_version"]})

    # 阶段三:按分数决定后续动作
    prob = score["fraud_probability"]

    if prob >= THRESHOLD_HIGH:
        evidence = {
            "similar_claims": search_similar_claims(claim),
            "provider_claims": search_claims_by_provider(claim.provider_id),
            "doc_issues": check_documentation(claim)
        }
        trace.append({"step": 3, "action": "gather_evidence",
                      "similar": len(evidence["similar_claims"]),
                      "provider": len(evidence["provider_claims"]),
                      "doc_issues": evidence["doc_issues"]})

        summary = synthesize_findings(claim, score, evidence)
        trace.append({"step": 4, "action": "synthesize",
                      "summary": summary})

        return {"queue": "manual_review",
                "reason": summary,
                "trace": trace}

    if prob <= THRESHOLD_LOW:
        trace.append({"step": 3, "action": "auto_route",
                      "band": "low"})
        return {"queue": "auto_approve",
                "reason": "low_risk_score",
                "trace": trace}

    trace.append({"step": 3, "action": "auto_route",
                  "band": "mid"})
    return {"queue": "standard_review",
            "reason": "mid_band_score",
            "trace": trace}

运行结果的样子

对于一笔高风险理赔,返回结构大致如下:队列为人工复核,理由是一段综合了相似理赔数量、同一提供方历史理赔数量和文档不一致点的文字说明,轨迹里依次记录了保单检索、模型打分、证据收集和综合四个步骤,其中模型打分那一步带有模型版本号。

对于一笔低风险理赔,返回结构里只有三个步骤,队列为自动批准,理由为低风险分数。整个过程中模型只被调用一次,其余工作由编排逻辑完成。

这个例子里各组件在做什么

欺诈检测模型接收结构化特征,返回一个概率分数,它没有做任何超出训练范围的事。编排层负责决定何时调用模型、拿到分数后是否继续收集证据、收集哪些证据、以及最终把理赔路由到哪个队列。两者合起来产出的结果——一笔被正确分流且带有完整推理记录的理赔——是任何一方单独都无法完成的。

注意事项

搭建这类系统时有几个容易踩的坑,值得提前留意。

不要让推理引擎承担它不擅长的细粒度模式识别。在原始特征上做精细判别是训练模型的强项。如果让推理引擎直接根据原始字段判断欺诈概率,结果通常不如一个经过校准的模型稳定,也更难解释。

阈值要显式配置并版本化。把分流阈值写死在代码里、或交给推理引擎每次自行决定,都会让系统行为难以复现。阈值调整应当走配置变更流程,并记录变更时间与原因。

模型版本必须随分数一起记录。模型会重训、会更新。如果轨迹里只有分数没有版本,事后回溯时无法判断当时的判断依据是哪一版模型,审计和问题定位都会变得困难。

工具调用要有失败路径。数据库可能查不到记录,模型服务可能超时,检索可能返回空结果。每个工具调用都应当有明确的失败返回,并让编排逻辑决定是降级处理、转人工,还是终止流程,而不是让异常直接中断整个工作流。

推理轨迹涉及数据合规。轨迹里会包含输入参数和中间结果,其中可能有个人信息。记录前要按适用的合规要求做脱敏或最小化处理,并明确保存期限。

成本与延迟会随步骤数增长。多步编排意味着多次工具调用和多次推理,延迟和费用都会高于单次模型推理。对于延迟敏感的场景,需要评估哪些步骤可以并行、哪些判断可以前置到模型侧完成。具体的配额与计费方式请以所用服务官网当前信息为准。

混合系统不替代已有模型资产。这套架构的价值在于让已经训练好、经过校准的预测模型在更多场景中发挥作用,把它们嵌入到能够收集正确上下文、在恰当时机调用、并对输出采取连贯行动的系统里。它不是要用推理引擎替换传统机器学习。