diff --git a/core/src/main/java/com/google/adk/models/GeminiUtil.java b/core/src/main/java/com/google/adk/models/GeminiUtil.java index c3c38fa88..501b279b1 100644 --- a/core/src/main/java/com/google/adk/models/GeminiUtil.java +++ b/core/src/main/java/com/google/adk/models/GeminiUtil.java @@ -17,6 +17,7 @@ import static com.google.common.collect.ImmutableList.toImmutableList; +import com.google.common.base.Ascii; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; @@ -128,7 +129,8 @@ public static LlmRequest sanitizeRequestForGeminiApi(LlmRequest llmRequest) { */ static List ensureModelResponse(List contents) { // Last content must be from the user, otherwise the model won't respond. - if (contents.isEmpty() || !Iterables.getLast(contents).role().orElse("").equals("user")) { + if (contents.isEmpty() + || !Ascii.equalsIgnoreCase(Iterables.getLast(contents).role().orElse(""), "user")) { Content userContent = Content.builder() .parts(ImmutableList.of(Part.fromText(CONTINUE_OUTPUT_MESSAGE))) diff --git a/core/src/test/java/com/google/adk/models/GeminiUtilTest.java b/core/src/test/java/com/google/adk/models/GeminiUtilTest.java index 99df2cb50..0fae0767c 100644 --- a/core/src/test/java/com/google/adk/models/GeminiUtilTest.java +++ b/core/src/test/java/com/google/adk/models/GeminiUtilTest.java @@ -427,6 +427,17 @@ public void ensureModelResponse_userRoleIsLast_returnsSameList() { assertThat(result).containsExactly(modelContent, userContent).inOrder(); } + @Test + public void ensureModelResponse_userRoleIsLastCaseInsensitive_returnsSameList() { + Content modelContent = Content.builder().role("model").build(); + Content userContent = Content.builder().role("USER").build(); + ImmutableList contents = ImmutableList.of(modelContent, userContent); + + List result = GeminiUtil.ensureModelResponse(contents); + + assertThat(result).containsExactly(modelContent, userContent).inOrder(); + } + @Test public void ensureModelResponse_lastContentIsNotUser_appendsContinueMessage() { Content modelContent1 = Content.builder().role("model").build();