Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Bedrock/Gemini: one user message per tool result breaks role alternation

Aperta Adatta ai principianti
#223 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
85/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
rust
Ambito
backend

Direzione di ricerca

Inizia esaminando la logica di costruzione dei messaggi in provider/bedrock.rs (righe ~1282-1320), provider/google.rs (~512-545) e provider/google_vertex.rs per identificare dove vengono emessi messaggi separati con lo stesso ruolo per i risultati degli strumenti. Implementa un piccolo helper condiviso che aggiunge blocchi di contenuto al messaggio precedente quando ha lo stesso ruolo, quindi aggiorna ogni builder per utilizzare questo helper. Aggiungi un test unitario che costruisca un corpo di richiesta da un messaggio dell'assistente con 2 chiamate a strumenti, 2 risultati di strumenti e un messaggio di guida successivo, verificando l'alternanza stretta dei ruoli, quindi esegui la suite di test del provider per verificare l'assenza di regressioni.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

help wanted

From the 2026-10-05 codebase review (verified for Bedrock, reported for Gemini).

Bedrock

  • build_bedrock_body (provider/bedrock.rs ~1282-1320) pushes a separate {"role":"user"} message for each ToolResult.
  • Nothing merges adjacent same-role messages.
  • The loop and compaction also put user-role messages back to back:
    • tool results followed by the stop marker, the loop nudge or a steering message;
    • level-2 [Summary] messages.

Converse requires roles to alternate, with all of a turn's toolResults in one message. So the request after any parallel tool call (the default strategy) is expected to fail with a ValidationException. This has stayed invisible because Bedrock has only been tested with mock frames.

Gemini / Vertex

  • google.rs ~512-545 and google_vertex.rs likewise emit one functionResponse turn per tool result.
  • Gemini expects the function responses to match the function calls of the turn.

Fix

In each body builder, append content blocks to the previous message when it has the same role. A shared helper of about 10 lines covers it. Add a test that builds a body from [assistant with 2 tool calls, 2 tool results, a steering message] and asserts strict alternation.

Needs a live run to confirm. No Bedrock or Gemini credentials are available right now.

Lingua principale
Rust
Stelle
327
Fork
46
Merge medio
2h 25m
PR unite (30g)
159

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di yologdev/yoagent

Tutte le issue di yologdev/yoagent

Issue simili

Altre issue su Rust

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.