Agent-SRE 快速上手:5 分钟为你的 AI Agent 定义 SLO、错误预算与成本护栏

发布时间:2026/9/18 13:57:14

Agent-SRE 快速上手:5 分钟为你的 AI Agent 定义 SLO、错误预算与成本护栏 Agent-SRE 快速上手5 分钟为你的 AI Agent 定义 SLO、错误预算与成本护栏【免费下载链接】agent-governance-toolkitAI Agent Governance Toolkit — Policy enforcement, zero-trust identity, execution sandboxing, and reliability engineering for autonomous AI agents. Covers 10/10 OWASP Agentic Top 10.项目地址: https://gitcode.com/GitHub_Trending/ag/agent-governance-toolkit本文是 agent-governance-toolkit 生态中 Agent-SRE 模块的实战入门指南面向正在把 AI Agent 推向生产环境的开发者。你将在一篇文章内掌握三件事用 SLI/SLO/ErrorBudget 三个原语定义我的 Agent 到底可不可靠在 Agent 执行路径上埋点采集真实行为数据并用 CostGuard 为自主 Agent 加上防失控的成本护栏。读完即可照着示例代码为自己的 Agent 建立第一份可靠性契约。安装与前置条件Agent-SRE 是 Python 包官方文档给出的安装方式是一行命令pip install agent-sre如果你希望基于本仓库源码直接运行示例与测试仓库内的可运行示例 examples/quickstart.py 给出了源码安装方式cd agent-governance-python/agent-sre pip install -e .[dev] python examples/quickstart.py从 pyproject.toml 可以看到两点与运行环境直接相关的约束requires-python 3.11即要求 Python 3.11 及以上版本包版本为5.0.0其描述明确说明该 PyPI 发行版是一个重定向 stubpip install agent-sre实际会拉取agent-governance-toolkit-cli5.0.0,6.0作为运行时依赖完整的agent_sre源码树仍保留在本仓库src/下并在 CI 中通过pip install -e .[dev]持续测试验证。Agent 可靠性三原语SLI、SLO 与 Error Budget在动手写代码前先明确 Agent-SRE 的三大核心概念这也是文档正文的核心骨架SLIService Level Indicator服务等级指标——你测量什么。对 Agent 而言测量对象是成功率和幻觉率这类行为指标而不是基础设施的 CPU 使用率任务成功率Task Success Rate、单任务成本Cost Per Task、幻觉率Hallucination Rate是三个最常用的起点。SLOService Level Objective服务等级目标——你为某个指标设定的目标值例如任务成功率 ≥ 95%。Error Budget错误预算——在冻结发布之前系统允许承受多少失败。例如 5% 的错误预算意味着在统计窗口内允许 5% 的事件不达标。为什么 Agent 的可靠性度量与传统服务不同docs/concepts.md 给出了一张对照表传统服务崩溃会返回 HTTP 500一眼可见而 Agent 幻觉时常常看起来一切正常HTTP 200传统故障有堆栈可以回溯而 Agent 的错误答案没有堆栈可查传统服务重试通常有效Agent 重试可能得到同样的错误答案。结论是Agent 的可靠性问题是推理问题而非单纯的基础设施问题因此需要专属的 SLI 体系。定义你的第一个 SLO在代码里定义一个 Agent 的 SLO只需要组合指标与错误预算以下代码完整继承自 getting-started.mdfrom agent_sre import SLO, ErrorBudget from agent_sre.slo.indicators import TaskSuccessRate, CostPerTask, HallucinationRate # Define indicators success TaskSuccessRate(target0.95, window24h) cost CostPerTask(target_usd0.50, window24h) hallucination HallucinationRate(target0.05, window24h) # Combine into an SLO with error budget slo SLO( namemy-agent, indicators[success, cost, hallucination], error_budgetErrorBudget(total0.05), # 5% error budget )指标参数与默认值源码确认对照 src/agent_sre/slo/indicators.py上述三个内置 SLI 的构造参数与默认值如下SLI 类关键参数默认值说明TaskSuccessRatetarget/window0.995/30d记录任务完成情况返回窗口内累计成功率CostPerTasktarget_usd/window0.50/24h记录每次任务成本聚合为平均单任务成本HallucinationRatetarget/window0.05/24h由外部 judgeLLM 或人工打分后记录幻觉率越低越好window参数支持TimeWindow枚举中的五种取值1h、6h、24h、7d、30d分别对应 3600、21600、86400、604800、2592000 秒。每条测量都会附带timestampSLI 在聚合时只统计当前时间 - window窗口内的数据见SLI.values_in_window()的实现。SLO 构造参数的隐藏逻辑SLO构造函数src/agent_sre/slo/objectives.py支持name、indicators、error_budget、description、labels、alert_manager、agent_id等参数。有一个容易被忽略的细节如果你不传error_budget或传入total0SLO 会自动根据最严格指标的 target 推导错误预算——即error_budget.total 1.0 - min(sli.target for sli in indicators)。例如上面的示例中三个指标中最严格的是target0.95推导出的预算正好是 5%这与显式传入ErrorBudget(total0.05)等价。为你的 Agent 打点记录行为数据定义好 SLO 之后下一步是在 Agent 工作的每个关键节点插入记录调用。文档给出的最小埋点模式如下# After each task success.record_task(successTrue) cost.record_cost(cost_usd0.25) hallucination.record_evaluation(hallucinatedFalse) slo.record_event(goodTrue) # Check SLO health status slo.evaluate() # HEALTHY, WARNING, CRITICAL, or EXHAUSTED print(fStatus: {status.value}) print(fBudget remaining: {slo.error_budget.remaining_percent:.1f}%)埋点方法在源码中的对应实现TaskSuccessRate.record_task(success)维护累计任务数与成功数每次调用记录当前累计成功率作为一条 SLI 测量值CostPerTask.record_cost(cost_usd)累加总成本与任务数记录当前平均单任务成本HallucinationRate.record_evaluation(hallucinated, confidence1.0)记录幻觉判定结果并可将 judge 的置信度写入测量元数据metadata{confidence: ...}供后续校准分析使用SLI.record(value, metadata)基类方法每次记录时自动把target写入元数据SLIValue.is_good据此判断该测量是否达标compliance()则返回窗口内达标测量占比SLO.record_event(good)向错误预算追加一个好/坏事件并立即触发一次evaluate()状态评估见 objectives.pyErrorBudget.remaining_percent返回max(0, 1 - consumed/total) × 100%即剩余预算百分比。底层存储设计有界事件缓冲ErrorBudget的事件存储使用collections.deque(maxlen100_000)有界队列可通过max_events调整当缓冲写满时最旧事件被静默淘汰防止长运行 Agent 的内存无限增长。值得注意的是burn_rate()与事件时间戳基于time.monotonic()不受系统时钟跳变影响。理解 SLO 状态机与错误预算燃烧率SLO.evaluate()返回的状态在文档中列举了四种HEALTHY、WARNING、CRITICAL、EXHAUSTED实际上源码还定义了第五种UNKNOWN尚无任何指标数据时返回。判定优先级如下objectives.py错误预算耗尽 →EXHAUSTED存在 critical 级别燃烧率告警 →CRITICAL存在 warning 级别燃烧率告警 →WARNING所有指标都没有窗口内数据 →UNKNOWN否则 →HEALTHY。燃烧率Burn Rate的含义Burn rate衡量错误预算的消耗速度燃烧率为 1.0 意味着恰好按可持续速度消耗窗口结束时预算刚好用完燃烧率为 10.0 意味着预算将在 1/10 的窗口时间内耗尽——这通常意味着出了问题。ErrorBudget提供可配置的双阈值budget ErrorBudget( total0.05, # 5% error budget (95% reliability target) burn_rate_alert2.0, # Alert if burning 2x faster than sustainable burn_rate_critical10.0, # Page if burning 10x faster )burn_rate_alert默认2.0burn_rate_critical默认10.0firing_alerts()返回当前触发的告警列表内部以 24 小时为窗口计算燃烧率对应BurnRateAlert的window_seconds86400预算耗尽后执行的动作由ExhaustionAction枚举控制ALERT仅告警、FREEZE_DEPLOYMENTS冻结发布、CIRCUIT_BREAK打开熔断器、THROTTLE限流。此外SLO支持传入alert_manager来自agent_sre.alerts的AlertManager状态恶化或恢复时自动发出带去重键agent_id:slo_name的告警事件。添加成本护栏CostGuard 防失控自主 Agent 最容易出的事故之一就是成本失控。Agent-SRE 提供CostGuard作为三级预算防线任务级、Agent 日级、组织月级。以下代码继承自文档from agent_sre.cost.guard import CostGuard guard CostGuard( per_task_limit2.00, # Block tasks $2 per_agent_daily_limit50.0, # $50/day per agent org_monthly_budget1000.0, # $1000/month total ) # Before each task allowed, reason guard.check_task(my-agent, estimated_cost0.50) if not allowed: print(fBlocked: {reason})参数默认值与校验源码确认对照 src/agent_sre/cost/guard.pyCostGuard的完整参数如下参数默认值说明per_task_limit2.0单任务成本上限美元per_agent_daily_limit100.0单 Agent 每日上限org_monthly_budget5000.0组织月度总预算anomaly_detectionTrue是否启用成本异常检测Z-scoreauto_throttleTrue是否自动限流/熔断kill_switch_threshold0.95预算利用率达到该比例时执行 KILLalert_thresholds[0.50, 0.75, 0.90, 0.95]预算利用率阶梯告警阈值所有金额参数在构造时都会做有限性与非负校验拒绝 NaN/Inf/负数越界直接抛出ValueError避免产生半初始化对象。check_task 的判定顺序与并发注意点check_task(agent_id, estimated_cost)返回(allowed, reason)二元组判定顺序为_check_locked实现组织级 kill 开关 → Agent 被 kill → Agent 被限流 → 估算成本超单任务上限 → 超出日预算 → 超出组织月预算。任一条件不满足都会返回False与具体原因字符串。文档明确指出check_task是咨询性检查它不预留预算——两个并发调用方可能同时通过检查并共同超支。对于预算关键路径应改用check_and_charge(agent_id, task_id, cost_usd, breakdownNone)它在单把锁内原子地完成检查 记账返回(allowed, reason, alerts)只有allowedTrue时成本才被入账。record_cost()则是无条件记账并返回触发的告警适合只做事后统计的场景。自动限流与熔断当auto_throttleTrue时record_cost内部会持续跟踪预算利用率利用率 ≥ 85% → Agent 进入throttled状态后续check_task直接拒绝利用率 ≥kill_switch_threshold默认 95%→ Agent 被标记killed彻底停止放行组织月预算利用率跨过 kill 阈值 → 触发组织级 kill所有 Agent 的预算全部被标记为 killed这就是文档示例中org_monthly_budget的意义所在。reset_daily(agent_idNone)用于每日零点重置日预算、任务计数与限流/熔断状态调用方自行安排在每日开始时执行。异常检测基于最近 1000 条成本记录的 Z-scorez 2.0时产生 WARNING 级异常成本告警。一个可完整运行的示例把 SLO、成本与事件检测串起来仓库中的 examples/quickstart.py 把以上所有环节整合成一个约 100 行的完整模拟程序定义三个 SLI 与 SLO → 配置 CostGuard → 接入IncidentDetector→ 模拟 100 次任务 → 打印状态、燃烧率、指标达标情况与成本消耗并在错误预算耗尽时创建事故信号。其核心循环展示了推荐的埋点组合# Record into SLIs success_rate.record_task(successsucceeded) cost_per_task.record_cost(cost_usdcost) hallucination.record_evaluation(hallucinatedhallucinated) # Track cost (check before charging) allowed, reason guard.check_task(my-assistant, estimated_costcost) if allowed: guard.record_cost(my-assistant, ftask-{i}, cost) # Record into error budget slo.record_event(goodsucceeded and not hallucinated)运行后你会在终端看到SLO Status、Error Budget Left、Burn Rate (1h)、各指标 compliance 以及成本余量——这就是 Agent-SRE 对我的 Agent 可靠吗、贵吗、出问题了吗三个问题的直接回答。内置 SLI 全景不止三个指标除文档示例中的三个指标外indicators.py 内置的 SLI 类型还包括PolicyCompliance默认target1.0——度量 Agent 对治理策略的遵守率适合与 Agent-OS 的策略执行体系联动ToolCallAccuracy默认target0.999——度量工具调用选择正确率帮助区分是 Agent 推理错了还是工具本身坏了ResponseLatency默认target_ms5000percentile0.95——按分位数度量响应延迟current_value()返回窗口内的分位延迟值DelegationChainDepth默认max_depth3——度量委托作用域链深度越低越好CalibrationDeltaSLI默认target_delta0.05——追踪校准漂移即预测置信度与实际成功率之间的差距用于发现系统性过度自信或信心不足。所有内置类型统一注册在SLIRegistry中可按 Agent ID 注册实例并批量采集collect_all(agent_id)便于接入监控后台。进阶方向与后续阅读本文覆盖了 Agent-SRE 的入门闭环。继续深入可以从以下几个方面展开ConceptsAgent SLI 与传统基础设施指标的本质差异含 Agent 可靠性对照表与 Agent-SRE 全栈架构SLO 引擎、成本护栏、金丝雀发布、混沌引擎、回放引擎、事故检测器SLO Reference内置指标、YAML 化 SLO 规范、不同 Agent 类型的模板与目标取值建议包含支持继承的 YAML 配置slos/base.yaml与子级覆盖Integration Guide与 Agent-OS、AgentMesh 及 OpenTelemetry/Sentry 等可观测平台的集成方式通过TraceCapture记录策略检查、工具调用与信任握手的完整轨迹完整示例目录金丝雀模型升级、混沌测试、成本护栏、LangChain 监控与 SLO 告警等可运行脚本对应单元测试见 tests/unit如test_indicators.py、test_cost.py、test_objectives.py可据此验证各指标聚合与预算逻辑的边界行为。【免费下载链接】agent-governance-toolkitAI Agent Governance Toolkit — Policy enforcement, zero-trust identity, execution sandboxing, and reliability engineering for autonomous AI agents. Covers 10/10 OWASP Agentic Top 10.项目地址: https://gitcode.com/GitHub_Trending/ag/agent-governance-toolkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/18 13:57:14

AI+零代码重塑2026年中秋营销:完整路径解析

做了几年企业营销服务,我自己最深的感受是:节日营销这两年的打法变化,比过去十年的变化还要大。尤其是2026年中秋营销,市场人面对的不只是海报、文案和活动页,而是一整套从内容生产、用户触达到效果复盘的高频运转链路…

2026/9/18 15:12:25

银行卡号识别银行名称:BIN号匹配与前后端实现详解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/18 15:12:25

Isaac Gym与MuJoCo双引擎协同训练机器狗的实战指南

1. 项目概述:为什么机器狗训练必须先在“数字孪生”里跑通千次?你拆过宇树Go2或B1的SDK文档吗?里面那几行写着“支持ROS2接口”“兼容Gazebo仿真”的小字,背后藏着一个残酷现实:真机调试一次跌倒,电机过热保…

2026/9/18 15:12:25

散列冲突处理全解:链地址法与开放地址法及工程选型

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/18 15:12:25

Java仓库管理系统设计与实现:库存流水与并发控制

简介:基于Java的仓库管理系统设计与实现文档,是一篇面向计算机科学与技术专业本科毕业设计的完整论文,针对电子商务迅猛发展下传统仓库管理依赖人工、效率低下且错误率高的痛点,提出了基于Spring Boot、Vue和MySQL的现代化系统设计…

2026/9/18 15:07:24

从MBR到GPT:手写主引导记录,掌控计算机启动第一棒

大学时第一次读到《操作系统真象还原》第二章,看到“编写MBR主引导记录,让我们开始掌权”这句话时,我整个人是有点被击中感觉的。因为在之前所有编程学习里,我们写的东西都跑在操作系统之上,你调用printf、你new一个对…

2026/9/18 14:13:01

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/18 0:01:09

Google Colab 实战:运行模型、数据加载与报错排查

1. 为什么我劝你先搞懂 Colab 的运行模型1.1 Colab 到底是什么,跟本地跑代码差在哪Google Colab 简单说就是一台跑在浏览器里的 Linux 虚拟机,你打开一个 Notebook,背后就连上了一台带 GPU 的远程机器。你在单元格里敲的每一行 Python&#x…

2026/9/18 0:01:09

C语言数据类型与表达式详解

1. C语言数据与数据类型概述在C语言编程中,数据是程序处理的核心对象。理解数据的分类和特性是掌握C语言的基础。C语言中的数据主要分为四大类:常量、变量、表达式和函数。这些数据类型构成了C语言程序的基本元素,每种类型都有其独特的特性和…

2026/9/18 0:01:09

SQL时间字段指定时间段查询:区间语义、索引与时区避坑

上周排查一个线上问题&#xff0c;用户反馈"昨天的订单一条都没查到"&#xff0c;但数据库里明明躺着两千多条。最后定位下来&#xff0c;不是数据丢了&#xff0c;也不是接口挂了&#xff0c;而是那个查询条件把时间段写成了> 2024-05-20 00:00:00 AND < 2024…

2026/9/18 14:13:03

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行&#xff0c;Type-C接口算是典型的“看着简单&#xff0c;做起来全坑”的东西。光引脚就24个&#xff0c;高低速信号、电源、控制线全部塞在一个小小的连接器里&#xff0c;如果PCB布局不做规划&#xff0c;打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/18 14:13:02

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/18 14:13:02

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码