别再盲改 Prompt 了:Arize AX 的四步 Agent 工程闭环
别再盲改 Prompt 了:Arize AX 的四步 Agent 工程闭环
先别急着换框架,先搞清楚你的 Agent 到底在哪一步翻车。
做 Agent 的团队,大多走过同一条路:写 Prompt、接工具、本地跑几条样例看着还行,上线。然后线上开始出问题——用户说答非所问,工具调用偶尔静默失败,某个模型账单突然变贵。你打开日志,看到的是一堆零散字符串,凭感觉改 Prompt,再凭感觉上线。
问题不在于改得不够勤,而在于你没有一条把「线上真实行为」变成「可验证修复」的闭环。Arize AX 就是冲这件事来的。它是 Arize 的 AI 工程平台,官方定位很直白:帮你改进 AI Agent 和应用。核心就四步——采集 Trace、用 Signal 找出反复出现的故障、用评测按你定的标准打分、用实验在发版前证明改动确实有效。
这篇我按官方文档把这条链路拆开讲:每一步在做什么、怎么接入、哪里有坑,最后把它放进 LangSmith、Langfuse 这些同类工具的坐标系里,说清楚什么场景值得上、什么场景纯属浪费。
本文提纲
- Arize AX 到底解决什么问题
- 第一步 Instrument:把每次运行变成一条可读的 Trace
- 第二步 Observe:让 Signal 自动把故障聚成 Issue
- 第三步 Evaluate:给每一条 Trace 打分
- 第四步 Improve:用实验在发版前证明改动有效
- Alyx:平台内置的 AI 工程 Agent
- 让编码 Agent 接管配置:Skills 与 MCP
- 放进坐标系:Arize AX 与同类工具
- 什么时候它不划算
1. Arize AX 到底解决什么问题
先分清两件事:你本地那份离线评测集,和你线上真实跑出来的流量,是两码事。前者是你以为用户会怎么问,后者是用户实际怎么问、模型实际怎么答。Agent 又是多步、非确定性的——一次失败可能出在检索、可能出在工具调用参数、可能出在最后一步的汇总,光看一条最终回复根本定位不到。
Arize AX 的做法是从真实行为入手。它先采集生产流量的 Trace(每一次运行的输入、输出、工具调用、成本),再从这批数据里挖问题,用你定义的标准去评估质量,最后用实验证明每个改动确实带来提升,才允许你发版。
graph LR
A[Instrument] -->|capture traces| B[Observe]
B -->|Signal ranks issues| C[Evaluate]
C -->|score every trace| D[Improve]
D -->|prove the fix| E[Ship]
E -.->|new production traffic| A
style A fill:#FF6B6B,color:#000000
style B fill:#4ECDC4,color:#000000
style C fill:#45B7D1,color:#000000
style D fill:#96CEB4,color:#000000
style E fill:#DDA0DD,color:#000000
linkStyle default stroke:#764ba2这四步不是各自独立的功能模块,而是首尾相接的一个环。Trace 是 Signal、评测器和实验共同读取的那份底层数据——下游所有能力都建立在「trace 采得全不全、字段对不对」之上。所以第一步没接好,后面三步全是空转。
2. 第一步 Instrument:把每次运行变成一条可读的 Trace
Instrumentation 就是给 Agent 加埋点,让 Arize 记录每一次运行。官方把接入方式分成了几条路,按你的情况选。
一条命令搞定。如果你连账号都还没有,直接跑下面任意一条,它会问你用哪个编码 Agent、要 trace 什么,然后装 CLI 和 skills、给应用埋点、一直跑到第一条 Trace 出现为止,改动前会先问过你:
npx evals # 有 Node.js
uvx arize-ax-cli instrument # 有 uv
ax instrument # 已装 AX CLI把 LLM provider 的 API key(比如 OPENAI_API_KEY)加到同一个 .env 里。
自动埋点。如果你自己接,就用 OpenInference 的 instrumentor,覆盖 30+ 个 provider 和框架,支持 Python、TypeScript/JavaScript、Java。在 Tracing 项目里这是「Instrument Manually」那个 tab。非美国区域走 OpenTelemetry(arize-otel)那条线。
手动埋点。框架不在自动覆盖范围内时用这个。
给 AI 编码 Agent 的强制路径。官方文档里有一段少见的强硬措辞:如果你用 AI 编码 Agent 来接入,装 Arize skill 是必须的第一步,不是可选项。命令是:
npx skills add Arize-ai/arize-skills --skill "arize-instrumentation" --yes文档明确写了「没预装」是预期状态,意思是现在装,不是跳过。装完再让 Agent 加载这个 skill,并把它当成唯一事实来源,别凭记忆埋点。跑不了这条命令(权限、沙箱、没网络、没 npx)就如实告诉用户卡在哪,别悄悄退回手动步骤。
读一条 Trace。打开项目,一次请求对应一条 Trace。点进去看到的是 span 树:每个 span 有 span kind、输入、输出、延迟、状态;LLM 的 span 还会显示 token 数和成本。找一个答错的响应,顺着每一步往下查,比对着最终回复瞎猜强太多。
踩坑提醒:没有 Trace 进来。官方给的最常见原因是 LLM provider key 缺失。如果等了大约 45 秒还是「No traces yet」,按顺序查这四件事:
- API key:终端里找
401或StatusCode.INTERNAL。 - Space ID:填错了会把 Trace 发到另一个空间。
- Endpoint:用你的 exporter 期望的 HTTP 或 gRPC endpoint。
- 静默失败:
BatchSpanProcessor会吞掉 exporter 的错误,改成SimpleSpanProcessor才能看见。
第 4 条尤其坑。很多人明明 key 错了却毫无报错,就是因为批处理把它藏起来了。
3. 第二步 Observe:让 Signal 自动把故障聚成 Issue
Trace 采上来只是原料。几百上千条 Trace 里找规律,靠人肉翻是翻不过来的。Signal 解决的就是这一层。
Signal 是内置的一个 worker,按计划扫描某个 tracing 项目的 Trace,把反复出现的失败模式归类成 Issue,并为每个 Issue 写一份调查:概览(失败模式摘要)、证据(trace ID 和过滤器)、建议修复(prompt、代码、配置或 eval 的改动建议)。
graph TB
A[Production Traces] --> B[Signal Worker]
B --> C[Group Recurring Failures]
C --> D[Ranked Issues]
D --> E[Overview]
D --> F[Trace Evidence]
D --> G[Proposed Fix]
E --> H[Fix and Ship]
F --> H
G --> H
H -.->|new traces arrive| A
style A fill:#FF6B6B,color:#000000
style B fill:#4ECDC4,color:#000000
style C fill:#45B7D1,color:#000000
style D fill:#96CEB4,color:#000000
style E fill:#FFEAA7,color:#000000
style F fill:#FFEAA7,color:#000000
style G fill:#FFEAA7,color:#000000
style H fill:#DDA0DD,color:#000000
linkStyle default stroke:#764ba2开启很简单:打开 tracing 项目 → 进 Signal tab → 点 Enable Signal。Arize 会创建一个默认自动化,每 6 小时跑一次,可在 3 小时到每月之间调。检测问题本身不需要仓库,也不需要额外 skill。
读 Issue:Signal tab 会显示问题量随时间的变化、按 entity 的分布(有打标签的话)、以及一个排序后的问题列表。点进某个 Issue 读它的调查,点其中的 example traces 可以直接跳到 Trace 探索视图里看证据。
按套餐切能力,这块要提前算清楚:
| 能力 | AX Free | AX Pro | AX Enterprise |
|---|---|---|---|
| Signal Issue / 月 | 10 | 25 | 无限 |
| 挂载仓库 / 开修复 PR | — | — | ✓ |
| 自定义 AI provider | — | — | ✓ |
额度是账号级的,按 UTC 自然月重置。Free 和 Pro 用满了,Signal 会暂停新任务直到下个月或你升级。注意官方给了一个时间窗口:到 2026 年 9 月 15 日之前,Signal 和 managed agents 对 Enterprise 免费包含。
Enterprise 还能在 Configure Signal 里挂一个 GitHub 仓库,让 Signal 直接对建议的修复开 pull request。挂载方式是选一个已有的 GitHub skill 或新建一个(名字 + personal access token),然后填 owner/repo。这是它跟一般可观测性工具拉开差距的地方——从「告诉你哪儿错了」走到「帮你把修复提上来」。
4. 第三步 Evaluate:给每一条 Trace 打分
Signal 负责发现你看不到的问题,评测器(Evaluator)负责把判断标准化成可复用的分数。
在线评测(Online Eval)会给每条新到达的 Trace 打分。你从一个模板起步——官方 quickstart 用的是 Hallucination,客观检查(比如空响应)用 code evaluator。支持 LLM-as-a-Judge、agent-as-a-judge 和代码评测三类。
因为 judge 本身要调模型,所以先去 Settings → Account Settings → Integrations 加一个 provider。
配置四步:
- 选模板:Evaluators → New Evaluator,按失败类型挑。模板按检查目标分组,每个模板会列出需要的变量。
- 配 judge:命名、设 Scope、选模型,按你的标准调整 prompt 和 Choices。把 Explanations 打开,这样每个分数都会说明为什么通过或失败。
- 指向你的 Trace:Data Source 选你的项目,用 Filter Spans 选要评的 span,用 Map Variable to Data 把
{input}、{context}、{output}接到你的 span 属性上。Test Evaluator On Spans 可以拿样本先试。 - 打开开关:点 Create and Run Evaluator,就建了一个 task,开始给之后的新流量打分,在 Running Eval Tasks 里管理。
跑几分钟后,按评测分数过滤项目的 Trace,打开一条失败的,读 judge 的解释。官方特别提醒:去找共同原因,通常出在 prompt 上。
标注(Annotations)用来捕捉那些「应该变成测试」的模式——人工标一批数据,找出失败规律。对齐评测器(Align Evaluators)则是拿人工判断去校准自动分数,避免 judge 和你的真实标准越跑越偏。这一步最容易被跳过,但它决定了你后面所有实验的可信度。
5. 第四步 Improve:用实验在发版前证明改动有效
现在你有了失败案例,也有了修复思路。别直接上线,先用离线评测(Offline Eval)验证:拿固定的数据集跑 prompt,跟 baseline 对比。
官方 quickstart 用了一个很具体的例子,值得完整走一遍。数据集只有三行,是关于某虚构航空公司的 Basic 票价问题。
第一步,建数据集。下载 travel-support.csv(三个 Basic 票价问题,各带正确答案),进 Datasets → New Dataset → Upload CSV,命名 travel-support 上传。这里的坑在于:答案跟行业惯例不一样,所以 prompt 必须把政策写进去,否则模型一定答错。
第二步,跑 baseline。去 Playgrounds,Select a Dataset 选 travel-support,它的列就变成 {question} 这样的变量。用这个当 user prompt:
You are a travel support agent. Answer the customer's question. Question: {question}第三步,加评测器。Add Evaluator → New Evaluator,选 Q&A 模板,它会按参考答案把每个回答标成 correct 或 incorrect。映射关系是:
| 模板变量 | 映射到 |
|---|---|
question |
question 列 |
input |
expected_answer 列 |
output |
实验的输出 |
保存后 Run。预期会看到一片 incorrect,因为 prompt 根本不知道政策。点 View Experiment,悬停标签就能看到判错的原因。
第四步,验证修复。Add → Duplicate,把副本的 user prompt 换成带政策的版本:
You are a travel support agent. Answer the customer's question using this policy.
Basic fare policy:
- Full refund if cancelled within 48 hours of booking.
- Can be changed once for a 40 dollar fee, plus any price difference.
- Includes one checked bag. A second bag is 45 dollars.
Question: {question}点 Run All。两个 prompt 用的是同一个数据集、同一个评测器,唯一的变量就是你这次的改动。要细看就打开数据集的 Experiments tab,选中两次运行,点 Compare 并排对比。
如果新版赢了,点 Save Prompt 把它版本化进 Prompt Hub。这套流程的价值在于:唯一的变量是你改的东西,所以「改动有效」这件事是能被证明的,而不是靠感觉。已经有失败 Trace 的话,也可以直接从 Trace 建数据集,不用手动攒。
数据集的 Experiments tab 就是把「发版前证明」落地的那个界面。Remote agent experiments 还能把数据集跑在你已部署的 Agent 上,直接量影响。
6. Alyx:平台内置的 AI 工程 Agent
前面四步都能在 UI 里手工点,但 Arize AX 里还内置了一个 Agent:Alyx。你用自然语言描述要什么,它跨 Trace、数据集、实验、评测器去做,每次改动前都先给你看。
打开方式是首页,或任意页面按 Cmd+L(macOS)/ Ctrl+L(Windows、Linux)。它知道你当前在看什么,对话会跟着你跨页面走。想指向数据,输入 @ 提及某个 project、dataset、experiment 或 span,或者先选中一段文字再按快捷键。
几个官方示例 prompt,能看出它覆盖的广度:
Investigate this project's recurring errors and build an evaluation to catch one of the failure patterns.Using this dataset, create two prompt variants, attach a helpfulness evaluation, and compare their results.Find traces where the search tool failed, then group the error messages.Show the five models with the highest total cost this week.Create a trace view showing each tool call beside its response, latency, and evaluation scores.最后一条很关键——「每个工具调用旁边显示它的响应、延迟和评测分数」这种自定义视图,在传统可观测性工具里通常要写查询和配置面板,这里一句话就行。
配置层面:Alyx 默认开启,跑在 Arize 托管的模型上。想用自己 provider 的话,在 Settings → Account Settings → Integrations 加好,然后在 Alyx 的模型选择器里挑一个——注意只有工具调用能力足够的模型才会出现在列表里。自托管部署需要管理员手动启用。
一个容易被忽略的开关:Alyx 默认「改动前先问」,除非你在设置里打开 Auto Accept。团队用的话,建议保持默认,尤其是它要动数据集和评测器的时候。
7. 让编码 Agent 接管配置:Skills 与 MCP
Arize AX 明显是照着「你已经在用 Cursor / Claude Code / Codex」的假设设计的。它有四套给编码 Agent 用的入口,别搞混:
graph TB
A[Connect Your Agent] --> B[One Command Setup]
A --> C[Coding Agent Skills]
A --> D[MCP Servers]
A --> E[Manual OpenInference]
B --> B1["npx evals"]
B --> B2["uvx arize-ax-cli instrument"]
B --> B3["ax instrument"]
C --> C1["arize-instrumentation skill"]
D --> D1["Docs MCP Server"]
D --> D2["AX MCP Server (alpha)"]
E --> E1["Instrumentor for 30+ frameworks"]
style A fill:#FF6B6B,color:#000000
style B fill:#4ECDC4,color:#000000
style C fill:#45B7D1,color:#000000
style D fill:#96CEB4,color:#000000
style E fill:#FFEAA7,color:#000000
style B1 fill:#98D8C8,color:#000000
style B2 fill:#98D8C8,color:#000000
style B3 fill:#98D8C8,color:#000000
linkStyle default stroke:#764ba2Skills 教你的编码 Agent 跑完整的 Arize 工作流:埋点、导出 Trace、建数据集、跑实验、搭评测器、管理标注、优化 prompt。它把 ax CLI 的参数、数据结构的怪癖、多步配方都封装好了,Agent 不用猜。可用 skill 包括 arize-instrumentation、arize-trace、arize-evaluator、arize-dataset、arize-experiment、arize-prompt-optimization。支持 Cursor、Claude Code、Codex、Windsurf 以及 40+ 其他 agent。
已经有 Trace 了想直接开查,官方给了这条 prompt:
Install the Arize skills plugin from https://github.com/Arize-ai/arize-skills, then use the arize-trace skill to export and analyze recent traces from my project. Summarize any errors or latency issues you find.MCP 有两个服务器,用途完全不同:
| Server | 适合 | 做什么 |
|---|---|---|
| Docs MCP Server | 查资料 | 在 IDE 里搜索全部 Arize AX 文档、示例和 API 参考,无需安装、无需 API key |
| AX MCP Server | 查你的数据 | 读项目、Trace、span、数据集、实验、评测器、监控、prompt。只读,目前 alpha |
Docs MCP Server 的接入,按你的 IDE 抄:
// Cursor: ~/.cursor/mcp.json 或项目内 .cursor/mcp.json
{
"mcpServers": {
"arize-ax-docs": {
"url": "https://arize.com/docs/mcp"
}
}
}# Claude Code
claude mcp add arize-ax-docs --transport http https://arize.com/docs/mcp
# Gemini CLI
gemini mcp add --transport http arize-ax-docs https://arize.com/docs/mcpClaude Desktop 则是在 Settings → Connectors → Add → Add custom connector 里填 https://arize.com/docs/mcp。
怎么选,官方给了一句话的判断:想让 Agent 端到端跑 Arize 工作流(导出 Trace、建数据集、跑实验、建评测器、优化 prompt),用 Skills;想在 IDE 里获得持续的埋点指导和文档检索,用 MCP;还没有账号和 Trace、想一条命令全搞定,用 npx evals 或 ax instrument。
还有一个偷懒但好用的功能:每个文档页都有 copy as markdown 按钮,粘进任何 AI 工具就是现成上下文。另外还有一条 paste-and-go 路径,把下面这句丢给编码 Agent,它会自己探测你的技术栈、给方案、等你批准再动手:
Follow the instructions from https://arize.com/docs/PROMPT.md and ask me questions as needed.8. 放进坐标系:Arize AX 与同类工具
单看功能列表,Arize AX 容易被归成「又一个 LLM 可观测性平台」。放几个维度对比才看得清定位。
Arize AX vs Phoenix。Phoenix 是 Arize 自家的开源产品。文档里也直接指路了:需要 OSS 就看 Phoenix。差别的本质是托管与自托管、以及托管版才有的 Signal 那套自动化 issue 检测和 Enterprise 的 PR 能力。预算敏感、或者有数据不能出境的硬约束,先看 Phoenix。
Arize AX vs LangSmith / Langfuse。这三家的底座都是「采集 Trace + 评测」。真正的分水岭在两处:一是 Signal 这种自动聚类故障、并直接给出修复建议(Enterprise 还能开 PR)的能力,这是从「观测」往「工程闭环」迈的一步,多数同类工具停在观测和评测;二是 Agent 原生化程度——Alyx 一个内置 Agent、加一整套给编码 Agent 用的 Skills 和 MCP,说明它是按「你的开发环境里本来就跑着 Agent」来设计的。
需要说清楚的是,具体谁在哪个 benchmark 上更强、哪家在某个框架的集成更全,得看你自己的技术栈和当时的官方文档,我在这里不给没有验证过的结论。
9. 什么时候它不划算
任何工具都有 sweet spot,Arize AX 的这条线其实挺清楚。
别上:你只有一两个 prompt、没有真实流量、失败模式一眼能看穿。这时候 Signal 聚类和实验对比带来的边际价值接近零,反而多一套接入要维护。先把离线评测集攒起来再说。
要谨慎:Free 和 Pro 的 Signal 额度是 10 / 25 个 issue 每月。如果你们的失败模式又多又杂,这个额度会很快见底——额度用完 Signal 直接暂停到月底。真要靠它做日常运维,得先算清楚够不够 Enterprise。
要评估数据边界:Alyx 默认跑在 Arize 托管的模型上(可以换成自己的 provider),Signal 在 Enterprise 上也能选自己的 AI provider。有合规要求的团队,先确认这条路径符合你的数据政策再决定。
值回票价:Agent 上了生产、失败模式开始重复出现、团队里每改一次 prompt 都要争论「到底有没有变好」。到这个阶段,一条能证明改动的闭环,省下的沟通成本和回滚成本,远超接入成本。
参考文档与链接
- Arize AX 官方文档首页 — 平台定位、四步工作流、Alyx 概览
- Observe your agent(Tracing quickstart) — 一条命令埋点、读 Trace、无 Trace 的排查清单
- Signal — Signal 工作原理、开启与配置、套餐额度表、repo-backed 修复
- Evaluate production traffic — 在线评测、模板、变量映射、code evaluator
- Run evals on experiments — 数据集、Playground、Q&A 评测器、实验对比与 Prompt Hub
- Alyx — 内置 AI 工程 Agent 的用法、快捷键、@ 提及与示例 prompt
- Arize AX for Agents — 一条命令、paste-and-go、Skills 与 MCP 服务器接入
- Skills — Skills / MCP / 一条命令三条路径的选择依据
- GitHub: Arize-ai/arize-skills — Arize Skills 源码,含
arize-instrumentation等 skill - GitHub: Arize-ai/openinference — 自动埋点用的 OpenInference standard
- Pricing and usage — Signal 与 managed agents 的套餐限制
- Phoenix(Arize 开源产品) — 需要 OSS / 自托管时的替代选择
你的 Agent 现在靠什么定位线上故障?评论区聊聊你的排查方式。觉得有用的话,点个赞让更多人看到。
作者: itech001
来源: 公众号:AI人工智能时代(the-ai-era)
网站: https://www.theaiera.top/
关注每日最新AI新闻和技术博客,主页有更多的文章的AI 技术参考:https://www.theaiera.top
本文首发于 AI人工智能时代,转载请注明出处。