第 20 章 Agent 运行时数据处理¶
客服负责人提出了一个具体要求:每天看一批退款对话,找出“工具没有办成,Agent 却告诉用户已经办好”的问题;改完提示词后,还要用这些案例检查问题有没有减少。
运行记录已经接入,轨迹也能打开,但质检人员需要的是一张可以直接使用的表:用户问了什么、Agent 如何回答、执行了哪些操作,以及记录来自哪里。数据多了,还希望按业务分类、抽取样本,每天自动补充新数据。如果每次都由开发者导出日志、改脚本、整理表格,质检很难成为日常工作。
Pipeline 将这套整理方法保存为数据处理任务,按约定持续生成 Dataset。 应用开发者把业务字段接对,业务负责人围绕预览确认样本是否符合用途;之后,评估、人工复核和实验共用这些字段,减少反复找数据、解释数据的工作。
在上一章中,我们已经得到可以阅读和回查的执行过程。本章接着说明,怎样将这些过程整理成业务用得上的样本。
20.1 Pipeline 能帮业务做哪些事¶
Pipeline 的功能可以按要交付的结果来选择。多数任务只需要其中几项,无需把所有处理都加进去。
| 业务需要 | 可以采用的处理 | 得到什么、何时有用 |
|---|---|---|
| 把日志变成可读表格 | 字段投影、字段扩展、条件过滤 | 提取问题、回答、模型、耗时等字段,适合质检、分析和评估前的数据准备 |
| 把分散事件整理为完整样本 | 实例构建 | 按已确认的任务或会话身份组装记录,适合输入仍是 Span、消息片段的应用 |
| 从相似内容中整理题库 | 精确去重、近似去重、语义去重 | 减少相同或相近问题,降低题库维护与重复评估的工作量 |
| 在有限预算内多看几类问题 | 随机采样、分组采样、向量生成、语义聚类 | 按比例、条数或类别选样,适合人工复核、专项排查与评估集扩充 |
| 为样本补充业务信息 | LLM 调用、智能体调用 | 分类、摘要、信息提取或生成候选标注,让筛选与分析更方便 |
| 找出异常长的内容 | 文本统计、条件过滤 | 计算文本长度等特征,定位过长输入或工具返回,为内容治理和成本排查选样 |
| 持续收集新数据 | 单次执行、周期执行、运行历史 | 先整理一个历史时间段,再按小时或天生产新样本,支撑日常质检 |
同一份数据可以服务不同目的。客服团队需要问题与答复,开发者排查工具使用需要步骤和返回结果,成本分析还需要模型与消耗字段。可以保留共同的基础字段,再根据用途配置不同的处理任务和输出集合。
选择之前,先明确一行代表什么。退款质检可以从“一次任务一行”开始;分析用户为何反复补充信息,需要连续多轮;比较多个并行 Agent,则要分别保留各条路径。这个选择决定了后面怎样分组、采样和评分,也决定业务人员打开表格后能否直接理解。
20.2 从合适的入口开始¶
进入对应 AgentSpace,在“数据中心”的“数据处理”中点击“创建 Pipeline”。创建页支持选择来源、使用模板或让 Loopie 生成管线,并在同一流程中配置输出与调度。已经在整理 Dataset 的用户,也可以从创建数据集的“从轨迹数据导入”入口开始。
选择来源时,可以这样判断:
-
已有 Agent 轨迹,准备做评估:选“轨迹数据”。 页面使用当前空间关联的轨迹来源,可从“Agent 轨迹样本提取”推荐方案开始,直接提取输入、输出、会话与完整轨迹。
-
需要从调用日志提取业务字段:选“Trace 数据”。 查看页面带出的日志来源与应用范围,从推荐的问答提取方案开始;还需要其他字段或组装方式时,再修改处理模块。
-
只需问题与回答:优先选问答提取。 如果还要检查工具是否用对、失败后如何恢复,就保留完整过程,减少质检时重新找日志的工作。
页面按来源推荐处理方案,背后使用相应的预置模板。选择后,左侧“流水线”展示处理模块,点选模块即可查看配置,也可以通过“添加模块”补充采样、分类等处理。开发者熟悉字段时,直接改配置通常最快;需要更多处理步骤,也可以让 Loopie 生成后再调整。
不熟悉原始结构时,可以先向 Loopie 描述目标。例如:
整理退款客服最近一天的运行轨迹,一次任务一行。保留用户问题、实际答复、完整执行过程和来源 ID,输出到退款质检数据集。先给我看真实样本;没有最终答复的任务也保留,方便检查中断问题。
Loopie 可以生成并将管线呈现在编辑器中,用户接着查看真实预览、补充要求。例如“这里取到的是系统包装后的问题,请改成业务入口原文”“增加一列区分退款申请和进度查询”。对话缩短了从业务要求到配置草稿的距离;确认结果后,这份配置就能用于后续数据生产。
20.3 完成第一条退款质检任务¶
下面用一个教学示例走完流程。假设退款 Agent 已产生标准轨迹,我们先整理昨天的数据,输出到新数据集 refund_review_samples。首轮保留各次真实任务,便于看到相同问题成功与失败的不同处理。
选来源与字段¶
在创建页选择“轨迹数据”,找到“Agent 轨迹样本提取”推荐卡片,点击“选择此方案”。进入编辑器后,可以在“智能生成”中继续对话,也可以切到“手动配置”修改字段。先查看输入来源是否属于目标空间,再根据实际存在的服务或业务字段确定应用范围。若多个应用共用来源,可以让 Loopie 根据样本补充筛选规则。
该方案将原有输入、输出和完整轨迹整理为以下字段。业务人员主要读前两列,评估器还能读取过程,开发者可以沿身份回查原记录。
| 输出字段 | 内容 | 退款示例中的用途 |
|---|---|---|
| input | 用户输入 | “订单 1001 需要退款” |
| output | Agent 的最终答复 | “退款申请已经提交” |
| agent_trajectory | 完整轨迹内容 | 查看退款工具的参数、结果及后续回复 |
| trajectory_id、trace_id | 来源身份 | 找到这次实际执行,供复核和排查 |
| session_id | 会话关联 | 必要时联系前后交互 |
其中,模板把源数据中的 atif_content 映射为 agent_trajectory,方便在后续评估中使用。若业务还需要渠道、订单类型等字段,可在“字段投影”或“字段扩展”模块中添加,并从真实样本确认其来源。
字段选择应体现质检目标。检查“用户后来补充的退款原因有没有被使用”,应在输入或轨迹中保留补充信息;检查是否实际办理成功,则需要相应的工具反馈或业务结果。这样,评估器拿到的材料才足以回答具体问题。
用预览确认这张表好不好用¶
方案卡片提供“生成预览”;进入编辑器后,可以选择输出模块点击“预览”,查看整条管线的结果。选择有真实数据的时间范围,先展开一条普通任务的输入、输出和轨迹,确认质检人员能连续读懂;再找一条工具报错或没有答复的任务,看它是否保留下来。
例如预览里出现:工具返回“缺少退款原因”,最终答复却是“退款已经提交”。这正是希望交给质检的样本。若只保留最后一句话,之后很难判断它为什么不对;如果过滤模块删掉了工具失败记录,也要调整条件。可以点选对应模块修改,再生成预览。
预览还适合当场确定输出形态。较长的过程保留在结构化内容列中,列表先显示问题与回答;需要按渠道筛选的字段则单独成列。业务负责人用这几条样本确认“收到这样的表,是否已经能开始工作”,开发者据此收敛配置。
创建、运行,再到 Dataset 使用结果¶
点击页面的“创建并启动”,进入“任务信息与调度策略”,填写任务名称、描述,选择“单次执行”,将处理时间明确设为昨天。在“输出”中填写新数据集名称 refund_review_samples。提交前再次看清时间范围,预览所选时间不一定就是正式执行时间。
确认后再次点击“创建并启动”。系统创建输出数据集与处理任务,单次执行会进入运行队列。随后可在任务详情的“运行历史”查看数据窗口、状态、输出行数与耗时。执行完成后,回到“Pipeline 配置”,通过输出目标卡片的“跳转到数据集详情”图标进入 Dataset,按一条已知 trace_id 找到样本,展开字段读取。预览帮我们定方案,这一步让质检团队拿到可查询、可标注的数据。
如果结果为空,先确认所选时段是否有记录,再检查应用筛选;字段大面积为空,就检查提取位置。初次运行用一个明确的时间段,可以较快分清是数据范围问题还是加工规则问题。
20.4 按实际用途加上采样和 AI 处理¶
第一条任务只需要把材料整理清楚。开始使用之后,再根据复核量、场景覆盖和分析方式增加处理,更容易判断每一步是否有用。
人工看不过来,先缩小到能处理的量¶
假设质检人员一天能认真复核 100 条,可以增加“随机采样”模块,选择“按采样条数”,填写 100;需要让业务类别都有机会入选时,在“分组列”中选择已有类别字段,再设置每组采样条数。这里的 100 是示例工作量,应按实际人力调整。
如果还不知道问题分为哪些类别,可以先用向量生成与语义聚类整理主题,再按聚类结果采样。例如从相似的“进度查询”里取少量代表,把更多阅读时间留给其他问题。这适合扩充题库和发现问题类型;需要估计线上总体失败率时,则保留具有代表性的抽样口径。
内容去重适合另一个需求:已经选出不少案例,准备整理一份不重复的回归题库。在去重模块里选择比较字段;精确去重处理相同文字,近似去重处理细微改写,语义去重处理含义接近的不同表达。按问题去重前,要把结果和重要场景差异考虑进去,避免将同一道题的一次成功与一次失败混为一份。
没有业务标签,让模型先做一版¶
退款记录可以分成“申请退款”“查询进度”“退款被拒”等类别。原始数据没有这些标签时,在提取字段后增加“LLM 调用”模块,选择调用模型,填写自定义提示词,将“输出解析格式”设为“JSON格式”,把“输出列名”设为 scenario_label。
可以从这样的提示词开始:
根据用户输入 {{input}},将本次任务归为“申请退款”“查询进度”“退款被拒”“其他”之一。只根据输入判断,不推断办理结果。返回 category 和 reason 两个字段;reason 简短说明分类依据。
生成预览后,查看 scenario_label 中的类别和理由。遇到“已经申请三天了怎么还没到账”,应能归到进度查询;如果分类不符,补充类别解释和相近例子,再试一批样本。需要直接按类别列筛选时,可继续用字段扩展将 JSON 中的 category 提取为独立列。
同一个模块还可以生成问题摘要、提取产品名称或补充候选标签。需要检索知识、调用工具才能完成的分析,可以选择智能体调用,并配置相应智能体与提示词。生成的标注先供筛选和人工复核使用;正式质量评分交给可校准、可比较的评估器,便于长期维护标准。
题库还缺少某类表达时,可以用 LLM 调用做数据增强:以已有样本为种子,通过提示词生成不同说法或边界条件。例如已经有直接申请退款的题目,希望补充“用户先问到账时间、随后改为申请退款”的多轮要求,就把需要保留的业务事实和允许变化的部分写清楚。生成结果先放入候选材料,人工确认后再使用,同时保留合成来源,方便与真实用户任务区分。
处理顺序可以按成本安排:已有字段能筛选的先筛选,明确只需 100 条的先采样,再做模型处理。如果采样依赖模型生成的类别,就先分类再按类别抽样。每增加一步,都应说明它要帮使用者少做什么工作、增加哪项信息。
20.5 从一次整理变成日常质检¶
当昨天的样本已经可用,就可以使用相同的处理定义另建周期任务:重新选择相应模板,沿用已确认的字段、筛选和采样设置。在“任务信息与调度策略”选择“周期执行”,设置起始时间和每隔多少小时或天执行,例如按小时补充新任务,或按天集中交付。这次创建一个日常使用的数据集 refund_review_daily,之后各次周期执行都向它写入,质检人员便能在固定位置查看新增内容。
首次配置时,把历史补数范围与后续周期的起始时间衔接好。之后主要在任务详情中查看执行历史、成功与失败情况,再抽查新增样本。应用增加了新渠道或新的回复方式,也要更新相应处理规则,让数据集包含这些变化。
接下来进入评估功能,新建以 Dataset 为来源的评估任务,选择 refund_review_samples 和准备好的退款质检评估器,将评估器需要的输入、输出、轨迹变量分别映射到 input、output、agent_trajectory。先评一批样本,查看分数、理由和对应证据,便能找到“工具失败却回复成功”等待处理案例。开始日常质检后,再以 refund_review_daily 中的新样本作为评估材料。
业务负责人可以看到问题集中在哪些场景,开发者拿着对应轨迹定位并修改,评估人员把确认的问题加入回归材料。新版本重新执行这些任务后,实验再比较结果,判断修改是否有效。新增运行记录继续进入同样的加工任务,日常数据准备就接上了调优工作。
操作演示中,两道客服问题起初共用评分细项,后来发现“介绍有哪些功能”和“说明如何做评估”需要不同标准,于是回到 Dataset 增加逐题 Rubric,再调整评估与实验的映射。这也说明,产出的字段应便于继续扩充。后续使用提出了新问题,就补充相应材料,而不必重做全部数据准备。
20.6 第一次使用,先交付一批有人愿意用的数据¶
先完成“轨迹提取→Dataset→一批评估”,让负责质检的人读一遍结果。字段对了,再增加标签和采样;已有稳定使用节奏,再建立周期生产任务。
长期使用时,保留三项简单约定:样本粒度、关键字段含义、数据用途。业务负责人确定要看什么问题,应用开发者维护来源字段,数据处理任务负责重复执行。复杂的并行聚合、超长任务或跨窗补取,再由开发者按实际数据补充处理。
判断是否值得继续投入,也可以看具体工作有没有变得顺畅:质检人员是否还需要逐条找原日志,新增一种业务场景能否通过补充字段和规则纳入,开发者收到问题后能否定位到同一次执行。若这些环节已经衔接起来,再增加语义聚类、合成或复杂 Agent 分析才有明确目的。管线简单而输出被持续使用,通常比配置了很多处理却无人消费更有价值。
退款质检的首次交付可以很明确:在 refund_review_samples 中找到昨天的任务,打开一行能读懂问题、回答和办理过程,启动评估能得到有依据的结论。哪些记录值得长期保留、如何经过人工确认成为黄金集与回归集,接着在下一章中展开。