SuperAPI AI 工具集

ciagent

CIAgent 是一个用于检验 AI 智能体评测(evals)是否可靠的开源工具。它通过在同一套评测上多次运行(--runs N),暴露那些在总体分数稳定表象下实际发生翻转(flip)的判定,并将每次翻转归因到具体来源:agent-variance(智能体输出变化,需修提示词、检索或温度)、judge-flake(输出相同但 LLM 评判者改变主意,需修评分标准或改用确定性检查)、infra-error(评判 API 调用失败,重试即可)。它还提供 LLM 评判者审计(judge-audit),用已有基准真值重打分来对比评判者与确定性检查的一致性,并输出 TRUSTWORTHY / NEEDS CALIBRATION / UNRELIABLE 结论。CIAgent 主张优先用确定性的代码事实检查(expected_in_answer、not_in_answer、regex_match、json_schema)、路径检查与成本预算来替代昂贵的 LLM 评判,还可从知识库中挖掘事实断言。它原生适配 OpenAI、Anthropic、LangGraph,并能导入 OpenTelemetry、Langfuse、LangSmith 等导出的追踪数据,可直接在 pytest 内运行。

访问官网

工具介绍

CIAgent 是一个面向 AI 智能体评测的开源测试工具,其核心主张是:评测分数稳定并不代表系统稳定。工具帮助使用者判断智能体的评测是否在“说谎”。

用途

CIAgent 用于在智能体开发与 CI 流程中发现评测结果中隐藏的不稳定性。单次评测可能给出 96% / 95% / 96% 这类看似稳固的总分,但其下各条查询的判定可能每次都在翻转,只是错误在不同位置互相抵消。CIAgent 通过多次运行暴露这些翻转,并将每个翻转归因到责任层,使问题成为可派发的工作项,而不是一个令人不安的数字。

主要能力

  1. 稳定性报告与翻转归因:使用 --runs N 多次运行同一套评测,观察哪些判定发生翻转。归因是结构性的而非猜测:确定性检查在输出相同的情况下不可能翻转,同时比较各层的子判定。

    • agent-variance:智能体产生了不同输出,应修复提示词、检索或温度。
    • judge-flake:输出(或所有确定性检查的结果)相同,但 LLM 评判者改变了主意,应修复评分细则或改用确定性检查。
    • infra-error:评判 API 调用失败,属于重试问题。 控制台显示观察到的事实;pass@k/pass^k 估算值出现在 JSON 输出中并标注为估算。flaky-but-passing 时退出码为 0,便于在不破坏 CI 的前提下采用;当准备以此设卡时可加 --fail-on-flaky。
  2. LLM 评判者审计(judge-audit):LLM 评判者若与智能体共享上下文,会继承智能体的盲点——检索为空时智能体凭空作答,评判者读到同样的空白便予以通过。judge-audit 用已有基准真值重新打分已记录的基线(不重跑智能体),提供:评判者与确定性检查的分歧矩阵(关键行是评判者通过而硬事实检查未通过的答案)、重测稳定性(同一答案评判 --repeats 次,相同输入上的翻转即评判者自身噪声)、人工标注(--labels)下的吻合度与 Cohen's κ。结论为 TRUSTWORTHY / NEEDS CALIBRATION / UNRELIABLE,且论断是单向的:在可核查处失败的评判者,在不可核查处也不应被信任。

  3. 确定性检查优先:多数关键失败涉及硬事实(产品名、价格、版本号),可零成本确定性核查。CIAgent 先跑确定性检查,把评判者作为最后手段:

    • 代码事实检查:expected_in_answer、not_in_answer、regex_match、json_schema,零 LLM 调用、零抖动,每次判定一致。
    • 路径检查:智能体是否调用了应有工具;缺少预期工具告警,出现禁止工具失败。
    • 成本预算:每次查询的 LLM 调用数、token 数、美元成本。
    • LLM 评判者(llm_judge 评分细则,可选):仅用于真正需要判断的答案,且在所有确定性检查之后评估。
  4. 从知识库挖掘检查:不必手写事实检查,可从知识库抽取硬事实(价格、费率、SKU、“30 天”等)作为变体集断言,并先用已记录的标准答案验证每个候选——会让已知良好答案失败的检查会在呈现前被拒绝。编写时一次 LLM 调用,之后检查永久免费运行。

  5. 分层评测:ciagent test 通过 4 层评估每条查询——正确性、路径、检索、成本。检索层读取检索工具的捕获结果,对空检索、缺失来源和数量下限给出确定性告警;当结果未被捕获或无法解析时执行 SKIP(绝不猜测)。

  6. 集成与适配:原生适配 OpenAI、Anthropic、LangGraph;可导入任意栈导出的追踪数据——OpenTelemetry(openllmetry、Google ADK)、Langfuse、LangSmith,并已针对 OpenAI、Anthropic、CrewAI、Google ADK、Claude Agent SDK 的真实捕获做过验证。可在 pytest 内运行。

  7. 面向编码智能体的接入:CIAgent 以 Claude Code 插件形式提供两个技能——onboard(编写适配器、记录标准基线、生成 spec、验证)和 check(在智能体每次变更后运行正确测试并按翻转来源分流失败)。适配器只需一个函数:(query: str) -> str,追踪捕获自动完成。

  8. 更多功能(文档列出的主题):模拟(多轮对话场景,脚本化用于 CI,生成式人设作为发现者)、成本跟踪(预算与尖峰检测)、黄金追踪(记录基线、diff 回归)、导入生产追踪(OTel/Langfuse/LangSmith/ATIF)、黄金提升、模拟世界(冻结失败运行的工具流量并确定性重放)、MCP 服务器、世界文件格式(附 JSON Schema)、失败地图(可运行、映射 OWASP 的智能体失败模式)、CI/CD 集成(GitHub Actions)、LangGraph 支持、指标参考。

使用方式

安装与首次运行(quickstart)、模拟、稳定性测试、评判者审计、生成检查、编写测试、成本跟踪等均有对应文档。演示无需安装、API 密钥或配置,一条命令即可在合成追踪上运行内置演示套件三次。零 API 密钥试验:CIAGENT_MOCK_FLAKY=1 ciagent test --mock --runs 3 .。模拟模式(ciagent test --mock)以零 API 密钥、零成本运行整套评测,可用于对每个 PR 设卡。尚无黄金查询时可使用 ciagent init --generate 扫描代码并生成起始 spec;由编码智能体设置时可让其“为这个仓库设置 CIAgent”,它会用 ciagent bootstrap --yes 记录黄金基线并用 ciagent test --runs 3 验证。

基础工作流:编写黄金查询(智能体应处理什么、应拒绝什么),然后用 ciagent test 通过正确性、路径、检索、成本四层进行评估。

适用场景与限制

适用于以 LLM 评判者为主要评测手段、担心评测结果不可靠的智能体团队,以及希望在 CI 中低成本设卡、用确定性检查替代部分 LLM 评判的工程场景。已提供针对 OpenAI、Anthropic、LangGraph 智能体的可运行示例(DemoAgents)。

限制与说明:工具来自一项真实研究——LLM 评判者通过的答案中约七分之一是错的,而确定性检查抓住了 8/8;方法与原始数据见 STUDY.md。demo 模拟的是抖动智能体,指向自有智能体需按 spec 配置。pass@k/pass^k 为估算值。其他细节(如具体价格、平台可用性、性能指标等)资料未提供。

许可

Apache 2.0。