agentscope-ai / agentscope-ai/agentscope-java

[Bug]: Gemini formatter splits parallel function responses into multiple user contents

Offen
#2,351 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
area/core/model area/core/tool bug
Vorherrschende Sprache
Java
Sterne
5.6k
Forks
1.3k
Ø Merge
4 T. 12 Std.
Gemergte PRs (30 T.)
77

Beschreibung

## Describe the bug

Gemini function calling requires responses to parallel function calls to be returned together in one `Content` with `role: "user"`. `GeminiMessageConverter#convertMessages` currently appends an independent user content block for every `ToolResultBlock`.

## To Reproduce

1. Construct one `Msg` with `MsgRole.TOOL` and two `ToolResultBlock` instances.
2. Convert it with `GeminiMessageConverter#convertMessages`.
3. Observe two user contents, each containing one `FunctionResponse` part.

## Expected behavior

The converter should emit one `Content(role=user)` containing both `FunctionResponse` parts in their original order.

## Actual behavior

The converter emits one user content per tool result. This violates Gemini's parallel function-calling response grouping contract and can cause a replayed tool turn to be rejected or interpreted incorrectly.

## Scope

This is intentionally separate from #2335, which addresses Gemini thinking and thought-signature persistence. The issue concerns grouping of parallel tool results only.

## Proposed fix

Buffer function-response parts while converting one source `Msg`, then emit a single user content block before regular message parts. A regression test covers two tool results in one message.

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.