{"id":5539,"date":"2026-07-08T03:00:52","date_gmt":"2026-07-08T10:00:52","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/agent-framework\/?p=5539"},"modified":"2026-07-08T03:00:52","modified_gmt":"2026-07-08T10:00:52","slug":"agent-frameworks-orchestration-patterns-reach-1-0","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/agent-framework\/agent-frameworks-orchestration-patterns-reach-1-0\/","title":{"rendered":"Agent Framework\u2019s Orchestration Patterns Reach 1.0"},"content":{"rendered":"<p>Python&#8217;s <code>agent-framework-orchestrations<\/code> package is now 1.0.0. That puts Microsoft Agent Framework&#8217;s orchestration layer at 1.0 across Python and .NET.<\/p>\n<p>Sequential, concurrent, group chat, handoff, and magentic orchestration are now stable in both SDKs. You can pick the coordination pattern that fits your problem instead of choosing around SDK maturity.<\/p>\n<p>Magentic is the best example of why that matters. It is the least hand-wired pattern: you give it a goal, a manager, and a set of specialists, then the manager decides how the team should work.<\/p>\n<p>At the workflow layer, Agent Framework lets you build the graph yourself. Executors do the work, edges route messages, and the workflow emits events as it runs. Those are the low-level primitives. The <a href=\"https:\/\/learn.microsoft.com\/en-us\/agent-framework\/workflows\/\">workflow docs<\/a> cover that model in more depth.<\/p>\n<p>The orchestration builders sit one level above those primitives. They use the same workflow model internally and return ordinary workflows you can run, stream, and compose.<\/p>\n<p>That matters because coordination is the part many multi-agent apps otherwise reimplement. You choose the next agent, carry state between turns, detect stalls, and decide when the work is finished.<\/p>\n<p>Magentic moves that coordination into the orchestration. A manager agent turns the task into a plan, assigns work to specialists, checks progress after each round, and revises the plan when the team stops moving.<\/p>\n<p>The code below uses <code>MagenticBuilder<\/code> to create a workflow without wiring that graph by hand. You still choose the participants and guardrails, but the manager owns the round-by-round coordination.<\/p>\n<pre><code class=\"language-python\">import os\r\n\r\nfrom agent_framework import Agent, AgentResponseUpdate\r\nfrom agent_framework.foundry import FoundryChatClient\r\nfrom agent_framework.orchestrations import MagenticBuilder\r\nfrom azure.identity import AzureCliCredential\r\n\r\nclient = FoundryChatClient(\r\n    project_endpoint=os.environ[\"FOUNDRY_PROJECT_ENDPOINT\"],\r\n    model=os.environ[\"FOUNDRY_MODEL\"],\r\n    credential=AzureCliCredential(),\r\n)\r\n\r\nresearcher = Agent(\r\n    name=\"Researcher\",\r\n    description=\"Finds and gathers information\",\r\n    instructions=\"You research. You do not do quantitative analysis.\",\r\n    client=client,\r\n)\r\ncoder = Agent(\r\n    name=\"Coder\",\r\n    description=\"Writes and runs code to analyze data\",\r\n    instructions=\"You answer quantitative questions by writing and running code.\",\r\n    client=client,\r\n    tools=client.get_code_interpreter_tool(),\r\n)\r\nmanager = Agent(\r\n    name=\"Manager\",\r\n    description=\"Coordinates the team\",\r\n    instructions=\"You coordinate the team to finish complex tasks.\",\r\n    client=client,\r\n)\r\n\r\nworkflow = MagenticBuilder(\r\n    participants=[researcher, coder],\r\n    manager_agent=manager,\r\n    max_round_count=10,\r\n    max_stall_count=3,\r\n    max_reset_count=2,\r\n).build()\r\n\r\ntask = (\r\n    \"Compare the training and inference energy use of ResNet-50, BERT-base, \"\r\n    \"and GPT-2, estimate the CO2 for each, and recommend the most efficient \"\r\n    \"model per task type.\"\r\n)\r\n\r\nasync for event in workflow.run(task, stream=True):\r\n    if event.type == \"output\" and isinstance(event.data, AgentResponseUpdate):\r\n        print(event.data.text)\r\n<\/code><\/pre>\n<p>The manager reads the task, decides the researcher should pull numbers first, hands the coder the math, checks a progress ledger each round, and synthesizes the final answer.<\/p>\n<p>If the team stops making progress, the manager can reset and replan. The <code>max_*<\/code> values are the guardrails you set. Everything between the goal and the answer is the manager&#8217;s call.<\/p>\n<h2>More than magentic<\/h2>\n<p>Magentic is the sharpest example, but the release is broader. Handoff gives you routed specialist teams. Group chat gives you moderated collaboration. Sequential and concurrent cover pipelines and fan-out\/fan-in work.<\/p>\n<p>All of those orchestration patterns now have the same stable footing in Python and .NET. That matters when you are standardizing how agents work across services, teams, or languages.<\/p>\n<p>Because the builders produce workflows, they do not close off the lower-level APIs.<\/p>\n<p>If your team needs a different shape, take the parts that fit and build a custom workflow from the same primitives.<\/p>\n<p>Try magentic on a task you would not trust to a hand-wired pipeline. Try handoff when the routing rules matter. Try sequential or concurrent when the workflow should stay deterministic.<\/p>\n<p>Then tell us where the patterns fit, where they break, and what still feels too hard. Open an issue on GitHub when something is missing or surprising; that feedback shapes what comes next.<\/p>\n<p>Get started with the <a href=\"https:\/\/learn.microsoft.com\/en-us\/agent-framework\/workflows\/orchestrations\/magentic\">magentic orchestration docs<\/a>.<\/p>\n<p>The <a href=\"https:\/\/github.com\/microsoft\/agent-framework\/tree\/main\/python\/samples\/03-workflows\/orchestrations\">full samples on GitHub<\/a> show the other orchestration patterns too.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Python&#8217;s agent-framework-orchestrations package is now 1.0.0. That puts Microsoft Agent Framework&#8217;s orchestration layer at 1.0 across Python and .NET. Sequential, concurrent, group chat, handoff, and magentic orchestration are now stable in both SDKs. You can pick the coordination pattern that fits your problem instead of choosing around SDK maturity. Magentic is the best example of [&hellip;]<\/p>\n","protected":false},"author":150043,"featured_media":5540,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[143,47],"tags":[79,156,155,157,53,158],"class_list":["post-5539","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-agent-framework","category-announcement","tag-net","tag-magentic","tag-multi-agent","tag-orchestration","tag-python","tag-workflows"],"acf":[],"blog_post_summary":"<p>Python&#8217;s agent-framework-orchestrations package is now 1.0.0. That puts Microsoft Agent Framework&#8217;s orchestration layer at 1.0 across Python and .NET. Sequential, concurrent, group chat, handoff, and magentic orchestration are now stable in both SDKs. You can pick the coordination pattern that fits your problem instead of choosing around SDK maturity. Magentic is the best example of [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/agent-framework\/wp-json\/wp\/v2\/posts\/5539","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/agent-framework\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/agent-framework\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/agent-framework\/wp-json\/wp\/v2\/users\/150043"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/agent-framework\/wp-json\/wp\/v2\/comments?post=5539"}],"version-history":[{"count":1,"href":"https:\/\/devblogs.microsoft.com\/agent-framework\/wp-json\/wp\/v2\/posts\/5539\/revisions"}],"predecessor-version":[{"id":5619,"href":"https:\/\/devblogs.microsoft.com\/agent-framework\/wp-json\/wp\/v2\/posts\/5539\/revisions\/5619"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/agent-framework\/wp-json\/wp\/v2\/media\/5540"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/agent-framework\/wp-json\/wp\/v2\/media?parent=5539"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/agent-framework\/wp-json\/wp\/v2\/categories?post=5539"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/agent-framework\/wp-json\/wp\/v2\/tags?post=5539"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}