agentscope-ai / agentscope-ai/agentscope-java

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

Aberta
#2,351 1 comentário 0 reações 0 responsáveis Ver no GitHub
area/core/model area/core/tool bug
Linguagem predominante
Java
Estrelas
5.6k
Forks
1.3k
Merge médio
4d 12h
PRs com merge (30d)
77

Descrição

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

Guia de contribuição

Abrir o guia de contribuição

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.