diff --git a/core/src/main/java/com/google/adk/models/Gemini.java b/core/src/main/java/com/google/adk/models/Gemini.java index 74cf78b98..b327063f9 100644 --- a/core/src/main/java/com/google/adk/models/Gemini.java +++ b/core/src/main/java/com/google/adk/models/Gemini.java @@ -239,7 +239,7 @@ public Flowable generateContent(LlmRequest llmRequest, boolean stre p -> p.functionCall().isPresent() || p.functionResponse().isPresent() - || p.text().map(t -> !t.isBlank()).orElse(false))) + || p.text().isPresent())) .orElse(false)); } else { logger.debug("Sending generateContent request to model {}", effectiveModelName); @@ -272,11 +272,17 @@ static Flowable processRawResponses(Flowable 0 @@ -316,11 +322,20 @@ static Flowable processRawResponses(Flowable finalResponses = new ArrayList<>(); if (accumulatedThoughtText.length() > 0) { finalResponses.add( - thinkingResponseFromText(accumulatedThoughtText.toString())); + thinkingResponseFromText(accumulatedThoughtText.toString()).toBuilder() + .usageMetadata( + accumulatedText.length() > 0 + ? Optional.empty() + : finalRawResp.usageMetadata()) + .build()); } if (accumulatedText.length() > 0) { - finalResponses.add(responseFromText(accumulatedText.toString())); + finalResponses.add( + responseFromText(accumulatedText.toString()).toBuilder() + .usageMetadata(finalRawResp.usageMetadata()) + .build()); } + return Flowable.fromIterable(finalResponses); } return Flowable.empty();