Agent Framework Orchestrations
Orchestration patterns for Microsoft Agent Framework. This package provides high-level builders for common multi-agent workflow patterns.
Installation
pip install agent-framework-orchestrations
Orchestration Patterns
SequentialBuilder
Chain agents/executors in sequence, passing conversation context along:
from agent_framework.orchestrations import SequentialBuilder
workflow = SequentialBuilder(participants=[agent1, agent2, agent3]).build()
# Preserve agent1 and agent2 as visible progress, while the default builder output remains Workflow Output.
workflow = SequentialBuilder(
participants=[agent1, agent2, agent3],
intermediate_output_from=[agent1, agent2],
).build()
ConcurrentBuilder
Fan-out to multiple agents in parallel, then aggregate results:
from agent_framework.orchestrations import ConcurrentBuilder
workflow = ConcurrentBuilder(participants=[agent1, agent2, agent3]).build()
HandoffBuilder
Decentralized agent routing where agents decide handoff targets:
from agent_framework.orchestrations import HandoffBuilder
workflow = (
HandoffBuilder()
.participants([triage, billing, support])
.with_start_agent(triage)
.build()
)
By default, each user response returns to the agent that requested it. To have the start agent re-evaluate every user turn, disable return-to-previous routing:
workflow = (
HandoffBuilder()
.participants([triage, billing, support])
.with_start_agent(triage)
.enable_return_to_previous(False)
.build()
)
GroupChatBuilder
Orchestrator-directed multi-agent conversations:
from agent_framework.orchestrations import GroupChatBuilder
workflow = GroupChatBuilder(
participants=[agent1, agent2],
selection_func=my_selector,
intermediate_output_from=[agent1, agent2],
).build()
MagenticBuilder
Sophisticated multi-agent orchestration using the Magentic One pattern:
from agent_framework.orchestrations import MagenticBuilder
workflow = MagenticBuilder(
participants=[researcher, writer, reviewer],
manager_agent=manager_agent,
intermediate_output_from=[researcher, writer, reviewer],
).build()
Output Selection
Orchestration builders expose Workflow Output selection using participant names. The core rule is that output_from
is an allow-list for Workflow Output, not a routing rule for every other participant output. Unselected participant
payloads are hidden unless intermediate_output_from explicitly selects them as Intermediate Output.
output_fromdesignates participant emissions as Workflow Output (type='output'events).intermediate_output_fromdesignates participant emissions as Intermediate Output (type='intermediate'events).
If neither list is provided, each builder uses its documented default Workflow Output contract. Sequential emits the last participant; Concurrent, GroupChat, and Magentic emit their aggregator/orchestrator/manager output; Handoff emits participants.
| Selection | Workflow Output | Intermediate Output | Hidden payloads |
|---|---|---|---|
| Omit both selections | Builder default Workflow Output contract | None | Builder-specific non-output participant payloads |
output_from="all" |
Every output-capable participant | None | None |
output_from=[writer] |
Only writer |
None | All other participant payloads |
output_from=[writer], intermediate_output_from="all_other" |
Only writer |
Every output-capable participant not selected by output_from |
None |
intermediate_output_from="all_other" |
None, except builder-internal default output executors where applicable | Every output-capable participant | Builder-internal plumbing payloads |
output_from=[], intermediate_output_from="all_other" |
None, except builder-internal default output executors where applicable | Every output-capable participant | Builder-internal plumbing payloads |
output_from=[writer], intermediate_output_from=[researcher, reviewer] |
Only writer |
researcher and reviewer |
Any other participant payloads |
Invalid selections fail at construction or build time:
| Invalid selection | Why it fails |
|---|---|
output_from="all_other" |
"all_other" is only valid for intermediate_output_from |
intermediate_output_from="all" |
"all" is only valid for output_from |
| The same participant in both selections | One payload cannot be both Workflow Output and Intermediate Output |
| Duplicate participant selections | Duplicates are treated as configuration errors |
| Unknown participant selections | Typos and missing participants are rejected |
output_from=[], intermediate_output_from=[] |
Both explicit selections are empty |
When an orchestration is wrapped with workflow.as_agent(), Workflow Output becomes normal response text. Intermediate
Output becomes text_reasoning content so callers can inspect progress without changing .text behavior.
Documentation
For more information, see the Agent Framework documentation.
Metadata
Release files for agent-framework-orchestrations 1.3.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| agent_framework_orchestrations-1.3.2.tar.gz | 66.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| agent_framework_orchestrations-1.3.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 140.1 kB
Release files / agent_framework_orchestrations-1.3.2.tar.gz
| Download URL | agent_framework_orchestrations-1.3.2.tar.gz |
|---|---|
| Size | 66.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7fb8ddd74c085acda60cca08f1b4c52623ecfb4e03a08d93cea111d1f176da5c
|
|
BLAKE2b-256 checksum How to use checksums |
5fc7550cce2e235ef5db6ddac16fbcc3a9922461b0f8173590f0fa74b08768c9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.1 {"installer":{"name":"uv","version":"0.13.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / agent_framework_orchestrations-1.3.2-py3-none-any.whl
| Download URL | agent_framework_orchestrations-1.3.2-py3-none-any.whl |
|---|---|
| Size | 73.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
132d15190b812d57989e5c63616dbc0b26340cafccf2381ad714b067d9068f39
|
|
BLAKE2b-256 checksum How to use checksums |
8363ec5858d0605a646e03c7263ab89a8b9d5080221a14505e5d1c6cc5fb02b2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.1 {"installer":{"name":"uv","version":"0.13.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|