AgentLoop Pipeline 教程:从零构建数据管线

更新时间:
复制为 MD 格式

本教程演示如何构建一条 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 名称及可选的查询过滤条件。

参数

值(示例)

说明

project

your-project

SLS Project 名称

LogStore

your-agent-LogStore

存放 Agent 运行日志的 LogStore

query

serviceName:your-agent-service and *

可选过滤条件,* 表示读取全部数据

配置完成后,Pipeline 按调度策略从该 LogStore 读取原始日志作为输入。

说明

query 支持 LogStore 查询语法,可在入口过滤不需要的日志类型,减少下游处理量。

步骤三:字段选取与预处理

从原始日志中选取关键字段,提取有效信息,过滤无效数据。此步骤包含字段选取、正则提取和空值过滤三个节点。

选取字段

从原始日志中选取目标字段并统一命名,声明 Pipeline 的输入 Schema。

参数(Pipeline 字段名)

值(原始日志字段)

说明

question

attributes.input.value

用户输入

output

attributes.output.value

Agent 输出

model

attributes.gen_ai.model_name

模型名称

trace_id

traceId

链路追踪 ID

说明

表中键是 Pipeline 内部使用的字段名,值是原始日志中的字段名。后续所有节点均使用此处定义的字段名。

正则提取

原始日志中的 question 可能包含前缀文本,使用正则表达式提取真实的用户提问。

参数

说明

question

regexp_extract(question, '用户提问:(.*)', 1)

覆盖已有 question 列,提取「用户提问:」之后的内容

过滤空值

过滤 question 为空或过短的记录。

参数

说明

filter

question IS NOT NULL AND length(question) > 10

保留非空且长度大于 10 的记录

效果:10,000 条原始日志经字段选取、正则提取、空值过滤后约剩 8,000 条有效数据。

步骤四:三级去重

逐级消除不同层次的冗余数据。三级去重按计算代价从低到高排列:精确去重(字面完全相同)、近似去重(文本高度相似)、语义去重(含义等价)。前置节点先削减数据量,使高代价节点的输入规模可控。

精确去重

去除 question 完全相同的重复记录,每组仅保留文本最长的一条。

参数

说明

field

question

按此字段判断是否完全相同

效果:8,000 条 → 6,000 条(去除完全相同的重复提问)。

近似去重

去除文本高度相似(如错别字、标点、空格)的记录。

参数

说明

field

question

按此字段做近似比较

threshold

3

编辑距离阈值(推荐默认值)

阈值参考:

阈值

严格程度

说明

1 ~ 2

非常严格

仅过滤个别字符差异

3

推荐默认

适合大多数文本

5 ~ 7

较宽松

可能误删有意义差异的文本

效果:6,000 条 → 3,500 条(去除错别字、标点等微小差异的近似重复)。

语义去重

去除表述不同但含义相同的记录。

参数

说明

field

question

按此字段做语义比较

threshold

0.1

语义距离阈值(推荐默认值)

阈值参考:

阈值

严格程度

说明

0.05

非常严格

仅过滤几乎同义的表述

0.1

推荐默认

适合大多数语义去重场景

0.15 ~ 0.2

较宽松

可能误删相关但不同义的文本

效果:3,500 条 → 2,000 条(去除语义等价的不同表述)。

说明

语义去重会自动生成 __dedup_emb 扩展列(Embedding 向量),下一步的聚类节点可直接复用,无需重复计算。

步骤五:多样性采样

在保证语义多样性的前提下,将数据量缩减到可控规模。通过语义聚类 + 分组采样的组合,先将数据按语义相似度分簇,再从每簇中采样代表性样本。

语义聚类

基于 Embedding 向量将数据分为 100 个语义簇。

参数

说明

field

__dedup_emb

直接复用上游语义去重产生的向量列

n

100

聚类簇数

分组采样

按簇分组,每簇随机取 3 条代表性样本。

参数

说明

by

__cluster_id

按聚类 ID 分组

n

3

每簇采样条数

效果:2,000 条 → 不超过 300 条(100 簇 x 每簇 3 条)。最终产出覆盖各语义类别的代表性子集。

说明

最终数据量约等于簇数 x 每簇条数。如需更多数据,增大 n 或增加簇数;如需更少数据,减小对应参数即可。

步骤六:AI 质量评估

添加 LLM 调用节点,通过 Prompt 定义 AI 任务。本教程以质量评估为例演示配置方法,只需修改 Prompt 内容即可扩展为标注、合成、翻译等任意 AI 任务。

参数

说明

prompt

(Prompt 模板)

包含 {{question}}{{output}} 占位符,要求从准确性、完整性、可读性三个维度评分

fields

question,output

声明参与渲染的列名,须与 Prompt 中的占位符一致

format

json

确保输出始终是合法 JSON(即使 LLM 返回异常也会兜底)

as

eval

输出列名,评估结果存入 eval

效果:300 条数据不变,每条新增 eval 列,包含 accuracycompletenessreadability 三个维度的评分及评估理由。

说明

数据已从 10,000 条缩减到 300 条,LLM 调用成本降低 97%。这正是「先减后增」原则的价值。

步骤七:配置输出与调度

指定处理结果写入哪个 Dataset,并配置定时调度策略。

输出目标

参数

值(示例)

说明

workspace

your-workspace

Dataset 所在的工作空间

dataset

agent_data_evaluated

目标 Dataset 名称,处理结果自动写入

调度策略

参数

值(示例)

说明

mode

scheduled

调度模式,目前支持定时执行

fromTime

1735689600

调度起始时间,Unix 时间戳(秒)

interval

15m

调度间隔,支持 15m1h1d

配置完成后,Pipeline 每 15 分钟自动执行一次,持续从 LogStore 读取新数据并写入 Dataset。

完整 Pipeline 配置

将步骤二至步骤七的所有配置合并即可得到完整的 Pipeline 配置。可运行的 JSON 配置请参考去数据去重清洗模板或端到端全流程模板,将 your-projectyour-agent-LogStoreyour-workspace 等占位符替换为实际值即可。

步骤八:验证与调优

Pipeline 创建后按调度策略自动运行。验证运行结果并根据实际效果调整参数。

查看运行结果

  1. 查看 Dataset -- 进入目标 Dataset,确认写入的数据条数和字段内容。

  2. 检查 eval 列 -- 查看 AI 评估结果,确认评分维度和分布是否合理。

  3. 查看执行日志 -- 如遇报错,检查节点引用的字段名是否与 LogStore 实际字段一致。

常见错误及处理

Pipeline 运行中可能遇到以下错误,请根据错误现象排查对应原因。

错误场景

错误现象

排查方向

权限不足

提示 Permission denied

在 RAM 控制台检查当前账号是否已授予 AliyunLogFullAccess 策略和 AgentLoop Dataset 写入权限。

LogStore 不存在

提示 LogStore not found

在 SLS 控制台确认 projectLogStore 参数拼写与实际名称一致。

Dataset 不存在

提示 Dataset not found

在 AgentLoop 控制台确认 workspacedataset 参数拼写与实际名称一致。

JSON 格式错误

提示 Invalid JSON format

检查 LLM 调用节点的 fields 数组中的字段名是否与 Prompt 中的 {{field_name}} 占位符完全一致。

字段名不一致

节点执行报错或输出为空

检查节点引用的字段名是否与 LogStore 实际字段或上游节点输出的字段名一致。

常见调优方向

调优目标

操作建议

去重太严格,数据量太少

增大近似去重的 threshold(如 35),或增大语义去重的 threshold(如 0.10.15

去重太宽松,仍有重复

减小阈值,如近似去重设为 2,语义去重设为 0.05

采样数据量不够

增大分组采样的 n(每簇取更多条),或增大聚类簇数

采样数据量太多

减小分组采样的 n 或减少聚类簇数

评估维度需调整

修改 LLM 调用节点的 prompt,增减评估维度或调整评分标准

需要更高质量的评估

在 LLM 调用节点中添加 model 参数指定更强模型

增量去重

如果 Pipeline 持续运行(如每 15 分钟一次),建议为去重节点开启全局模式,确保跨批次无重复。

参数

说明

global

true

开启全局去重,与 Dataset 历史数据做增量比对

workspace

your-workspace

历史数据所在的工作空间

dataset

agent_data_evaluated

历史数据所在的 Dataset

说明

全局去重将当前批次数据与 Dataset 历史数据做增量比对。首批执行时 Dataset 为空,效果从第二批开始显现。

进阶:扩展 Pipeline

在当前 Pipeline 基础上,可扩展以下能力:

自动分类标注

在评估节点之后添加一个 LLM 调用节点,对数据做结构化分类标注。通过 Prompt 定义分类维度(如问题分类、用户意图、难度等级),format 设为 json,结果存入 anno 列,用于数据分析或模型训练。

数据增强合成

添加一个 LLM 调用节点,基于已有数据合成语义相似但表述不同的新问答对,扩充训练数据。结果存入 synthetic 列。超长 Prompt 建议注册为命名模板(@path 引用),便于版本管理和复用。

智能体深度分析

使用智能体调用节点替代普通 LLM 调用节点,调用数字员工进行深度分析。智能体调用节点封装了 SOP 流程、知识库检索、工具调用等能力,适合多步推理的复杂分析场景。

总结与后续步骤

本教程构建了一条从原始日志到高质量 Dataset 的完整 Pipeline,涵盖字段选取、三级去重、多样性采样和 AI 质量评估。通过「先减后增」的设计,10,000 条原始数据经过处理后产出约 300 条高质量评估数据,同时 LLM 调用成本降低 97%。

后续可参考以下资源: