Summary
Tool calls inside sub-agents nested under ParallelAgent or SequentialAgent are not captured by setup_adk() — tool_calls always shows 0 in experiment results even when tools are being invoked.
Agent structure
root_agent = SequentialAgent(
sub_agents=[
ParallelAgent(
sub_agents=[
Agent(tools=[my_tool], ...), # tool calls here are not traced
]
),
Agent(...),
]
)
Steps to reproduce
- Call
setup_adk() before running an ADK pipeline with the above structure
- Run an eval via
braintrust.EvalAsync()
- Observe that
tool_calls is 0 in the experiment summary, even when tools are demonstrably being invoked (e.g. eval scores that depend on tool output are correct)
Expected behavior
Tool calls inside sub-agents at any nesting depth should be traced and counted by setup_adk(), consistent with how LLM calls are traced across all nesting levels.
Actual behavior
llm_calls correctly reflects calls at all nesting levels, but tool_calls is always 0 for tools that live inside ParallelAgent or SequentialAgent sub-agents.
Summary
Tool calls inside sub-agents nested under
ParallelAgentorSequentialAgentare not captured bysetup_adk()—tool_callsalways shows0in experiment results even when tools are being invoked.Agent structure
Steps to reproduce
setup_adk()before running an ADK pipeline with the above structurebraintrust.EvalAsync()tool_callsis0in the experiment summary, even when tools are demonstrably being invoked (e.g. eval scores that depend on tool output are correct)Expected behavior
Tool calls inside sub-agents at any nesting depth should be traced and counted by
setup_adk(), consistent with how LLM calls are traced across all nesting levels.Actual behavior
llm_callscorrectly reflects calls at all nesting levels, buttool_callsis always0for tools that live insideParallelAgentorSequentialAgentsub-agents.