每个步骤的延迟与成本
测量每个节点的令牌用量和实际耗时,从而找出缓慢且昂贵的步骤。
每个步骤的延迟与成本 是 CoddyKit 上的免费 AI Agents 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AI Agents 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AI Agents 课程共包含 4 节课。
为什么要测量每一步?
总延迟和总成本只能告诉您系统很慢或很昂贵——却不能告诉您究竟是哪一步很慢或很昂贵。要修复问题,就必须逐步测量。
记录延迟
将其添加到每个 span:
start = time.time()
# ... do work ...
span.duration_ms = (time.time() - start) * 1000延迟类别
代理中常见的慢速步骤:
- LLM 调用——500 毫秒到 10 秒
- 网络搜索——200 毫秒到 2 秒
- 嵌入——50 毫秒到 200 毫秒
- 数据库查询——5 毫秒到 500 毫秒
记录成本
对于 LLM 步骤,将令牌数乘以价格:
PRICES = {
'gpt-4o-mini': {'in': 0.150 / 1e6, 'out': 0.600 / 1e6},
'gpt-4o': {'in': 2.50 / 1e6, 'out': 10.00 / 1e6},
'claude-sonnet-4-5': {'in': 3.00 / 1e6, 'out': 15.00 / 1e6}
}
def compute_cost(model, tokens_in, tokens_out):
p = PRICES[model]
return tokens_in * p['in'] + tokens_out * p['out']
cost = compute_cost('gpt-4o-mini', 1000, 500)
print(f"Cost for 1000 in / 500 out tokens on gpt-4o-mini: ${cost:.6f}")
汇总到每个 trace
将各个 span 汇总到 trace 层级:
def trace_metrics(spans):
return {
'duration_ms': sum(s.duration_ms for s in spans),
'cost_usd': sum(s.cost_usd or 0 for s in spans),
'tokens': sum((s.tokens_in or 0) + (s.tokens_out or 0) for s in spans),
'step_count': len(spans)
}
from types import SimpleNamespace
spans = [
SimpleNamespace(duration_ms=120, cost_usd=0.002, tokens_in=100, tokens_out=50),
SimpleNamespace(duration_ms=340, cost_usd=0.005, tokens_in=200, tokens_out=80),
]
print(trace_metrics(spans))
p50 / p95 / p99
不要查看平均值——代理的延迟通常呈重尾分布。请报告百分位数:
import numpy as np
durations = [t.duration_ms for t in last_1000_traces]
print('p50:', np.percentile(durations, 50))
print('p95:', np.percentile(durations, 95))
print('p99:', np.percentile(durations, 99))每位用户的成本
按 user_id 每日汇总成本:
SELECT user_id, SUM(cost_usd) AS daily_cost
FROM traces
WHERE created_at::date = current_date
GROUP BY user_id
ORDER BY daily_cost DESC
LIMIT 100每个步骤名称的成本
哪些步骤占据了主要成本?按名称分组:
SELECT name, SUM(cost_usd) AS total
FROM spans
WHERE trace_id IN (SELECT id FROM traces WHERE created_at::date = current_date)
GROUP BY name
ORDER BY total DESC延迟瀑布图
对于单个 trace,绘制 span 的甘特图式瀑布图。最长的条形就是您的瓶颈。
大多数 trace 界面都会自动渲染此图。
针对异常值发出警报
- 如果 p95 延迟环比翻倍,则发出警报
- 如果每日成本超过正常值的 2 倍,则发出警报
- 如果任何单个用户每天的成本超过 $X,则发出警报
比较两个模型
逐步指标可以让您对模型进行 A/B 比较:
# Run 100 traces with gpt-4o-mini and 100 with haiku
# Compare p95 latency and average cost
# Pick the winner for the use case
print("Run 100 traces with gpt-4o-mini and 100 with haiku")
print("Compare p95 latency and average cost")
print("Pick the winner for the use case")
跟踪令牌分布
输入令牌与输出令牌的直方图可以揭示问题:例如,持续达到 max_tokens = 输出被截断 = 存在错误。
为什么使用百分位数?
为什么要报告 p95 延迟,而不是平均延迟?
回顾
记录每一步的延迟和成本,并汇总到每个 trace 和每位用户;使用百分位数而不是平均值;针对异常值发出警报。这就是您的仪表板。
常见问题解答
「每个步骤的延迟与成本」课时是免费的吗?
是的 — 「每个步骤的延迟与成本」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AI Agents 课程的其余内容,请升级到 CoddyKit PRO。 AI Agents 课程共包含 4 节课。
「每个步骤的延迟与成本」这节课中我会学到什么?
测量每个节点的令牌用量和实际耗时,从而找出缓慢且昂贵的步骤。 你通过在浏览器中直接运行的动手代码来练习 AI Agents,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 AI Agents 需要有经验吗?
无需任何先前经验。CoddyKit 上的 AI Agents 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「每个步骤的延迟与成本」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 AI Agents 课中编写并运行代码吗?
能。每节 AI Agents 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。