Engineering Blog

Technical insights from Grid Dynamics engineers

Comparative practical analysis of Agentic AI Frameworks capabilities in 2025

Comparative practical analysis of Agentic AI Frameworks capabilities in 2025

Egor Borisov & Pavel Marchenko · Nov 6, 2025

As of 2025, a variety of frameworks have emerged for developing agentic AI, each enabling core capabilities such as reasoning, memory, planning, tool usage, and multi-agent collaboration. This article presents the most common agent patterns developed up to 2025, from low-level stepwise reasoning to high-level multi-agent orchestration. Beyond theory, we focus on practical aspects of implementing these patterns across popular frameworks—including LangChain, LangGraph, OpenAI Agents SDK, and Google ADK—highlighting differences in architecture, memory management, human-in-the-loop support, tool integration, workflow orchestration, and deployment. Special attention is given to production considerations, such as context control, persistence, guardrails, and scalable deployment, to provide a structured guide for building reliable, real-world agentic applications.

The document outlines comparison strategy:

  1. Tools & MCP servers, agent protocols
  2. Work with memory
  3. How human in the loop is supported
  4. Guardrails integration
  5. Workflow control and orchestration over multiple agents
  6. Agent abstraction levels

At the end of the post there is short digest of each framework, here are links with comprehensive description:


Agentic workflows building pillars

To effectively construct reliable agents, developers rely on a set of fundamental capabilities that serve as the architectural pillars of any agentic system. The implementation and abstraction of these concepts vary significantly across frameworks, directly impacting an agent's power, safety, scaling capabilities and production readiness.

1. Tools & MCP servers, Agent protocols

While an LLM’s knowledge is static, tools enable the agent to perform real-world actions or retrieve up-to-date information. Without them, an agent is limited to reasoning in isolation, unable to act or access live data. Tools can be categorized into several types: Application-managed function calls: Simple programmatic actions such as calculations, data transformations, or application-level services that interact with web search, databases, and other systems; Custom external endpoints, MCP servers: Specially designed APIs for LLMs, offering a standardized, LLM-centric interface (Model Context Protocol) to access specialized models, workflows, or services. They function as a unified collection of tools, seamlessly integrating multiple APIs, LLMs, and business logic into a single environment; Agent-to-agent (A2A) interactions: Agents can act as tools for one another, requesting specific reasoning, computations, or actions from another agent. Leveraging tools, MCP servers, and A2A interactions allows agents to operate in the real world, grounding their reasoning in live data and actions. Advanced agent patterns rely on these capabilities, making them indispensable for complex, multi-step tasks.

2. Memory

Memory is LLMs brain ability to retain context. Memory allows an agent to persist information across multiple interactions or steps, creating a coherent and stateful experience. Without it, every turn is an isolated, stateless transaction. Memory can be categorized into two types: Short-term memory: This typically refers to the conversation history within a single session. It allows the agent to recall previous questions and answers to maintain a logical flow (eg, remembering a user's name); Long-term memory: This involves persisting information across sessions, often by storing summaries or embeddings of conversations in an external database (like a vector store). This enables personalization and allows the agent to "learn" from past interactions over time. Effective memory management is critical for complex, multi-step tasks and is a key challenge in controlling the context window. Frameworks differ greatly in how they facilitate this, from simple in-memory buffers to sophisticated integrations with vector databases.

3. Human in the Loop (HITL)

Human-in-the-loop (HITL) capabilities integrate points for human oversight, intervention, and approval directly into the agent's workflow. This could be to approve a potentially destructive action (like deleting a database record), clarify an ambiguous request, or validate a generated plan before execution. It ensures that a human can steer, correct, or stop the agent when necessary, providing a critical layer of control and validation that purely autonomous systems lack.

4. Guardrails: Ensuring Safe and Compliant AI Behavior

Guardrails are automated safety mechanisms designed to keep AI agents operating within safe, compliant, and predefined boundaries. They function as programmatic checkpoints that monitor an agent’s inputs, internal reasoning, and final outputs, ensuring that every action aligns with safety policies and business rules. Key functions of guardrails include: Topic Control: Restricting the agent from discussing prohibited topics; Security & Privacy: Preventing leaks of PII or other confidential data; Content Filtering & Quality Validation: Detecting and blocking inappropriate, harmful, or low-quality outputs before they are delivered; Output Validation & Formatting: Enforcing structured responses, such as valid JSON schemas, ensuring compatibility with downstream systems; Operational Control: Limiting agent actions, including the number of API calls or interactions with specific tools, to maintain safe behavior. For business-critical and public-facing applications, guardrails are a non-negotiable requirement to maintain brand safety, ensure regulatory compliance, and safeguard sensitive information.

5. Basic Static Workflows - Control Flow

Agentic frameworks provide various ways how workflows can be orchestrated. Most common orchestration patters are:

Sequential Execution: agent runs sub-agents linearly. Each sub-agent executes in order, state preserved across transitions. Control passes from one agent to next automatically.

Parallel Execution: agent runs sub-agents concurrently using asyncio. All sub-agents execute simultaneously, events merged via queue synchronization. Shared context available to all parallel branches.

Loop Execution: agent repeats sub-agents iteratively. Execution continues until max_iterations reached or until a termination condition/event (e.g. a sub-agent signals completion via an escalation flag). State resets between iterations for refinement cycles.

Hierarchical Composition: composite agents can nest arbitrarily, building multi-level execution trees. For example, a root sequential agent might orchestrate a parallel search phase followed by a Loop refinement phase.

6. Agent abstraction levels

In this section we are going to shortly introduce most common agent patterns, from lower level of reasoning abstraction and interaction to a higher level.

6.1 Chain-of-Thought

Chain-of-Thought is a foundational reasoning pattern in LLM-based agents where the model produces intermediate reasoning steps internally before arriving at a final answer. CoT is purely prompt-driven, focusing on structured, step-by-step reasoning without interacting with external tools or agents. How It Works & Key Features: The agent is prompted to “think step by step” before answering; Produces sequential reasoning steps that lead to the solution; No looping, self-reflection, or tool interaction. CoT is the most basic reasoning layer (usually used as a building block) - all other agent types build on or extend stepwise reasoning with actions, planning, or collaboration. Prompting overview

Pros:

  1. Simple to implement; effective for math, logic, and structured reasoning;
  2. Improves accuracy in complex problem-solving;
  3. Provides substantially more reliable and structured outputs unlike higher-level agent types; Cons:
  4. Limited to internal reasoning; cannot interact with tools or APIs;
  5. Cannot handle long-horizon workflows or external dependencies;
  6. Useful only for well-formed closed-form tasks with clear expectations for input and output;

Example Use Cases:

  1. Named Entity Recognition and Natural Language translation tasks (Candidate CV parsing, Booking system chatbot data gathering, etc);
  2. Product catalog data enrichment based on image visual features;
  3. Any single-turn reasoning tasks requiring clear intermediate steps.

6.2 ReAct (Reason + Act)

ReAct is an agent pattern that interleaves reasoning and action, allowing the agent to perform tasks that involve tool usage, API calls, or dynamic observation. It is reactive, flexible, and can adjust its reasoning based on the outcome of each action. How It Works & Key Features:

  • Alternates between “Thought” (reasoning) and “Action” (tool/API execution);
  • Observes the results of actions and incorporates them into subsequent reasoning;
  • Highly reactive; planning is implicit and incremental. Reason + Act

Difference from Lower-Level Agents:

  • Unlike CoT, ReAct actively interacts with the environment or tools;
  • Adds real-time observation and action execution to stepwise reasoning.

Pros:

  • Flexible and reactive; adapts to changing information;
  • Supports tool-assisted reasoning and dynamic problem solving. Cons:
  • Can become inefficient if tool calls are expensive;
  • Implicit planning may lead to suboptimal long-horizon strategies;
  • More likely to fail to structure the output in requested format. Example Use Cases:
  1. Question answering with web or database queries;
  2. Dynamic decision-making tasks.

6.3 CodeAct

CodeAct is a domain-specialized ReAct agent designed for programming tasks. It uses a ReAct-style reasoning loop to generate, execute, and debug code in real time. How It Works & Key Features:

  • Alternates between reasoning (“plan next code step”) and action (write/run code, observe output);
  • Can correct errors or adapt code based on execution results;
  • Supports structured execution, test feedback, and debugging loops. Code Act Difference from Lower-Level Agents:
  • Builds on ReAct architecture but specialized for coding tasks;
  • Adds domain-specific observation handling (syntax, runtime errors) and deterministic output checking.

Pros:

  • Automates coding, testing, and debugging;
  • Can handle iterative code development or code synthesis tasks.

Cons:

  • Requires careful environment setup (code execution sandbox);
  • Limited to programming domains; not general-purpose.

Example Use Cases:

  • Writing Python scripts or data pipelines;
  • Generating SQL queries and validating against a database;
  • Debugging and testing code iteratively;

6.4 Plan-and-Execute

Plan-and-Execute is a deliberative agent pattern where the agent first generates a complete multi-step plan and then executes each step sequentially. It is suitable for long-horizon, structured workflows. How It Works & Key Features:

  • Two-phase architecture: explicit planning phase followed by execution phase;
  • Planning is high-level and considers the entire task before performing actions;
  • Can incorporate tools or APIs during execution, but the plan is defined upfront; Planning and execution

Difference from Lower-Level Agents:

  • Unlike ReAct or CodeAct, Plan-and-Execute separates planning from action;
  • More structured, less reactive, optimized for multi-step workflows.

Pros:

  • Well-suited for long tasks requiring structured reasoning;
  • Easier to debug or review plans before execution.

Cons:

  • Less reactive; plans may fail if the environment changes mid-execution;
  • Planning overhead can be significant for small tasks.

Example Use Cases:

  • Writing multi-section reports or documents;
  • Complex workflow automation (data pipeline orchestration);
  • Multi-step problem solving with predictable steps.

6.5 Graph-of-Thoughts

Graph-of-Thoughts is a high-level agent pattern where reasoning is represented as a branching graph, allowing parallel exploration of multiple hypotheses and merging of conclusions. How It Works & Key Features:

  • Creates multiple reasoning branches simultaneously;
  • Explores alternative solution paths, then aggregates or selects the best;
  • Supports complex decision-making, contingency planning, and reasoning under uncertainty. Graph of Thought

Difference from Lower-Level Agents:

  • Unlike Plan-and-Execute or ReAct, GoT explores multiple reasoning paths in parallel, not sequentially;
  • More sophisticated than linear or reactive loops.

Pros:

  • Robust reasoning in complex problem spaces;
  • Provides a balance between reactive execution and planning;
  • Can identify alternative solutions or detect conflicts.

Cons:

  • Computationally expensive and time-consuming due to branching;
  • Requires careful design to prevent combinatorial explosion.

Example Use Cases:

  • Strategic planning and scenario analysis;
  • Complex multi-step problem solving;
  • Research or reasoning tasks with multiple potential solutions.

6.6 Multi-agent Collaboration

Multi-Agent Collaboration involves multiple specialized agents working together, communicating and coordinating to solve complex tasks. Each agent may use a different reasoning pattern or domain specialization. How It Works & Key Features:

  • Agents are assigned roles or expertise (e.g., Researcher, Coder, Critic);
  • Communication protocols allow agents to exchange observations and results;
  • Can incorporate any lower-level agent type (CoT, ReAct, Plan-and-Execute, GoT) as sub-agents. Multi-Agent Collaboration overview

Difference from Lower-Level Agents:

  • Architecturally distinct because it externalizes reasoning across multiple entities, unlike single-agent patterns;
  • Focused on collaboration and task division rather than linear or branching reasoning.

Pros:

  • Scales to complex, multi-domain tasks;
  • Can leverage specialized skills of each sub-agent.

Cons:

  • Coordination complexity, potential bottlenecks in communication;
  • Requires robust orchestration and conflict resolution;
  • Chances of receiving structured output significantly decreases along with agent size and generalization of the task.

Example Use Cases:

  • Research assistants performing literature review, coding, and summarization simultaneously;
  • Multi-domain customer service bots;
  • Large-scale autonomous workflow orchestration.

Agent patterns range from low-level stepwise reasoning to high-level multi-agent collaboration. As abstraction increases, cognitive complexity grows, reasoning becomes less deterministic, outputs are less structured, and execution timing is harder to predict. Choosing the right pattern requires tailoring the agent design to your task, balancing flexibility, reactivity, and the need for structured, reliable results.


High-level details on most common agents frameworks

With the theory and core components of agents in place, let’s discuss most known frameworks which can be used to implement it. More details about each framework can be found in a separate article in this series.

Crew AI

Crew AI detalied overview

CrewAI’s most important trait is the orientation towards multi-agent collaboration: agent definitions must contain clear roles and backstories, and then combined into a “crew” which is the main agent entity definition. Framework then abstracts most of the actual orchestration —delegation, hand-offs, and iterative refinement on top of a ReAct-style loop. Its optional planning phase also is built-in and provided as a single flag for a main agent entrypoint. Memory is opinionated (short-term, long-term, entity) and shared at the crew level so agents actually “remember” what teammates did. Human-in-the-loop is also intentionally simple: pause, collect feedback, try again. Use Crew AI for:

  • Simulating complex collaborative team dynamics (eg, a "marketing team of a copywriter, editor and analyst" or "software development pod of a product owner, engineer and qa") for the composite problems where it actually makes sense and you want to implement this collaborative approach fast without the need to write too much of custom code.
  • Workflows where high-level task delegation and coordination are more important than complex, low-level control flow.
  • To quickly get an out-of-the box basic planner agent capability for your agent.

Google ADK (Agent Development Kit)

ADK detalied overview

ADK's primary advantage is its native integration with Google Cloud. It comes with over 50 pre-built tools for services like BigQuery, Vertex AI, Google Maps, and GKE. It’s architected to run the same agent logic on different execution backends (local, Vertex, GKE) and to store state/memory in managed services (e.g. VertexAiRagMemoryService and VertexAiMemoryBankService), which makes it suitable for developing more production-oriented projects from the start. ADK's control flow is based on agent composition. You build workflows by nesting SequentialAgent, ParallelAgent, and LoopAgent components, creating a deterministic, code-first execution hierarchy. It natively supports Chain-of-Thought by leveraging Gemini's built-in "thinking API" and provides a good out-of-the box CodeAct implementation. It's Human-in-the-loop is positioned as a control surface for sensitive steps (transfers, mutations, high-cost calls), so it works well in governed environments. Use Google ADK for:

  • Enterprise applications built on Google Cloud.
  • Workflows that require managed, scalable backends for code execution, memory, and session state.
  • Applications needing native integration with Google services.
  • Workflows requiring tool-level confirmation for security or compliance.

LangGraph / LangChain

LangGraph / LangChain detalied overview

LangGraph is less of an "agentic framework" and more of a "framework for building agentic workflows." Its core abstraction is a stateful graph. You define the explicit control flow as a set of nodes (functions, agent calls) and edges (conditional or sequential links). This allows you to build any pattern, from a simple ReAct loop to complex, cyclical, multi-agent architectures like Graph-of-Thoughts (which you still must implement yourself using LangGraph's abstraction primitives). LangGraph can save the entire graph state after every single step to a database (like SQLite or Postgres). This enables production-grade durability and Human-in-the-Loop mechanism. Then an interrupt() function can be called anywhere in your graph to pause the workflow indefinitely (for hours, days, or weeks). A human can then review the full state and resume the workflow with new instructions. It leverages the entire LangChain ecosystem for its extensive toolset, and its design is ideal for pairing with LangSmith , which provides a complete platform for deployment, tracing, evaluation, and monitoring. Use LangGraph for:

  • Building custom agent architectures or implementing novel reasoning patterns (like Plan-and-Execute or GoT).
  • Workflows that require complex, conditional branching and cycles (eg, "try X, if it fails, try Y, then loop back").
  • Applications that need to be durable and resumable , surviving crashes or long pauses.
  • Workflows that require complex human-in-the-loop decision-making and approval steps.

Open AI Agents SDK

Open AI SDK detalied overview

OpenAI’s SDK is a code-first substrate for agent apps: a small set of primitives (agent, tool, handoff, session, guardrail) designed to be composed with plain Python control flow rather than a declarative workflow engine. You get a strong default (ReAct with tools) and a rich set of hosted capabilities, but you’re expected to own orchestration, approvals, and long-running behavior in your code. The payoff is tight control, easy integration into existing services, and observability that’s production-ready without extra plumbing—at the cost of building a few rails yourself.

Use OpenAI SDK for:

  • Most minimalistic and composite agentic tooling in Python-native projects built upon asyncio and standard control flow without any additional abstractions.
  • Applications where focusing on proper validation and policy enforcement is an important requirement from the prototyping phase. Provided framework-level primitives will allow to implement them faster and simpler than via bringing a dedicated guardrail framework.
  • Workflows where having convenient conversation history persistence as sessions context objects matters but you don't need durable, long-pause interrupts.

Summary

Choose Crew AI when your primary goal is to start experimening quickly on a composite problem with a team of autonomous, role-based agents which collaborate and delegate; Choose OpenAI SDK when you want a code-first and generic framework with lean base abstractions including tracing and guardrails as first-class features, integrated natively with OpenAI LLM API. Choose Google ADK when you are building production-grade, scalable applications oriented towards the Google Cloud and Gemini API ecosystem; Choose LangGraph when you are build complex, stateful, and durable workflows for long-live logic cases and complex stateful logic with human-in-the-loop breakpoints.

This article's content is based on a broader feature-to-feature comprehensive comparison across multiple frameworks collected in a complementary spreadsheet.