Agents discuss a proposal for a fixed number of rounds (everyone speaks each round, seeing the discussion so far), then vote independently and privately through structured output. The tidy return supports comparing votes cast after deliberation with positions voiced during it.
Usage
deliberate(
agents,
proposal,
rounds = 2L,
options = c("yes", "no", "abstain"),
msg_mode = NULL,
quiet = FALSE,
...
)Arguments
- agents
A list of Agents.
- proposal
The proposal under deliberation (character scalar).
- rounds
Discussion rounds before the vote (default 2).
- options
Vote options. Default
c("yes", "no", "abstain").- msg_mode
Message construction,
"roleflip"(default) or"flat";NULLusesgetOption("LLMRagent.msg_mode"). Seeconversation().- quiet
FALSE prints the deliberation live.
- ...
Passed to the underlying LLMR calls.
Value
An object of class agent_deliberation: a list with transcript
(tibble: turn, round, speaker, text), votes (tibble: voter,
vote, reason), tally (table), decision (modal vote, NA on ties),
and proposal. as.data.frame() returns the transcript.
Examples
if (FALSE) { # \dontrun{
cfg <- LLMR::llm_config("groq", "openai/gpt-oss-20b", temperature = 0.9)
panel <- list(
agent("Aila", cfg, persona = "Data-driven, cautious about side effects."),
agent("Bo", cfg, persona = "Mission-driven, impatient with delay."),
agent("Cyn", cfg, persona = "A budget hawk.")
)
d <- deliberate(panel, "Adopt a four-day work week for one pilot year.")
d$tally; d$decision
} # }