本教程演示如何构建一条 AgentLoop Pipeline,将 AI Agent 运行日志经过字段选取、三级去重、多样性采样和 AI 质量评估,产出高质量 Dataset。完成全部步骤约需 5~10 分钟。
前置条件
开始本教程前,确认以下条件已满足:
已开通日志服务 SLS。
已开通 AgentLoop 服务。如未开通,请在日志服务控制台上方日志应用导航栏选择AgentLoop,按页面提示完成开通。
拥有一个包含 AI Agent 运行日志的 SLS LogStore。如需创建 LogStore 并配置 Agent 日志采集,请参见LogStore。
已创建一个用于存放处理结果的 AgentLoop Dataset。如需创建 Dataset,请在 AgentLoop 控制台的Dataset页面完成创建。
请确保当前账号拥有 SLS Project、LogStore 以及 AgentLoop Dataset 的读写权限。如使用 RAM 用户,需要授予 AliyunLogFullAccess 策略和 AgentLoop Dataset 写入权限。
步骤一:分析业务数据与方案设计
本教程以一个客户支持 Agent 应用的运行数据为实战场景。该数据由阿里云可观测标准探针基于 OT AI 协议采集,完整记录了用户与 Agent 的每一次交互 Trace。目标是从约 10,000 条原始 Trace 中筛选出约 300 条高质量、多样化的评估数据集。
打开 LogStore,观察原始日志的字段结构、数据量级和常见质量问题(重复记录、噪声数据、字段缺失等),重点确认:
需要哪些字段 -- 原始日志可能包含几十个字段,实际需要的往往只有用户输入、模型输出、模型名称等少数几个。
数据有多脏 -- 是否存在大量重复提问?是否有空值或无效记录?
处理目标 -- 去重、采样、AI 评估,还是全流程闭环?
核心思路:先通过去重和采样大幅缩减数据量,再对精简后的数据执行 AI 处理。LLM 调用按 Token 计费,「先减后增」可节省 97% 以上的调用成本。
步骤二:定义数据源
指定 Pipeline 从哪个 LogStore 读取原始数据。
登录AgentLoop控制台,在左侧导航栏数据集-数据处理中,选择任务管理,单击新建任务。在输入日志库中选择 LogStore 作为数据输入,配置 Project、LogStore 名称及可选的查询过滤条件。
参数 | 值(示例) | 说明 |
|
| SLS Project 名称 |
|
| 存放 Agent 运行日志的 LogStore |
|
| 可选过滤条件, |
配置完成后,Pipeline 按调度策略从该 LogStore 读取原始日志作为输入。
query 支持 LogStore 查询语法,可在入口过滤不需要的日志类型,减少下游处理量。
步骤三:字段选取与预处理
从原始日志中选取关键字段,提取有效信息,过滤无效数据。此步骤包含字段选取、正则提取和空值过滤三个节点。
选取字段
从原始日志中选取目标字段并统一命名,声明 Pipeline 的输入 Schema。
参数(Pipeline 字段名) | 值(原始日志字段) | 说明 |
|
| 用户输入 |
|
| Agent 输出 |
|
| 模型名称 |
|
| 链路追踪 ID |
表中键是 Pipeline 内部使用的字段名,值是原始日志中的字段名。后续所有节点均使用此处定义的字段名。
正则提取
原始日志中的 question 可能包含前缀文本,使用正则表达式提取真实的用户提问。
参数 | 值 | 说明 |
|
| 覆盖已有 |
过滤空值
过滤 question 为空或过短的记录。
参数 | 值 | 说明 |
|
| 保留非空且长度大于 10 的记录 |
效果:10,000 条原始日志经字段选取、正则提取、空值过滤后约剩 8,000 条有效数据。
步骤四:三级去重
逐级消除不同层次的冗余数据。三级去重按计算代价从低到高排列:精确去重(字面完全相同)、近似去重(文本高度相似)、语义去重(含义等价)。前置节点先削减数据量,使高代价节点的输入规模可控。
精确去重
去除 question 完全相同的重复记录,每组仅保留文本最长的一条。
参数 | 值 | 说明 |
|
| 按此字段判断是否完全相同 |
效果:8,000 条 → 6,000 条(去除完全相同的重复提问)。
近似去重
去除文本高度相似(如错别字、标点、空格)的记录。
参数 | 值 | 说明 |
|
| 按此字段做近似比较 |
|
| 编辑距离阈值(推荐默认值) |
阈值参考:
阈值 | 严格程度 | 说明 |
| 非常严格 | 仅过滤个别字符差异 |
| 推荐默认 | 适合大多数文本 |
| 较宽松 | 可能误删有意义差异的文本 |
效果:6,000 条 → 3,500 条(去除错别字、标点等微小差异的近似重复)。
语义去重
去除表述不同但含义相同的记录。
参数 | 值 | 说明 |
|
| 按此字段做语义比较 |
|
| 语义距离阈值(推荐默认值) |
阈值参考:
阈值 | 严格程度 | 说明 |
| 非常严格 | 仅过滤几乎同义的表述 |
| 推荐默认 | 适合大多数语义去重场景 |
| 较宽松 | 可能误删相关但不同义的文本 |
效果:3,500 条 → 2,000 条(去除语义等价的不同表述)。
语义去重会自动生成 __dedup_emb 扩展列(Embedding 向量),下一步的聚类节点可直接复用,无需重复计算。
步骤五:多样性采样
在保证语义多样性的前提下,将数据量缩减到可控规模。通过语义聚类 + 分组采样的组合,先将数据按语义相似度分簇,再从每簇中采样代表性样本。
语义聚类
基于 Embedding 向量将数据分为 100 个语义簇。
参数 | 值 | 说明 |
|
| 直接复用上游语义去重产生的向量列 |
|
| 聚类簇数 |
分组采样
按簇分组,每簇随机取 3 条代表性样本。
参数 | 值 | 说明 |
|
| 按聚类 ID 分组 |
|
| 每簇采样条数 |
效果:2,000 条 → 不超过 300 条(100 簇 x 每簇 3 条)。最终产出覆盖各语义类别的代表性子集。
最终数据量约等于簇数 x 每簇条数。如需更多数据,增大 n 或增加簇数;如需更少数据,减小对应参数即可。
步骤六:AI 质量评估
添加 LLM 调用节点,通过 Prompt 定义 AI 任务。本教程以质量评估为例演示配置方法,只需修改 Prompt 内容即可扩展为标注、合成、翻译等任意 AI 任务。
参数 | 值 | 说明 |
| (Prompt 模板) | 包含 |
|
| 声明参与渲染的列名,须与 Prompt 中的占位符一致 |
|
| 确保输出始终是合法 JSON(即使 LLM 返回异常也会兜底) |
|
| 输出列名,评估结果存入 |
效果:300 条数据不变,每条新增 eval 列,包含 accuracy、completeness、readability 三个维度的评分及评估理由。
数据已从 10,000 条缩减到 300 条,LLM 调用成本降低 97%。这正是「先减后增」原则的价值。
步骤七:配置输出与调度
指定处理结果写入哪个 Dataset,并配置定时调度策略。
输出目标
参数 | 值(示例) | 说明 |
|
| Dataset 所在的工作空间 |
|
| 目标 Dataset 名称,处理结果自动写入 |
调度策略
参数 | 值(示例) | 说明 |
|
| 调度模式,目前支持定时执行 |
|
| 调度起始时间,Unix 时间戳(秒) |
|
| 调度间隔,支持 |
配置完成后,Pipeline 每 15 分钟自动执行一次,持续从 LogStore 读取新数据并写入 Dataset。
完整 Pipeline 配置
将步骤二至步骤七的所有配置合并即可得到完整的 Pipeline 配置。可运行的 JSON 配置请参考去数据去重清洗模板或端到端全流程模板,将 your-project、your-agent-LogStore、your-workspace 等占位符替换为实际值即可。
步骤八:验证与调优
Pipeline 创建后按调度策略自动运行。验证运行结果并根据实际效果调整参数。
查看运行结果
查看 Dataset -- 进入目标 Dataset,确认写入的数据条数和字段内容。
检查 eval 列 -- 查看 AI 评估结果,确认评分维度和分布是否合理。
查看执行日志 -- 如遇报错,检查节点引用的字段名是否与 LogStore 实际字段一致。
常见错误及处理
Pipeline 运行中可能遇到以下错误,请根据错误现象排查对应原因。
错误场景 | 错误现象 | 排查方向 |
权限不足 | 提示 | 在 RAM 控制台检查当前账号是否已授予 AliyunLogFullAccess 策略和 AgentLoop Dataset 写入权限。 |
LogStore 不存在 | 提示 | 在 SLS 控制台确认 |
Dataset 不存在 | 提示 | 在 AgentLoop 控制台确认 |
JSON 格式错误 | 提示 | 检查 LLM 调用节点的 |
字段名不一致 | 节点执行报错或输出为空 | 检查节点引用的字段名是否与 LogStore 实际字段或上游节点输出的字段名一致。 |
常见调优方向
调优目标 | 操作建议 |
去重太严格,数据量太少 | 增大近似去重的 |
去重太宽松,仍有重复 | 减小阈值,如近似去重设为 |
采样数据量不够 | 增大分组采样的 |
采样数据量太多 | 减小分组采样的 |
评估维度需调整 | 修改 LLM 调用节点的 |
需要更高质量的评估 | 在 LLM 调用节点中添加 |
增量去重
如果 Pipeline 持续运行(如每 15 分钟一次),建议为去重节点开启全局模式,确保跨批次无重复。
参数 | 值 | 说明 |
|
| 开启全局去重,与 Dataset 历史数据做增量比对 |
|
| 历史数据所在的工作空间 |
|
| 历史数据所在的 Dataset |
全局去重将当前批次数据与 Dataset 历史数据做增量比对。首批执行时 Dataset 为空,效果从第二批开始显现。
进阶:扩展 Pipeline
在当前 Pipeline 基础上,可扩展以下能力:
自动分类标注
在评估节点之后添加一个 LLM 调用节点,对数据做结构化分类标注。通过 Prompt 定义分类维度(如问题分类、用户意图、难度等级),format 设为 json,结果存入 anno 列,用于数据分析或模型训练。
数据增强合成
添加一个 LLM 调用节点,基于已有数据合成语义相似但表述不同的新问答对,扩充训练数据。结果存入 synthetic 列。超长 Prompt 建议注册为命名模板(@path 引用),便于版本管理和复用。
智能体深度分析
使用智能体调用节点替代普通 LLM 调用节点,调用数字员工进行深度分析。智能体调用节点封装了 SOP 流程、知识库检索、工具调用等能力,适合多步推理的复杂分析场景。
总结与后续步骤
本教程构建了一条从原始日志到高质量 Dataset 的完整 Pipeline,涵盖字段选取、三级去重、多样性采样和 AI 质量评估。通过「先减后增」的设计,10,000 条原始数据经过处理后产出约 300 条高质量评估数据,同时 LLM 调用成本降低 97%。
后续可参考以下资源: