Building for Agentic AI - Agent SDKs & Design Patterns

The true value of AI agents lies in loops and self-correction rather than raw reasoning power.

Building for Agentic AI - Agent SDKs & Design Patterns

Table of Contents

  1. Introduction and Scope
  2. Agentic Workflow Pattern
  3. HITL (Human-in-the-Loop) Design
  4. Is this Agentic AI or just Agentic Workflows?
  5. Agent SDK Interoperability: A2A and MCP
  6. LLM Provider Support
  7. Agent Conversation Tracing and Debugging
  8. Ecosystem, Vendor Lock-in and Others
  9. Which SDK should I use?

1. Introduction and Scope

Who is This For?

This evaluation is designed for developers, architects, product managers, and technologists who are looking to build agentic systems, whether you’re exploring options for your next project, evaluating SDKs for team adoption, or simply aiming to deepen your understanding of agentic workflows and capabilities.

Which SDKs Are We Looking At, and Why?

For our methodology, we consider the usage of the SDKs on how well they support the construction of agentic systems, via metrics such as the range of agentic design patterns they enable, as well as developer-centric features like tracing and debugging.

This approach is designed to be extensible and reusable, providing a goal-oriented framework that can be applied consistently to assess any SDK, not just the ones included in our current analysis.

Since we work fairly extensively with the 3 major cloud providers (Azure, AWS, Google) across WOG, we included their native SDKs. OpenAI and LangChain SDKs are also included as reference points given their widespread adoption globally.

For better clarity, here is the version of each SDK we use in this blog post:

SDK version used in this blog

What will not be covered?

We will not be deep diving into agent implementation code since examples are abundant in the official documentation as well as around the internet.

Security & Safety Disclaimer

This article focuses on design patterns and developer ergonomics; it does not cover security, safety, or compliance controls for AI agent systems. Topics such as data governance, authentication/authorization, secrets management, PII handling, prompt-injection/jailbreak defenses, red-teaming, content moderation, auditability, and regulatory requirements are intentionally out of scope. Please apply your organisation’s security review process before any production use — treat this as a technical comparison, not a security endorsement.

2. Agentic Workflow Patterns

Before we discuss the SDK capabilities, we should look at the foundational patterns that shape how agents operate in practice. In this section, we will go through six common agentic workflow patterns: Sequential Pipeline, Planner-Decider (Orchestrator/Handoff), Graph/DAG (Non-Linear Workflow), Supervisor-Worker (Hierarchical), Broadcast / Federated and Agent-as-Tool. These patterns provide useful mental models for understanding the different ways agents can be structured and coordinated.

Sequential Pipeline Pattern

In a Sequential Pipeline, agents are arranged in a linear chain: Each agent’s output feeds directly into the next agent in order. This pattern is ideal when tasks must happen in a strict sequence, with each step building on the previous one.

Imagine a process that needs to handle a lot of PDFs files, summarise them, identify key entities (names, dates, topics), then arrange them in proper folder structure. You could design an agentic workflow like this: A PDF goes through a Summariser Agent, then its summary goes to an Entity Extractor Agent, then extracted entities go to a Document Classifier Agent, and finally the classification goes to a File Organiser Agent. Each agent adds to or transforms the data for the next step. This ensures a step-by-step refinement of the document.

Image by author

Planner-Decider (Orchestrator/Handoff) Pattern

The Planner-Decider pattern features an orchestrator agent that plans or routes tasks to other agents best suited to execute them. One agent “decides” what needs to be done or who should do it, rather than a fixed chain. This often manifests as a handoff: the planner agent hands off control to a specialist agent mid-workflow when appropriate. It’s useful for dynamic task delegation and conditional workflows.

Now, let’s use the document processing as an example again with slight differences. Imagine you have to handle files in these 2 scenarios by using the same agent workflow:

Scenario A: You have a few phone photos of the receipt and want the application to extract the information and place this photo in a proper folder.

Scenario B: You have a 40-page employment contract PDF, and you want the application to run policy checkers due to potential risk clauses, redact the PII (Personal identifiable Information), then provide the summary and save the final document properly.

It seems that you have to design 2 sequential pipelines to handle these 2 workflows, but in fact, it can be done by a single Planner-Decider design pattern:

Cast of agents

  • Coordinator (Planner): decides the path; aggregates final result
  • OCR Agent: turns scans/images into text
  • PII Redactor: masks personal data
  • Summariser: produces brief summary
  • Extractor: pulls structured fields (e.g., invoice total, vendor)
  • Classifier: labels doc type (invoice/contract/resume/other)
  • Policy Checker: flags risky terms in contracts
  • File Organiser: move files to the proper folder

How the planner decides

  1. If scanned/image-based → call OCR first.
  2. If it contains PII (names, emails, SSNs) → call PII Redactor before storing/forwarding.
  3. Always call Classifier to know the doc type.
  4. If invoice → call Extractor (vendor, date, amount) → optional Summariser.
  5. If long (>10 pages) → Summariser before anything expensive, to give a quick preview.
  6. If contract → Policy Checker (risk clauses) → Summariser.
  7. Aggregate results → return final package (clean text + type + key fields + summary + flags).

Path walk-throughs

The application receives mixed documents (invoices, contracts, resumes). A single Coordinator (Planner) Agent looks at each document and decides which specialists to call and in what order. Specialists don’t call each other, only the planner does the routing.

Scenario A:

Input: A phone photo of a receipt (image), 1 page.

Planner path: OCR → Classifier → Extractor → File Organizer

Why: It’s an image (needs OCR). The classifier says “invoice/receipt.” Extractor gets totals. No PII beyond business info; doc is short, so no summary.

Scenario B:

Input: Native PDF, 40 pages, includes names/emails.

Planner path: Summariser (quick preview) → Classifier → PII Redactor → Policy Checker → Summariser (final, now on redacted text) → File Organiser

Image by author

Graph/DAG (Non-Linear Workflow) Pattern

Graph/DAG workflow generalizes the pipeline by allowing branching and merging of agent paths. Instead of a single line, the control flow forms a directed acyclic graph (DAG): multiple agents can run in parallel on different subtasks, and their results can converge into subsequent agents. This pattern suits complex tasks where some steps can happen concurrently or where there are conditional branches.

Let’s take the document processing workflow again as an example: Consider processing a document by branching the workflow: a Summariser Agent and an Entity Extractor Agent operate in parallel on the same document (one produces a summary while the other pulls out structured data). Their outputs are then merged and passed to a Document Classifier Agent, which uses both the summary and extracted entities to classify the document. Finally, the classification goes to an Organiser Agent. This forms a graph: the document feeds into two parallel agents, then their two outputs feed into one agent.

Image by author

Supervisor-Worker (Hierarchical) Pattern

The Supervisor-Worker pattern (a special case of hierarchy) involves a primary supervisor agent overseeing one or more worker agents. The supervisor manages the high-level goal, delegates sub-tasks to workers, and integrates or verifies their outputs. Unlike the planner-decider which often hands off completely, a supervisor might remain in the loop, coordinating multiple workers and possibly performing a final review or decision. This resembles a manager and team relationship. Let’s take the customer support workflow as an example:

Cast of agents

Supervisor agent:

Support Lead (owns goals, routing, reviews)

Worker agents:

  1. Intent Classifier — tags each message (billing, tech, password, complaint…)
  2. Account Lookup Agent — pulls plan, region, past tickets from CRM
  3. Knowledge Searcher — finds the best help-center article or macro
  4. Draft Responder — writes a tailored reply
  5. Policy Checker — enforces refund/credit limits, legal phrasing
  6. Tone & QA Editor — fixes clarity, empathy, grammar
  7. SLA Scheduler — sets follow-ups, escalates if deadlines risk being missed

How it runs (Supervisor stays in the loop)

  1. Intake & plan: Support Lead ingests a batch of emails and asks:
  • Intent Classifier → “Label each, add urgency score.”
  • Account Lookup → “Attach customer context for each ticket.”

2. Parallel work per ticket: For each ticket:

  • Knowledge Searcher finds 1–2 relevant articles.
  • Draft Responder writes a reply using the article + customer context.

3. Supervisor review & checks: Support Lead bundles outputs and calls:

  • Policy Checker → “Is refund amount within tier limits? Any restricted promises?”
  • Tone & QA Editor → “Make it clear, empathetic, concise (≤180 words).”

4. Revision loop: If Policy Checker flags an issue, Support Lead sends it backto Draft Responder:

  • “Remove unconditional refund; offer troubleshooting first + partial credit option.”
    Lead repeats until checks pass.

5. Finalise & logistics:

  • The Support Lead approves the reply.
  • SLA Scheduler sets a 48-hour follow-up (or escalates high-urgency cases).
  • The ticket is updated in CRM with resolution notes and linked articles.
Image by author

Broadcast / Federated Pattern

The Broadcast / Federated pattern fans out the same input to multiple peer agents at once, then fans in their independent results to a central Aggregatorthat selects, votes, or synthesises the outcome. Peers do not depend on each other’s outputs; each works in parallel on the identical request. This is ideal when you want coverage, redundancy, diversity, or speed (e.g., take the best price, the fastest acceptable answer, or a majority vote), without building inter-step dependencies like a pipeline or graph. Let’s take a chicken rice delivery workflow as an example:

Cast of agents

Coordinator:

Order Aggregator (collects quotes, normalises fields, ranks, selects)

Peers (receive the same request):

  1. Grab Food Agent — searches chicken rice options, returns {restaurant, items, total_price, ETA_min, delivery_fee, rating, promo}
  2. Food Panda Agent — same schema
  3. Deliveroo Agent — same schema
  4. Direct Restaurant Agent(s) — restaurants with in-house delivery and their own APIs/menus

How it runs (Broadcast fan-out, fan-in)

Intake & constraints: Order Aggregator receives:

  • Dish: “chicken rice” (hawker or restaurant)
  • Address / postal code
  • Budget ≤ S$18, ETA ≤ 35 minutes, rating ≥ 4.2
  • Preferences (white vs roasted, extra chili, no spring onion), and any voucher rules

Fan-out (parallel queries): The Aggregator broadcasts the exact same query to all peers concurrently. Each peer independently searches its catalog, applies stock/availability, and returns a structured quote. No peer waits on another.

Fan-in & normalisation: The Aggregator collects responses until a timeout (e.g., 2–3s):

  • Normalise fields (price to S$, unify item names, standardise ETA).
  • Dedupe restaurants that appear on multiple platforms (prefer lower fee / better ETA).
  • Filter by constraints (budget/ETA/rating).
  • Score & rank.
Image by author

Agent-as-Tool Pattern

The Agent-as-Tool pattern treats one agent as a callable tool for another agent. In other words, a primary agent can invoke a secondary agent’s capabilities just like it would call an API or function, rather than handing off full control. This pattern effectively nests agents: the top-level agent remains in charge of the interaction, and whenever it needs a specific subtask done, it calls a subordinate agent (providing it some input) and waits for the result to incorporate into its own reasoning. This approach keeps a single coherent “thread of conversation” while still leveraging multiple specialised agents. Here we provide an example for dinner planning.

User asks

“Book a nice birthday dinner next Saturday at 7pm for 6 people, near Orchard. Keep it under SGD $40 per person, and make sure there are vegetarian options.”

Cast of agents

  1. Restaurant Finder — looks up places that fit location, price, cuisine, and ratings.
  2. Menu & Diet Checker — scans menus to confirm vegetarian choices and typical spend.
  3. Reservation Helper — checks table availability at 7pm for 6 and drafts a booking message.

How it runs (one clean path)

  1. Chatbot → Restaurant Finder: Returns 5 candidates near Orchard with ~$25–$38/pax and good reviews.
  2. Chatbot → Menu & Diet Checker on those 5: Confirms 3 have solid vegetarian mains (not just salad) and fit the budget.
  3. Chatbot → Reservation Helper on the top pick: Finds a 7:00 pm slot for 6; drafts “Birthday dinner” note and seating preference.
  4. Chatbot shows you:
  • The chosen restaurant (why it was picked)
  • 1–2 backups
  • The ready-to-send booking message
Image by author

Agent SDK Support in Various Workflow Patterns

The table summaries workflow-pattern coverage by SDK.

References

LangGraph:

OpenAI Agents SDK:

Google ADK:

AWS Strands SDK:

Microsoft 365 Agent SDK:

3. HITL (Human-in-the-Loop) Design

Human-in-the-loop (HITL) patterns let humans review, approve, or override an AI agent’s decisions before execution. In practice, this often means pausing an agent’s workflow at critical steps (e.g. before a risky tool call) so a person can intervene, or explicitly handing off control to a human for approval or additional input. In general, there are four types of HITL patterns:

Approve or Reject

Pause the agent workflow before a critical step, such as an API call, to review and approve the action. If the action is rejected, you can prevent the agent workflow from executing the step, and potentially take an alternative action. Let’s take the previous document process as the example here: imagine the Document Classifier proposes a folder path & filename (e.g. Legal/Contracts/2025/Acme_MSA_2025–07–22.pdf) for your approval before saving it.

Image by author

Review and Edit

A human can review and edit the temporary deliverable of the agent in the workflow. This is useful for correcting mistakes or updating the deliverable with additional information. Let’s take document processing as an example here: Summariser returns a draft, and you edit the summary by adding some key notes, then the updated summary is persistent to pass to Entity Extractor for the next step.

Image by author

Review Before Tool Calls

Similar to the “Review and Edit” pattern, but it’s to verify a tool that the agent is going to use. This is particularly critical in applications where the tool calls requested by the agent may be sensitive or require human oversight. Here we take the previous dinner planning agent as an example: Before the Reservation Helper’s “book table” call, a human review is in place to decide whether to go for backup plans.

Image by author

Multi-turn Conversation in a Multi-agent Setup

multi-turn conversation involves multiple back-and-forth interactions between an agent and a human, which can allow the agent to gather additional information from the human in a conversational manner. This design pattern is useful in an LLM application consisting of multiple agents. Let’s take the dinner planner workflow as an example again. Here, we need to make the Chatbot more aware of how human preferences evolve (i.e., “quiet ambience > cheapest price”). HITL becomes an ongoing dialogue, not a single gate.

Image by author

Agent SDK Support in various HITL Pattern

The table compares agent SDK support across HITL patterns.

References

OpenAI Agent SDK:

Google ADK:

LangGraph:

AWS Strands Agent SDK:

4. Is this Agentic AI or Just Agentic Workflows?

Agentic AI is typically characterized by its level of autonomy in determining the path of operations. Some of these patterns like Sequential Pipeline are often just agentic workflows, whereas Graph/DAG and Broadcast/Federated patterns can be agentic AI if the decision paths are dynamic and autonomous — i.e. not always if-else.

Can HITL patterns also be Agentic AI?

Refer to the picture above.

The consideration for level of autonomy still applies. In this context, it depends on the role of the human. If the human is there for approval and/or goal-setting, it can be agentic AI. However, if the human decides which agents to route the flow to, then it’s just an agentic workflow.

5. Agent SDK Interoperability: A2A and MCP

The Agent-to-Agent (A2A) protocol (launched April 2025) is an open, vendor-neutral JSON-RPC-over-HTTP standard for agents to discover, communicate, and collaborate. It uses plain HTTP/JSON so integrating A2A is similar to implementing a REST or gRPC API. Many AI agent frameworks also use Anthropic’s Model Context Protocol (MCP) to connect agents with external tools or data. We compare the agent SDKs on their support for A2A and common integration methods (REST APIs, MCP tools, gRPC, etc.), noting which capabilities are out-of-the-box and which require custom work.

OpenAI Agent SDK

OpenAI’s Agents SDK natively supports the MCP for tool integration. This means out-of-the-box OpenAI Agents can use any MCP-based tool (HTTP APIs, databases, AWS/Stripe services, etc.) by registering them. However, the OpenAI Agents SDK has no built-in A2A support. To connect an OpenAI-based agent to an A2A ecosystem, developers must write custom integration. See A2A — (Agent-to-Agent) Protocol Support for further details.

Google ADK

By default, ADK agents use the MCP to attach external tools, and ADK provides easy MCP integration (e.g. MCPToolset classes). Crucially, ADK has native A2A support. For example, calling to_a2a(root_agent) on an ADK agent spins up an HTTP server (uvicorn/FastAPI) that implements the A2A server interfaces. See A2A Quickstart (Exposing) — Agent Development Kit for more details. In short, A2A protocol support is built-in (here is the sample A2A client/server code), and MCP-based tools are first-class.

AWS Strands Agents SDK

Strands integrates MCP by default: it provides an MCPClient and comes with many pre-built MCP servers and tools (e.g. for AWS, HTTP, file ops), see Introducing Strands Agents, an Open Source AI Agents SDK for further details. As of Strands 1.0 (July 2025), A2A is fully supported. Strands supplies an A2AServer class: for example, one can write a2a_server = A2AServer(agent=my_agent) and a2a_server.serve() to publish the agent over SSE (Server-Sent Events), see Agent2Agent (A2A) — Strands Agents for more information.

LangGraph (LangChain)

LangGraph is designed to orchestrate complex agent workflows, but it does not include A2A connectivity by default. Out-of-box it supports persistent, multi-tenant workflows via its server, but linking LangGraph agents to other systems (A2A networks, message buses, etc.) typically requires custom connectors. See Building an A2A Currency Agent with LangGraph for further details.

LangGraph also supports significant integrations with the Model Context Protocol (MCP) in two ways

  • LangGraph Platform Now Supports MCP: LangGraph Platform agents now automatically expose an MCP endpoint. This lets developers use those agents as tools from any MCP-compatible client over streamable HTTP without extra code or infrastructure.
  • MCP Adapters for LangChain and LangGraph: The new langchain-mcp-adapters package (Python & JavaScript) converts MCP tools into a format compatible with LangChain and LangGraph. This lets developers easily plug hundreds of existing MCP tool servers into their LangGraph agents.

Microsoft 365 Agent SDK

Microsoft’s 365 Agent SDK is aimed at enterprise chatbot/agent scenarios. It provides frameworks to build agents that integrate with Microsoft 365, Teams, Copilot Studio, Web Chat, and even third-party channels (Slack, Twilio, Facebook Messenger). However, it has no built-in A2A or MCP support. However, the SDK can integrate with Microsoft Semantic Kernel to achieve A2A and MCP support. See Leveraging Microsoft 365 Agents SDK with Semantic Kernel for Enhanced Multichannel AI and Guest Blog: Building Multi-Agent Solutions with Semantic Kernel and A2A Protocol for more information.

Agent SDK Interoperability Matrix: A2A and MCP

This table summaries A2A and MCP interoperability across agent SDKs.

6. LLM Provider Support

Here, we examine the default supported LLM Providers of each SDK and whether it can be connected to LiteLLM as a unified proxy model provider.

OOTB Model Service Provider Support

# = via OpenAI API-compatible models servers that aren’t LiteLLM

^ = via LiteLLM, meaning it leverages the LiteLLM library as a translator to standardise all to OpenAI API formats

✅ indicates an OOTB wrapper class that supports direct authentication with the service (e.g. a tick on Vertex AI means the SDK supports usage of Google ADC for access to Vertex AI directly)

LiteLLM Integration with All Five SDKs

LiteLLM can be integrated with all 5 SDKs. The sample code and the screenshot are provided in the public GitHub repo here.

LiteLLM compatibility matrix across the five SDKs.

7. Agent Conversation Tracing and Debugging

Here we compare the developer experience for agent conversation tracing and debugging. Our evaluation focuses on: trace granularity (messages, tool calls, and state transitions), built-in viewers vs. CLI/log workflows.

OpenAI Agent SDK

The OpenAI Agents SDK includes built-in observability. The SDK’s tracing system logs detailed information on tool usage, decision steps, and agent handoffs, providing full visibility into how tasks are handled.

Google ADK

The Google ADK relies on standard logging and CLI tools for observability. It uses Python’s built-in logging library, so you control log verbosity yourself. However, the Google ADK itself does not feature a built-in visual debugger for conversation tracing, it is designed to seamlessly integrate with specialised observability platforms. This approach allows developers to choose the tools that best fit their workflow and provides a more advanced set of features than a bespoke, built-in solution might offer. For a more sophisticated and visually intuitive debugging experience, developers are turning to third-party tools like LangDB or Opik by Comet. Or LangFuse.

LangDB, see Discover End-to-End Tracing on Google ADK with LangDB for more information.
Opik, see Google ADK | Opik Documentation for further details

AWS Strands Agent SDK

AWS Strands Agent SDK incorporates a robust framework for conversation tracing and observability. Instead of providing a proprietary interface, AWS Strands embraces an open standard, OpenTelemetry (OTEL), to export detailed trace data. This allows developers to integrate with a variety of popular observability platforms, with Langfuse emerging as a prominent solution for visualising and analysing these traces.

Langfuse is an open-source observability platform specifically designed for LLM applications. It offers a user-friendly interface to explore the traces generated by Strands agents. The integration is straightforward and involves configuring the Strands agent with the appropriate Langfuse credentials and an OTEL exporter. See Integrate Langfuse with the Strands Agents SDK for further details.

Screenshot: Langfuse working with the AWS Strands Agent SDK.

LangGraph (LangChain)

LangGraph (by LangChain) is designed with a visual debugging IDE. Its LangGraph Studio provides an interactive agent IDE where you can visualise the agent graph, inspect node states, and watch executions unfold. Studio integrates with LangSmith (LangChain’s tracing service) so that every run can be recorded and replayed.

While the LangGraph SDK is free to use, you need to pay for LangGraph Studio and LangSmith if free tier is not sufficient for you, in this case, you might need to consider using LangGraph Server (Local) integration with LangFuse, it’s best for no-cost development and production with full control.

LangSmith, see LangGraph Platform plans — Docs by LangChain and LangSmith for more details.
Screenshot: LangGraph working with Langfuse, see Open Source Observability and Tracing for LangChain & LangGraph (Python & JS/TS) — Langfuse for further detailed information.

Microsoft 365 Agent SDK

The Microsoft 365 Agents SDK provides a rich local debugging experience: developers can run their agent in the Agents Playground within Visual Studio Code. In Agents Playground you can launch the bot and use VS Code’s Run & Debug panel to step through messages and state changes. This GUI lets you simulate Teams conversations and view detailed logs and message payloads as the agent runs — making it easy to inspect exactly what each agent does during development. See Debug bot using Agents Playground — Teams | Microsoft Learn for more information.

Screenshot: MS 365 Agents Playground

8. Ecosystem, Vendor Lock-in and Others

OpenAI Agent SDK

Ease of Setup
The OpenAI Agents SDK is extremely easy to get started with in Python. Official docs show a single‐command install (pip install openai-agents) and then using the basic Agent and Runner classes — you only need to set your OPENAI_API_KEY as an environment variable. The SDK is lightweight with few primitives, so its quickstart examples run out of the box with minimal configuration and no complex scaffolding.

Native Ecosystem Focus & Fit
The SDK is optimised for use with OpenAI models, but it is also provider-agnostic and supports over 100 other large language models (LLMs). It integrates well with the broader Python ecosystem and is a good fit for developers who are already using Python for their AI and machine learning workflows.

Vendor Lock-in Risk
The vendor lock-in risk is low. The SDK is open-source and its support for a wide range of LLMs means that developers are not tied to the OpenAI ecosystem. However, the risk becomes medium when you start anchoring core runtime/ops to OpenAI-only services or features:

  • You depend on OpenAI’s built-in Traces dashboard for observability
  • You build workflows around Responses-API-specific tools/capabilities(e.g., OpenAI’s web search, computer use/Operator, document search)
  • You integrate your data using OpenAI’s own primitives (e.g., OpenAI vector stores/embeddings) instead of a neutral vector DB.
  • You rely on OpenAI-hosted fine-tuning/evaluation loops tied to the SDK.

AWS Strands SDK

Ease of Setup
AWS’s Strands SDK also offers a Python‑first setup. Its quickstart advises using Python 3.10+, creating a virtualenv, and running pip install strands-agents strands-agents-tools to install the core packages. Strands requires AWS credentials (e.g. for Bedrock models) to be configured in your environment, but aside from that the official documentation provides clear step-by-step instructions and example code, making the initial setup straightforward for any developer familiar with AWS tools.

Native Ecosystem Focus & Fit
The Strands SDK is deeply integrated with the AWS ecosystem. It works seamlessly with Amazon Bedrock, AWS Lambda, Amazon EC2, and other AWS services. This makes it a natural choice for organisations that are already using AWS for their cloud infrastructure.

Vendor Lock-in Risk
The vendor lock-in risk is low since it supports Amazon Bedrock models andOpenAI/Azure models, and explicitly “works outside AWS” on-premises or hybrid. However, the risk becomes medium in the following scenarios:

  • You standardise on Amazon Bedrock AgentCore for running agents. e.g., depending on AgentCore Runtime, Memory, Identity, Gateway, and its built-in observability.
  • Safety/guardrails are implemented with Bedrock Guardrails as the primary policy engine
  • Your RAG layer is built around Bedrock Knowledge Bases (KBs)
  • You deploy exclusively on AWS serverless/container services (Lambda, ECS/Fargate) and wire ops to CloudWatch

Google ADK

Ease of Setup
Google’s ADK setup is similarly simple. The official guide recommends creating a Python virtual environment and then installing the ADK with a single command (pip install google-adk). No complex build or framework is needed — just Python 3.x. Google’s documentation is thorough (covering both Python and Java, streaming, etc.), and the one‑step install plus sample code means developers can begin building agents with minimal overhead.

Native Ecosystem Focus & Fit
It is tightly aligned with Google Cloud’s Vertex AI ecosystem: it is the same framework powering Google’s internal agent products (Agentspace, Customer Engagement Suite) and integrates with Vertex AI features. ADK is focused on Google Cloud/Vertex AI (with built-in support for Google data sources like Search/Maps), but remains open to any LLM.

Vendor Lock-in Risk
ADK is open-source and model-agnostic, you can choose from Gemini on Vertex AI or from other providers, so the risk is low. However, the risk becomes medium in any of these situations:

  • Your retrieval/knowledge layer relies on Vertex AI services. Using Vertex AI RAG Engine and/or Vertex AI Search grounding (indexes, connectors, schemas, relevance tuning) ties your RAG to Google services.
  • You ground model responses with Google Search
  • You lean on Vertex AI’s built-in safety/guardrail stack.
  • Your infra patterns are GCP-only (Cloud Run/GKE) and billing-gated. ADK is deployment-agnostic, but teams often adopt Cloud Run/GKE deployments and unlock paid Agent Engine usage (Express Mode limits restrict Engine without billing). Those choices increase operational rework to move clouds.

LangGraph (LangChain)

Ease of Setup
LangGraph installs easily via PyPI. The recommended step is simply pip install langgraph in a Python 3 environment, typically within a venv. In practice you’ll also install any LLM adapters (e.g. langchain-openai) and set API keys (as shown in tutorials), but the core library has no unusual prerequisites. The Real Python tutorial confirms the straightforward install and gives examples right after, so developers find the initial setup very user-friendly. See the official documents for more details.

Native Ecosystem Focus & Fit
LangGraph is not tied to any specific ecosystem. It is an open-source library that can be used with any LLM and can be deployed on any platform. It is a good fit for developers who want a high degree of control and flexibility.

Vendor Lock-in Risk
The vendor lock-in risk is low. LangGraph is open-source, model-agnostic, and platform-agnostic, which means that developers are not locked into any particular vendor’s ecosystem. However, the risk becomes medium in any of these scenarios:

  • Your tracing/evals live primarily in LangSmith. Centralising observability, dashboards, and evaluation datasets in LangSmith (including paid retention tiers) raises switching costs.
  • You anchor deployment & operations on LangGraph Platform (managed). If your deploys, scaling, long-running job management, and agent UX depend on LangGraph Platform’s hosting, opinionated API for agent UX, and integrated developer studio, a move off the platform means re-plumbing hosting, auth, routing, and UX endpoints elsewhere. The platform is purpose-built for long-running, stateful workflows), but makes you operationally dependent on LangChain’s infrastructure.

Microsoft 365 Agent SDK

Ease of Setup
Compared to other SDK, it’s more complex to set up. You need Python 3.9+, a bot framework environment (the quickstart uses aiohttp), and tools like VS Code or Azure for hosting. The guide shows creating a project, then running pip install microsoft-agents-hosting-aiohttp to add the SDK. While the pip install itself is simple, the official quickstart involves several code files (for a web server and agent logic) and Azure/Microsoft 365 configurations.

Native Ecosystem Focus & Fit
The SDK has a strong focus on the Microsoft 365 ecosystem, with deep integrations with Microsoft Copilot, Microsoft Teams, and other Microsoft 365 applications. It is designed to allow developers to build agents that can interact with data and applications within this ecosystem.

Vendor Lock-in Risk
The risk is low since the SDK is AI-vendor-agnostic, it can use different kinds of models from various model service providers via LiteLLM integration, however, the risk becomes medium in any of these situations:

  • If your agent is deployed only to Microsoft 365 channels (Copilot/Teams) and UX/flows rely on Teams/Copilot behaviors and channel adapters
  • The data layer depends on Microsoft Graph & Graph connectors. When your grounding, retrieval, and enterprise context are wired through Microsoft Graph (mail, files, calendar, chat) and Graph connector agent for on-prem sources, leaving the Microsoft ecosystem means replacing identity, permissions, schemas, and connector plumbing.
  • Copilot integration as the primary “front door.” Using the SDK + Toolkit path to bring agents directly into Microsoft 365 Copilot makes Copilot the default access channel and policy surface; migrating off means rebuilding entry points, auth, and compliance elsewhere.

Agent SDK Language Support

Supported programming languages per SDK

9. Which SDK should I use?

Unless you’re building solely for M365 channels, any of the other SDKs we’ve analyzed besides the M365 Agents SDK would probably be suitable. They are equally easy to set up, equally flexible, and would probably only differ in preference and native ecosystem support (e.g. Google ADK works better with GCP stuff).

There is no one SDK that is “better” than all the rest; it’s more a matter of how and where you intend to use it. Here we provide some thoughts on the usual role archetypes and the differences in what you might need to consider when evaluating agent SDKs.

If You Are an AI Engineer / Developer

Goals: 
You want to leverage SDKs to create autonomous agents that can handle complex workflows and integrate with LLMs.

Considerations:

  • Ecosystem & Deployment: Where will you run/host and who are the users? (M365, AWS, GCP, generic infra)
  • Tooling & Integrations: Built-in tool adapters (e.g., @tool decorators), MCP support, HITL, tracing/debugging.
  • Dev Experience: Python-first, docs/examples, local dev loop, quickstart complexity.
  • Evaluate requirements — e.g. pattern support

Microsoft 365 Agent SDK
When you need to ship agents across Microsoft 365 Copilot, TeamsWeb Chat and third-party channels like Slack with one code base.

AWS Strands SDK
When you want a code-first, Python-centric workflow that goes from “single agent in a notebook” to multi-agent systems with just a few lines of code. Strands gives you model-driven orchestration, an ergonomic “@tool” decorator, and a growing toolkit (including “agents-as-tools” for sub-agent composition) plus MCP support.

OpenAI Agent SDK
When you need flexible agent orchestration patterns (manager “agents-as-tools” and decentralised handoffs) expressed directly in code — rather than committing to rigid declarative graphs — and when integrated guardrails are a requirement.

Google ADK
When your project requires a multi-agent architecture. The ADK simplifies the creation of complex systems by allowing developers to build applications composed of multiple, specialised agents that can be arranged hierarchically. The official sample agents repo shortens the path from prototype to demo.

LangGraph
When you want code-first control over non-linear agent workflows in Python or TypeScript with a Graph API for sequences/branches/loops, a Functional API to add persistence/HITL/streaming to existing code with minimal changes.

If You Are an Architect

Goals:

  • Strategic fit: Align with your company’s cloud, identity, and data platforms while avoiding unnecessary lock-in.
  • Modular architecture: Compose agents, tools, and services with clear boundaries so components can evolve independently.
  • Operational excellence: Support observability, security, performance (incl. realtime where needed), and reliable deployment targets.

Considerations:

  • Ecosystem & hosting: M365 (AAD/Copilot/Teams), AWS (IAM/Bedrock), GCP (Vertex/Gemini), or cloud-agnostic.
  • Orchestration style: Code-first vs. graph/DAG; single-agent vs. multi-agent; agents-as-tools; A2A interop
  • Realtime needs: Speech in/out, live tool use, low-latency streaming.
  • Observability: Tracing, metrics, event logs, failure recovery, replay/resume.
  • Portability & lock-in: How tightly your business logic binds to vendor runtimes/services.
  • Delivery path: PoC → pilot → production (managed services vs. self-hosted control plane).
  • Assess future integration strategy.

Microsoft 365 Agent SDK
When you need an enterprise-grade custom engine agent with deep integration into the Microsoft 365 ecosystem and the freedom to remain model/orchestrator-agnostic (e.g., Azure AI Foundry, Semantic Kernel).

AWS Strands SDK
When you’re building AWS-centric agents that need first-class integrations with AWS services (native AWS tools and AWS MCP servers) and you plan to deploy on Lambda/EKS/EC2 with production-grade observability.

OpenAI Agent SDK
When you’re building real-timemultimodal conversational or voice experiences that need ultra-low-latency streaming via the Realtime API (speech in/out, live tool use).

Google ADK
When you want a code-first, model-agnostic framework that fits naturally into the Google Cloud/Gemini stack and offers managed production deployment via Vertex AI Agent Engine (with options like Cloud Run and GKE) and need first-class support for the A2A (Agent-to-Agent) protocol.

LangGraph
When you want to represent workflows as directed graphs allows for clear visualisation and understanding of the interactions between different agents and tools. This is particularly beneficial for designing complex systems where multiple agents need to collaborate and hand off tasks.

If you are a Product Manager

Goals:

  • Time-to-value: demo in weeks, pilot in a quarter, scale predictably.
  • Channel reach & UX quality: meet users where they work (M365/Teams, web, mobile, voice).
  • Interoperability & safety: tool integrations (MCP/A2A), guardrails, evals, and observability you can trust.
  • TCO & flexibility: minimise rework if you change models/clouds later.

Consideration:

  • Roadmap horizon: MVP (0–3 mo), Pilot (3–9 mo), Scale (9–18 mo).
  • Ecosystem fit: M365 vs AWS vs GCP vs mixed; compliance/identity requirements.
  • Experience mode: realtime voice, chat, or task automation.
  • Interoperability: MCP tools, A2A participation, third-party channels.
  • Evaluation & guardrails: trajectory/outcome checks, red-team loops.
  • Budget posture: hosted suites vs open-source assembly.

Microsoft 365 Agent SDK
When you want to reach users where they work (Copilot in Microsoft 365 and Teams)
 while avoiding early lock-in: the SDK is designed to be AI-agnostic and multichannel, so you can swap models, evolve orchestration, and reuse the same agent across surfaces as requirements grow.

AWS Strands SDK
When you plan to grow from MVP to enterprise on AWS — Strands offers smooth paths to AWS services (e.g., Bedrock/Lambda) and is built for production scaling, while keeping cross-ecosystem optionality through MCP and A2A interoperability

OpenAI Agent SDK
When you want tightly integrated capabilities, strong guardrails, and a single vendor to support build, run, and observe across the agent lifecycle. Furthermore, the SDK’s ability to handle intricate tasks like customer support automation and multi-step research allows product managers to design intelligent solutions that can significantly enhance operational efficiency and user engagement.

Google ADK
When your roadmap demands optionality (swap models/providers, deploy in different environments), interoperability (participate in A2A ecosystems; consume/expose MCP tools), and quality gates (run trajectory-level and outcome-level evaluations — with CLI/Web-UI flows, and an eval service path when you need scale).

LangGraph
Do not choose LangGraph if you won’t invest in debugging/tracing/evals tooling, you’ll feel the pain. Hosted tools like visual IDEs or tracing/eval suites may add cost (and can scale with multi-agent branching and logs). If the budget is tight, plan an OSS stack and resourcing for it.

Something more about Microsoft Agent SDK

Microsoft’s 365 Agent SDK is primarily focused on enabling agents within the M365 ecosystem (Copilot, Teams, etc.), and does not itself provide explicit multi-agent workflow primitives or HITL design in the same manner as ADK or Strands, because Microsoft doesn’t want to pack everything in one single Agent Framework. Here’s how Microsoft frames the choice. In short: pick the agent framework that matches your audience and level of control:

Microsoft 365 Agent SDK
If you need full-stack, multi-channel agents (Microsoft 365 Copilot, Teams, web/custom apps) with your own AI stack and channel management, choose the Microsoft 365 Agents SDK — it’s AI-agnostic, provides agent scaffolding (state/storage/activity handling), and runs over Azure Bot Service for reliable deployment.

Azure AI Foundry SDK/Agent Service
If you want a managed runtime on Azure with built-in identity, safety, observability, and multi-agent capabilities (e.g., connected agents) and you’re comfortable with Azure’s control plane, pick the Azure AI Foundry SDK/Agent Service.

Semantic Kernel
If you just need an orchestration library you can drop into your own codebase to compose tools/LLMs (and even use alongside the Agents SDK), reach for Semantic Kernel.

Please refer to this official doc regarding how to choose the right Microsoft SDK framework for your use cases.