Are you a computer science student eager to dive into the world of AI development with the latest technologies? Semantic Kernel's latest release, v1.0.0-beta1, brings you an exciting opportunity to explore agnostic AI services. In this blog post, we'll take you through the significant changes in this version and show you how to adapt your code effectively.
Embracing Change
Semantic Kernel is evolving rapidly, and its v1.0.0-beta1 release is no exception. With the goal of enhancing versatility and becoming agnostic to AI services, this update brings a standardized experience and increased stability to developers.
Breaking Changes Unveiled
1. From "Skills" to "Plugins"
In Semantic Kernel's pursuit of standardization, the term "Skills" has been replaced by "Plugins." This change involves renaming packages, classes, functions, and properties, all designed to eliminate confusion and streamline your experience.
2. AI Service Agnostic
Previously, Semantic Kernel was closely aligned with OpenAI services. However, this release ensures that the core of Semantic Kernel is AI service agnostic, opening doors for compatibility with a wide range of AI providers.
3. Consolidation of Planners
In this version, planner implementations have been combined into a single package, simplifying the process for developers interested in creating their custom planner implementations.
Your Migration Journey
1. Updating NuGet Packages
Before you embark on your migration, make sure you're equipped with the latest NuGet packages. Several packages have undergone changes, while new ones have been introduced. Here's a quick rundown of these updates:
- Microsoft.SemanticKernel: This meta package continues to provide core Semantic Kernel functionality, with no change in its name.
- Microsoft.SemanticKernel.Abstractions: There's no name change here either, but some unused abstractions have been removed.
- Microsoft.SemanticKernel.Core: Despite major changes, the name remains the same. However, some functionality has been extracted into separate packages.
- Microsoft.SemanticKernel.TemplateEngine.Basic: This package now houses the default prompt template engine.
- Microsoft.SemanticKernel.Reliability.Basic: It holds the default prompt template engine.
- Microsoft.SemanticKernel.Reliability.Polly: This package offers Polly-based reliability support.
- Microsoft.SemanticKernel.Functions.Semantic: For Semantic function support.
- Microsoft.SemanticKernel.Plugins.Memory: Designed for Semantic Kernel memory support.
- Microsoft.SemanticKernel.Functions.Grpc: Previously known as Microsoft.SemanticKernel.Skills.Grpc.
- Microsoft.SemanticKernel.Functions.OpenAPI: Formerly Microsoft.SemanticKernel.Skills.OpenAPI.
- Microsoft.SemanticKernel.Planners.Core: All planner packages have merged into this single package.
- Microsoft.SemanticKernel.Plugins.Core: Previously known as Microsoft.SemanticKernel.Skills.Core.
- Microsoft.SemanticKernel.Plugins.Document: Formerly Microsoft.SemanticKernel.Skills.Document.
- Microsoft.SemanticKernel.Plugins.MsGraph: Formerly Microsoft.SemanticKernel.Skills.MsGraph.
- Microsoft.SemanticKernel.Plugins.Web: Formerly Microsoft.SemanticKernel.Skills.Web.
2. Updating Your Code
To transition effectively, follow these steps:
Renaming and Import
- Transform
ImportAIPluginAsync
intoImportPluginFunctionsAsync
(PR #2968). - Move semantic functions from
Kernel.Core
toFunctions.Semantic
(PR #2961).
Refactoring
- When working with a
SequentialPlanner
, ensure that you use theSemanticMemoryConfig
for configuration (PR #2949). - Replace method names related to importing plugins with names that use "Function" instead of "Skill." For example, change
ImportGrpcPluginFromFile
toImportGrpcFunctionsFromFile
(PR #2943). - Update method names to involve importing functions instead of skills (PR #2937).
- The consolidation of planner packages into
Planners.Core
requires updating namespaces (PR #2931). - Throughout the codebase, rename packages and classes from "Skills" to "Plugins" (PR #2854).
- Simplify
ContextVariables
by converting it into a properDictionary<string, string>
(PR #2852). - When configuring
StepwisePlanner
, consider the changes introduced in PR #2850. - Make planner constructors more consistent (PR #2849).
- Introduce an
IKernel
property toSKContext
to support the use ofIKernel.RunAsync
(PR #2846). - Replace the
Kernel.Func()
shorthand withkernel.Functions.GetFunction(skill, functionName)
(PR #2836).
New Result Types
Farewell to GPT3Tokenizer
In Conclusion
Semantic Kernel v1.0.0-beta1 opens new horizons for AI development, providing versatility and AI service agnosticism. As you embark on your migration journey, be sure to update your NuGet packages and implement the code changes as outlined in this guide and check out the Semantic Kernel resource Semantic Kernel | The latest news from the Semantic Kernel team for developers (microsoft.com). These alterations are pivotal for the future development of Semantic Kernel, and your adaptability and cooperation are greatly appreciated as we progress together.
Updated Oct 11, 2023
Version 1.0Lee_Stott
Microsoft
Joined September 25, 2018
Educator Developer Blog
Follow this blog board to get notified when there's new activity