From 64e8ceb7f0816609324bc2ee418c6cfbec2f78bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AC=A3=E5=AE=87?= Date: Wed, 3 Dec 2025 11:27:49 +0800 Subject: [PATCH] fix rearrangeEventsForAsyncFunctionResponsesInHistory method, avoid adding duplicate FR event in some case --- .../java/com/google/adk/flows/llmflows/Contents.java | 11 +++++++++++ 1 file changed, 11 insertions(+) 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); } }