Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

[bot] Google GenAI `generateImages` spans missing prompt input and use wrong span type

Aperta
#121 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
74/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Tranquilla
Stack tecnologico
java
Ambito
observability

Direzione di ricerca

Inizia da braintrust-sdk/instrumentation/genai_1_18_0/src/main/java/com/google/genai/BraintrustApiClient.java, in particolare da tagSpan alle righe 97–161, e controlla BraintrustGenAITest.java per le asserzioni sugli span già esistenti. Aggiungi la copertura per il parsing delle richieste e delle risposte di generateImages, inclusi prompt, i metadati di generazione delle immagini e una categorizzazione appropriata dello span; il lavoro è completato quando il test verifica che questi valori vengano acquisiti, invece dell'attuale comportamento limitato a generateContent.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Summary

When client.models.generateImages() is called through the instrumented Google GenAI client, a span is created (the call goes through ApiClient.request()), but the span contains no useful input data. The tagSpan() method in BraintrustApiClient only extracts fields specific to generateContent (contents, generationConfig, usageMetadata), which are absent from image generation requests and responses.

The result:

  • input_json only has {model: "..."} — the actual prompt text is not captured. This is the primary creative input and the most important thing to trace for image generation.
  • No metrics — image generation responses use response-level metadata (not usageMetadata), so no token or character counts are captured.
  • Wrong span type — hardcoded type: "llm" instead of something appropriate for image generation.

This is analogous to the embedContent gap tracked in #65, where calls are intercepted at HTTP level but parsed with the wrong field schema.

Braintrust already documents and traces generate_images for the Python SDK. The Java SDK makes the same API calls but the span tagging logic was never extended to handle them.

What is missing

BraintrustApiClient.tagSpan() (lines 50–161) handles only generateContent fields:

Request parsing (lines 97–113):

if (requestJson.containsKey("contents")) {          // generateContent field — not present in generateImages
    inputJson.put("contents", requestJson.get("contents"));
}
if (requestJson.containsKey("generationConfig")) {   // generateContent field — not present in generateImages
    inputJson.put("config", requestJson.get("generationConfig"));
}

A generateImages request body looks like:

{
  "prompt": "A photorealistic cat sitting on a moon",
  "config": {
    "numberOfImages": 2,
    "aspectRatio": "16:9",
    "negativePrompt": "blurry, low quality"
  }
}

Neither prompt nor config.numberOfImages/config.aspectRatio are extracted. The input_json stored in the span ends up as {model: "imagen-3.0-generate-001"} only — the prompt is silently dropped.

Response parsing (lines 116–149):

if (responseJson.get("usageMetadata") instanceof Map) {   // not present in generateImages responses
    ...
}

generateImages responses return generatedImages[].image.imageBytes (base64) and generatedImages[].generationParameters. No usageMetadata is present, so the metrics block is empty.

Span attributes (line 156):

span.setAttribute("braintrust.span_attributes", toJson(Map.of("type", "llm")));

Image generation is not an LLM call. Braintrust's Python tracer uses a different span categorization for image generation spans.

Braintrust docs status

Upstream sources

  • Google GenAI Java SDK generateImages: client.models.generateImages(String model, String prompt, GenerateImagesConfig config) — stable API, available in genai-java v1.18.0 (the version this module targets)
  • Imagen API reference: https://ai.google.dev/api/generate-images — documents prompt, config (numberOfImages, aspectRatio, negativePrompt, safetyFilterLevel, personGeneration), and generatedImages response format
  • Braintrust Python tracing: generate_images and async variants are explicitly listed as traced surfaces at https://www.braintrust.dev/docs/integrations/ai-providers/gemini

Local files inspected

  • braintrust-sdk/instrumentation/genai_1_18_0/src/main/java/com/google/genai/BraintrustApiClient.java — lines 97–113 (tagSpan input parsing: only contents/generationConfig extracted; prompt field absent); lines 116–149 (response parsing: only usageMetadata checked; missing for image responses); line 156 (hardcoded type: "llm")
  • braintrust-sdk/instrumentation/genai_1_18_0/src/test/java/dev/braintrust/instrumentation/genai/v1_18_0/BraintrustGenAITest.java — no generateImages test exists
Lingua principale
Java
Stelle
21
Fork
5
Merge medio
2g 7h
PR unite (30g)
8

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di braintrustdata/braintrust-sdk-java

Tutte le issue di braintrustdata/braintrust-sdk-java

Issue simili

Altre issue su Java

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.