google / google/adk-java

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

Offen
#1,235 3 Kommentare 0 Reaktionen 1 zugewiesene Person Beansprucht von @hemasekhar-p Auf GitHub ansehen
needs review
Vorherrschende Sprache
Java
Sterne
1.7k
Forks
420
Ø Merge
4 T. 12 Std.
Gemergte PRs (30 T.)
31

Beschreibung

## 🔴 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:**
```text
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:**
```java
// 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%

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.