[BOT ISSUE] Google GenAI (Gemini) streaming calls are not instrumented
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 48/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Tranquilo
- Stack tecnológico
- java
- Área
- observability
Línea de trabajo
Comienza con BraintrustApiClient.java en las líneas 186–312 e inspecciona los métodos de streaming de ApiClient upstream que usa generateContentStream. Compara el manejo de SSE y la acumulación de chunks en las implementaciones de TracingHttpClient de OpenAI y Anthropic; después, revisa BraintrustGenAITest.java. El trabajo está terminado cuando las llamadas de streaming de Gemini producen spans, captura de salida y métricas de uso de tokens.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Summary
The Google GenAI instrumentation wraps ApiClient.request() and ApiClient.asyncRequest() for synchronous and asynchronous non-streaming calls, but does not override any streaming methods. Calls to client.models.generateContentStream() and similar streaming APIs bypass the instrumentation entirely, producing no spans, no output capture, and no token usage metrics.
What is missing
BraintrustApiClient.java overrides 4 methods:
request(String, String, String, Optional)(line 186)request(String, String, byte[], Optional)(line 210)asyncRequest(String, String, String, Optional)(line 239)asyncRequest(String, String, byte[], Optional)(line 277)
The upstream ApiClient class in the Google GenAI SDK also has streaming request methods (used internally by generateContentStream) that are not overridden. This means streaming Gemini calls — a common pattern for chat applications — are completely invisible to Braintrust tracing.
For comparison, both the OpenAI and Anthropic instrumentations in this repo handle streaming via SSE detection and chunk accumulation in their respective TracingHttpClient implementations.
Upstream sources
- Google GenAI Java SDK: https://github.com/googleapis/java-genai — streaming is a core feature, with
generateContentStreamavailable since early versions. The SDK is now at v1.46.0 (this repo pins to v1.18.0). - Gemini API streaming docs: https://ai.google.dev/gemini-api/docs/text-generation#generate-a-text-stream
Braintrust docs status
not_found— braintrust.dev/docs does not reference Google GenAI streaming instrumentation for Java. The Java SDK docs page redirects to the GitHub repo.
Local files inspected
braintrust-sdk/instrumentation/genai_1_18_0/src/main/java/com/google/genai/BraintrustApiClient.java— lines 186–312 (only non-streamingrequest/asyncRequestoverridden; no streaming method override)braintrust-sdk/instrumentation/genai_1_18_0/src/main/java/com/google/genai/BraintrustInstrumentation.java— wraps ApiClient in Client and service fields, no streaming awarenessbraintrust-sdk/instrumentation/genai_1_18_0/src/main/java/dev/braintrust/instrumentation/genai/v1_18_0/BraintrustGenAI.java— thin wrapper, delegates to BraintrustInstrumentationbraintrust-sdk/instrumentation/genai_1_18_0/src/test/java/dev/braintrust/instrumentation/genai/v1_18_0/BraintrustGenAITest.java— only tests sync and async non-streaming; no streaming tests exist
- Lenguaje dominante
- Java
- Estrellas
- 21
- Forks
- 5
- Merge medio
- 2 d 7 h
- PR fusionados (30 d)
- 8
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de braintrustdata/braintrust-sdk-java
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Todos los issues de braintrustdata/braintrust-sdk-java
Issues similares
-
certification
Dificultad 1/5 Menos de una hora Aptitud para principiantes 80/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
[BUG] ECR GetAuthorizationToken returns a proxyEndpoint for the default region, not the request's Abiertobug ecr
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Needs: Triage Type: Feature request
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
AntennaPod/AntennaPod#8794 ·
-
agentic-workflows
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
github/copilot-sdk#2760 ·