diff --git a/core/src/main/java/com/google/adk/flows/llmflows/Contents.java b/core/src/main/java/com/google/adk/flows/llmflows/Contents.java index 0289389b9..8c719e145 100644 --- a/core/src/main/java/com/google/adk/flows/llmflows/Contents.java +++ b/core/src/main/java/com/google/adk/flows/llmflows/Contents.java @@ -416,6 +416,17 @@ private static List rearrangeEventsForAsyncFunctionResponsesInHistory(Lis } } } else { + // Exclude events that contain function response parts; + // Each valid function response event will be added within the function call handling logic. + // Bad case: FC1,FR1,FR2,FC2 -> FC1,FR1,FR2,FC2,FR2; FR2 is added duplicate + boolean hasFunctionResponse = + partsOptional + .map(parts -> parts.stream().anyMatch(p -> p.functionResponse().isPresent())) + .orElse(false); + + if (hasFunctionResponse) { + continue; + } resultEvents.add(event); } }