Strongest named customer list in the entire multi-agent category. KPMG, BMW, Fujitsu independently corroborated — not just self-reported.
Semantic Kernel (Microsoft)
activeMicrosoft's multi-language agent SDK — Python, C#, Java. 27.5K stars, 2.8M PyPI/month (Python only; C#/Java separate). MCP support shipped v1.28.1. Named customers: KPMG, BMW, Fujitsu (independently corroborated at European AI Summit). 10,000+ orgs on Azure AI Foundry Agent Service. .NET-first — Python is a secondary citizen.
Where it wins
27.5K GitHub stars — strong community
Named customers: KPMG, BMW, Fujitsu — independently corroborated at European AI Summit
10,000+ orgs on Azure AI Foundry Agent Service (Microsoft, self-reported)
Multi-language: Python, C#, Java — unique in category
MCP support shipped in v1.28.1
Part of Microsoft Agent Framework (combining AutoGen + Semantic Kernel)
Where to be skeptical
.NET-first design — Python is a secondary citizen
Python downloads (2.8M/month) trail pure-Python frameworks significantly
Complex enterprise API surface — steeper than OpenAI Agents SDK or Strands
Editorial verdict
The enterprise choice for .NET/C# + Azure shops. Strongest named customer list in the entire category (KPMG, BMW, Fujitsu — independently corroborated). Multi-language (Python, C#, Java) is unique. Python teams should prefer LangGraph or Pydantic AI — Semantic Kernel's Python SDK is secondary.
Related

Claude Code
98Anthropic's official agentic coding CLI. v2.1.81 (Mar 20) shipped `--bare`, smarter worktree resume, and improved MCP OAuth while the repo crossed 82,204 stars and logged ~14 commits/week across 10+ maintainers. Terminal-native, tool-use-driven, with deep file system + shell access, #1 SWE-bench Pro standardized (45.89%), ~4% of GitHub public commits (SemiAnalysis), $2.5B annualized revenue. 8M+ npm weekly downloads. Opus 4.6 with 1M context.
LangGraph
95#1 Python agent framework by production evidence — 40.2M PyPI downloads/month, Fortune 500 deployments (LinkedIn, Uber, Replit, Elastic, Klarna, Cloudflare, Coinbase), ~400 LangGraph Platform companies, LangSmith rated best-in-class observability. Stable v1.x API, model-agnostic, MCP support.
Pydantic AI
95#3 Python agent framework by downloads — 15.6M PyPI/month. Built by the Pydantic team. Runtime type enforcement is a genuine differentiator no other framework offers. V1 shipped with Temporal integration for durable execution and Logfire observability. Emerging pattern: 'Pydantic AI for agent logic, LangGraph for orchestration' (ZenML).
AutoGen (Microsoft)
95⚠️ MAINTENANCE MODE — Microsoft officially confirmed bug fixes and security patches only, no new features (VentureBeat 2026-02-19). 55.9K stars but only 1.57M PyPI/month — DL/star ratio of 28, the most inflated among active frameworks. Being replaced by Microsoft Agent Framework (AutoGen + Semantic Kernel merge, GA targeted ~Q2 2026). Teams on AutoGen should plan migration.
Public evidence
Python downloads alone are 2.8M/month. Total cross-language adoption is significantly higher when C# and Java are included.
'If your agent needs to behave like a durable state machine, use LangGraph; if it needs to behave like a protocol-aware platform component, use Semantic Kernel.' Clear positioning guidance.
Raw GitHub source
GitHub README peek
Constrained peek so you can sanity-check the source material without leaving the site.
Semantic Kernel
Build intelligent AI agents and multi-agent systems with this enterprise-ready orchestration framework
What is Semantic Kernel?
Semantic Kernel is a model-agnostic SDK that empowers developers to build, orchestrate, and deploy AI agents and multi-agent systems. Whether you're building a simple chatbot or a complex multi-agent workflow, Semantic Kernel provides the tools you need with enterprise-grade reliability and flexibility.
System Requirements
- Python: 3.10+
- .NET: .NET 10.0+
- Java: JDK 17+
- OS Support: Windows, macOS, Linux
Key Features
- Model Flexibility: Connect to any LLM with built-in support for OpenAI, Azure OpenAI, Hugging Face, NVidia and more
- Agent Framework: Build modular AI agents with access to tools/plugins, memory, and planning capabilities
- Multi-Agent Systems: Orchestrate complex workflows with collaborating specialist agents
- Plugin Ecosystem: Extend with native code functions, prompt templates, OpenAPI specs, or Model Context Protocol (MCP)
- Vector DB Support: Seamless integration with Azure AI Search, Elasticsearch, Chroma, and more
- Multimodal Support: Process text, vision, and audio inputs
- Local Deployment: Run with Ollama, LMStudio, or ONNX
- Process Framework: Model complex business processes with a structured workflow approach
- Enterprise Ready: Built for observability, security, and stable APIs
Installation
First, set the environment variable for your AI Services:
Azure OpenAI:
export AZURE_OPENAI_API_KEY=AAA....
or OpenAI directly:
export OPENAI_API_KEY=sk-...
Python
pip install semantic-kernel
.NET
dotnet add package Microsoft.SemanticKernel
dotnet add package Microsoft.SemanticKernel.Agents.Core
Java
See semantic-kernel-java build for instructions.
Quickstart
Basic Agent - Python
Create a simple assistant that responds to user prompts:
import asyncio
from semantic_kernel.agents import ChatCompletionAgent
from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion
async def main():
# Initialize a chat agent with basic instructions
agent = ChatCompletionAgent(
service=AzureChatCompletion(),
name="SK-Assistant",
instructions="You are a helpful assistant.",
)
# Get a response to a user message
response = await agent.get_response(messages="Write a haiku about Semantic Kernel.")
print(response.content)
asyncio.run(main())
# Output:
# Language's essence,
# Semantic threads intertwine,
# Meaning's core revealed.
Basic Agent - .NET
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Agents;
var builder = Kernel.CreateBuilder();
builder.AddAzureOpenAIChatCompletion(
Environment.GetEnvironmentVariable("AZURE_OPENAI_DEPLOYMENT"),
Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT"),
Environment.GetEnvironmentVariable("AZURE_OPENAI_API_KEY")
);
var kernel = builder.Build();
ChatCompletionAgent agent =
new()
{
Name = "SK-Agent",
Instructions = "You are a helpful assistant.",
Kernel = kernel,
};
await foreach (AgentResponseItem<ChatMessageContent> response
in agent.InvokeAsync("Write a haiku about Semantic Kernel."))
{
Console.WriteLine(response.Message);
}
// Output:
// Language's essence,
// Semantic threads intertwine,
// Meaning's core revealed.
Agent with Plugins - Python
Enhance your agent with custom tools (plugins) and structured output:
import asyncio
from typing import Annotated
from pydantic import BaseModel
from semantic_kernel.agents import ChatCompletionAgent
from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion, OpenAIChatPromptExecutionSettings
from semantic_kernel.functions import kernel_function, KernelArguments
class MenuPlugin:
@kernel_function(description="Provides a list of specials from the menu.")
def get_specials(self) -> Annotated[str, "Returns the specials from the menu."]: