#r "nuget: Microsoft.SemanticKernel, 1.11.1" #r "nuget: Microsoft.SemanticKernel.Plugins.Web, 1.11.1-alpha" #r "nuget: Microsoft.SemanticKernel.Plugins.Core, 1.11.1-alpha" #!import config/Settings.cs #!import config/Utils.cs using Microsoft.SemanticKernel; using Microsoft.SemanticKernel.Plugins.Core; using Microsoft.SemanticKernel.TemplateEngine; using InteractiveKernel = Microsoft.DotNet.Interactive.Kernel; using Kernel = Microsoft.SemanticKernel.Kernel; var builder = Kernel.CreateBuilder(); // Configure AI backend used by the kernel var (useAzureOpenAI, model, azureEndpoint, apiKey, orgId) = Settings.LoadFromFile(); if (useAzureOpenAI) builder.AddAzureOpenAIChatCompletion(model, azureEndpoint, apiKey); else builder.AddOpenAIChatCompletion(model, apiKey, orgId); var kernel = builder.Build(); using Microsoft.SemanticKernel.Plugins.Web; using Microsoft.SemanticKernel.Plugins.Web.Bing; using InteractiveKernel = Microsoft.DotNet.Interactive.Kernel; string BING_KEY = (await InteractiveKernel.GetPasswordAsync("Please enter your Bing Search Key")).GetClearTextPassword(); private static async Task Example1Async(Microsoft.SemanticKernel.Kernel kernel) { Console.WriteLine("Example 1"); // Run var question = "What is quantum tunnelling"; var function = kernel.Plugins["bing"]["search"]; var bingResult = await kernel.InvokeAsync(function, new() { ["query"] = question }); Console.WriteLine(question); Console.WriteLine("----"); Console.WriteLine(bingResult); Console.WriteLine(); /* OUTPUT: What is quantum tunnelling ---- In physics, quantum tunnelling, barrier penetration, or simply tunnelling is a quantum mechanical phenomenon in which an object such as an electron or atom passes through a potential energy barrier that, according to classical mechanics, the object does not have sufficient energy to enter or surmount. */ } private static async Task Example2Async(Microsoft.SemanticKernel.Kernel kernel) { Console.WriteLine("Example 2"); //The following function only works in interactive notebooks string question = await InteractiveKernel.GetInputAsync("Please ask your question"); var function = kernel.Plugins["bing"]["search"]; var bingResult = await kernel.InvokeAsync(function, new() { ["query"] = question }); Console.WriteLine(bingResult); } #pragma warning disable SKEXP0050 // Load Bing plugin var bingConnector = new BingConnector(BING_KEY); kernel.ImportPluginFromObject(new WebSearchEnginePlugin(bingConnector), "bing"); await Example1Async(kernel); await Example2Async(kernel);