google / google/adk-java

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

Đang mở
#1,235 3 bình luận 0 reaction 1 người được giao Được @hemasekhar-p nhận Xem trên GitHub
needs review
Ngôn ngữ chính
Java
Star
1.7k
Fork
420
Merge trung bình
4 ngày 12 giờ
Pull request đã merge (30 ngày)
31

Mô tả

## 🔴 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%

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.