using System; using Microsoft.SemanticKernel; using Microsoft.SemanticKernel.ChatCompletion; using Microsoft.SemanticKernel.Connectors.Ollama; using OllamaFunctionCalling; var builder = Kernel.CreateBuilder(); var modelId = "llama3.2"; var endpoint = new Uri("http://localhost:11434"); builder.Services.AddOllamaChatCompletion(modelId, endpoint); builder.Plugins .AddFromType() .AddFromObject(new MyLightPlugin(turnedOn: true)) .AddFromObject(new MyAlarmPlugin("11")); var kernel = builder.Build(); var chatCompletionService = kernel.GetRequiredService(); var settings = new OllamaPromptExecutionSettings { FunctionChoiceBehavior = FunctionChoiceBehavior.Auto() }; Console.WriteLine(""" Ask questions or give instructions to the copilot such as: - Change the alarm to 8 - What is the current alarm set? - Is the light on? - Turn the light off please. - Set an alarm for 6:00 am. """); Console.Write("> "); string? input = null; while ((input = Console.ReadLine()) is not null) { Console.WriteLine(); try { ChatMessageContent chatResult = await chatCompletionService.GetChatMessageContentAsync(input, settings, kernel); Console.Write($"\n>>> Result: {chatResult}\n\n> "); } catch (Exception ex) { Console.WriteLine($"Error: {ex.Message}\n\n> "); } }