Back to index
OtherTwo to three days for the core concepts·Free

Microsoft Semantic Kernel Documentation and Tutorials

3.6

Well produced enterprise documentation that will teach you a defensible way to structure agent code, weakened by an abstraction vocabulary that keeps changing underneath its own tutorials.

What We Liked

  • One of very few serious agent frameworks with first class C# and Java support
  • The plugin and function calling model is a clean way to structure tool access
  • Sits on Microsoft Learn, so the production quality and accessibility are high
  • Filters and telemetry hooks reflect real enterprise requirements rather than demos

What Could Be Better

  • The naming and core abstractions have been reworked repeatedly and old material lingers
  • Python support consistently trails the C# implementation
  • Heavy conceptual vocabulary for what is often a modest amount of underlying behaviour
  • Examples lean towards Azure services in ways that are not always necessary

Detailed review

The reason this exists and matters is that a very large amount of enterprise software is written in C# by teams inside organisations that buy Microsoft, and until recently those teams had nothing serious for building on language models. Every framework worth using was Python-first, and the guidance amounted to standing up a Python service alongside your dot net estate and calling it. Semantic Kernel is Microsoft's answer, and whatever else is true, it is a real first class dot net SDK with a genuine Java implementation alongside it, which nobody else is offering. The teaching quality is good in a specific way.

This sits on Microsoft Learn, which means the pages are properly structured, the code samples are tested, the navigation works, and the accessibility is taken seriously. That is a low bar in absolute terms and a high one relative to the average AI framework's documentation, which tends to be a README that grew. If you have suffered through the average agent framework's docs, the production values here are a noticeable relief. The core idea worth learning is the plugin model.

Rather than passing loose function definitions to a model, you describe capabilities as plugins with typed functions and descriptions, register them with a kernel, and let the planning and invocation happen against that registry. Once you have built a few agents that accumulate tool definitions in an ad hoc way, you appreciate why having a coherent place for capabilities to live is worth the ceremony. The filter and telemetry material is the other genuinely enterprise-shaped part. Being able to intercept every function invocation and every prompt render, to log it, redact it, or block it, is not the sort of thing you find in a framework designed for demos.

It is the sort of thing you need when a compliance team asks what happens to customer data. Now the significant problems. This project has changed its mind about its own abstractions more than once. Concepts have been introduced, promoted as central, deprecated, and replaced, and the naming has shifted with them.

The consequence for a learner is that you cannot trust search results. You will find a tutorial, follow it, and discover that the class it describes no longer exists or has been renamed, and you will not always be able to tell from the page whether you are reading current material or something from two versions ago. Microsoft has been better than most at keeping the official pages updated and worse than most at controlling the sprawl of blog posts and samples that surround them. Python lags.

It is supported and it works, but the C# implementation gets features first, the samples are richer, and the idioms feel more natural. If you are a Python developer choosing freely, you will find more momentum elsewhere. The conceptual weight is my main stylistic complaint. There is a lot of vocabulary here, and a fair amount of it wraps behaviour that is not complicated.

You can end up learning a taxonomy of kernels, plugins, functions, filters, agents and processes before doing anything that a plain function call and a loop would not have handled. That is a familiar enterprise framework trade, and it pays off at scale and costs you at the start, but the documentation could be much more honest about where the line sits. Azure gravity is present throughout. The examples reach for Azure OpenAI, Azure AI Search and Azure Monitor by default.

The SDK does not require any of that and the documentation does not always make the alternatives equally visible, which will mildly irritate anyone building against a different stack. My three point six is for a real answer to a real gap, cleanly produced, with a plugin model and a filter system that reflect actual enterprise needs rather than conference demos. Marked down for abstractions that have moved repeatedly and left confusing debris behind, for Python being a second citizen, for more vocabulary than the behaviour justifies, and for a default assumption that you are already on Azure. If you write C# for a living, start here without hesitation.

[ final ]

The verdict.

If your organisation builds on dot net, this is the most sensible starting point available. If you are on Python and free to choose, the ecosystem elsewhere is further ahead.