运行与性能
可观测性、成本、可靠性和模型选择
沿着对象与状态理解本章
性能图先用实际起止时间画,而不是将所有工具耗时直接相加。下图中缩短非关键路径的A不会缩短总时间;同样,降低单次Token价也未必降低成功任务成本。
下方图解的固定输入在“输入与适用条件”中声明。它用于解释本章机制,不与本章其他独立例子的数值暗中接续。
Trace要告诉你因果,不只是时间戳
为何优化一个最显眼的步骤,整体却没变快?
执行轨迹像工程里的时间账,但更重要的是依赖关系。串行阶段会相加,并行阶段往往取关键路径;只有知道下一步在等谁,才能知道哪里值得优化。还要把排队、推理、工具、验证和重试分开,不能全算成模型慢。
输入与适用条件:固定教学秒数,无真实产品耗时数据。第4帧只改变工具A时长,其他条件保持不变。
1 / 5 · 先看一条完整任务
窄屏可左右滑动图形,或点击“放大图形”。文字解释紧随图后。
构造的任务从0到16秒:排队2秒、第一次模型3秒、并行工具A3秒/B8秒、第二次模型2秒、核验1秒。
基准墙钟16秒;工具工作量11秒默认静止。用“下一步”看完解释再继续;播放到最后一步自动停止。键盘聚焦播放器后,可用左右键逐步查看、空格播放/暂停。图中颜色辅助区分,含义同时用文字注明。
为什么需要
把优化投入到确实支配成本或完成时间的环节。
怎样实现
按依赖关系画时间线,再用同负载实测对照。
可能的代价与误解
只看平均值会隐藏长尾;把并行跨度相加会错误夸大总耗时。
如何判断是否做对
按时间戳与依赖重算16秒,检查是否把等待和重试遗漏。
观察任务的因果结构
Trace连接一次任务中的模型、工具、检索、交接与验证;Span代表一段操作;事件记录时点;指标汇总分布。Agents SDK和OpenTelemetry提供追踪入口,但规范字段与稳定性需按版本确认。[S165][S166][S167]
任务
├─ 路由与上下文
├─ 模型调用
├─ 并行搜索:代码 / 测试
├─ 修改
├─ 验证
└─ 完成或阻塞
并行Span重叠,不能直接求和当墙钟时间。没有关联ID的大量日志也未必能解释失败。
指标从用户目标出发
TTFT是首Token等待,生成吞吐是输出速度,工具延迟是外部依赖,总耗时才反映完整任务。平均值与高分位都重要。很快说“开始处理”不代表很快完成。SRE强调从用户可见行为定义监控和目标。[S168][S169]
质量应包括目标满足、回归、安全和人工接管;成本区分输入、缓存、输出、工具与执行资源。不同产品计费不同,Token数量不是统一货币。[S170][S172]
成功任务成本与模型路由
原创理想化例子:A每次1元、成功率50%;B每次1.5元、成功率90%。用成本/成功率的粗略近似,A为2元、B约1.67元。真实重试相关性、人工成本和任务分布会改变结论。
路由可参考复杂度、风险、上下文和验证能力,但要计入路由自身成本与切换交接。把小任务给便宜模型是待测策略,不是定理。推理预算也应看质量—成本曲线,而非最大化思考长度。[S172][S038]
限流、超时与重试
限流可能按请求、Token或其他资源。暂时失败可以退避并加抖动;参数无效和权限不足不应盲重试。副作用超时后应先查询实际状态,再决定是否重发。[S171]
取消模型请求不保证工具进程停止。需要任务级与操作级超时、取消传播、幂等和去重。无限重试不是持续工作,而是失控风险。
会话、执行器与存储
Managed Agents案例把会话事件、Harness与沙箱解耦,减少执行环境故障的耦合。小型本地Agent不必立即拆成多个服务,但可保持接口清晰并逐步增加恢复能力。[S142]
日志要区分意图与已执行事实。“准备运行测试”不是结果。事件重放通常恢复状态,不应无条件重新执行所有副作用。
SLO与降级
SLO需说明任务范围、成功定义、时间窗与预算。只读问答与自动修改应有不同目标。依赖不可用时可以降级为证据和建议,不能声称已经执行;权限不足时停止对应动作,仍可完成独立部分。[S169]
告警应指向需要处理的用户影响。单次可恢复超时未必打扰人,持续失败、异常成本、越权与状态丢失更值得关注。追踪数据还需脱敏和保留策略。
优化顺序
先找瓶颈:往返多看工具粒度,噪声多看检索,输出长看要求,重试多看环境,能力不足看模型或证据。代码聚合工具结果可能节省上下文,也增加执行复杂性,需按任务验证。[S173]
自检:减少调用数总是好事?不是,可能删除必要验证。HTTP成功就是Agent成功?不是,要看业务目标。
逐项中文讲义
保留拓展阅读目录编号与A/B/C优先级;每项包括机制解释、边界与原创练习。
A14.1 · 模型、工具和交接追踪
对应资料:Agents SDK Tracing
Tracing把模型调用、工具执行、交接和其他步骤连接为任务轨迹。它帮助解释过程,但记录存在不代表内容完整或结论正确。
需要区分任务、Span、事件和最终结果。并行步骤可能重叠,耗时不能简单相加。敏感Prompt与凭据不应无选择地写入日志。
一条trace怎样串起模型与工具
输入与条件。任务T1中模型span M1提出调用c7,工具span U7执行读取。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1关联 | U7记录c7与T1 | 可从动作追到请求。 |
| 2结果 | U7结束后M2收到观察 | 形成因果时序。 |
| 3诊断 | M2缺U7结果 | 定位回填,而不是工具本身失败。 |
把过程连起来。trace需要关联身份与顺序,不只是很多独立日志。
边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。
原创练习:为搜索、修改、测试建立关联ID,模拟其中一步失败,检查能否定位到正确任务和版本。
完成标准是能回答“在哪一步、依据什么、发生了什么”,而不是只收集大量不可关联文本。
拓展阅读目录事实依据 [S165] · 练习与工程推导为本书独立编写。
A14.2 · 生成式AI的语义约定
对应资料:OpenTelemetry GenAI Conventions
OpenTelemetry的GenAI语义约定尝试统一生成式AI操作的记录方式。相关规范持续演进,字段与支持情况需要按版本核对。
统一命名有利于跨系统分析,但不能替代应用的业务定义。两个系统都记录Token,计数口径仍可能不同。
统一字段才能比较不同后端
输入与条件。后端A字段input_tokens,B叫prompt_tokens。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1映射 | 先确认两者语义和是否含缓存 | 不能只改字段名。 |
| 2统一 | 保存规范字段并保留来源口径 | 方便横向比较。 |
| 3版本 | 字段定义变化时记录规范版本 | 避免历史指标断裂。 |
把过程连起来。语义约定减少混乱,但指标必须真实同义。
边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。
原创练习:为模型请求、工具调用和任务成功定义最少字段,明确单位、来源和敏感性。
完成标准是数据可以比较和解释,不把某个发展中的属性当成所有平台已经一致支持的标准。
拓展阅读目录事实依据 [S166] · 练习与工程推导为本书独立编写。
A14.3 · 模型与Agent的Span
对应资料:OpenTelemetry GenAI Spans
GenAI Span约定描述如何表示模型或Agent相关操作。父子关系与时间边界决定能否正确还原执行结构。
异步和并行任务尤其需要清楚关联;Span结束可能仅代表请求结束,不一定代表外部业务动作最终完成。
父span包含等待,子span和不等于父span
输入与条件。两个工具分别[0,3]和[0,5],父span[0,5]。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1子和 | 3+5=8 | 累计活动时间。 |
| 2父时长 | 5 | 包含并行重叠。 |
| 3分析 | 若父变8,检查是否串行化 | 别直接相加当墙钟。 |
把过程连起来。span结构与关键路径需要一起看。
边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。
原创练习:画两个并行搜索加一次串行验证的Trace,分别计算墙钟时间与操作时间总和。
完成标准是识别关键路径和真实等待,而不是用所有Span求和夸大用户耗时。
拓展阅读目录事实依据 [S167] · 练习与工程推导为本书独立编写。
B14.4 · 监控系统的信号选择
对应资料:Google SRE Monitoring
SRE监控强调从服务行为与用户影响选择信号。日志、指标和告警各有用途,收集越多不一定越容易发现问题。
Agent监控应关注任务成功、尾延迟、持续失败和人工接管,而不只看API返回码。模型返回200但未完成任务仍是用户层失败。
成功率正常但排队上升也是预警
输入与条件。5分钟内错误率仍低,队列从10增到200。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1当前结果 | 许多请求尚未结束 | 低错误率可能滞后。 |
| 2领先信号 | 等待长度和年龄增加 | 提示容量压力。 |
| 3处理 | 查到达/完成率、重试与资源 | 不等大量超时后才告警。 |
把过程连起来。监控既看结果,也看积压与资源。
边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。
原创练习:设计一个只对持续故障告警的策略,区分单次可恢复超时与大量任务被阻塞。
完成标准是告警可行动、信号能解释用户影响,避免正常波动造成持续打扰。
拓展阅读目录事实依据 [S168] · 练习与工程推导为本书独立编写。
B14.5 · 服务目标与错误预算
对应资料:Google SRE Implementing SLOs
SLO把服务目标定义为可度量约定,错误预算帮助理解允许的失败空间与变更风险。指标必须说明范围、时间窗和成功条件。
Agent任务差异大,只读问答与自动修改不应强行使用完全相同目标。速度与质量也需同时考虑。
99%目标给多少错误预算
输入与条件。统计窗口内10000个合格请求,SLO成功率99%。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1允许失败 | 10000×1%=100 | 预算100次。 |
| 2已失败 | 若已经80次 | 剩20次。 |
| 3决策 | 重大改动可结合预算谨慎灰度 | 不把目标99%解释成每用户都必定99%。 |
把过程连起来。SLO必须定义合格请求、时间窗口和失败口径。
边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。
原创练习:为“只读分析”和“带测试的修复”分别定义成功与耗时目标,并解释为何HTTP成功不足够。
完成标准是目标能指导工程取舍,而不是写一个没有统计口径的“高可靠性”口号。
拓展阅读目录事实依据 [S169] · 练习与工程推导为本书独立编写。
A14.6 · 部署前的工程检查
对应资料:API Deployment Checklist
部署检查涵盖质量、成本、权限、失败处理和运行准备。API能调用只是起点,生产环境还需要监控、预算与恢复设计。
数据和工具边界、模型版本、输出验证及回滚应明确。不要把开发环境一次成功直接视为可上线证明。
上线前先跑一次可恢复失败
输入与条件。测试工具模拟超时,但外部文件已写入。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1注入故障 | 控制在写入后返回前 | 产生unknown场景。 |
| 2恢复 | 核对实际内容与动作ID | 不重复盲写。 |
| 3验收 | 系统准确报告状态 | 比只跑成功demo更能检验生产准备。 |
把过程连起来。故障实验应在无害隔离环境,不能对生产用户数据试错。
边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。
原创练习:在上线前模拟限流、错误输出、无权限和工具超时,检查是否有可理解的降级结果。
完成标准是用户能知道什么已完成、什么未完成,系统不会因追求成功率而隐藏失败。
拓展阅读目录事实依据 [S170] · 练习与工程推导为本书独立编写。
A14.7 · 限流、退避与预算
对应资料:Rate Limits
速率限制可能按请求、Token或其他资源维度实施。重试需要遵守服务反馈,并区分暂时性失败与永久错误。
指数退避和抖动可以减少集中重试,但不能修复无效参数或授权不足。具有副作用的动作重试前还要确认是否已执行。
RPM没超但TPM仍可能限流
输入与条件。限额假设每分钟60请求、6000Token,每请求2000Token。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1请求数 | 一分钟4次 | 远低于60。 |
| 2Token数 | 4×2000=8000 | 超过6000。 |
| 3处理 | 按实际双预算调度 | 不因请求次数少就认为限流错误。 |
把过程连起来。速率限制维度不同;数字为教学,不对应真实服务当前限额。
边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。
原创练习:为限流、参数错误和网络中断分别设计处理分支,设置最大次数与总预算。
完成标准是重试有理由、有边界且可观察,不把无限循环当成自动恢复。
拓展阅读目录事实依据 [S171] · 练习与工程推导为本书独立编写。
A14.8 · 端到端任务延迟
对应资料:Latency Optimization
延迟优化需要分析请求、输入、输出、工具和编排的完整时间线。减少一次模型调用可能有效,也可能删除必要证据或验证。
首Token快不代表任务完成快;缓存命中高也不保证端到端成本低。优化应基于真实瓶颈。
减少非关键路径操作不改变总耗时
输入与条件。A3秒、B5秒并行,C2秒等待二者。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1原任务 | max(3,5)+2=7 | B是关键路径。 |
| 2A减至1秒 | 仍max(1,5)+2=7 | 墙钟不变。 |
| 3B减至2秒 | max(3,2)+2=5 | 关键路径变A。 |
把过程连起来。优化收益依赖当前瓶颈,不能各span节省直接相加。
边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。
原创练习:比较长输出、慢工具和重复检索三种任务轨迹,为每种选择不同改进,而不是统一压缩Prompt。
完成标准是在质量不退化的条件下改善用户任务耗时,而非只优化一个易展示指标。
拓展阅读目录事实依据 [S044] · 练习与工程推导为本书独立编写。
B14.9 · 执行状态与模型运行的解耦
对应资料:Scaling Managed Agents
把会话状态、Harness和执行环境解耦,有助于故障恢复和资源管理。小系统也可以先保持职责清晰,而不必立即拆成多个服务。
状态持久化要区分动作意图、已执行事实和待确认结果。恢复时不能盲目重放外部副作用。
模型超时后用任务ID接回执行状态
输入与条件。外部长任务job9运行中,推理请求断开。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1保留身份 | job9、目标与允许动作 | 不只留自然语言计划。 |
| 2查询 | 外部job9已完成 | 恢复结果。 |
| 3避免重复 | 不重新启动job10做同一副作用 | 继续原任务。 |
把过程连起来。运行环境解耦要配合持久任务身份。
边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。
原创练习:在部署请求已发出但返回丢失时模拟重启,先查询操作状态,再决定是否补偿或重试。
完成标准是恢复后的状态与真实环境一致,不只是能够继续生成文本。
拓展阅读目录事实依据 [S142] · 练习与工程推导为本书独立编写。
B14.10 · 提示、评测与模型优化
对应资料:Model Optimization
模型优化应围绕任务评测,将Prompt、模型选择、训练与工具环境作为不同干预层。较便宜模型不一定带来更低成功任务成本。
错误重试、人工修复和更长流程都可能抵消单次价格优势。模型切换也会产生交接与路由开销。
一次只变一个可解释变量
输入与条件。成功率低,想同时换模型、Prompt、索引。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1基线 | 记录固定任务和三项版本 | 知道旧状态。 |
| 2最小干预 | 先修已确认过期索引 | 观察收益。 |
| 3后续 | 模型/Prompt另作对照 | 不把组合收益随便归因某一项。 |
把过程连起来。评测为优化提供因果线索,但现实交互项仍需专门比较。
边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。
原创练习:用假设成本和成功率计算两种方案,再加入失败成本,观察排序是否变化。
完成标准是依据真实任务质量—成本—延迟曲线选择,而不是只按参数量或单价决定。
拓展阅读目录事实依据 [S172] · 练习与工程推导为本书独立编写。
B14.11 · 工具组合与成本边界
对应资料:Claude Tool Combinations
工具组合影响信息如何流向模型。通过代码筛选大结果可能减少上下文,直接返回结果则更简单,但可能带来冗余。
组合能力受产品支持、权限和执行环境限制。不能假设所有工具都能任意并行或共享状态。
工具组合可以少传数据,不必少做验证
输入与条件。原流程把300条记录交给模型数失败数量。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1确定性聚合 | 程序统计2+3+1=6 | 减少长上下文。 |
| 2证据 | 保留查询条件、页数和错误状态 | 可解释总数。 |
| 3模型任务 | 解释与提出下一步 | 不重复手算已可验证聚合。 |
把过程连起来。工具组合改变分工,正确性来自完整查询和明确算式。
边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。
原创练习:比较把一千条记录全部交给模型与先用程序统计后提供摘要,两者分别需要什么验证和原始证据入口。
完成标准是减少无效搬运同时保留可追溯性,不用摘要掩盖被过滤的重要异常。
拓展阅读目录事实依据 [S173] · 练习与工程推导为本书独立编写。