Chapter 5: Agent Frameworks & Multi-Agent Orchestration

Learning Objectives

By the end of this chapter, you will be able to:

  1. Use the Microsoft Agent Framework SDK to build an agent and explain its value compared to direct Microsoft Foundry agent API calls.

  2. Apply multi-agent orchestration patterns — sequential, concurrent, handoff, and group chat — and distinguish agent orchestration from workflow orchestration.

  3. Design and scope a multi-agent solution that decomposes a complex task across specialized agents.

  4. Scope an agentic multimodal capstone proposal that combines an agent with knowledge, tools, and multimodal inputs.

5.1 Introduction: From One Agent to a Team of Agents

In Chapter 3, you built agents by hand. You wrote the tool definitions, implemented the handler functions, and coded the reasoning-action loop yourself — the while loop that checked finish_reason, parsed tool calls, dispatched to handlers, appended results, and called the model again. In Chapter 4, you extended those agents with capabilities they did not build themselves: tools discovered through the Model Context Protocol, and knowledge served by a Foundry IQ knowledge base. Across both chapters, however, you were still working with a single agent, and you were still hand-coding the operational machinery that drives it.

This chapter completes the agent arc. It introduces two ideas that move you from artisanal, single-agent code toward production-grade, multi-agent systems: a framework that handles the operational machinery for you, and orchestration patterns that let several specialized agents work together as a team.

Consider this scenario. A mid-sized financial services firm employs fifty research analysts who pull market data, retrieve regulatory filings from the SEC’s EDGAR database, compare fund performance across benchmarks, and assemble standardized research reports. The firm’s CTO wants an AI-powered research assistant that automates the repetitive parts of this workflow while keeping analysts in the loop for judgment calls.

You could try to build this as one giant agent with every tool loaded at once: market data retrieval, filing search, quantitative comparison, compliance checks, and report formatting. But that single agent quickly becomes unwieldy. Its system prompt sprawls. Its tool-selection accuracy degrades as the tool count climbs. Its reasoning has to span too many unrelated domains. A better design decomposes the work into focused specialists — a market-data agent, a document-research agent, a quantitative-analysis agent, a report-generation agent — coordinated by an orchestration pattern that decides who does what, and in what order.

Hand-coding that coordination from scratch, for every project, is exactly the kind of repetitive operational work that frameworks exist to absorb. This chapter introduces the Microsoft Agent Framework — the SDK Microsoft now recommends for building agents and multi-agent solutions — and the orchestration patterns it ships for composing teams of agents. You will use the framework to build a single chat agent (Lab 10), apply its orchestration patterns to build a multi-agent solution (Lab 11), and finally scope the agentic multimodal capstone you will design in full in Chapter 8.

5.2 The Microsoft Agent Framework

5.2.1 From Hand-Coded Loops to a Framework

In Chapter 3, you built an agent by writing the reasoning-action loop yourself. You manually managed the conversation history, parsed tool-call responses, dispatched to handler functions, appended results back to the message list, and called the model again. That manual approach teaches you how agents work at a fundamental level, but it also means you are responsible for every detail: retry logic, error handling, message formatting, token management, and execution-flow control.

The Microsoft Agent Framework provides higher-level abstractions that handle these operational details for you. Instead of writing the execution loop, you declare your agent’s instructions and tools, and the framework manages the rest. Think of it as the difference between writing raw HTTP requests by hand and using a web framework — the underlying mechanics are the same, but the framework absorbs the boilerplate so you can focus on behavior.

The Microsoft Agent Framework is the open-source SDK (Python and .NET) that unifies and succeeds two earlier Microsoft projects: Semantic Kernel and AutoGen. Semantic Kernel contributed a production-oriented agent and plugin model; AutoGen contributed research-driven multi-agent orchestration. The Agent Framework brings both lineages together under one supported library. Semantic Kernel and AutoGen remain supported for existing projects, but new investment focuses on the Agent Framework — so it is the right starting point for new work.

5.2.2 What the Framework Provides: Agents, Middleware, Memory, and Workflows

The Agent Framework organizes development around a small set of core ideas.

A single-agent abstraction. The framework gives you one consistent way to define an agent — a model, instructions (the system prompt), and a set of tools — regardless of whether that agent runs alone or as one member of a larger team. You construct the agent declaratively, and the framework handles instantiation, the reasoning-action loop, and the lifecycle.

Middleware. Just as a web framework lets you insert middleware into the request pipeline, the Agent Framework lets you insert logic around agent runs and tool calls — for logging, input or output validation, rate limiting, redaction, or policy enforcement. This is where cross-cutting concerns live, instead of being scattered through a hand-written loop.

Memory and context providers. The framework manages conversation history (often called a thread) so multi-turn conversations persist without you tracking the message list by hand. Pluggable context providers let an agent pull in additional grounding — for example, a Foundry IQ knowledge base from Chapter 4 — at the right point in the run.

Telemetry. The framework emits structured telemetry (traces, token usage, run status) so you can observe what an agent actually did, which is far harder when you instrument a hand-coded loop yourself.

Graph-based workflows. Beyond a single agent, the framework models multi-step processes as graphs of steps — the foundation for the orchestration patterns in Section 5.3.

Framework vs. Direct API Comparison

5.2.3 Agent Orchestration vs. Workflow Orchestration

A defining feature of the Agent Framework is that it supports two distinct styles of coordinating work, and choosing between them is one of the most important design decisions you will make.

Agent orchestration is LLM-driven. The model reasons about what to do next, which specialist to involve, and when the task is complete. Control flow emerges from the model’s reasoning rather than from code you wrote in advance. This style is flexible and adaptive — it handles open-ended requests and unforeseen situations well — but it is also less predictable, harder to test exhaustively, and can consume more tokens because the model is doing the routing.

Workflow orchestration is deterministic. You define the steps and the transitions between them as an explicit graph driven by business logic, and the framework executes that graph the same way every time. Agents can still be steps within the workflow, but the control flow is fixed by your design rather than decided by a model at runtime. This style is predictable, testable, and auditable — the right choice when a process must follow a known sequence (a regulated approval chain, a fixed data-processing pipeline) — at the cost of flexibility.

In practice you mix the two. A deterministic workflow might invoke an agent-orchestrated sub-step for the genuinely open-ended part of a task, while keeping the regulated stages fixed. The skill is matching the style to the requirement: reach for agent orchestration where adaptability matters, and workflow orchestration where predictability and auditability matter.

5.2.4 Building an Agent with the Framework

Building an agent with the framework follows a declarative pattern: define the agent’s model, instructions, and tools; start a conversation; send a message; and read the response. The framework runs the reasoning-action loop internally.

The sample below illustrates the shape of that pattern — defining tools, constructing an agent, and running it — using the financial-research agent from Chapter 3.

The Agent Framework is evolving rapidly toward and past its 1.0 release. The exact class names, import paths, and method signatures vary by SDK version and language. Treat the code below as an illustration of the pattern, not as a copy-paste API reference. Always confirm the precise symbols against the framework documentation for the version you install — in your lab environment, use the version pinned by the lab.

# Illustrative only — confirm exact symbols against your installed SDK version.
import asyncio
import json
from agent_framework import ChatAgent  (1)
from agent_framework.azure import AzureAIChatClient
from azure.identity import DefaultAzureCredential


# Define tools as plain Python functions with clear docstrings. (2)
def get_stock_price(ticker: str) -> str:
    """Retrieves the current stock price for a given ticker symbol."""
    prices = {"AAPL": 245.12, "MSFT": 478.55, "GOOGL": 192.30}
    price = prices.get(ticker.upper())
    if price is not None:
        return json.dumps({"ticker": ticker, "price": price, "currency": "USD"})
    return json.dumps({"error": f"Unknown ticker: {ticker}"})


def search_regulatory_filings(company_name: str, filing_type: str = "10-K") -> str:
    """Searches SEC filings for a given company."""
    return json.dumps({
        "results": [
            {"title": f"{company_name} Annual Report",
             "type": filing_type, "date": "2025-12-15"}
        ]
    })


# Construct the agent: a model client, instructions, and tools. (3)
agent = ChatAgent(
    chat_client=AzureAIChatClient(credential=DefaultAzureCredential()),
    name="Financial Research Assistant",
    instructions=(
        "You are a financial research assistant for Meridian Capital Advisors. "
        "Use your tools to retrieve factual data. Do not fabricate stock prices "
        "or financial figures. If a tool fails, tell the user."
    ),
    tools=[get_stock_price, search_regulatory_filings],
)


# Run the agent — the framework handles the entire reasoning-action loop. (4)
async def main():
    response = await agent.run(
        "What is Apple's current stock price, and do they have any recent 10-K filings?"
    )
    print(response.text)


asyncio.run(main())  (5)
1 Exact import paths and class names differ across SDK versions; verify against the docs for the version you install.
2 The framework adapts ordinary typed functions with docstrings into tool definitions — you do not hand-write JSON schemas as you did in Chapter 3.
3 You declare the agent’s model client, instructions, and tools; the framework wires up the rest.
4 A single run call executes the full loop: send the message, let the model propose tool calls, execute them, feed results back, and repeat until the model returns a final answer.
5 asyncio.run is the entry point that drives the async agent to completion.

Compare this with the Chapter 3 implementation. There, you wrote a while loop that checked finish_reason, parsed tool_calls, dispatched to handler functions, appended tool results to the message list, and called the model again. Here, a single run call does all of that internally. You define the tools, send a message, and get a response.

Compare your Chapter 3 hand-coded agent with the framework version you build in Lab 10. The framework version has no while loop, no manual message management, and no tool-dispatch code. The trade-off is less visibility into each individual step of execution — which is exactly why building the loop by hand first was worth doing.

5.2.5 When the Framework Helps, and When Direct API Access Is Better

The framework is the right choice when you want to move quickly and your requirements align with its built-in capabilities — an agent that calls tools, manages conversation threads, and emits telemetry, especially one that will grow into a multi-agent solution. The orchestration patterns in Section 5.3 are part of the framework, so starting there positions you to scale from one agent to a team without rewriting your foundation.

Direct API access (the hand-coded approach from Chapter 3) is preferable when you need fine-grained control the framework abstracts away, when you must minimize dependencies for a lightweight service, or when you are learning — you cannot truly appreciate what the framework does for you until you have built the loop yourself. In practice, many production systems mix both: the framework for the primary agents and orchestration, direct API calls for a specialized component that needs custom behavior.

When choosing for production, weigh observability (the framework’s built-in telemetry vs. logging you control), versioning (the framework evolves on its own release cycle, separate from the underlying model API), and testing (deterministic workflow orchestration is far easier to test than open-ended agent orchestration).

5.3 Multi-Agent Orchestration

A single agent with two or three tools handles focused tasks effectively. But as scope grows, loading every capability into one agent creates problems: the system prompt becomes unwieldy, tool-selection accuracy degrades as the tool count rises, and the agent’s reasoning must span too many domains. A multi-agent solution composes several specialized agents under an orchestration pattern that coordinates them.

5.3.1 Why Multi-Agent? When a Single Agent’s Scope Becomes Too Broad

The practical trigger for going multi-agent is not a fixed number of tools. It is the emergence of distinct domains of expertise that need different instructions, different tool sets, and different behavioral constraints. When you find yourself writing a system prompt that says "If the user asks about X, do this; if they ask about Y, do that; if about Z, do something else entirely," you are encoding routing logic into prose. A multi-agent architecture makes that routing explicit.

A single agent with fifteen tools faces a combinatorial problem: it must pick the right one from fifteen options and understand the nuances of when each applies. Tool-selection accuracy degrades as the number of available tools grows. Multi-agent systems solve this by giving each agent a small, focused toolkit where selection is straightforward.

5.3.2 Agent Specialization: Decomposing a Complex Task into Focused Roles

Agent specialization means breaking a complex workflow into focused roles, each handled by a dedicated agent with its own instructions and tool set. For the financial research assistant from Section 5.1, this might look like:

  • Market Data Agent: Instructions focused on financial-data retrieval. Tools: get_stock_price, get_historical_prices, get_market_indices. Constraint: returns only numerical and factual market data, never investment advice.

  • Document Research Agent: Instructions focused on document search and summarization. Tools: search_regulatory_filings, get_filing_content, summarize_document. Constraint: always cites the specific filing and section.

  • Quantitative Analysis Agent: Instructions focused on financial calculations. Tools: calculate_returns, compare_benchmarks, compute_risk_metrics. Constraint: shows its work, including formulas and inputs.

  • Report Generation Agent: Instructions focused on formatting and compilation. Tools: format_report, insert_chart, export_pdf. Constraint: follows the firm’s report template and style guide.

Each agent is an expert in its domain. Its instructions are concise, its tool set small and relevant, its constraints specific to its role. This specialization leads to better tool selection, more coherent reasoning, and more predictable behavior. The Agent Framework’s single-agent abstraction (Section 5.2.2) is exactly what you use to define each specialist; an orchestration pattern then composes them.

5.3.3 Orchestration Patterns

The Agent Framework ships a set of named orchestration patterns for composing specialized agents. Rather than hand-coding coordination as you would with the raw API, you choose a pattern that matches the shape of your task. The figure below shows a central orchestrator routing work to specialists — the mental model that underlies several of these patterns.

Multi-Agent Orchestrator

Sequential orchestration. Agents run one after another, each agent’s output becoming the next agent’s input. This fits tasks with natural ordered stages — for example, a Data Gathering Agent retrieves raw market data and filings, an Analysis Agent turns that into insights and comparisons, and a Report Agent formats the result into a document. Sequential pipelines are simple to implement and easy to debug because you can inspect each hand-off, but they are inherently serial: every stage must finish before the next begins, which increases end-to-end latency.

Concurrent orchestration. When subtasks are independent, multiple agents run simultaneously and their results are aggregated. Retrieving stock-performance data and searching for 8-K filings are independent, so running them concurrently reduces total latency to the duration of the slowest branch rather than the sum of all branches. The challenge is result aggregation: agents finish at different times and produce different formats, so the orchestration must reconcile their outputs into a coherent response — and decide what to do when one branch fails while others succeed (return partial results, retry, or report failure).

Handoff orchestration. One agent transfers control to another agent better suited to the current request, passing along the relevant context. Handoff is dynamic and conversational: a triage agent might handle a general inquiry and hand off to a specialist the moment the conversation turns to its domain, and the specialist can hand back or onward as needed. This pattern shines for customer-facing flows where the right expert is not known up front and changes as the dialogue unfolds. Designing handoffs means deciding what context travels with the handoff so the receiving agent is not starting blind (see Section 5.3.5).

Group chat orchestration. Several agents participate in a shared conversation, coordinated by a manager that decides who speaks next. Group chat fits tasks that benefit from multiple perspectives interacting — a writer agent and a reviewer agent iterating on a draft, or several domain experts debating a recommendation before converging. The manager enforces turn-taking and decides when the conversation has reached a conclusion. Group chat is powerful but the most token-intensive pattern, since multiple agents repeatedly read and contribute to a growing shared transcript.

Magentic-One orchestration. Magentic-One is a flexible, general-purpose pattern (originating in AutoGen research) in which a manager agent plans, delegates subtasks to specialist agents, tracks progress against a task ledger, and re-plans when steps fail or new information arrives. It is designed for open-ended, multi-step problems where the full plan cannot be specified in advance — the manager reasons about the goal, dispatches work, observes results, and adapts. Magentic-One is the most adaptive pattern and squarely an agent orchestration (LLM-driven) approach, trading predictability for the ability to tackle genuinely novel tasks.

The figure below contrasts how work flows through several of these patterns.

Multi-Agent Coordination Patterns

Most real-world systems combine patterns. The financial research assistant might run the Market Data Agent and Document Research Agent concurrently to gather data, then sequentially pass everything to the Quantitative Analysis Agent and finally the Report Generation Agent. Tying back to Section 5.2.3: the open-ended, "figure out the plan" pieces lean toward agent-orchestrated patterns (handoff, group chat, Magentic-One), while fixed, must-run-in-order pieces lean toward deterministic workflow orchestration with sequential steps.

More agents does not mean better. Each agent adds latency, token cost, and coordination overhead. Start with the fewest agents that cleanly separate your domains of expertise, and the simplest pattern that fits, adding agents or richer orchestration only when you have evidence that a single agent’s scope is causing errors or degraded performance.

5.3.4 Context Passing Between Agents

A critical design decision in any multi-agent system is how context flows between agents. Each agent operates with its own conversation history, so you must explicitly decide what to pass from one to the next.

Full context passing forwards the entire conversation history. This gives each agent maximum information but consumes context-window space rapidly and can confuse an agent with irrelevant details from another specialist’s domain.

Summary context passing has the orchestration summarize one agent’s results before passing them on. This is more token-efficient and keeps each agent focused, but the summarization step can lose important details.

Structured context passing defines a fixed data format (such as a JSON object) that agents use to communicate. Each agent reads specific fields and writes its results to designated output fields. This is the most predictable and easiest to debug, though it requires upfront design to define the shared schema. For the financial research assistant, structured passing works well because financial data has natural structure — ticker symbols, price arrays, filing metadata — that maps cleanly to JSON fields.

5.3.5 Coordination Failures and Multi-Agent Error Handling

Multi-agent systems add failure modes beyond those of a single agent. Knowing them helps you design orchestration that degrades gracefully.

Routing and handoff errors. The orchestration sends a subtask to the wrong specialist — a regulatory-filing question reaches the Market Data Agent instead of the Document Research Agent — or a handoff transfers control without the context the receiving agent needs.

Lost context. Information from one agent never reaches another that needs it. The Market Data Agent retrieves prices, but a context-passing bug means the Quantitative Analysis Agent never receives them and either hallucinates values or errors out.

Partial failures. In concurrent orchestration, some branches succeed and others fail. The orchestration must decide whether to return partial results, retry the failed branch, or report the whole request as failed.

Inconsistent results. Two agents produce contradictory information — one reports a stock price while another finds a filing indicating a stock split that should have adjusted it. Without a reconciliation step, contradictory data reaches the user.

The mitigations mirror single-agent error handling, extended to coordination: retry transient failures with exponential backoff; provide fallback paths so the system still delivers partial value when one agent is down (graceful degradation); validate each agent’s outputs before combining them; and define explicit escalation conditions where the system stops and hands off to a human rather than fabricating an answer. The decision tree below summarizes how to route different failure types.

Multi-Agent Error Handling Decision Tree

An agent that silently fails and returns a plausible-sounding but incorrect answer is more dangerous than one that explicitly reports an error. In a multi-agent system this risk compounds, because a fabricated result from one agent can propagate through the orchestration into the final response. Always prefer explicit failure over silent fabrication: when a step fails, the system should tell the user what is missing rather than filling the gap with generated text that looks like real data.

5.4 Scoping the Agentic Multimodal Capstone

5.4.1 The Capstone in Brief

The course capstone is an agentic multimodal build: an agent that combines the capabilities you have assembled across the agent arc — knowledge from a Foundry IQ knowledge base (Chapter 4), tools called directly or through MCP (Chapters 3 and 4), and multimodal inputs processed with Azure AI Content Understanding (which you will study later in the course). The orchestration and framework skills from this chapter are what let you assemble those pieces into a coherent, maintainable system — as a single capable agent or, where the work genuinely splits across domains, a small team of specialists.

You scope the proposal here, in this chapter. The full design document and a recorded walkthrough are produced later, in Chapter 8, once you have studied the remaining services your capstone may draw on. Scoping early means you can let your capstone idea mature alongside the rest of the course.

5.4.2 Problem Scoping: What an Agentic Solution Can Solve

The first step is determining whether an agentic solution is the right approach. AI agents excel at workflows that interleave reasoning with action and knowledge: pulling information from documents and systems, deciding what to do next, calling tools, and synthesizing a grounded answer. They struggle with tasks that demand perfect accuracy with zero tolerance for error, tasks with insufficient or poor-quality data, and tasks where the cost of the AI solution exceeds the cost of the manual process it replaces.

When scoping, ask three questions. First, what is the manual process today, and where are the bottlenecks? Second, which bottlenecks involve work an agent can do well — reasoning over knowledge, calling tools, interpreting multimodal inputs? Third, what is the cost of the agent making a mistake, and is that cost acceptable?

5.4.3 User-Centered Design

Every solution exists to serve users. Before choosing services or architecture, define who your users are, what they need, and how they will interact with the agent.

A solution for expert users (claims adjusters processing hundreds of claims a week) looks different from one for occasional users (a customer checking a claim once a month). Experts want speed, shortcuts, and detail; occasional users want simplicity, guidance, and reassurance. Both need accuracy, but they define it differently — the adjuster wants precise policy-language citations; the customer wants a clear, jargon-free status update. Define your target users by role, frequency of use, technical proficiency, and primary pain points, then design the agent’s interaction around their workflow rather than asking them to adapt to the agent.

5.4.4 Capability Selection: Knowledge, Tools, and Multimodal Inputs

A strong agentic capstone draws deliberately on the three capability areas of the agent arc. For each one, name a specific need rather than reaching for a service because it is available.

  • Knowledge (Foundry IQ). What grounded information must the agent reason over — policy documents, a product catalog, a regulatory corpus? If the agent must cite sources from a body of documents, a Foundry IQ knowledge base (Chapter 4) is the natural fit.

  • Tools (direct or via MCP). What actions must the agent take in the world — look up a record, create a ticket, run a calculation? Tools you own can be defined directly; tools owned by other teams or systems are reached through MCP (Chapter 4).

  • Multimodal inputs (Content Understanding). Does the agent need to interpret images, documents, audio, or video as part of its job — reading a damage photo, extracting fields from a submitted form, transcribing a call? Azure AI Content Understanding handles multimodal extraction, feeding structured results into the agent’s reasoning.

Whether the result is one agent or a small multi-agent team is a design choice you justify using Section 5.3: stay with a single agent unless distinct domains of expertise warrant specialists coordinated by an orchestration pattern.

5.4.5 Feasibility Assessment

Before committing, assess feasibility across four dimensions. Technical feasibility: can the chosen capabilities actually perform the tasks at the required accuracy? Run a small proof of concept. Data feasibility: do you have access to the knowledge and inputs the agent needs, in a usable format, within privacy and compliance constraints? Operational feasibility: can you deploy, monitor, and maintain the solution with the subscriptions, quotas, and expertise available? Economic feasibility: does the per-transaction cost justify the value relative to the manual process?

Capstone Scoping Decision Tree

A well-scoped agentic capstone with one knowledge source, two well-chosen tools, and a single multimodal input is far stronger than an ambitious proposal that lists ten services. Every capability you include should map to a specific, identifiable user need. If you cannot explain in one sentence why a capability is necessary, leave it out.

5.5 Hands-On Connections

This chapter’s concepts connect to two lab experiences that let you apply what you have learned in working Azure environments.

Lab 10: Develop an Azure AI Chat Agent with the Microsoft Agent Framework SDK

In Lab 10, you build a chat agent using the Microsoft Agent Framework SDK, replacing the hand-coded loop from your earlier agent work. As you work through the lab, focus on:

  • Code comparison. How much code does the framework version need compared with the hand-coded agent from Chapter 3? What did you write by hand that the framework now handles?

  • Thread management. Hold a multi-turn conversation and watch how the framework persists the thread, so you no longer track the message list yourself.

  • Telemetry and debugging. When something goes wrong inside the framework, how do you diagnose it using the framework’s telemetry? Is it easier or harder than debugging a loop where you controlled every step?

Lab 11: Develop a Multi-Agent Solution

In Lab 11, you compose several specialized agents into a multi-agent solution using the framework’s orchestration patterns. Focus on:

  • Agent decomposition. Observe how the workload is divided among specialists. Could any two agents merge without losing clarity? Should any agent be split further?

  • Orchestration pattern. Identify which pattern the solution uses — sequential, concurrent, handoff, or group chat — and why. What would change if you switched patterns?

  • Agent vs. workflow orchestration. Decide which parts of your solution benefit from LLM-driven agent orchestration and which should be deterministic workflow steps. Justify the split.

  • Error propagation. Introduce a deliberate failure (disconnect a tool, or make one agent fail) and observe how the orchestration responds. Does it degrade gracefully and handle partial results?

5.6 Assessment Preparation

This chapter connects to the capstone proposal, where you apply the design and analysis skills you have built across the agent arc.

Capstone Proposal

The capstone proposal is a one-page document (approximately 400-600 words) in which you propose an agentic multimodal solution for a real-world problem. The proposal has four required components.

Problem domain. Define the problem your agent addresses. What is the current pain point? Who experiences it? Why does the current process need improvement? Be specific — "customer service is slow" is a symptom, not a problem definition. Dig deeper: what makes it slow, where do delays occur, and what information is hard to find?

Target users. Identify who will use your solution — their role, technical proficiency, and primary workflow. Will the agent replace a step, augment a step, or add a new capability? Revisit Section 5.4.3 on user-centered design.

Capabilities: knowledge, tools, and multimodal inputs. Drawing on Section 5.4.4, name the knowledge sources (Foundry IQ), tools (direct or MCP), and multimodal inputs (Content Understanding) your agent needs, and justify each against a specific requirement. State whether your design is a single agent or a multi-agent team, and if multi-agent, which orchestration pattern coordinates it (Section 5.3).

Initial architecture sketch. Briefly describe (or diagram) how the pieces connect: which capability handles which part of the workflow, how data flows, and where the user interacts with the agent. This is a conceptual architecture, not a detailed implementation plan.

As you develop your proposal, revisit the feasibility criteria from Section 5.4.5. Can the capabilities you selected actually do what you need? Do you have a realistic sense of the data requirements? Is the scope achievable? Remember that the full design document and recorded walkthrough come later, in Chapter 8 — the goal here is a focused, defensible scope.

Peer Review

You will review two classmates' proposals and provide constructive feedback. Consider: Is the problem well-defined or too vague? Are the target users clearly identified? Do the chosen capabilities match the stated requirements, or are there gaps? Is the single-vs-multi-agent decision justified, and does the orchestration choice make sense? Is the scope realistic?

Effective feedback is specific and actionable. Instead of "this is good," explain why it works: "Grounding the agent in a Foundry IQ knowledge base of policy documents is strong because the proposal requires cited answers from a fixed document corpus." Instead of "this needs work," explain what to improve: "The proposal lists Content Understanding but never says what images or documents the agent would interpret — naming a specific multimodal input would strengthen this section."

5.7 Key Terms

Microsoft Agent Framework

The open-source SDK (Python and .NET) that unifies and succeeds Semantic Kernel and AutoGen, providing a single-agent abstraction, middleware, memory and context providers, telemetry, graph-based workflows, and multi-agent orchestration patterns.

agent orchestration

An LLM-driven coordination style in which the model reasons about which agents to involve and when the task is complete, producing flexible but less predictable control flow.

workflow orchestration

A deterministic coordination style in which steps and transitions are defined as an explicit graph driven by business logic, producing predictable, testable, and auditable control flow.

multi-agent solution

A system that composes several specialized agents under an orchestration pattern to accomplish a task that exceeds the effective scope of a single agent.

agent specialization

The practice of decomposing a complex workflow into focused roles, each handled by a dedicated agent with its own instructions, tool set, and behavioral constraints.

sequential orchestration

An orchestration pattern in which agents run one after another, each agent’s output serving as the next agent’s input.

concurrent orchestration

An orchestration pattern in which independent subtasks run simultaneously across multiple agents and their results are aggregated, reducing total latency.

handoff

An orchestration pattern in which one agent transfers control of the conversation to another agent better suited to the current request, passing along the relevant context.

group chat

An orchestration pattern in which multiple agents participate in a shared conversation, coordinated by a manager that decides who speaks next and when the conversation concludes.

Magentic-One

A flexible, general-purpose agent-orchestration pattern in which a manager agent plans, delegates subtasks to specialists, tracks progress, and re-plans as needed for open-ended, multi-step tasks.

context passing

The mechanism by which information flows between agents in a multi-agent system, implemented through full-history forwarding, summary generation, or structured data schemas.

graceful degradation

A design principle in which a system continues to provide partial value when individual components or agents fail, rather than failing completely.

capstone proposal

A concise design document that identifies a real-world problem, defines target users, selects the knowledge, tools, and multimodal capabilities an agentic solution will use, and outlines its architecture.

feasibility assessment

An evaluation of a proposed solution across technical, data, operational, and economic dimensions to determine whether it can be successfully built and deployed.

5.8 Chapter Summary

This chapter completed the three-chapter agent arc by moving you from hand-coded, single-agent code toward production-grade, multi-agent systems. You learned how the Microsoft Agent Framework — the open-source SDK that unifies and succeeds Semantic Kernel and AutoGen — absorbs the operational machinery you wrote by hand in Chapter 3, offering a single-agent abstraction, middleware, memory and context providers, telemetry, and graph-based workflows. You saw how the framework distinguishes agent orchestration (LLM-driven, flexible) from workflow orchestration (deterministic, auditable), and why matching the style to the requirement is a central design decision. You built an agent with the framework’s declarative pattern, noting that exact SDK symbols vary by version, and weighed when the framework helps versus when direct API access is the better tool.

You then scaled to multi-agent solutions, learning why distinct domains of expertise — not a fixed tool count — trigger the move to multiple agents, and how to decompose a workflow into focused specialists. You studied the framework’s named orchestration patterns — sequential, concurrent, handoff, group chat, and Magentic-One — and when each fits, along with how context passes between agents and how to handle the coordination failures unique to multi-agent systems, always preferring explicit failure over silent fabrication.

Finally, you scoped the agentic multimodal capstone: an agent that combines Foundry IQ knowledge, tools called directly or through MCP, and multimodal inputs processed with Content Understanding. You applied problem scoping, user-centered design, capability selection, and feasibility assessment to draft a focused proposal — knowing the full design document and recorded walkthrough come later in Chapter 8.

Chapters 3 through 5 have carried you across the full agent arc: tools and functions you built, protocols and knowledge you did not build, and the frameworks and orchestration that let agents work as teams. Beginning with Chapter 6, Text Analysis & Conversational Speech Agents, you will shift to specialized Azure AI services — starting with language and speech — that you can compose with the agent architectures you have built here.