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

[bot] Google GenAI Multimodal Live API sessions not instrumented

Abierto
#120 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
48/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Tranquilo
Stack tecnológico
java

Línea de trabajo

Comienza con braintrust-sdk/instrumentation/genai_1_18_0/src/main/java/com/google/genai/BraintrustApiClient.java y BraintrustInstrumentation.java; después, inspecciona los puntos de entrada client.aio.live.connect() y AsyncSession de Google GenAI. Compara la instrumentación de solicitudes existente con la Live API basada en WebSocket y usa BraintrustGenAITest.java como punto de partida para las pruebas. La tarea estará terminada cuando las sesiones de Live API y sus interacciones relevantes tengan cobertura de instrumentación sin romper las pruebas existentes de generateContent.

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

Descripción

Summary

The Google GenAI Java SDK has a stable Multimodal Live API (client.aio.live.connect()AsyncSession) that enables real-time, bidirectional text and audio generation over WebSocket. This API surface is completely invisible to the current Braintrust instrumentation because BraintrustApiClient only wraps HTTP-based ApiClient.request() and asyncRequest() methods — WebSocket connections use an entirely separate transport that is never intercepted.

Braintrust already documents Live API tracing for Python (client.aio.live.connect() sessions and "tool calls made during Live API sessions"), but there is no equivalent Java instrumentation.

What is missing

BraintrustApiClient (the core instrumentation class, placed in the com.google.genai package to access package-private ApiClient) overrides exactly four methods:

ApiResponse request(String, String, String, Optional<HttpOptions>)      // line 186
ApiResponse request(String, String, byte[], Optional<HttpOptions>)      // line 210
CompletableFuture<ApiResponse> asyncRequest(String, String, String, ...) // line 239
CompletableFuture<ApiResponse> asyncRequest(String, String, byte[], ...) // line 277

The Live API is not HTTP — it uses WebSocket (WSS) via org.java_websocket.client.WebSocketClient internally. The entry point is:

client.aio.live.connect(model, LiveConnectConfig)    // → CompletableFuture<AsyncSession>

AsyncSession then provides:

  • sendClientContent(LiveSendClientContentParameters) — sends text/content turns
  • sendRealtimeInput(LiveSendRealtimeInputParameters) — streams real-time audio/video input
  • sendToolResponse(LiveSendToolResponseParameters) — responds to model tool calls
  • receive(Consumer<LiveServerMessage>) — registers callback for server messages

None of these are reachable via ApiClient.request(), so no spans are created for Live API sessions.

Why this is a distinct gap from #61

Issue #61 covers generateContentStream() not being instrumented (missing streaming HTTP method overrides). The Live API is fundamentally different:

  • Uses WebSocket (WSS), not HTTP SSE
  • Accessed via client.aio.live, not client.models
  • Supports multi-turn real-time sessions, not single request/response
  • Even if #61 is fixed, Live API sessions would remain completely uninstrumented

Braintrust docs status

Braintrust docs at https://www.braintrust.dev/docs/integrations/ai-providers/gemini document Live API tracing for Python:

  • client.aio.live.connect()supported (Python)
  • "async Live API round-trips" — supported (Python)
  • "tool calls made during Live API sessions" — supported (Python)
  • Java Live API: not_found — no mention in Java SDK documentation

Upstream sources

  • Google GenAI Java SDK Live API: introduced in v0.3.0 (2025-03-28), stable and progressively enhanced through v1.18.0 (the version this module targets) — https://github.com/googleapis/java-genai
  • Google GenAI Java SDK changelog: v0.3.0 "add types for Live API" and "Support Live API", v1.0.0 "add async support for Live API"
  • Gemini Live API docs: https://ai.google.dev/api/multimodal-live — real-time, bidirectional generative execution surface for text and audio

Local files inspected

  • braintrust-sdk/instrumentation/genai_1_18_0/src/main/java/com/google/genai/BraintrustApiClient.java — lines 186–312: only request() and asyncRequest() are overridden; no WebSocket or Live API interception
  • braintrust-sdk/instrumentation/genai_1_18_0/src/main/java/com/google/genai/BraintrustInstrumentation.java — wraps ApiClient into Client; no live client wrapping
  • braintrust-sdk/instrumentation/genai_1_18_0/src/test/java/dev/braintrust/instrumentation/genai/v1_18_0/BraintrustGenAITest.java — tests only sync/async generateContent; no Live API tests
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.