In the rapidly evolving landscape of artificial intelligence, agentic patterns have emerged as a powerful paradigm for developing sophisticated AI systems. These patterns enable AI systems to move beyond simple query-response interactions to become more autonomous, capable of reasoning, planning, and executing complex tasks with minimal human intervention. For organizations looking to harness the full potential of AI, understanding and implementing agentic patterns is becoming increasingly critical.
At Olympic33, we've been exploring how Microsoft's AI tools, particularly the Semantic Kernel framework and Azure AI services, can be leveraged to implement agentic patterns in enterprise applications. In this post, we'll dive into what agentic patterns are, why they matter, and how you can use Microsoft's toolchain to implement them effectively.
Key Takeaway: Agentic AI represents a fundamental shift from query-response models to autonomous systems capable of reasoning, planning, and executing complex tasks with minimal human intervention.
Agentic patterns in AI refer to design approaches that enable AI systems to function as "agents" - autonomous entities that can perceive their environment, make decisions, and take actions to achieve specific goals. Unlike traditional AI systems that process inputs and produce outputs in isolation, agentic systems maintain awareness of their state, previous interactions, and objectives over time.
The Semantic Kernel Agent Framework defines AI agents as software entities designed to perform tasks autonomously or semi-autonomously by receiving input, processing information, and taking actions to achieve specific goals. Agents can send and receive messages, generating responses using a combination of models, tools, human inputs, or other customizable components.
Some key characteristics of agentic patterns include:
1. Autonomy: The ability to operate with minimal human supervision
2. Goal-oriented behaviour: Working toward specific objectives rather than just responding to inputs
3. Adaptability: Adjusting strategies based on feedback and changing conditions
5. Tool usage: Invoking external tools and services to accomplish tasks
5. Memory and state management: Maintaining context across interactions
6. Planning and reasoning: Breaking down complex tasks into manageable steps
Key Takeaway: Agentic systems mirror human cognition by breaking down problems, planning solutions, and adapting to feedback—creating AI with persistent memory and context awareness.
The shift to agentic AI represents a fundamental evolution from previous approaches:

Agentic systems bring AI closer to the human cognitive model of breaking down problems, planning solutions, and executing those plans while adapting to feedback and changing conditions.
Key Takeaway: The evolution to agentic AI transforms single-turn, task-specific interactions into multi-turn workflows with state management, adaptability, and extensible capabilities.
AI agents offer several advantages for application development, particularly by enabling the creation of modular AI components that can collaborate to reduce manual intervention in complex tasks. Key benefits include creating modular components, facilitating collaboration between agents, enabling human-agent collaboration, and orchestrating processes across different systems and tools.
Agentic patterns are particularly valuable in scenarios that require:
• Complex multi-step tasks: When a task requires several sequential or parallel operations
• Decision-making under uncertainty: When the best path forward depends on intermediate results
• Specialized domain expertise: When different aspects of a task require different capabilities
• Human-AI collaboration: When humans and AI need to work together efficiently
Key Takeaway: Agentic patterns are particularly valuable for complex multi-step tasks, decision-making under uncertainty, specialized domain expertise, and human-AI collaboration scenarios.
Microsoft has been at the forefront of agentic AI development, with two primary frameworks leading the charge: Semantic Kernel and AutoGen. While both frameworks support agentic patterns, they have different focuses and strengths.
Microsoft's agentic AI story is evolving at a steady pace. Microsoft Semantic Kernel and Microsoft Research's AutoGen are designed to empower developers to build advanced multi-agent systems. The Microsoft Research team is building new agentic patterns and a growing library of purpose-built agents, while the Semantic Kernel team builds on years of enterprise expertise to enable developers to build agents that can be integrated into enterprise applications.
Semantic Kernel is a production-ready SDK that integrates large language models (LLMs) and data stores into applications, enabling the creation of product-scale GenAI solutions. Semantic Kernel supports multiple programming languages: C#, Python, and Java. Semantic Kernel has reached version 1.0 across these languages and is ready for production use. This milestone reflects a commitment to stability and non-breaking changes, providing developers with confidence in building enterprise-ready AI applications.
The Semantic Kernel Agent Framework is built on the concept that:
• Multiple agents can collaborate within a single conversation, while integrating human input
• An agent can engage in and manage multiple concurrent conversations simultaneously
• Different types of agents can participate in the same conversation, each contributing their unique capabilities
AutoGen is an open-source framework designed by Microsoft Research to build AI agent systems. It simplifies the creation and orchestration of event-driven, distributed agentic applications, enabling multiple LLMs and SLMs, tools, and advanced multi-agent design patterns.
Microsoft Research recently introduced Magentic-One, a generalist multi-agent system designed to solve open-ended web and file-based tasks across various domains. It represents a significant advancement in creating agents that can complete complex tasks that people encounter in their work and personal lives.
Both teams are working together to converge these frameworks on a unified runtime and set of design principles that will make it easier to experiment with state-of-the-art agentic patterns—and then transition those experiments into production-grade, enterprise-supported solutions. This includes:
1. Shared Runtime Repositories: A dedicated repository is being developed for packages that work across both frameworks, simplifying runtime abstractions into a single package consumed by both AutoGen and Semantic Kernel.
2. Hosting Support: The shared runtime can be hosted in different ways - either in-process for development or simple agentic systems, or on top of a distributed system framework like Dapr or Orleans.
3. Cross-Framework Integration: Semantic Kernel is adding connectors to support integrating agents from other services and libraries, including AutoGen agents. Similarly, AutoGen can now leverage Semantic Kernel connectors to expand its functionalities.
Key Takeaway: Microsoft's dual approach with production-ready Semantic Kernel and research-focused AutoGen provides a complete ecosystem for both enterprise implementation and cutting-edge experimentation.
Semantic Kernel's Agent Framework supports several key agentic patterns that you can implement in your applications. Let's explore some of the most important ones:
The ChatCompletionAgent is fundamentally based on an AI service. Creating a ChatCompletionAgent starts with creating a Kernel instance that contains one or more chat-completion services and then instantiating the agent with a reference to that Kernel instance.
This pattern is ideal for scenarios where you need a specialized agent to handle specific types of tasks, like customer support inquiries or content generation.
AgentChat provides a framework that enables interaction between multiple agents, even if they are of different types. This makes it possible for a ChatCompletionAgent and an OpenAIAssistantAgent to work together within the same conversation.
In multi-turn invocation, agent selection is guided by a Selection Strategy. This strategy is defined by a base class that can be extended to implement custom behaviors tailored to specific needs. For convenience, two predefined concrete Selection Strategies are also available, offering ready-to-use approaches for handling agent selection during conversations.
Multi-agent collaboration is powerful when different aspects of a task require specialized expertise or when you want to implement checks and balances between different AI systems.
While Semantic Kernel provides a solid foundation for implementing agentic patterns, other research efforts like Microsoft Research's Magentic-One and Anthropic's work on building effective agents offer additional patterns that can be implemented in your projects, even if they're not directly built into Semantic Kernel yet. These patterns can be valuable in specific scenarios:
Magentic-One represents a significant step towards developing generalist multi-agent systems that can complete open-ended tasks across various domains. Its architecture introduces several innovative patterns:
Magentic-One features an Orchestrator agent that implements two loops:
• An outer loop that manages the task ledger (containing facts, guesses, and plan)
• An inner loop that manages the progress ledger (containing current progress, task assignment to agents)
This dual-loop approach enables more sophisticated planning and recovery from failures. The Orchestrator can update the Task Ledger and create a new plan if progress isn't being made for several steps.

Magentic-One divides responsibilities among specialized agents:
• WebSurfer: Manages a web browser for navigation and interaction
• FileSurfer: Handles local file operations
• Coder: Writes code and analyzes information
• ComputerTerminal: Provides access to a console shell
This clear separation of concerns allows each agent to develop expertise in a specific domain while the Orchestrator manages the big picture.
Anthropic's research on building effective agents suggests several composable patterns that can be adapted to different use cases:
This workflow decomposes a task into a sequence of steps, where each LLM call processes the output of the previous one. You can add programmatic checks on intermediate steps to ensure that the process is still on track.

This approach is ideal for situations where tasks can be easily decomposed into fixed subtasks, trading off latency for higher accuracy by making each LLM call an easier task.
The routing pattern classifies an input and directs it to a specialized followup task. This allows for separation of concerns and more specialized prompts.

This works well for complex tasks where there are distinct categories that are better handled separately, such as different types of customer service queries or routing questions to models of different capabilities based on complexity.
This pattern manifests in two key variations:
• Sectioning: Breaking a task into independent subtasks run in parallel
• Voting: Running the same task multiple times to get diverse outputs

Parallelization is effective when subtasks can be run simultaneously for speed, or when multiple perspectives are needed for higher confidence results.
In the orchestrator-workers workflow, a central LLM dynamically breaks down tasks, delegates them to worker LLMs, and synthesizes their results. This workflow is well-suited for complex tasks where you can't predict the subtasks needed.

This pattern is particularly effective for software development tasks or complex information gathering and analysis where the steps required can't be predetermined.
In the evaluator-optimizer workflow, one LLM call generates a response while another provides evaluation and feedback in a loop. This workflow is particularly effective when we have clear evaluation criteria, and when iterative refinement provides measurable value.

This pattern can significantly improve output quality for content creation, code generation, or any task where iterative refinement is valuable.
Key Takeaway: These advanced patterns from research provide inspiration for extending Semantic Kernel's capabilities to address complex scenarios that may require more sophisticated agent architectures and interactions.
Let's explore how to implement agentic patterns using Semantic Kernel in .NET:
First, ensure you have the necessary packages installed:
// Add necessary packages using the .NET CLI
dotnet add package Microsoft.SemanticKernel
dotnet add package Microsoft.SemanticKernel.Agents.Core
dotnet add package Microsoft.SemanticKernel.Connectors.AzureOpenAI
Here's how to create a simple ChatCompletionAgent:
// Initialize a Kernel with a chat-completion service
IKernelBuilder builder = Kernel.CreateBuilder();
builder.AddAzureOpenAIChatCompletion(
"your-deployment-name",
"your-endpoint",
new AzureCliCredential());
Kernel kernel = builder.Build();
// Create the agent
ChatCompletionAgent agent = new()
{
Name = "AssistantAgent",
Instructions = "You are a helpful assistant that provides concise answers.",
Kernel = kernel,
Arguments = new KernelArguments(
new OpenAIPromptExecutionSettings()
{
FunctionChoiceBehavior = FunctionChoiceBehavior.Auto()
})
};

For more complex scenarios, you can set up multiple agents to collaborate:
// Define agents
ChatCompletionAgent researchAgent = new()
{
Name = "Researcher",
Instructions = "Your role is to gather and analyze information.",
Kernel = kernel
};
ChatCompletionAgent writerAgent = new()
{
Name = "Writer",
Instructions = "Your role is to create well-written content based on research.",
Kernel = kernel
};
// Create chat with participating agents
AgentGroupChat chat = new(researchAgent, writerAgent)
{
ExecutionSettings = new()
{
TerminationStrategy = { MaximumIterations = 10 }
}
};
// Invoke agents
await foreach (ChatMessageContent response in chat.InvokeAsync())
{
// Process agent response(s)...
}

One of the most powerful aspects of agentic patterns is the ability to integrate tools that allow agents to interact with external systems:
// Clone kernel instance to allow for agent-specific plugin definition
Kernel agentKernel = kernel.Clone();
// Import plugin from type
agentKernel.ImportPluginFromType<MyCustomPlugin>();
// Create the agent with tool capabilities
ChatCompletionAgent agent = new()
{
Name = "ToolAgent",
Instructions = "Use tools to help solve user problems.",
Kernel = agentKernel,
Arguments = new KernelArguments(
new OpenAIPromptExecutionSettings()
{
FunctionChoiceBehavior = FunctionChoiceBehavior.Auto()
})
};
When building applications with LLMs, we recommend finding the simplest solution possible, and only increasing complexity when needed. This might mean not building agentic systems at all. Agentic systems often trade latency and cost for better task performance, and you should consider when this tradeoff makes sense.
The instructions you provide to your agents are crucial. They should clearly define:
• The agent's role and responsibilities
• Any constraints on its behavior
• How it should handle different types of requests
• How it should interact with other agents or humans
Magentic-One work is based on a multi-agent architecture where a lead Orchestrator agent is responsible for high-level planning, directing other agents and tracking task progress. If the Orchestrator finds that progress is not being made for enough steps, it can update the Task Ledger and create a new plan.
Build similar error recovery mechanisms into your agentic systems to ensure they can handle failures gracefully.
Agentic systems mark a significant shift in both the opportunities and risks associated with AI. Agents interact with a digital world designed for humans, taking actions that can change states and potentially lead to irreversible consequences.
Implement proper security measures and oversight mechanisms when deploying agentic systems.
An agent's role is primarily shaped by the instructions it receives, which dictate its behavior and actions. Similar to invoking a Kernel prompt, an agent's instructions can include templated parameters—both values and functions—that are dynamically substituted during execution. This enables flexible, context-aware responses, allowing the agent to adjust its output based on real-time input.
Use templating to create reusable agent definitions that can be customized for different scenarios.
AutoGen and Semantic Kernel are integrating in three ways: converging agent runtimes to harmonize core components, enabling the hosting of AutoGen agents within Semantic Kernel, and allowing AutoGen to leverage the powerful capabilities of Semantic Kernel, including its AI connector library.
This convergence represents an exciting future for agentic AI development, where you can experiment with cutting-edge patterns in AutoGen and seamlessly transition to production-grade implementations in Semantic Kernel.
When implementing agentic patterns in your projects, consider these critical factors:
Agentic systems often involve multiple LLM calls, which can increase costs and latency. Before implementing complex patterns, carefully evaluate whether the improved task performance justifies these trade-offs. As noted in Anthropic's research, "When building applications with LLMs, we recommend finding the simplest solution possible, and only increasing complexity when needed."
Different agents in your system may require different capabilities. For high-level planning and reasoning, more sophisticated models like GPT-4 or Claude may be appropriate, while simpler agents might use more efficient models. In Magentic-One, the Orchestrator typically uses a strong reasoning model like o3, while other agents can use different models based on their specific roles.
The design of tools that agents can use is as important as the agents themselves. According to Anthropic, you should invest significant effort in creating good "agent-computer interfaces" (ACI), just as you would for human-computer interfaces. Clear documentation, example usage, and thoughtful parameter naming can significantly improve agent performance with tools.
Key Takeaway: When implementing agentic patterns, balance complexity with need—considering cost-benefit tradeoffs, appropriate model selection for each agent role, and thoughtful tool design.
Agentic patterns represent the next frontier in AI development, enabling us to build systems that can autonomously tackle complex tasks that previously required significant human intervention. Microsoft's Semantic Kernel and Azure AI Foundry provide a robust foundation for implementing these patterns in enterprise applications, while research from teams like Microsoft Research and Anthropic offers additional patterns and insights that can be applied to address more specialized needs.
By leveraging the patterns and practices outlined in this post, you can create AI systems that go beyond simple query-response interactions to become collaborative problem-solvers that can reason, plan, and adapt to changing conditions. The key is to start with simpler patterns and add complexity only when it demonstrably improves outcomes for your specific use case.
As this technology continues to mature, we at Olympic33 are excited to partner with organizations looking to harness the power of agentic AI to transform their operations and create new value for their customers. Whether you're just beginning to explore the potential of AI agents or looking to implement advanced multi-agent systems, we can help you navigate this rapidly evolving landscape.
________________________________________
Want to learn more about implementing agentic patterns in your organization? Contact our team at Olympic33 today to explore how we can help you leverage the latest AI technologies to solve your most challenging business problems.
• Semantic Kernel GitHub Repository
• Semantic Kernel Documentation
• AutoGen GitHub Repository
• Microsoft AI Blog on Agentic Systems
• Semantic Kernel Quickstart Guide
• Building AI Agents with Semantic Kernel Tutorial
• Azure AI Agents function calling
• Magentic-One: Advancing Open-Source Multi-Agent Systems
• Anthropic's Building Effective Agents Research
• AutoGen Discussion Forum
• .NET AI Community Standup
Transform the way you operate with our advanced AI Framework and Semantic Kernel solutions.
Learn more