Orchestration patterns for Microsoft Agent Framework. Includes SequentialBuilder, ConcurrentBuilder, HandoffBuilder, GroupChatBuilder, and MagenticBuilder.
Project description
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 --pre
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()
)
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agent_framework_orchestrations-1.0.0rc1.tar.gz.
File metadata
- Download URL: agent_framework_orchestrations-1.0.0rc1.tar.gz
- Upload date:
- Size: 60.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
911268481d03382e37064ba1511528ef3393ac6512a4b9b9ba197ec700ced7a2
|
|
| MD5 |
40e5058beb43379722d403cf91137d9b
|
|
| BLAKE2b-256 |
a18f9ca8f19dbcb092296bde49c68bfba10979e173ba7f610ada3579d884952e
|
File details
Details for the file agent_framework_orchestrations-1.0.0rc1-py3-none-any.whl.
File metadata
- Download URL: agent_framework_orchestrations-1.0.0rc1-py3-none-any.whl
- Upload date:
- Size: 66.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
57154eb7d64a22c731922fada990f911c950e5c940ac827c3f09754dc3aada9e
|
|
| MD5 |
572ae749f00d7f97a78d5d1cad30ac47
|
|
| BLAKE2b-256 |
439f046e6e901e67961f3a8c769d425674d96eae3649e8338bc2fe5893331419
|