Conversational Multi-Agent Patterns: Agent-to-Agent Chat
Agent-to-agent chat is how AutoGen popularized multi-agent systems: specialists take turns on a shared conversation until a stop condition ends the run.
Search across all documentation pages
Agent-to-agent chat is how AutoGen popularized multi-agent systems: specialists take turns on a shared conversation until a stop condition ends the run.
In Microsoft Agent Framework 1.0 those patterns live primarily as orchestration builders on the workflow stack (sequential, concurrent, Magentic, and related samples) rather than a separate Team runtime forever.
Structure specialists with distinct instructions and tools, choose sequential vs concurrent vs manager-led orchestration, stream events, and enforce round caps so chat cannot thrash.
Agent with unique name, instructions, and least-privilege tools.max_round_count / stall limits where available; always budget tokens and wall time in the host).stream=True and log each participant message with author name.Sequential writer → reviewer conversation (Python shape - verify imports at build):
import asyncio
from typing import cast
from agent_framework import Agent, Message
from agent_framework.openai import OpenAIChatClient
from agent_framework.orchestrations import SequentialBuilder
async def main() -> None:
client = OpenAIChatClient(model="gpt-4o") # verify model id at build
writer = Agent(
client=client,
name="writer",
instructions="Write one punchy marketing sentence. No preamble.",
)
reviewer = Agent(
client=client,
name="reviewer",
instructions="Critique the previous message in two short bullets.",
)
workflow = SequentialBuilder(participants=[writer, reviewer]).build()
task = "Tagline for Microsoft Agent Framework 1.0."
async for event in workflow.run(task, stream=True):
if event.type == "output":
for msg in cast(list[Message], event.data):
who = msg.author_name or str(msg.role)
print(f"[{who}]: {msg.text}")
if __name__ == "__main__":
asyncio.run(main())Concurrent specialists when branches do not need each other's intermediate text:
from agent_framework.orchestrations import ConcurrentBuilder
workflow = ConcurrentBuilder(participants=[legal_agent, pricing_agent, tone_agent]).build()
# Each participant processes the same input; aggregate outputs in your handlerConversational multi-agent means agents share a message history and take turns (or parallel turns) as participants. It is different from a pure data-flow graph where executor A sends a typed payload to executor B without a chat transcript.
Use conversation when:
Prefer a strict graph when:
| Pattern | Behavior | Strength | Risk |
|---|---|---|---|
| Sequential | Participants run in order on a shared thread | Simple handoffs, easy traces | Long chains increase latency and cost |
| Concurrent | Participants process in parallel | Faster multi-perspective answers | Aggregation and conflict resolution needed |
| Magentic-style | Manager plans and drives specialists | Complex research/coding teams | More moving parts; needs stall/reset caps |
| Agent-as-tool | Coordinator calls specialist agents as tools | Hierarchy without full chat | Nested loops can hide cost |
| AutoGen idea | Agent Framework direction |
|---|---|
RoundRobinGroupChat | Sequential-style orchestration over participants |
| Nested teams | Nested workflows / WorkflowExecutor rather than broadcast teams |
| MagenticOneGroupChat | MagenticBuilder with manager agent and round/stall caps |
| Termination conditions | Builder limits + your host budgets + output checks |
Exact class names and parameters can evolve; treat official samples as source of truth at build.
name on agents, logs become unreadable multi-agent soup.| Approach | When it wins | When it loses |
|---|---|---|
| Sequential multi-agent chat | Draft/review, simple pipelines of roles | Strict compliance graphs, heavy fan-out |
| Concurrent multi-agent | Independent analyses to merge | Steps that must see each other mid-run |
| Single agent with tools | One skill domain, lower cost | Conflicting privileges or deep specialization |
Graph WorkflowBuilder | Typed edges, HITL, checkpoints | Quick collaborative brainstorming |
| Agent-as-tool hierarchy | Coordinator UX with specialist calls | Peer debate that needs shared turn-taking |
No. Agent-to-agent chat here is in-process multi-agent conversation. A2A is a cross-runtime protocol for remote agents. They can complement each other but are not the same layer.
Two is enough to learn handoffs. Add a third only when you can name a distinct role, tool set, or trust boundary.
No. Attach tools per agent. Sharing every tool recreates a single over-privileged agent in costume.
Use orchestration limits where provided, plus host timeouts, token budgets, and a success check on the final artifact.
Yes in principle by giving agents different clients or model settings. Keep evaluation coverage for the weakest model in the ring.
When you need conditional edges, fan-out/join semantics, request/response human gates, or checkpoint resume beyond simple turn order.
Manager-led multi-agent work on complex tasks with planning, stall handling, and specialist participants - heavier than a two-step sequential review.
Log orchestration event type, participant name, turn index, tool calls, token usage, and stop reason. Phase labels beat raw dumps alone.
Yes via human-in-the-loop patterns (workflow request/response or Magentic plan review). Do not fake HITL only inside the model prompt.
Sequential builders run participants in defined order. Concurrent builders do not promise a single interleaved narrative without your aggregator.
Similar role specialization idea, different runtime and enterprise integration story. Compare orchestration needs and ops stack, not only role metaphors.
No. Many problems need one bounded agent or a deterministic workflow. Multi-agent chat is for genuine collaboration or separation of duties.
Stack versions: Pins from the category manifest (verify at build): OpenRouter (~315+ models, July 2026 pricing/fees); LangGraph 1.0+; CrewAI 1.14+; Microsoft Agent Framework 1.0; Vercel AI SDK 6; Pydantic AI (latest); LlamaIndex (latest); OpenAI Agents SDK (latest + MCP); MCP (Linux Foundation governance); A2A (HTTP+SSE+JSON-RPC 2.0); Solana
@solana/web3.js+@solana/spl-token.
Reviewed by Chris St. John·Last updated Jul 16, 2026