Skip to content

ADK Java OTel spans do not expose tool-call execution correctly in Langfuse/OpenInference #1235

@akbarkanso

Description

@akbarkanso

🔴 Required Information

Describe the Bug:
ADK Java traces exported to Langfuse via OTLP show call_llm spans, but tool-call execution is not represented correctly: tools appear as "not called", and execute_tool visibility/payload mapping is missing or inconsistent even when tools were actually invoked.

Steps to Reproduce:

  1. Create an ADK Java agent with MCP tools (for example, list_premerge_failed_tests_by_job and list_unhealthy_tests).
  2. Configure OpenTelemetry export to Langfuse using OtlpHttpSpanExporter.
  3. Run an agent prompt that should invoke those tools.
  4. Open the resulting trace in Langfuse UI and inspect the call_llm observation and tool section.
  5. Observe that tools are displayed as "not called" and no reliable execute_tool observation/payload is shown.

Expected Behavior:
When tools execute, Langfuse should show them as called, include execute_tool observation visibility, and render tool request/response payloads correctly.

Observed Behavior:

  • call_llm is visible in timeline.
  • Tools are shown as "not called" in the same trace.
  • Tool-call visibility/payload mapping is missing or inconsistent.
  • No crash, but observability is incorrect/incomplete for tool execution.

Environment Details:

  • ADK Library Version (see maven dependency): com.google.adk:google-adk:1.2.0 (google-adk-spring-ai:1.2.0)
  • OS: macOS
  • TS Version (tsc --version): N/A (Java integration)

Model Information:

  • Which model is being used: qwen-3.5-122b

🟡 Optional Information

Regression:
Unknown.

Logs:

Langfuse UI observation:
- call_llm span present
- Tools section shows entries as "not called"
- Agent output text indicates tools were expected/executed in flow

Screenshots / Video:

Image

Additional Context:

  • ADK Java appears to emit ADK-specific attributes (e.g. gcp.vertex.agent.tool_call_args, gcp.vertex.agent.tool_response, gcp.vertex.agent.llm_request, gcp.vertex.agent.llm_response).
  • Langfuse/OpenInference expects standard tool/IO mapping on spans (e.g. input.value, output.value) for reliable rendering.

Minimal Reproduction Code:

// Pseudocode reproduction shape:
// 1) Build LlmAgent with MCP tools
// 2) Enable OTLP export to Langfuse
// 3) Trigger prompt that should call tools
// 4) Inspect Langfuse trace: call_llm visible, tools shown as "not called"

How often has this issue occurred?:

  • 100%

Metadata

Metadata

Assignees

No fields configured for Feature.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions