From b9a726a81f5289f897b7205fe44defa227b36ae0 Mon Sep 17 00:00:00 2001 From: Vaidya Date: Tue, 11 Aug 2026 08:28:32 +0530 Subject: [PATCH 1/3] Use audio/video realtime input instead of deprecated media. Gemini Live rejects media_chunks (SDK .media()) with close 1007 on newer models such as gemini-3.1-flash-live-preview. Route Blob input to .audio() or .video() by MIME type. Co-authored-by: Cursor --- .../com/google/adk/models/GeminiLlmConnection.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/com/google/adk/models/GeminiLlmConnection.java b/core/src/main/java/com/google/adk/models/GeminiLlmConnection.java index 35dadd9fd..b854cdd58 100644 --- a/core/src/main/java/com/google/adk/models/GeminiLlmConnection.java +++ b/core/src/main/java/com/google/adk/models/GeminiLlmConnection.java @@ -285,11 +285,16 @@ private List extractFunctionResponses(Content content) { @Override public Completable sendRealtime(Blob blob) { + // Live API deprecated realtime_input.media_chunks (SDK .media()). Use audio/video/text. + LiveSendRealtimeInputParameters.Builder params = LiveSendRealtimeInputParameters.builder(); + String mimeType = blob.mimeType().orElse(""); + if (mimeType.startsWith("image/") || mimeType.startsWith("video/")) { + params.video(blob); + } else { + params.audio(blob); + } return Completable.fromFuture( - sessionFuture.thenCompose( - session -> - session.sendRealtimeInput( - LiveSendRealtimeInputParameters.builder().media(blob).build()))); + sessionFuture.thenCompose(session -> session.sendRealtimeInput(params.build()))); } /** Helper to send client content parameters. */ From 2ef8fc41515d26205c19791c0375f670e72fe054 Mon Sep 17 00:00:00 2001 From: Vaidya Date: Tue, 11 Aug 2026 08:41:53 +0530 Subject: [PATCH 2/3] Stamp Ollama LlmResponse.modelVersion from configured model name. Populate modelVersion on non-stream, stream aggregate, function-call, and partial text responses so token logging can resolve the model. Co-authored-by: Cursor --- core/src/main/java/com/google/adk/models/OllamaBaseLM.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/core/src/main/java/com/google/adk/models/OllamaBaseLM.java b/core/src/main/java/com/google/adk/models/OllamaBaseLM.java index abd6126c7..13d439c20 100644 --- a/core/src/main/java/com/google/adk/models/OllamaBaseLM.java +++ b/core/src/main/java/com/google/adk/models/OllamaBaseLM.java @@ -336,6 +336,9 @@ public Flowable generateContent(LlmRequest llmRequest, boolean stre if (usageMetadata != null) { responseBuilder.usageMetadata(usageMetadata); } + // Populate modelVersion so downstream token logging (e.g. rae_tokens) can resolve + // the model name instead of falling back to "unknown". + responseBuilder.modelVersion(this.model()); return Flowable.just(responseBuilder.build()); } @@ -590,6 +593,7 @@ private Flowable createRobustStreamingResponse( if (usageMetadata != null) { aggregatedResponseBuilder.usageMetadata(usageMetadata); } + aggregatedResponseBuilder.modelVersion(this.model()); responsesToEmit.add(aggregatedResponseBuilder.build()); } @@ -612,6 +616,7 @@ private Flowable createRobustStreamingResponse( if (usageMetadata != null) { functionResponseBuilder.usageMetadata(usageMetadata); } + functionResponseBuilder.modelVersion(this.model()); responsesToEmit.add(functionResponseBuilder.build()); } catch (Exception funcEx) { @@ -653,6 +658,7 @@ private LlmResponse createTextResponse(String text, boolean partial) { return LlmResponse.builder() .content(Content.builder().role("model").parts(Part.fromText(text)).build()) .partial(partial) + .modelVersion(this.model()) .build(); } From d7a6b2b778630beff7c454f0a9aec76bba905e97 Mon Sep 17 00:00:00 2001 From: Vaidya Date: Tue, 11 Aug 2026 10:35:13 +0530 Subject: [PATCH 3/3] Revert "Use audio/video realtime input instead of deprecated media." This reverts commit b9a726a81f5289f897b7205fe44defa227b36ae0. --- .../com/google/adk/models/GeminiLlmConnection.java | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/core/src/main/java/com/google/adk/models/GeminiLlmConnection.java b/core/src/main/java/com/google/adk/models/GeminiLlmConnection.java index b854cdd58..35dadd9fd 100644 --- a/core/src/main/java/com/google/adk/models/GeminiLlmConnection.java +++ b/core/src/main/java/com/google/adk/models/GeminiLlmConnection.java @@ -285,16 +285,11 @@ private List extractFunctionResponses(Content content) { @Override public Completable sendRealtime(Blob blob) { - // Live API deprecated realtime_input.media_chunks (SDK .media()). Use audio/video/text. - LiveSendRealtimeInputParameters.Builder params = LiveSendRealtimeInputParameters.builder(); - String mimeType = blob.mimeType().orElse(""); - if (mimeType.startsWith("image/") || mimeType.startsWith("video/")) { - params.video(blob); - } else { - params.audio(blob); - } return Completable.fromFuture( - sessionFuture.thenCompose(session -> session.sendRealtimeInput(params.build()))); + sessionFuture.thenCompose( + session -> + session.sendRealtimeInput( + LiveSendRealtimeInputParameters.builder().media(blob).build()))); } /** Helper to send client content parameters. */