Skip to content

[BUG][GroupChat][The decide prompt silence bias ends most rooms after a single message] #2060

Description

@kyegomez

Summary

GROUPCHAT_DECIDE_PROMPT pushes so hard toward silence that a room typically ends after one message. Agents bid enthusiastically on the opening turn, then all bid 0.0 on the next, and the chat stops on the lull. This holds even with deliberately opposed personas instructed to rebut each other.

Filing as a tuning question rather than a defect — the selectivity is clearly intentional, but the current balance makes multi-turn discussion rare.

Observed

Three agents (Optimist / Skeptic / Pragmatist), threshold=0.15, recency_penalty=0.5, max_loops=6, live model. Instrumenting _decide_sync:

turn 1   BID Skeptic:    score=0.86
         BID Optimist:   score=0.93   <- takes the floor
         BID Pragmatist: score=0.86
turn 2   BID Optimist:   score=0.00
         BID Pragmatist: score=0.00
         BID Skeptic:    score=0.00

Result: one posted message, then the chat ends.

Repeated with two agents given directly opposed system prompts ("multi-agent AI is ALWAYS worth it" / "NEVER worth it for small teams", each told to rebut the previous speaker directly) and recency_penalty=0.6 — same outcome, one message.

Why

swarms/prompts/groupchat_prompt.py states:

Decide whether to speak. Silence is the default — most messages do NOT warrant
a reply from you. Only respond when you genuinely add value.

and lists among the score-low criteria:

  - Your point would echo or paraphrase something already said.
  - The conversation is already converging and you'd just pile on.

Because all agents bid on the same opening question, their intended contributions overlap heavily. Once the winner posts, every remaining agent correctly judges its own point as an echo and goes silent. The mechanism is working exactly as written — the prompt just makes the second turn nearly unreachable.

Worth considering

  • Soften the silence framing after the first turn, or scale it by how many turns have been posted.
  • Give the bidder its own unspoken draft to compare against what was actually said, rather than judging "would this echo?" abstractly.
  • Let threshold genuinely control liveliness — currently lowering it to 0.15 does not help, because the scores are 0.0, not merely low.
  • Document the expected behaviour, so max_loops=20 (the default) does not read as "expect ~20 messages" when one or two is typical.

Note the current GROUPCHAT_DECIDE_PROMPT no longer contains a {history} placeholder — the conversation is delivered as typed turns — so any retuning should assume the room is visible in the message list rather than inlined in the prompt.

Found at 3e89f27b (v14.0.2).

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions