SuperAPI AI 工具集

atai-anomaly-discovery-agent

数据与分析

查看项目

更新于 10-21 16:55

技能介绍

AD Agent 是通过 Agents API 运行的托管异常发现智能体。它回答的核心问题是:当前窗口是否仍然看起来像正常运行?该智能体仅使用正常数据拟合——来自健康资产的参考时段——之后被标记的内容在构造上都是它从未见过的。

【用途】 该智能体适用于没有故障历史的资产:设备尚未损坏,因此不存在带标签的故障样本。也适用于故障模式未知或无法枚举的资产,此时命名目录只能靠猜测。它输出连续分数(“偏离正常多远”),而非类别(“属于六种状态中的哪一种”)。可部署为按资产、可重复的批处理任务,无需客户端机器学习。

【主要能力】

  • 上传准备好的传感器 CSV,通过 Files API 完成。
  • 按名称解析预打包的“AD Quick Start”bundle。已发布两个规范 bundle:AD Quick Start (Bearing Breakdown) 输出每窗口 anomaly_score 与 predicted_label;AD Quick Start (Bearing Breakdown, Embeddings) 额外输出 Newton Omega 编码器嵌入,每个通道一个 embedding_{variate} 列(768 维),以及一个 embedding_{variate}_features 列。
  • 运行 bundle,每次运行生成一个新 agent(agt_…)。
  • 轮询运行状态并下载结果。
  • 输出每窗口一行:finish_timestamp、start_timestamp、predicted_label、invalid、anomaly_score。anomaly_score 为 LOF 分数,1.0 表示“与其邻居一样密集”。predicted_label 在分数超过阈值时为 anomaly_label,否则为 normal_label。invalid 以字符串 "false" 返回。

【使用方式】

  1. 上传输入 CSV:POST {ATAI_API_ENDPOINT}/v0.5/files(multipart 上传)。响应携带 file_id,平台将其设为文件名。注意:重新上传同名文件可能终止正在使用该文件的运行,建议使用带时间戳的文件名。
  2. 按名称解析 bundle:GET /agents/bundles?query=AD%20Quick%20Start&limit=100。?query= 是对 name 和 id 的大小写不敏感子串搜索。选择精确名称匹配,优先 is_canonical: true,取其 id。
  3. 运行 bundle:POST /agents/bundles/$BUNDLE_ID/run,请求体指定 connectors.source 为文件类型及文件 id。每次运行生成新 agent,记录 agt_… id。
  4. 轮询直到终止:GET /agents/instances/$AGENT_ID 与 GET /agents/instances/$AGENT_ID/logs。注意 status 不是可靠的终止信号,/logs 才是;出现 error 级别或 pod.terminated 日志事件即视为终止。
  5. 下载结果:GET /agents/instances/$AGENT_ID/results。完成的运行仍可能正在写入输出,下载可能返回部分 CSV;运行器会在最后一个窗口的 finish_timestamp 达到输入最后时间戳后判定输出完整,每 15 秒重试下载,最多 10 分钟。

【端点与鉴权】 Files API:POST {ATAI_API_ENDPOINT}/v0.5/files(multipart 上传);GET {ATAI_API_ENDPOINT}/v0.5/files/download/{name}(下载)。Agents API:{ATAI_API_ENDPOINT}/agents/...(无版本号)。每次调用需 Authorization: Bearer <API_KEY>。Agents API 无版本号,若 ATAI_API_ENDPOINT 带 /vX.Y 后缀,追加 /agents 前需去掉。ATAI_API_KEY 与 ATAI_API_ENDPOINT 均为必填,无默认端点。bundle API 均为复数形式:GET /agents/bundles、GET /agents/bundles/{id}、POST /agents/bundles、POST /agents/bundles/{id}/run;单数形式返回 404。查找 bundle 的运行没有 /agents/bundles/{id}/runs(404),应使用 GET /agents/instances,支持 bundle_id、blueprint_id 精确匹配,status 限定单一生命周期状态,query 对 agent 名称、agent id、bundle id、blueprint key 做大小写不敏感子串搜索;分页使用 limit(默认 100,最大 1000)与 after/before 游标,返回 data、has_more、next_cursor。游标不透明,需原样回传 next_cursor,切勿从 data[last].id 推导。

【可用性】 预打包的“AD Quick Start”bundle 发布在生产部署(https://api.u1.archetypeai.app)。将 ATAI_API_ENDPOINT 设为该地址,完整的上传→运行→打分流程即可按文档工作。若名称解析无匹配,说明 bundle 未发布在当前指向的部署中;按名称解析是可移植的,可暂时传入已知的 --bundle-id,或联系 support@archetypeai.dev。

【分数行为与阈值】 检测头为 novelty 模式下的 Local Outlier Factor。LOF 判断某点是否比其邻居处于更稀疏的邻域——它是密度之比,而非距离:LOF(p) = mean(p 的 k 个最近参考点的局部密度) / p 的局部密度。因此 1.0 是中性值,真实分数略高于它。在一个已拟合检测器上对其自身参考集打分测得:中位数 1.043,99 百分位 1.397,最差参考窗口 2.156。阈值 1.762 被 0.09% 的参考数据越过,晚期故障达到 17。两个后果:有用范围窄而尾部很长,建议用对数轴绘图;阈值在拟合时选定并存储在 artifact 中,在 bundle values 中覆盖 threshold 等于对另一个检测器打分。

【每个资产一个检测器】 检测器编码一台机器的正常概念,基于该机器自身基线拟合。将其用于不同资产是迁移测试而非部署,分数与验证时不可比。这不是需要绕过的限制,而是使误报率有意义的框架。将多个资产合并到一个检测器会使参考集跨越多台机器的正常状态,流形膨胀到一切看起来都正常。

【自带检测器(高级)】 快速启动检测器编码一个轴承的正常概念。对于自己的资产,需要基于其健康基线拟合的检测器。拟合流水线目前尚不对外部用户开放——联系 support@archetypeai.dev,Archetype AI 会与你一起拟合并交回检测器 artifact。拿到 artifact 后,从规范 ad blueprint 创建自己的 bundle,再按第 3 步运行。创建 bundle 时三个值最重要:ad-detector 必须是 s3:// URI,原样传入收到的地址;平台仅将 artifact 字符串解析为文件系统/S3 路径,平台文件 id 或 https:// URL 会以 ENOENT 失败且不尝试获取(也没有上传途径——files API 按 MIME 类型拒绝 safetensors)。错误的 artifact key 在创建时被接受(HTTP 201,status: ready),仅在运行约 30 秒后失败,错误指向 job poller 而非 artifact。key 为 ad-detector;另有一个 blueprint ada 使用 key ada-detector。validate_monotonic_timestamps: false 在高于 1 kHz 时必需。时间戳以 u64 毫秒存储,高于 1 kHz 时连续样本共享同一毫秒,窗口永不严格递增;保持 blueprint 默认 true 会使每个窗口标记为 invalid,运行仍报告 completed,线索是空的 /results。sample_rate_interval_tolerance: null 用于突发采样数据。其余参数(window_size、step_size、data_columns、feature_names、encoder_model、threshold)从检测器自身的 parameters 元数据读取。

【评分:提前量与误报率】 运行至故障的数据没有逐窗口真值。常见流通的二元标签是有人在渐进退化曲线上手工放置的切线,据此计算的精确率与召回率主要衡量该线画在哪里。应改为评估四项:按资产检测到或漏检,并给出提前量(从检测到记录结束的运行小时数,使用排除停机时段的运行时间轴;墙钟时间不是机器寿命,某实验中它高估轴承寿命 59%);从未故障资产上的误报(排除参考区域);按故障模式,标记配置选择时哪些模式未见;跨候选起始切线的窗口级精确率/召回率,以范围而非单一数字报告。要求持续越界,并知道幸存者也会触发:单窗口超阈值是噪声,N 个连续观测才是检测。

【不适用场景】

  • 用户有覆盖所有工况的带标签库并想知道“资产处于哪种状态”——使用 atai-operational-state-monitoring-agent。
  • 故障已命名且存在若干带标签事件——使用 atai-rare-event-detection-agent;AD 会标记它,但无法告知是哪种故障。
  • 想要逐窗口嵌入在客户端做机器学习——使用 atai-newton-omega-model。
  • 原始 CSV 仍需清洗、间隙感知分段或归一化——参见 atai-newton-omega-model-data-prep;AD 假定输入已准备好并具有文档化的采样率。