活动合约
查询期望的字段
| 字段 | 类型 | 为什么存在 |
|---|---|---|
| timestamp_utc | Timestamp | 工具调用完成时间。 |
| run_id | Utf8 | 一次智能体运行的稳定标识符。 |
| agent_name | Utf8 | 智能体工作流名称。 |
| tool_name | Utf8 | 称为工具名称。 |
| status | Utf8 | 工具调用结果。 |
| estimated_cost_usd | Float64 | 成本归因于该步骤(如果可用)。 |
DataFusion SQL
复制查询
sql
SELECT
run_id,
agent_name,
COUNT(*) AS tool_calls,
COUNT(DISTINCT tool_name) AS distinct_tools,
SUM(CASE WHEN status = 'failed' THEN 1 ELSE 0 END) AS failed_calls,
SUM(estimated_cost_usd) AS tool_loop_cost_usd,
MIN(timestamp_utc) AS first_call_at,
MAX(timestamp_utc) AS last_call_at
FROM agent_tool_calls
WHERE timestamp_utc >= now() - INTERVAL '24 hours'
GROUP BY run_id, agent_name
HAVING COUNT(*) >= 8
AND COUNT(DISTINCT tool_name) <= 2
ORDER BY tool_calls DESC, tool_loop_cost_usd DESC
LIMIT 100;此只读查询是针对空类型表计划和执行的 阿帕奇 DataFusion 45.2.0。确定性样本输出是综合的并单独审查;根据您自己的数据验证字段类型、阈值和业务定义。 阅读测试方法。
查询结果
智能体运行重复调用工具
计费调节器仅通过两个工具进行了 17 次调用,但其中近一半失败了。
run_9021
17
comparison 8
run_9154
11
comparison 0
| run_id | agent_name | tool_calls | distinct_tools | failed_calls | tool_loop_cost_usd | first_call_at | last_call_at |
|---|---|---|---|---|---|---|---|
| run_9021 | billing_reconciler | 17 | 2 | 8 | 0.84 | 12:02:11 | 12:06:48 |
| run_9154 | support_agent | 11 | 1 | 0 | 0.31 | 12:44:10 | 12:45:32 |
综合示例输出。在将其用于操作决策之前,针对您自己的事件架构和阈值运行查询。
SQL 是如何工作的
- 1循环候选者结合了高调用次数和极低的工具多样性。
- 2失败的调用将显式重试循环与从不提升状态的重复成功调用区分开来。
- 3成本和经过的时间戳显示了循环的财务和延迟影响。
需要决定的边缘情况
- 一些批处理智能体可以多次合法地调用一种工具;按智能体工作流程和预期项目数进行细分。
- 循环阈值应包括生产中的最大运行时间或状态转换。
- 不要记录原始工具参数或返回的客户内容来诊断循环。
推荐仪表板
- 酒吧:tool_calls by run_id
- 统计:可疑循环和归因成本
- 表:所选运行的工具序列、状态和分类错误
让查询示例发挥作用
相关埋点和指南
定义源数据
此分析的事件模式
继续分析
在真实事件中运行它
创建表,调整字段并保存结果
免费开始,发送结构化事件,并将查询结果用作图表、共享仪表板小部件或警报输入。