diff --git a/dotnet/README.md b/dotnet/README.md index 86f15b3e9cf00..7329454fd18f6 100644 --- a/dotnet/README.md +++ b/dotnet/README.md @@ -23,20 +23,19 @@ Copy and paste the following code into your project, with your Azure OpenAI key ```csharp using Microsoft.SemanticKernel; -var kernel = Kernel.Builder.Build(); +var builder = new KernelBuilder(); -// Azure OpenAI -kernel.Config.AddAzureTextCompletionService( - "text-davinci-003", // Azure OpenAI Deployment Name - "https://contoso.openai.azure.com/", // Azure OpenAI Endpoint - "...your Azure OpenAI Key...", // Azure OpenAI Key -); +builder.WithAzureTextCompletionService( + "text-davinci-003", // Azure OpenAI Deployment Name + "https://contoso.openai.azure.com/", // Azure OpenAI Endpoint + "...your Azure OpenAI Key..."); // Azure OpenAI Key // Alternative using OpenAI -// kernel.Config.AddOpenAITextCompletionService( -// "text-davinci-003", // OpenAI Model name -// "...your OpenAI API Key..." // OpenAI API Key -// ); +//builder.WithOpenAITextCompletionService( +// "text-davinci-003", // OpenAI Model name +// "...your OpenAI API Key..."); // OpenAI API Key + +var kernel = builder.Build(); var prompt = @"{{$input}} diff --git a/samples/apps/copilot-chat-app/webapi/CopilotChat/Controllers/ChatController.cs b/samples/apps/copilot-chat-app/webapi/CopilotChat/Controllers/ChatController.cs index 55767805d2ede..52582051d9e01 100644 --- a/samples/apps/copilot-chat-app/webapi/CopilotChat/Controllers/ChatController.cs +++ b/samples/apps/copilot-chat-app/webapi/CopilotChat/Controllers/ChatController.cs @@ -142,13 +142,13 @@ await planner.Kernel.ImportOpenApiSkillFromFileAsync( { this._logger.LogInformation("Registering Jira Skill"); var authenticationProvider = new BasicAuthenticationProvider(() => { return Task.FromResult(openApiSkillsAuthHeaders.JiraAuthentication); }); - var hasServerUrlOverride = variables.Get("jira-server-url", out string serverUrlOverride); + var hasServerUrlOverride = variables.TryGetValue("jira-server-url", out string? serverUrlOverride); await planner.Kernel.ImportOpenApiSkillFromFileAsync( skillName: "JiraSkill", filePath: Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)!, "CopilotChat", "Skills", "OpenApiSkills/JiraSkill/openapi.json"), authCallback: authenticationProvider.AuthenticateRequestAsync, - serverUrlOverride: hasServerUrlOverride ? new Uri(serverUrlOverride) : null); + serverUrlOverride: hasServerUrlOverride ? new Uri(serverUrlOverride!) : null); } // Microsoft Graph diff --git a/samples/apps/copilot-chat-app/webapi/CopilotChat/Extensions/SemanticKernelExtensions.cs b/samples/apps/copilot-chat-app/webapi/CopilotChat/Extensions/SemanticKernelExtensions.cs index a8db2d5ad5299..15078838ad959 100644 --- a/samples/apps/copilot-chat-app/webapi/CopilotChat/Extensions/SemanticKernelExtensions.cs +++ b/samples/apps/copilot-chat-app/webapi/CopilotChat/Extensions/SemanticKernelExtensions.cs @@ -24,10 +24,7 @@ public static IServiceCollection AddCopilotChatPlannerServices(this IServiceColl { services.AddScoped(sp => new CopilotChatPlanner(Kernel.Builder .WithLogger(sp.GetRequiredService>()) - .WithConfiguration( - new KernelConfig().AddPlannerBackend( - sp.GetRequiredService>().Value) - ) // TODO verify planner has AI service configured + .WithPlannerBackend(sp.GetRequiredService>().Value)// TODO verify planner has AI service configured .Build())); // Register Planner skills (AI plugins) here. @@ -58,12 +55,12 @@ public static IKernel RegisterCopilotChatSkills(this IKernel kernel, IServicePro /// /// Add the completion backend to the kernel config for the planner. /// - private static KernelConfig AddPlannerBackend(this KernelConfig kernelConfig, AIServiceOptions options) + private static KernelBuilder WithPlannerBackend(this KernelBuilder kernelBuilder, AIServiceOptions options) { return options.Type switch { - AIServiceOptions.AIServiceType.AzureOpenAI => kernelConfig.AddAzureChatCompletionService(options.Models.Planner, options.Endpoint, options.Key), - AIServiceOptions.AIServiceType.OpenAI => kernelConfig.AddOpenAIChatCompletionService(options.Models.Planner, options.Key), + AIServiceOptions.AIServiceType.AzureOpenAI => kernelBuilder.WithAzureChatCompletionService(options.Models.Planner, options.Endpoint, options.Key), + AIServiceOptions.AIServiceType.OpenAI => kernelBuilder.WithOpenAIChatCompletionService(options.Models.Planner, options.Key), _ => throw new ArgumentException($"Invalid {nameof(options.Type)} value in '{AIServiceOptions.PropertyName}' settings."), }; } diff --git a/samples/apps/copilot-chat-app/webapi/CopilotChat/Skills/ChatSkills/ChatSkill.cs b/samples/apps/copilot-chat-app/webapi/CopilotChat/Skills/ChatSkills/ChatSkill.cs index c5dbd28a1c27a..2ccadf1f37039 100644 --- a/samples/apps/copilot-chat-app/webapi/CopilotChat/Skills/ChatSkills/ChatSkill.cs +++ b/samples/apps/copilot-chat-app/webapi/CopilotChat/Skills/ChatSkills/ChatSkill.cs @@ -352,7 +352,7 @@ private async Task GetChatResponseAsync(SKContext chatContext) /// private async Task GetUserIntentAsync(SKContext context) { - if (!context.Variables.Get("planUserIntent", out string? userIntent)) + if (!context.Variables.TryGetValue("planUserIntent", out string? userIntent)) { var contextVariables = new ContextVariables(); contextVariables.Set("chatId", context["chatId"]); @@ -471,7 +471,7 @@ private Task AcquireExternalInformationAsync(SKContext context, string u { var contextVariables = context.Variables.Clone(); contextVariables.Set("tokenLimit", tokenLimit.ToString(new NumberFormatInfo())); - if (context.Variables.Get("proposedPlan", out string? proposedPlan)) + if (context.Variables.TryGetValue("proposedPlan", out string? proposedPlan)) { contextVariables.Set("proposedPlan", proposedPlan); } diff --git a/samples/apps/copilot-chat-app/webapi/CopilotChat/Skills/ChatSkills/ExternalInformationSkill.cs b/samples/apps/copilot-chat-app/webapi/CopilotChat/Skills/ChatSkills/ExternalInformationSkill.cs index 348ccf93505bd..614bc0f5cfbcd 100644 --- a/samples/apps/copilot-chat-app/webapi/CopilotChat/Skills/ChatSkills/ExternalInformationSkill.cs +++ b/samples/apps/copilot-chat-app/webapi/CopilotChat/Skills/ChatSkills/ExternalInformationSkill.cs @@ -78,7 +78,7 @@ public async Task AcquireExternalInformationAsync(string userIntent, SKC // Check if plan exists in ask's context variables. // If plan was returned at this point, that means it was approved and should be run - var planApproved = context.Variables.Get("proposedPlan", out var planJson); + var planApproved = context.Variables.TryGetValue("proposedPlan", out string? planJson); if (planApproved && !string.IsNullOrWhiteSpace(planJson)) { @@ -133,7 +133,7 @@ public async Task AcquireExternalInformationAsync(string userIntent, SKC continue; } - if (variables.Get(param.Key, out var value)) + if (variables.TryGetValue(param.Key, out string? value)) { plan.State.Set(param.Key, value); } diff --git a/samples/apps/copilot-chat-app/webapi/CopilotChatWebApi.csproj b/samples/apps/copilot-chat-app/webapi/CopilotChatWebApi.csproj index 5e0081044a28e..97a6f3f8057a7 100644 --- a/samples/apps/copilot-chat-app/webapi/CopilotChatWebApi.csproj +++ b/samples/apps/copilot-chat-app/webapi/CopilotChatWebApi.csproj @@ -11,13 +11,13 @@ - - - - - - - + + + + + + + diff --git a/samples/apps/copilot-chat-app/webapi/SemanticKernelExtensions.cs b/samples/apps/copilot-chat-app/webapi/SemanticKernelExtensions.cs index ba9d64e749dbd..b4bb661b2f00b 100644 --- a/samples/apps/copilot-chat-app/webapi/SemanticKernelExtensions.cs +++ b/samples/apps/copilot-chat-app/webapi/SemanticKernelExtensions.cs @@ -42,7 +42,8 @@ internal static IServiceCollection AddSemanticKernelServices(this IServiceCollec IKernel kernel = Kernel.Builder .WithLogger(sp.GetRequiredService>()) .WithMemory(sp.GetRequiredService()) - .WithConfiguration(sp.GetRequiredService()) + .WithCompletionBackend(sp.GetRequiredService>().Value) + .WithEmbeddingBackend(sp.GetRequiredService>().Value) .Build(); sp.GetRequiredService()(sp, kernel); @@ -52,11 +53,6 @@ internal static IServiceCollection AddSemanticKernelServices(this IServiceCollec // Semantic memory services.AddSemanticTextMemory(); - // AI backends - services.AddScoped(serviceProvider => new KernelConfig() - .AddCompletionBackend(serviceProvider.GetRequiredService>().Value) - .AddEmbeddingBackend(serviceProvider.GetRequiredService>().Value)); - // Register skills services.AddScoped(sp => RegisterSkillsAsync); @@ -156,14 +152,14 @@ private static void AddSemanticTextMemory(this IServiceCollection services) /// /// Add the completion backend to the kernel config /// - private static KernelConfig AddCompletionBackend(this KernelConfig kernelConfig, AIServiceOptions options) + private static KernelBuilder WithCompletionBackend(this KernelBuilder kernelBuilder, AIServiceOptions options) { return options.Type switch { AIServiceOptions.AIServiceType.AzureOpenAI - => kernelConfig.AddAzureChatCompletionService(options.Models.Completion, options.Endpoint, options.Key), + => kernelBuilder.WithAzureChatCompletionService(options.Models.Completion, options.Endpoint, options.Key), AIServiceOptions.AIServiceType.OpenAI - => kernelConfig.AddOpenAIChatCompletionService(options.Models.Completion, options.Key), + => kernelBuilder.WithOpenAIChatCompletionService(options.Models.Completion, options.Key), _ => throw new ArgumentException($"Invalid {nameof(options.Type)} value in '{AIServiceOptions.PropertyName}' settings."), }; @@ -172,14 +168,14 @@ private static KernelConfig AddCompletionBackend(this KernelConfig kernelConfig, /// /// Add the embedding backend to the kernel config /// - private static KernelConfig AddEmbeddingBackend(this KernelConfig kernelConfig, AIServiceOptions options) + private static KernelBuilder WithEmbeddingBackend(this KernelBuilder kernelBuilder, AIServiceOptions options) { return options.Type switch { AIServiceOptions.AIServiceType.AzureOpenAI - => kernelConfig.AddAzureTextEmbeddingGenerationService(options.Models.Embedding, options.Endpoint, options.Key), + => kernelBuilder.WithAzureTextEmbeddingGenerationService(options.Models.Embedding, options.Endpoint, options.Key), AIServiceOptions.AIServiceType.OpenAI - => kernelConfig.AddOpenAITextEmbeddingGenerationService(options.Models.Embedding, options.Key), + => kernelBuilder.WithOpenAITextEmbeddingGenerationService(options.Models.Embedding, options.Key), _ => throw new ArgumentException($"Invalid {nameof(options.Type)} value in '{AIServiceOptions.PropertyName}' settings."), }; @@ -191,7 +187,7 @@ private static KernelConfig AddEmbeddingBackend(this KernelConfig kernelConfig, /// The service configuration /// Custom for HTTP requests. /// Application logger - private static IEmbeddingGeneration ToTextEmbeddingsService(this AIServiceOptions options, + private static ITextEmbeddingGeneration ToTextEmbeddingsService(this AIServiceOptions options, HttpClient? httpClient = null, ILogger? logger = null) { diff --git a/samples/notebooks/dotnet/00-getting-started.ipynb b/samples/notebooks/dotnet/00-getting-started.ipynb index ba9dc1b659bac..9dd2bd42024d4 100644 --- a/samples/notebooks/dotnet/00-getting-started.ipynb +++ b/samples/notebooks/dotnet/00-getting-started.ipynb @@ -36,7 +36,7 @@ "outputs": [], "source": [ "// Load some helper functions, e.g. to load values from settings.json\n", - "#!import config/Settings.cs" + "#!import config/Settings.cs " ] }, { @@ -61,7 +61,7 @@ "outputs": [], "source": [ "// Import Semantic Kernel\n", - "#r \"nuget: Microsoft.SemanticKernel, 0.14.547.1-preview\"" + "#r \"nuget: Microsoft.SemanticKernel, 0.15.230531.5-preview\"" ] }, { @@ -87,8 +87,8 @@ "source": [ "using Microsoft.SemanticKernel;\n", "\n", - "// Set Simple kernel instance\n", - "IKernel kernel = KernelBuilder.Create();" + "//Create Kernel builder\n", + "var builder = new KernelBuilder();" ] }, { @@ -108,9 +108,11 @@ "var (useAzureOpenAI, model, azureEndpoint, apiKey, orgId) = Settings.LoadFromFile();\n", "\n", "if (useAzureOpenAI)\n", - " kernel.Config.AddAzureTextCompletionService(model, azureEndpoint, apiKey);\n", + " builder.WithAzureTextCompletionService(model, azureEndpoint, apiKey);\n", "else\n", - " kernel.Config.AddOpenAITextCompletionService(model, apiKey, orgId);" + " builder.WithOpenAITextCompletionService(model, apiKey, orgId);\n", + "\n", + "IKernel kernel = builder.Build();" ] }, { diff --git a/samples/notebooks/dotnet/01-basic-loading-the-kernel.ipynb b/samples/notebooks/dotnet/01-basic-loading-the-kernel.ipynb index e07908d15e5fa..3ec75aaf7f812 100644 --- a/samples/notebooks/dotnet/01-basic-loading-the-kernel.ipynb +++ b/samples/notebooks/dotnet/01-basic-loading-the-kernel.ipynb @@ -32,7 +32,7 @@ }, "outputs": [], "source": [ - "#r \"nuget: Microsoft.SemanticKernel, 0.14.547.1-preview\"" + "#r \"nuget: Microsoft.SemanticKernel, 0.15.230531.5-preview\"" ] }, { @@ -143,16 +143,14 @@ }, "outputs": [], "source": [ - "IKernel kernel = KernelBuilder.Create();\n", - "\n", - "kernel.Config.AddAzureTextCompletionService(\n", + "Kernel.Builder\n", + ".WithAzureTextCompletionService(\n", " \"my-finetuned-Curie\", // Azure OpenAI *Deployment Name*\n", " \"https://contoso.openai.azure.com/\", // Azure OpenAI *Endpoint*\n", " \"...your Azure OpenAI Key...\", // Azure OpenAI *Key*\n", " \"Azure_curie\" // alias used in the prompt templates' config.json\n", - ");\n", - "\n", - "kernel.Config.AddOpenAITextCompletionService(\n", + ")\n", + ".WithOpenAITextCompletionService(\n", " \"text-davinci-003\", // OpenAI Model Name\n", " \"...your OpenAI API Key...\", // OpenAI API key\n", " \"...your OpenAI Org ID...\", // *optional* OpenAI Organization ID\n", @@ -171,7 +169,7 @@ "* a prompt configuration doesn't specify which AI backend to use\n", "* a prompt configuration requires a backend unknown to the kernel\n", "\n", - "The default can be set and changed programmatically:" + "The default can be set programmatically:" ] }, { @@ -190,7 +188,14 @@ }, "outputs": [], "source": [ - "kernel.Config.SetDefaultTextCompletionService(\"Azure_curie\");" + "Kernel.Builder\n", + ".WithOpenAITextCompletionService(\n", + " \"text-davinci-003\", // OpenAI Model Name\n", + " \"...your OpenAI API Key...\", // OpenAI API key\n", + " \"...your OpenAI Org ID...\", // *optional* OpenAI Organization ID\n", + " \"OpenAI_davinci\", // alias used in the prompt templates' config.json\n", + " true // This flag specifies that this service is the default one.\n", + ");" ] }, { diff --git a/samples/notebooks/dotnet/02-running-prompts-from-file.ipynb b/samples/notebooks/dotnet/02-running-prompts-from-file.ipynb index cf4a6b79aa304..5517066f4cc61 100644 --- a/samples/notebooks/dotnet/02-running-prompts-from-file.ipynb +++ b/samples/notebooks/dotnet/02-running-prompts-from-file.ipynb @@ -74,7 +74,7 @@ "source": [ "Given a semantic function defined by these files, this is how to load and use a file based semantic function.\n", "\n", - "Load and configure the kernel, as usual, loading also the AI backend settings defined in the [Setup notebook](0-AI-settings.ipynb):" + "Configure and create the kernel, as usual, loading also the AI backend settings defined in the [Setup notebook](0-AI-settings.ipynb):" ] }, { @@ -90,20 +90,22 @@ }, "outputs": [], "source": [ - "#r \"nuget: Microsoft.SemanticKernel, 0.14.547.1-preview\"\n", + "#r \"nuget: Microsoft.SemanticKernel, 0.15.230531.5-preview\"\n", "\n", "#!import config/Settings.cs\n", "\n", "using Microsoft.SemanticKernel;\n", "\n", - "var kernel = KernelBuilder.Create();\n", + "var builder = new KernelBuilder();\n", "\n", "// Configure AI backend used by the kernel\n", "var (useAzureOpenAI, model, azureEndpoint, apiKey, orgId) = Settings.LoadFromFile();\n", "if (useAzureOpenAI)\n", - " kernel.Config.AddAzureTextCompletionService(model, azureEndpoint, apiKey);\n", + " builder.WithAzureTextCompletionService(model, azureEndpoint, apiKey);\n", "else\n", - " kernel.Config.AddOpenAITextCompletionService(model, apiKey, orgId);" + " builder.WithOpenAITextCompletionService(model, apiKey, orgId);\n", + "\n", + "IKernel kernel = builder.Build();" ] }, { diff --git a/samples/notebooks/dotnet/03-semantic-function-inline.ipynb b/samples/notebooks/dotnet/03-semantic-function-inline.ipynb index 759c6d81dc984..07f856b685dbb 100644 --- a/samples/notebooks/dotnet/03-semantic-function-inline.ipynb +++ b/samples/notebooks/dotnet/03-semantic-function-inline.ipynb @@ -49,21 +49,23 @@ }, "outputs": [], "source": [ - "#r \"nuget: Microsoft.SemanticKernel, 0.14.547.1-preview\"\n", + "#r \"nuget: Microsoft.SemanticKernel, 0.15.230531.5-preview\"\n", "\n", "#!import config/Settings.cs\n", "\n", "using Microsoft.SemanticKernel;\n", "using Microsoft.SemanticKernel.SemanticFunctions;\n", "\n", - "IKernel kernel = KernelBuilder.Create();\n", + "var builder = new KernelBuilder();\n", "\n", "// Configure AI backend used by the kernel\n", "var (useAzureOpenAI, model, azureEndpoint, apiKey, orgId) = Settings.LoadFromFile();\n", "if (useAzureOpenAI)\n", - " kernel.Config.AddAzureTextCompletionService(model, azureEndpoint, apiKey);\n", + " builder.WithAzureTextCompletionService(model, azureEndpoint, apiKey);\n", "else\n", - " kernel.Config.AddOpenAITextCompletionService(model, apiKey, orgId);" + " builder.WithOpenAITextCompletionService(model, apiKey, orgId);\n", + "\n", + "IKernel kernel = builder.Build();" ] }, { @@ -293,15 +295,16 @@ }, "outputs": [], "source": [ - "var kernel = Microsoft.SemanticKernel.Kernel.Builder.Build();\n", + "var builder = new KernelBuilder();\n", "\n", "var (useAzureOpenAI, model, azureEndpoint, apiKey, orgId) = Settings.LoadFromFile();\n", "\n", "if (useAzureOpenAI)\n", - " kernel.Config.AddAzureTextCompletionService(model, azureEndpoint, apiKey);\n", + " builder.WithAzureTextCompletionService(model, azureEndpoint, apiKey);\n", "else\n", - " kernel.Config.AddOpenAITextCompletionService(model, apiKey, orgId);\n", + " builder.WithOpenAITextCompletionService(model, apiKey, orgId);\n", "\n", + "var kernel = builder.Build();\n", "\n", "string skPrompt = @\"\n", "{{$input}}\n", diff --git a/samples/notebooks/dotnet/04-context-variables-chat.ipynb b/samples/notebooks/dotnet/04-context-variables-chat.ipynb index 1a9d687dd6c0e..7279a98f5cd1b 100644 --- a/samples/notebooks/dotnet/04-context-variables-chat.ipynb +++ b/samples/notebooks/dotnet/04-context-variables-chat.ipynb @@ -34,7 +34,7 @@ }, "outputs": [], "source": [ - "#r \"nuget: Microsoft.SemanticKernel, 0.14.547.1-preview\"\n", + "#r \"nuget: Microsoft.SemanticKernel, 0.15.230531.5-preview\"\n", "\n", "#!import config/Settings.cs\n", "\n", @@ -42,14 +42,16 @@ "using Microsoft.SemanticKernel.SemanticFunctions;\n", "using Microsoft.SemanticKernel.Orchestration;\n", "\n", - "IKernel kernel = KernelBuilder.Create();\n", + "var builder = new KernelBuilder();\n", "\n", "// Configure AI backend used by the kernel\n", "var (useAzureOpenAI, model, azureEndpoint, apiKey, orgId) = Settings.LoadFromFile();\n", "if (useAzureOpenAI)\n", - " kernel.Config.AddAzureTextCompletionService(model, azureEndpoint, apiKey);\n", + " builder.WithAzureTextCompletionService(model, azureEndpoint, apiKey);\n", "else\n", - " kernel.Config.AddOpenAITextCompletionService(model, apiKey, orgId);" + " builder.WithOpenAITextCompletionService(model, apiKey, orgId);\n", + "\n", + "IKernel kernel = builder.Build();" ] }, { diff --git a/samples/notebooks/dotnet/05-using-the-planner.ipynb b/samples/notebooks/dotnet/05-using-the-planner.ipynb index 1fff721df4c65..a9385cb234655 100644 --- a/samples/notebooks/dotnet/05-using-the-planner.ipynb +++ b/samples/notebooks/dotnet/05-using-the-planner.ipynb @@ -25,7 +25,7 @@ }, "outputs": [], "source": [ - "#r \"nuget: Microsoft.SemanticKernel, 0.14.547.1-preview\"\n", + "#r \"nuget: Microsoft.SemanticKernel, 0.15.230531.5-preview\"\n", "\n", "#!import config/Settings.cs\n", "#!import config/Utils.cs\n", @@ -36,15 +36,17 @@ "using Microsoft.SemanticKernel.Planning;\n", "using Microsoft.SemanticKernel.Planning.Sequential;\n", "\n", - "IKernel kernel = KernelBuilder.Create();\n", + "var builder = new KernelBuilder();\n", "\n", "// Configure AI backend used by the kernel\n", "var (useAzureOpenAI, model, azureEndpoint, apiKey, orgId) = Settings.LoadFromFile();\n", "\n", "if (useAzureOpenAI)\n", - " kernel.Config.AddAzureTextCompletionService(model, azureEndpoint, apiKey);\n", + " builder.WithAzureTextCompletionService(model, azureEndpoint, apiKey);\n", "else\n", - " kernel.Config.AddOpenAITextCompletionService(model, apiKey, orgId);" + " builder.WithOpenAITextCompletionService(model, apiKey, orgId);\n", + "\n", + "var kernel = builder.Build();" ] }, { diff --git a/samples/notebooks/dotnet/06-memory-and-embeddings.ipynb b/samples/notebooks/dotnet/06-memory-and-embeddings.ipynb index e76082333c1e5..0f06ceba9b70a 100644 --- a/samples/notebooks/dotnet/06-memory-and-embeddings.ipynb +++ b/samples/notebooks/dotnet/06-memory-and-embeddings.ipynb @@ -33,7 +33,7 @@ }, "outputs": [], "source": [ - "#r \"nuget: Microsoft.SemanticKernel, 0.14.547.1-preview\"\n", + "#r \"nuget: Microsoft.SemanticKernel, 0.15.230531.5-preview\"\n", "\n", "#!import config/Settings.cs\n", "\n", @@ -75,22 +75,22 @@ "\n", "var (useAzureOpenAI, model, azureEndpoint, apiKey, orgId) = Settings.LoadFromFile();\n", "\n", - "var kernel = new KernelBuilder()\n", - " .Configure(c =>\n", - " {\n", - " if (useAzureOpenAI)\n", - " {\n", - " c.AddAzureTextEmbeddingGenerationService(\"text-embedding-ada-002\", azureEndpoint, apiKey);\n", - " c.AddAzureTextCompletionService(model, azureEndpoint, apiKey);\n", - " }\n", - " else\n", - " {\n", - " c.AddOpenAITextEmbeddingGenerationService(\"text-embedding-ada-002\", apiKey);\n", - " c.AddOpenAITextCompletionService(model, apiKey, orgId);\n", - " }\n", - " })\n", - " .WithMemoryStorage(new VolatileMemoryStore())\n", - " .Build();" + "var builder = new KernelBuilder();\n", + "\n", + "if (useAzureOpenAI)\n", + "{\n", + " builder.WithAzureTextEmbeddingGenerationService(\"text-embedding-ada-002\", azureEndpoint, apiKey);\n", + " builder.WithAzureTextCompletionService(model, azureEndpoint, apiKey);\n", + "}\n", + "else\n", + "{\n", + " builder.WithOpenAITextEmbeddingGenerationService(\"text-embedding-ada-002\", apiKey);\n", + " builder.WithOpenAITextCompletionService(model, apiKey, orgId);\n", + "}\n", + "\n", + "builder.WithMemoryStorage(new VolatileMemoryStore());\n", + "\n", + "var kernel = builder.Build();" ] }, { @@ -437,22 +437,22 @@ }, "outputs": [], "source": [ - "var kernel = Microsoft.SemanticKernel.Kernel.Builder\n", - " .Configure(c =>\n", - " {\n", - " if (useAzureOpenAI)\n", - " {\n", - " c.AddAzureTextEmbeddingGenerationService(\"text-embedding-ada-002\", azureEndpoint, apiKey);\n", - " c.AddAzureTextCompletionService(model, azureEndpoint, apiKey);\n", - " }\n", - " else\n", - " {\n", - " c.AddOpenAITextEmbeddingGenerationService(\"text-embedding-ada-002\", apiKey);\n", - " c.AddOpenAITextCompletionService(model, apiKey, orgId);\n", - " }\n", - " })\n", - " .WithMemoryStorage(new VolatileMemoryStore())\n", - " .Build();" + "var builder = new KernelBuilder();\n", + "\n", + "if (useAzureOpenAI)\n", + "{\n", + " builder.WithAzureTextEmbeddingGenerationService(\"text-embedding-ada-002\", azureEndpoint, apiKey);\n", + " builder.WithAzureTextCompletionService(model, azureEndpoint, apiKey);\n", + "}\n", + "else\n", + "{\n", + " builder.WithOpenAITextEmbeddingGenerationService(\"text-embedding-ada-002\", apiKey);\n", + " builder.WithOpenAITextCompletionService(model, apiKey, orgId);\n", + "}\n", + "\n", + "builder.WithMemoryStorage(new VolatileMemoryStore());\n", + "\n", + "var kernel = builder.Build();" ] }, { diff --git a/samples/notebooks/dotnet/07-DALL-E-2.ipynb b/samples/notebooks/dotnet/07-DALL-E-2.ipynb index f8a4f9714ea7a..c645706de47bb 100644 --- a/samples/notebooks/dotnet/07-DALL-E-2.ipynb +++ b/samples/notebooks/dotnet/07-DALL-E-2.ipynb @@ -33,7 +33,7 @@ "source": [ "// Usual setup: importing Semantic Kernel SDK and SkiaSharp, used to display images inline.\n", "\n", - "#r \"nuget: Microsoft.SemanticKernel, 0.14.547.1-preview\"\n", + "#r \"nuget: Microsoft.SemanticKernel, 0.15.230531.5-preview\"\n", "#r \"nuget: SkiaSharp, 2.88.3\"\n", "\n", "#!import config/Settings.cs\n", @@ -81,19 +81,16 @@ "\n", "// Configure the three AI features: text embedding (using Ada), text completion (using DaVinci 3), image generation (DALL-E 2)\n", "var kernel = new KernelBuilder()\n", - " .Configure(c =>\n", - " {\n", - " c.AddOpenAITextEmbeddingGenerationService(\"text-embedding-ada-002\", apiKey);\n", - " c.AddOpenAITextCompletionService(\"text-davinci-003\", apiKey, orgId);\n", - " c.AddOpenAIImageGenerationService(apiKey, orgId);\n", - " })\n", + " .WithOpenAITextEmbeddingGenerationService(\"text-embedding-ada-002\", apiKey)\n", + " .WithOpenAITextCompletionService(\"text-davinci-003\", apiKey, orgId)\n", + " .WithOpenAIImageGenerationService(apiKey, orgId)\n", " .Build();\n", "\n", "// Get AI service instance used to generate images\n", "var dallE = kernel.GetService();\n", "\n", "// Get AI service instance used to extract embedding from a text\n", - "var textEmbedding = kernel.GetService>();" + "var textEmbedding = kernel.GetService();" ] }, { diff --git a/samples/notebooks/dotnet/08-chatGPT-with-DALL-E-2.ipynb b/samples/notebooks/dotnet/08-chatGPT-with-DALL-E-2.ipynb index 6c3eee46c293a..7f30f82cd0b62 100644 --- a/samples/notebooks/dotnet/08-chatGPT-with-DALL-E-2.ipynb +++ b/samples/notebooks/dotnet/08-chatGPT-with-DALL-E-2.ipynb @@ -55,7 +55,7 @@ "source": [ "// Usual setup: importing Semantic Kernel SDK and SkiaSharp, used to display images inline.\n", "\n", - "#r \"nuget: Microsoft.SemanticKernel, 0.14.547.1-preview\"\n", + "#r \"nuget: Microsoft.SemanticKernel, 0.15.230531.5-preview\"\n", "#r \"nuget: SkiaSharp, 2.88.3\"\n", "\n", "#!import config/Settings.cs\n", @@ -99,11 +99,8 @@ "\n", "// Configure the two AI features: OpenAI Chat and DALL-E 2 for image generation\n", "var kernel = new KernelBuilder()\n", - " .Configure(c =>\n", - " {\n", - " c.AddOpenAIChatCompletionService(\"gpt-3.5-turbo\", apiKey, orgId);\n", - " c.AddOpenAIImageGenerationService(apiKey, orgId);\n", - " })\n", + " .WithOpenAIChatCompletionService(\"gpt-3.5-turbo\", apiKey, orgId)\n", + " .WithOpenAIImageGenerationService(apiKey, orgId)\n", " .Build();\n", "\n", "// Get AI service instance used to generate images\n",