By Sagar Shankaran, Founder of CallSphere
Learn how Semantic Kernel brings enterprise-grade agent capabilities to .NET and Python applications with planners, plugins, memory integration, and deep Azure ecosystem support.
Key takeaways
Most agent frameworks target Python-first startups building experimental AI products. Semantic Kernel targets a different audience: enterprise engineering teams building AI features into existing .NET and Python applications. Developed by Microsoft, it integrates deeply with the Azure ecosystem while remaining open-source and provider-agnostic.
The framework is designed for environments where you need to add AI capabilities to existing business applications — not build standalone AI agents from scratch.
Semantic Kernel is organized around a kernel object that acts as a dependency injection container for AI services, plugins, and memory. You configure the kernel with the services you need, register plugins that provide capabilities, and then use the kernel to orchestrate AI interactions.
flowchart LR
INPUT(["User intent"])
PARSE["Parse plus<br/>classify"]
PLAN["Plan and tool<br/>selection"]
AGENT["Agent loop<br/>LLM plus tools"]
GUARD{"Guardrails<br/>and policy"}
EXEC["Execute and<br/>verify result"]
OBS[("Trace and metrics")]
OUT(["Outcome plus<br/>next action"])
INPUT --> PARSE --> PLAN --> AGENT --> GUARD
GUARD -->|Pass| EXEC --> OUT
GUARD -->|Fail| AGENT
AGENT --> OBS
style AGENT fill:#4f46e5,stroke:#4338ca,color:#fff
style GUARD fill:#f59e0b,stroke:#d97706,color:#1f2937
style OBS fill:#ede9fe,stroke:#7c3aed,color:#1e1b4b
style OUT fill:#059669,stroke:#047857,color:#fff
from semantic_kernel import Kernel
from semantic_kernel.connectors.ai.open_ai import (
AzureChatCompletion,
OpenAIChatCompletion,
)
# Create a kernel and register an AI service
kernel = Kernel()
kernel.add_service(
OpenAIChatCompletion(
service_id="chat",
ai_model_id="gpt-4o",
)
)
In .NET, the same concept uses familiar dependency injection patterns:
// C# version using builder pattern
var builder = Kernel.CreateBuilder();
builder.AddAzureOpenAIChatCompletion(
deploymentName: "gpt-4o",
endpoint: azureEndpoint,
apiKey: azureApiKey
);
var kernel = builder.Build();
In Semantic Kernel, capabilities are organized as plugins — collections of related functions that the AI can call. Each plugin groups related tools under a namespace:
Hear it before you finish reading
Talk to a live CallSphere AI voice agent in your browser — 60 seconds, no signup.
from semantic_kernel.functions import kernel_function
class WeatherPlugin:
@kernel_function(
name="get_forecast",
description="Get the weather forecast for a city"
)
def get_forecast(self, city: str) -> str:
return f"The forecast for {city}: 72°F, partly cloudy"
@kernel_function(
name="get_alerts",
description="Get active weather alerts for a region"
)
def get_alerts(self, region: str) -> str:
return f"No active alerts for {region}"
# Register the plugin
kernel.add_plugin(WeatherPlugin(), plugin_name="Weather")
Plugins can also be defined inline using prompt templates — what Semantic Kernel calls semantic functions:
from semantic_kernel.prompt_template import PromptTemplateConfig
summarize_config = PromptTemplateConfig(
template="Summarize the following text in {{$style}} style: {{$input}}",
input_variables=[
{"name": "input", "description": "Text to summarize"},
{"name": "style", "description": "Writing style", "default": "concise"},
],
)
kernel.add_function(
plugin_name="Text",
function_name="summarize",
prompt_template_config=summarize_config,
)
Planners are Semantic Kernel's mechanism for automatically chaining plugin functions to accomplish a goal. Instead of manually defining the sequence of tool calls, you describe the goal and the planner figures out which plugins to invoke and in what order:
from semantic_kernel.planners import FunctionCallingStepwisePlanner
planner = FunctionCallingStepwisePlanner(
service_id="chat",
max_iterations=10,
)
result = await planner.invoke(
kernel,
question="What is the weather forecast for Seattle, and summarize it in a tweet-length message?"
)
print(result.final_answer)
The planner sees all registered plugins, determines it needs to call Weather.get_forecast first, then Text.summarize with a tweet-length style, and chains them together. This is effectively automatic agent behavior without writing explicit orchestration logic.
Semantic Kernel has first-class support for memory — both short-term conversation history and long-term vector-based memory:
from semantic_kernel.memory import SemanticTextMemory
from semantic_kernel.connectors.memory.azure_cognitive_search import (
AzureCognitiveSearchMemoryStore,
)
memory_store = AzureCognitiveSearchMemoryStore(
endpoint=azure_search_endpoint,
admin_key=azure_search_key,
)
memory = SemanticTextMemory(storage=memory_store, embeddings_generator=embedding_service)
# Save information to memory
await memory.save_information(
collection="company_knowledge",
id="policy_1",
text="Remote employees must be available during core hours 10am-3pm EST",
)
# Recall relevant information
results = await memory.search(
collection="company_knowledge",
query="What are the remote work hours?",
limit=3,
)
Memory integrates with Azure Cognitive Search, Qdrant, Pinecone, and other vector stores. This makes it straightforward to build agents that reference organizational knowledge.
Still reading? Stop comparing — try CallSphere live.
CallSphere ships complete AI voice agents per industry — 14 tools for healthcare, 10 agents for real estate, 4 specialists for salons. See how it actually handles a call before you book a demo.
Semantic Kernel's real advantage is enterprise integration. It supports Azure Active Directory for authentication, Azure Key Vault for secrets, Application Insights for telemetry, and Azure AI Search for retrieval. If your organization runs on Azure, Semantic Kernel fits naturally into the existing infrastructure.
The .NET-first design also matters. Many enterprise codebases are C# — Semantic Kernel lets these teams add AI capabilities without rewriting in Python.
Yes. Semantic Kernel supports OpenAI directly, Hugging Face models, and has a growing list of community connectors. The Azure integration is a strength, not a requirement.
LangChain is Python-first and broader in scope. Semantic Kernel is cross-platform (.NET and Python), more opinionated about plugin architecture, and designed for integration into existing enterprise applications rather than building standalone AI tools.
The FunctionCallingStepwisePlanner is production-ready for well-scoped tasks where the available plugins clearly map to the goal. For complex, ambiguous goals, you may want to define explicit orchestration rather than relying on automatic planning.
#SemanticKernel #Microsoft #EnterpriseAI #NET #Python #AgenticAI #LearnAI #AIEngineering

Written by
Sagar Shankaran· Founder, CallSphere
LinkedInSagar Shankaran is the founder of CallSphere, where he builds production AI voice and chat agents deployed across healthcare, hospitality, real estate, and home services. He writes about agentic AI, LLM engineering, and shipping voice agents that handle real calls in production.
See how AI voice agents work for your industry. Live demo available -- no signup required.
A three-way comparison of Gemini Enterprise, Anthropic managed agents and OpenAI Frontier Platform after Cloud Next 2026 — strengths, gaps, buyer fit.
ServiceNow Project Arc vs Anthropic Managed Agents — runtime, governance, integration, and use cases. The 2026 enterprise autonomous agent comparison.
A2A unlocks cross-vendor agent coordination, but most enterprise voice/chat workloads still ship faster on a single-vendor stack. Here is how to choose.
Working memory, permanent memory, sandboxes, harnesses, governance — the practical blueprint enterprises are using to ship long-horizon AI agents in 2026.
AI Control Tower is the governance layer for ServiceNow's Project Arc — policy, monitoring, and audit logs for autonomous agents. Here is how it works.
Anthropic announced full Microsoft 365 integration in May 2026. What the integration covers, what it means for Outlook, Word, Excel, and Teams users, and where the boundaries are.
© 2026 CallSphere Inc. All rights reserved.
Made within San Francisco
Watch how CallSphere handles real customer calls, schedules appointments, and processes payments — live.