agentscope-ai / agentscope-ai/agentscope-java

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

Abierto
#2,351 1 comentario 0 reacciones 0 asignados Ver en GitHub
area/core/model area/core/tool bug
Lenguaje dominante
Java
Estrellas
5.6k
Forks
1.3k
Merge medio
4 d 12 h
PR fusionados (30 d)
77

Descripción

## 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.

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.