[bot] Google GenAI video generation (generateVideos / Veo) traced with materially less detail than text generation
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 55/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- java
- Ambito
- observability-sre
Direzione di ricerca
Inizia da BraintrustApiClient.java, in particolare da tagSpan e dai quattro override del trasporto, quindi esamina BraintrustGenAITest.java e le API Google GenAI generateVideos e getVideosOperation. Aggiungi una copertura mirata per la generazione di video e verifica che i dettagli della richiesta, la classificazione dello span, le metriche disponibili e il polling delle operazioni a esecuzione prolungata siano rappresentati con la fedeltà prevista.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
The Google GenAI Java SDK (com.google.genai, v1.18.0, the version this module targets) exposes Models.generateVideos(...) (Veo video-generation models) and the associated long-running-operation polling API (client.operations.getVideosOperation(...)). Braintrust's Java GenAI instrumentation intercepts these calls only incidentally, through a generic HTTP-transport hook that was designed for generateContent. The result is spans that are silently mislabeled and largely empty for video generation — not a total absence of spans, but instrumentation with materially less detail/fidelity than the documented generate_content path.
What is missing
BraintrustApiClient (braintrust-sdk/instrumentation/genai_1_18_0/src/main/java/com/google/genai/BraintrustApiClient.java) intercepts every HTTP call made by the SDK by overriding the transport-level methods on ApiClient:
request(String, String, String, Optional<HttpOptions>)— line 186request(String, String, byte[], Optional<HttpOptions>)— line 210asyncRequest(String, String, String, Optional<HttpOptions>)— line 239asyncRequest(String, String, byte[], Optional<HttpOptions>)— line 277
Because this hook is transport-level, a generateVideos call (and each operations.getVideosOperation poll of the resulting long-running operation) does produce a span — but tagSpan (lines 50–161) was written exclusively for the generateContent request/response shape:
- Line 156 unconditionally sets
braintrust.span_attributesto{"type": "llm"}for every call this client makes, including video-generation calls, which are not LLM chat-completion calls. - Lines 65–76 and 81–95 only promote
model/systemInstruction/tools/toolConfig/safetySettings/cachedContentandgenerationConfig.{temperature,topP,topK,candidateCount,maxOutputTokens,stopSequences,responseMimeType,responseSchema}intobraintrust.metadata/input_json.generateVideosrequests use an entirely different shape (instances/parametersorprompt/image/video+ aGenerateVideosConfigwith fields likenumberOfVideos,durationSeconds,aspectRatio,enhancePrompt,personGeneration) — none of these fields are extracted, soinput_jsonfor a video-generation span is effectively empty. - Lines 127–149 only look for
usageMetadata.{promptTokenCount,candidatesTokenCount,totalTokenCount,cachedContentTokenCount}to populatebraintrust.metrics. Video-generation responses have no such field, so metrics are silently skipped (not wrong, just absent) while the span is still taggedtype: llm. generateVideosreturns aGenerateVideosOperationthat is notdoneimmediately; the caller pollsclient.operations.getVideosOperation(...)repeatedly until completion. Each poll produces its own disconnected span (named via URL-derivedgetOperation, e.g.get_videos_operation) rather than being correlated to the originating video-generation request — there is no long-running-operation span model, unlike the single request/response span Braintrust produces forgenerate_content.
There is no reference anywhere in this module (or its tests) to generateVideos, GenerateVideosOperation, GenerateVideosConfig, Veo, or getVideosOperation — confirmed via full-directory grep of braintrust-sdk/instrumentation/genai_1_18_0/.
Braintrust docs status
Checked https://www.braintrust.dev/docs/integrations/ai-providers/gemini (current as of this audit):
- Java section documents only content-generation spans (
generate_content, sync/async) andgenerateContentStream, with request metadata (model, contents, generation config), response, and token metrics. - No mention of video generation,
generateVideos, or Veo models for any language (Java, Python, TypeScript, Go). - Status: not_found — video generation tracing is undocumented for Java (and for every other language) in the current docs.
Upstream sources
- Google GenAI Java SDK repo: https://github.com/googleapis/java-genai —
Modelsclass exposesgenerateVideos(String model, GenerateVideosSource source, GenerateVideosConfig config)andgenerateVideos(String model, String prompt, Image image, Video video, GenerateVideosConfig config). - SDK README usage example (video generation via Veo, polling
operation.done()/client.operations.getVideosOperation): https://github.com/googleapis/java-genai/blob/main/README.md - SDK CHANGELOG entries for video generation support (e.g. "Add backwards compatibility for generateVideos in Java SDK", "Add support for Veo frame interpolation and video extension"): https://github.com/googleapis/java-genai/blob/main/CHANGELOG.md
- Gemini API Veo docs (request/response/config shape —
GenerateVideosConfigfields likenumberOfVideos,durationSeconds,aspectRatio): https://ai.google.dev/gemini-api/docs/veo - Java Veo 3 walkthrough (async polling pattern): https://glaforge.dev/posts/2025/09/10/generating-videos-in-java-with-veo3/
Local files inspected
braintrust-sdk/instrumentation/genai_1_18_0/src/main/java/com/google/genai/BraintrustApiClient.java— full file read;tagSpan(lines 50–161) and the four transport overrides (lines 186, 210, 239, 277) are the only interception points, and are generateContent-shaped.braintrust-sdk/instrumentation/genai_1_18_0/src/test/java/dev/braintrust/instrumentation/genai/v1_18_0/BraintrustGenAITest.java— only tests syncgenerateContent; no video-generation test coverage.- Full-directory grep of
braintrust-sdk/instrumentation/genai_1_18_0/forgenerateImages|GenerateImages|predictLongRunning|generate_videos|video— zero matches.
- 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
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di braintrustdata/braintrust-sdk-java
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
Tutte le issue di braintrustdata/braintrust-sdk-java
Issue simili
-
certification
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 80/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
[BUG] ECR GetAuthorizationToken returns a proxyEndpoint for the default region, not the request's Apertabug ecr
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
Needs: Triage Type: Feature request
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
AntennaPod/AntennaPod#8794 ·
-
agentic-workflows
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
github/copilot-sdk#2760 ·