Soenneker.SemanticKernel.Cache 3.0.297

Prefix Reserved
There is a newer version of this package available.
See the version list below for details.
dotnet add package Soenneker.SemanticKernel.Cache --version 3.0.297
                    
NuGet\Install-Package Soenneker.SemanticKernel.Cache -Version 3.0.297
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Soenneker.SemanticKernel.Cache" Version="3.0.297" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Soenneker.SemanticKernel.Cache" Version="3.0.297" />
                    
Directory.Packages.props
<PackageReference Include="Soenneker.SemanticKernel.Cache" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Soenneker.SemanticKernel.Cache --version 3.0.297
                    
#r "nuget: Soenneker.SemanticKernel.Cache, 3.0.297"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#addin nuget:?package=Soenneker.SemanticKernel.Cache&version=3.0.297
                    
Install Soenneker.SemanticKernel.Cache as a Cake Addin
#tool nuget:?package=Soenneker.SemanticKernel.Cache&version=3.0.297
                    
Install Soenneker.SemanticKernel.Cache as a Cake Tool

alternate text is missing from this package README image alternate text is missing from this package README image alternate text is missing from this package README image

alternate text is missing from this package README image Soenneker.SemanticKernel.Cache

Providing async thread-safe singleton Semantic Kernel instances

Why?

When using Microsoft.SemanticKernel, it's recommended to maintain long-lived kernel instances rather than re-creating them for each consumer or request. This avoids the overhead of reconfiguring connectors or plugins every time you need to perform a semantic operation. The SemanticKernelCache provides a thread-safe singleton cache per key via dependency injection. Kernel instances are created lazily using customizable options and disposed on application shutdown (or manually if needed).

Installation

Install the package via the .NET CLI:

dotnet add package Soenneker.SemanticKernel.Cache

Usage

1. Register the Cache in Dependency Injection

In your Program.cs (or equivalent startup file), register the cache with the DI container:

using Soenneker.SemanticKernel.Cache;

public static async Task Main(string[] args)
{
    var builder = WebApplication.CreateBuilder(args);

    // Register SemanticKernelCache as a singleton service.
    builder.Services.AddSemanticKernelCacheAsSingleton();

    // Other configuration...
}

2. Inject and Retrieve a Kernel Instance

Inject ISemanticKernelCache into your classes and retrieve a Microsoft.SemanticKernel.Kernel instance by providing the required options.

using System.Threading;
using System.Threading.Tasks;
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Chat;
using Soenneker.SemanticKernel.Cache;

public class TestClass
{
    private readonly ISemanticKernelCache _semanticKernelCache;
    private readonly SemanticKernelOptions _options;

    public TestClass(ISemanticKernelCache semanticKernelCache)
    {
        _semanticKernelCache = semanticKernelCache;
        
        // Create the options object once. Replace these with your actual values.
        var options = new SemanticKernelOptions
        {
            ModelId = "deepseek-r1:32b",
            Endpoint = "http://localhost:11434",
            KernelFactory = (opts, ct) =>
            {
                IKernelBuilder builder = Kernel.CreateBuilder().AddOllamaChatCompletion(opts.ModelId, new Uri(opts.Endpoint));

                return ValueTask.FromResult(builder);
            }
        };
    }

    public async async ValueTask<string> GetKernelResponse(string input, CancellationToken cancellationToken = default)
    {
        // Retrieve (or create) the kernel instance using a key (here, nameof(TestClass)).
        Kernel kernel = await _semanticKernelCache.Get(nameof(TestClass), _options, cancellationToken);

        // Retrieve the chat completion service from the kernel.
        var chatCompletionService = kernel.GetRequiredService<IChatCompletionService>();

        // Create a chat history and add the user's message.
        var history = new ChatHistory();
        history.AddUserMessage(input);

        // Request a chat completion using the chat service.
        var chatResult = await chatCompletionService.GetChatMessageContentAsync(history, kernel: kernel);

        // Return the chat result (or process it further as needed).
        return chatResult.ToString();
    }
}

Extending for Different Connectors/Plugins

The SemanticKernelOptions class includes an optional KernelFactory delegate. This allows you to override the default behavior (which uses the Azure Text Completion service) and create the kernel using a different connector or plugin. For example:

var openAiOptions = new SemanticKernelOptions
{
    ModelId = "openai-model-id",
    Endpoint = "https://api.openai.com/v1/",
    ApiKey = "your-openai-api-key",
    KernelFactory = (opts, ct) =>
    {
        Kernel kernel = new KernelBuilder().AddOpenAITextCompletionService(opts.ModelId, opts.Endpoint, opts.ApiKey);

        return ValueTask.FromResult(kernel);
    },
    ConfigureKernelAsync = async kernel =>
    {
        // Optionally, import skills or perform additional configuration.
        await ValueTask.CompletedTask;
    }
};

Kernel openAiKernel = await semanticKernelCache.Get("openaiKernel", openAiOptions);

This design makes it straightforward to support multiple types of Semantic Kernel configurations using the same caching mechanism.

Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
3.0.379 111 4/11/2025
3.0.378 147 4/9/2025
3.0.377 139 4/9/2025
3.0.376 151 4/9/2025
3.0.375 153 4/9/2025
3.0.374 149 4/8/2025
3.0.373 147 4/8/2025
3.0.372 142 4/8/2025
3.0.371 151 4/8/2025
3.0.370 148 4/8/2025
3.0.369 139 4/8/2025
3.0.368 146 4/8/2025
3.0.367 142 4/8/2025
3.0.366 141 4/8/2025
3.0.365 141 4/8/2025
3.0.364 139 4/8/2025
3.0.363 149 4/8/2025
3.0.362 144 4/8/2025
3.0.361 146 4/8/2025
3.0.360 149 4/8/2025
3.0.359 145 4/7/2025
3.0.358 133 4/7/2025
3.0.357 148 4/7/2025
3.0.356 145 4/7/2025
3.0.355 138 4/7/2025
3.0.354 139 4/7/2025
3.0.353 138 4/7/2025
3.0.352 143 4/7/2025
3.0.351 138 4/7/2025
3.0.350 145 4/7/2025
3.0.349 134 4/7/2025
3.0.348 145 4/7/2025
3.0.347 141 4/7/2025
3.0.346 139 4/7/2025
3.0.345 143 4/7/2025
3.0.344 141 4/7/2025
3.0.343 142 4/7/2025
3.0.342 146 4/6/2025
3.0.341 141 4/6/2025
3.0.340 142 4/6/2025
3.0.339 140 4/6/2025
3.0.338 134 4/6/2025
3.0.337 139 4/6/2025
3.0.336 142 4/6/2025
3.0.335 132 4/6/2025
3.0.334 115 4/6/2025
3.0.333 112 4/6/2025
3.0.332 114 4/6/2025
3.0.331 109 4/6/2025
3.0.330 126 4/6/2025
3.0.329 120 4/6/2025
3.0.328 88 4/6/2025
3.0.327 94 4/6/2025
3.0.326 83 4/6/2025
3.0.325 89 4/5/2025
3.0.324 94 4/5/2025
3.0.323 66 4/5/2025
3.0.322 64 4/5/2025
3.0.321 63 4/5/2025
3.0.320 68 4/5/2025
3.0.319 64 4/5/2025
3.0.318 74 4/5/2025
3.0.317 69 4/5/2025
3.0.316 83 4/4/2025
3.0.315 80 4/4/2025
3.0.314 84 4/4/2025
3.0.313 124 4/4/2025
3.0.312 130 4/4/2025
3.0.311 128 4/4/2025
3.0.310 146 4/4/2025
3.0.309 135 4/4/2025
3.0.308 142 4/3/2025
3.0.307 143 4/3/2025
3.0.306 134 4/2/2025
3.0.305 139 4/1/2025
3.0.304 141 4/1/2025
3.0.303 139 4/1/2025
3.0.302 136 4/1/2025
3.0.301 140 4/1/2025
3.0.300 130 4/1/2025
3.0.299 144 4/1/2025
3.0.298 134 4/1/2025
3.0.297 135 4/1/2025
3.0.296 130 4/1/2025
3.0.295 131 3/31/2025
3.0.294 144 3/31/2025
3.0.293 130 3/31/2025
3.0.292 146 3/31/2025
3.0.291 141 3/30/2025
3.0.290 136 3/29/2025
3.0.289 74 3/29/2025
3.0.288 71 3/29/2025
3.0.287 79 3/29/2025
3.0.286 77 3/29/2025
3.0.285 85 3/29/2025
3.0.284 119 3/27/2025
3.0.283 124 3/27/2025
3.0.282 121 3/27/2025
3.0.281 118 3/27/2025
3.0.280 122 3/26/2025
3.0.279 455 3/26/2025
3.0.278 452 3/26/2025
3.0.277 451 3/26/2025
3.0.276 452 3/25/2025
3.0.275 457 3/25/2025
3.0.274 454 3/25/2025
3.0.273 462 3/25/2025
3.0.272 457 3/25/2025
3.0.271 463 3/25/2025
3.0.270 474 3/25/2025
3.0.269 77 3/21/2025
3.0.268 70 3/21/2025
3.0.267 81 3/21/2025
3.0.266 100 3/21/2025
3.0.265 97 3/21/2025
3.0.264 123 3/21/2025
3.0.263 120 3/21/2025
3.0.262 132 3/20/2025
3.0.261 129 3/20/2025
3.0.260 130 3/19/2025
3.0.259 129 3/19/2025
3.0.258 129 3/18/2025
3.0.257 129 3/18/2025
3.0.256 127 3/18/2025
3.0.255 132 3/18/2025
3.0.254 133 3/18/2025
3.0.253 131 3/18/2025
3.0.252 127 3/18/2025
3.0.251 131 3/18/2025
3.0.250 61 3/15/2025
3.0.249 59 3/15/2025
3.0.248 58 3/15/2025
3.0.247 55 3/15/2025
3.0.246 56 3/15/2025
3.0.245 53 3/15/2025
3.0.244 139 3/12/2025
3.0.243 145 3/12/2025
3.0.242 144 3/12/2025
3.0.241 143 3/12/2025
3.0.240 135 3/12/2025
3.0.239 138 3/12/2025
3.0.238 141 3/12/2025
3.0.237 141 3/12/2025
3.0.236 140 3/12/2025
3.0.235 138 3/12/2025
3.0.234 139 3/12/2025
3.0.233 143 3/11/2025
3.0.232 148 3/11/2025
3.0.231 139 3/11/2025
3.0.230 145 3/11/2025
3.0.229 146 3/11/2025
3.0.228 150 3/11/2025
3.0.227 142 3/11/2025
3.0.226 142 3/11/2025
3.0.225 150 3/11/2025
3.0.224 144 3/11/2025
3.0.223 149 3/11/2025
3.0.222 146 3/11/2025
3.0.221 198 3/7/2025
3.0.220 195 3/7/2025
3.0.219 193 3/7/2025
3.0.218 195 3/7/2025
3.0.217 196 3/7/2025
3.0.216 191 3/7/2025
3.0.215 197 3/7/2025
3.0.214 192 3/7/2025
3.0.213 195 3/7/2025
3.0.212 194 3/3/2025
3.0.211 94 3/2/2025
3.0.210 102 3/2/2025
3.0.209 82 3/2/2025
3.0.208 83 3/2/2025
3.0.207 82 3/2/2025
3.0.206 84 3/2/2025
3.0.205 82 3/2/2025
3.0.204 94 3/2/2025
3.0.203 72 3/2/2025
3.0.202 80 3/2/2025
3.0.201 85 3/2/2025
3.0.200 83 3/2/2025
3.0.199 84 3/2/2025
3.0.198 89 3/1/2025
3.0.197 81 3/1/2025
3.0.196 83 3/1/2025
3.0.195 82 3/1/2025
3.0.194 82 3/1/2025
3.0.193 83 3/1/2025
3.0.192 81 3/1/2025
3.0.191 81 3/1/2025
3.0.190 77 3/1/2025
3.0.189 75 3/1/2025
3.0.188 80 3/1/2025
3.0.187 79 3/1/2025
3.0.186 87 2/28/2025
3.0.185 85 2/26/2025
3.0.184 86 2/26/2025
3.0.183 85 2/26/2025
3.0.182 90 2/26/2025
3.0.181 85 2/26/2025
3.0.180 82 2/25/2025
3.0.179 84 2/25/2025
3.0.178 89 2/25/2025
3.0.177 86 2/25/2025
3.0.176 93 2/25/2025
3.0.175 86 2/25/2025
3.0.174 82 2/25/2025
3.0.173 85 2/25/2025
3.0.172 80 2/25/2025
3.0.171 84 2/24/2025
3.0.170 84 2/24/2025
3.0.169 78 2/24/2025
3.0.168 114 2/23/2025
3.0.167 73 2/23/2025
3.0.166 84 2/23/2025
3.0.165 81 2/23/2025
3.0.164 82 2/23/2025
3.0.163 80 2/23/2025
3.0.162 86 2/23/2025
3.0.161 76 2/23/2025
3.0.160 82 2/22/2025
3.0.159 79 2/22/2025
3.0.158 85 2/22/2025
3.0.157 85 2/22/2025
3.0.156 81 2/22/2025
3.0.155 85 2/22/2025
3.0.154 80 2/22/2025
3.0.153 85 2/22/2025
3.0.152 91 2/22/2025
3.0.151 82 2/22/2025
3.0.150 87 2/22/2025
3.0.149 78 2/22/2025
3.0.148 90 2/22/2025
3.0.147 83 2/22/2025
3.0.146 89 2/22/2025
3.0.145 79 2/22/2025
3.0.144 80 2/22/2025
3.0.143 77 2/22/2025
3.0.142 84 2/22/2025
3.0.141 81 2/21/2025
3.0.140 82 2/21/2025
3.0.139 85 2/21/2025
3.0.138 86 2/21/2025
3.0.137 79 2/21/2025
3.0.136 84 2/21/2025
3.0.135 85 2/21/2025
3.0.134 92 2/20/2025
3.0.133 87 2/19/2025
3.0.132 91 2/19/2025
3.0.131 93 2/19/2025
3.0.130 84 2/19/2025
3.0.129 94 2/19/2025
3.0.128 90 2/19/2025
3.0.127 100 2/19/2025
3.0.126 88 2/19/2025
3.0.125 88 2/19/2025
3.0.124 87 2/19/2025
3.0.123 94 2/19/2025
3.0.122 90 2/18/2025
3.0.121 87 2/18/2025
3.0.120 99 2/18/2025
3.0.119 90 2/18/2025
3.0.118 90 2/18/2025
3.0.117 95 2/18/2025
3.0.116 107 2/18/2025
3.0.115 91 2/18/2025
3.0.114 92 2/16/2025
3.0.113 90 2/14/2025
3.0.112 85 2/14/2025
3.0.111 86 2/14/2025
3.0.110 88 2/14/2025
3.0.109 96 2/14/2025
3.0.108 95 2/14/2025
3.0.107 90 2/14/2025
3.0.106 99 2/14/2025
3.0.105 87 2/13/2025
3.0.104 85 2/13/2025
3.0.103 100 2/13/2025
3.0.102 81 2/13/2025
3.0.101 103 2/12/2025
3.0.100 87 2/12/2025
3.0.99 91 2/12/2025
3.0.98 99 2/12/2025
3.0.97 96 2/12/2025
3.0.96 93 2/12/2025
3.0.95 91 2/12/2025
3.0.94 87 2/12/2025
3.0.93 93 2/12/2025
3.0.92 96 2/12/2025
3.0.91 94 2/12/2025
3.0.90 95 2/12/2025
3.0.89 90 2/12/2025
3.0.88 90 2/12/2025
3.0.87 96 2/12/2025
3.0.86 88 2/12/2025
3.0.85 100 2/12/2025
3.0.84 95 2/12/2025
3.0.83 87 2/12/2025
3.0.82 88 2/11/2025
3.0.81 88 2/11/2025
3.0.80 95 2/11/2025
3.0.79 93 2/11/2025
3.0.78 99 2/11/2025
3.0.77 88 2/11/2025
3.0.76 90 2/11/2025
3.0.75 95 2/11/2025
3.0.74 92 2/11/2025
3.0.73 102 2/11/2025
3.0.72 92 2/11/2025
3.0.71 92 2/11/2025
3.0.70 94 2/10/2025
3.0.69 95 2/10/2025
3.0.68 100 2/10/2025
3.0.67 94 2/10/2025
3.0.66 88 2/10/2025
3.0.65 91 2/10/2025
3.0.64 95 2/9/2025
3.0.63 98 2/9/2025
3.0.62 78 2/9/2025
3.0.61 81 2/9/2025
3.0.60 90 2/9/2025
3.0.59 80 2/9/2025
3.0.58 94 2/8/2025
3.0.57 92 2/8/2025
3.0.56 85 2/8/2025
3.0.55 89 2/8/2025
3.0.54 92 2/8/2025
3.0.53 95 2/8/2025
3.0.52 89 2/8/2025
3.0.51 86 2/8/2025
3.0.50 93 2/8/2025
3.0.49 102 2/8/2025
3.0.48 89 2/8/2025
3.0.47 82 2/8/2025
3.0.46 87 2/7/2025
3.0.45 89 2/7/2025
3.0.44 92 2/7/2025
3.0.43 87 2/7/2025
3.0.42 90 2/7/2025
3.0.41 91 2/7/2025
3.0.40 100 2/7/2025
3.0.39 102 2/7/2025
3.0.38 103 2/7/2025
3.0.37 98 2/7/2025
3.0.36 85 2/7/2025
3.0.35 87 2/7/2025
3.0.34 87 2/7/2025
3.0.33 92 2/7/2025
3.0.32 94 2/7/2025
3.0.31 93 2/7/2025
3.0.30 89 2/6/2025
3.0.29 93 2/6/2025
3.0.28 86 2/6/2025
3.0.27 79 2/6/2025
3.0.26 98 2/6/2025
3.0.25 91 2/5/2025
3.0.24 94 2/5/2025
3.0.23 89 2/5/2025
3.0.22 93 2/5/2025
3.0.21 93 2/5/2025
3.0.20 95 2/5/2025
3.0.19 102 2/5/2025
3.0.18 93 2/5/2025
3.0.17 88 2/5/2025
3.0.16 97 2/5/2025
3.0.15 91 2/5/2025
3.0.14 93 2/5/2025
3.0.13 86 2/5/2025
3.0.12 90 2/5/2025
3.0.11 91 2/5/2025
3.0.10 94 2/5/2025
3.0.9 93 2/5/2025
3.0.8 91 2/5/2025
3.0.7 96 2/3/2025
3.0.6 93 2/3/2025
3.0.5 94 2/3/2025
3.0.4 94 2/3/2025
3.0.3 96 2/3/2025