Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

[bot] Spring AI tool/function execution produces no span — only the surrounding chat model call is traced

Abierto
#159 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
38/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Tranquilo
Stack tecnológico
java
Área
ai, observability

Línea de trabajo

Comienza con BraintrustSpringAI.java y los archivos auto/*InstrumentationModule.java correspondientes en springai_1_0_0 y springai_2_0_0, y luego compara con TracingToolExecutor de langchain_1_8_0. Traza la ruta de ejecución de ToolCallingManager y ToolCallback de Spring AI. Se considera terminado cuando cada invocación de herramienta local tiene un span dedicado en ambos módulos compatibles, junto con los spans existentes de llamadas al modelo.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Summary

Both Spring AI instrumentation modules (springai_1_0_0, springai_2_0_0) only wrap OpenAiChatModel.Builder/AnthropicChatModel.Builder construction (BraintrustSpringAI.wrap()). Spring AI's own local tool-execution machinery — ToolCallingManager/DefaultToolCallingManager, the auto-registered ToolCallingAdvisor, and ToolCallback/MethodToolCallback/FunctionToolCallback — is never touched by either module. When a model response triggers a tool call, Spring AI resolves and invokes the corresponding Java method in-process, but that invocation produces no span: only the LLM call that requested the tool and the follow-up LLM call that consumes the result are traced, with the actual tool execution invisible in between.

This is distinct from the already-filed streaming-reassembly bugs (#78 Anthropic SSE tool_use/thinking blocks, #79 OpenAI SSE tool_calls delta-merging) — those are about the LLM span's own tool_calls output being malformed during streaming. This gap is about the absence of a separate span for the tool's actual execution, which is the "tool-calling during model execution" surface itself, comparable to langchain_1_8_0's TracingToolExecutor which does instrument LangChain4j's equivalent local tool execution.

What is missing

A full-repo search for ToolCalling, ToolCallback, and toolCall under both springai_1_0_0 and springai_2_0_0 returns zero matches. BraintrustSpringAI.java in both modules exposes exactly one entry point:

public static <T> T wrap(OpenTelemetry openTelemetry, T chatModelBuilder) { ... }

which only instruments chat model construction. Neither module registers any instrumentation for:

  • ToolCallingManager.executeToolCalls() — the method that actually resolves and invokes tool callbacks in response to a model's tool-call request
  • ToolCallingAdvisor — the ChatClient advisor auto-registered whenever tools are present, which drives the resolve/execute loop
  • ToolCallback.call() (and its MethodToolCallback/FunctionToolCallback implementations) — the actual per-tool invocation point

For comparison, langchain_1_8_0 instruments LangChain4j's analogous local-execution surface via TracingToolExecutor, producing a dedicated span per tool call — Spring AI has no equivalent.

Braintrust docs status

Upstream sources

Local files inspected

  • braintrust-sdk/instrumentation/springai_1_0_0/src/main/java/dev/braintrust/instrumentation/springai/v1_0_0/BraintrustSpringAI.java — single wrap(OpenTelemetry, T chatModelBuilder) entry point (line 61); no tool-calling instrumentation
  • braintrust-sdk/instrumentation/springai_1_0_0/src/main/java/dev/braintrust/instrumentation/springai/v1_0_0/auto/SpringAIOpenAIInstrumentationModule.java and SpringAIAnthropicInstrumentationModule.java — only instrument the two chat model builders
  • braintrust-sdk/instrumentation/springai_2_0_0/src/main/java/dev/braintrust/instrumentation/springai/v2_0_0/BraintrustSpringAI.java, SpringAIOpenAI.java, SpringAIAnthropic.java, and their auto/*InstrumentationModule.java — same scope as 1.0.0, no tool-calling instrumentation
  • Full-repo grep for ToolCalling, ToolCallback, toolCall scoped to both Spring AI modules — zero matches
  • braintrust-sdk/instrumentation/langchain_1_8_0/ — confirmed as the comparison point: this module does instrument LangChain4j's equivalent local tool-execution surface (TracingToolExecutor)
Lenguaje dominante
Java
Estrellas
21
Forks
5
Merge medio
2 d 7 h
PR fusionados (30 d)
8

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de braintrustdata/braintrust-sdk-java

Todos los issues de braintrustdata/braintrust-sdk-java

Issues similares

Más issues de Java

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.