workshop/dotnet/App/backend/Extensions/ServiceExtensions.cs (23 lines of code) (raw):

using Core.Utilities.Config; using Core.Utilities.Models; // Add import for Plugins using Core.Utilities.Plugins; // Add import required for StockService using Core.Utilities.Services; using Microsoft.SemanticKernel; namespace Extensions; public static class ServiceExtensions { public static void AddSkServices(this IServiceCollection services) { services.AddSingleton<Kernel>(_ => { IKernelBuilder builder = KernelBuilderProvider.CreateKernelWithChatCompletion(); // Enable tracing builder.Services.AddLogging(services => services.AddConsole().SetMinimumLevel(LogLevel.Trace)); Kernel kernel = builder.Build(); // Step 2 - Initialize Time plugin and registration in the kernel kernel.Plugins.AddFromObject(new TimeInformationPlugin()); // Step 6 - Initialize Stock Data Plugin and register it in the kernel HttpClient httpClient = new(); StockDataPlugin stockDataPlugin = new(new StocksService(httpClient)); kernel.Plugins.AddFromObject(stockDataPlugin); return kernel; }); } }