namespace SemanticKernelStudy.Test; public class SemanticKernelTest { private ILogger _logger; public SemanticKernelTest(ILogger logger) { _logger = logger; } [Fact] public async Task Use_SemanticKernel_Test() { //创建Kernel构建器 var kernelBuilder = Kernel.CreateBuilder(); //添加AI服务 kernelBuilder.AddOllamaChatClient("qwen3:0.6b", new Uri("http://localhost:11434/v1"), "ollamaService"); //添加内置时间插件 kernelBuilder.Plugins.AddFromType(); //添加企业级服务(日志、过滤器等) kernelBuilder.Services.AddLogging(services => services.AddConsole().SetMinimumLevel(LogLevel.Trace)); //由构建器构建Kernel Kernel kernel = kernelBuilder.Build(); //发请求信息 FunctionResult result = await kernel.InvokePromptAsync("你好"); //获取返回结果 ChatResponse? response = result.GetValue(); //提取返回文本 var responseText = response?.Messages.First().Text; //打印返回文本 _logger.LogInformation(responseText??string.Empty); } [Fact] public async Task Use_Image_Test() { HttpClient httpClient = new HttpClient() { Timeout = TimeSpan.FromMinutes(10), BaseAddress = new Uri("http://localhost:11434/"), }; var ollamaClient = new OllamaSharp.OllamaApiClient(httpClient, "gemma3:4b"); var chatClient = ollamaClient as IChatClient; byte[] imagData = File.ReadAllBytes("Assets/Images/1.jpg"); AIContent imageContent = new DataContent(imagData, "image/jpeg"); ChatMessage imageMessage = new ChatMessage(Microsoft.Extensions.AI.ChatRole.User, [imageContent]); List messages = new List() { new ChatMessage(Microsoft.Extensions.AI.ChatRole.System,"你是一个使用直接风格描述图像的AI助手"), new ChatMessage(Microsoft.Extensions.AI.ChatRole.User,"这张图片中有几个人?"), imageMessage, }; var dd = await chatClient.GetResponseAsync(messages); } [Fact] public async Task Use_Audio_Test() { HttpClient httpClient = new HttpClient() { Timeout = TimeSpan.FromMinutes(10), BaseAddress = new Uri("http://localhost:11434/"), }; var ollamaClient = new OllamaApiClient(httpClient, "Qwen2-Audio-7B"); var chatClient = ollamaClient as IChatClient; var s = ollamaClient.CreateSamplingHandler(); byte[] imagData = File.ReadAllBytes("Assets/Audios/dongdong.mp3"); AIContent content = new DataContent(imagData, "audio/mpeg"); ChatMessage imageMessage = new ChatMessage(Microsoft.Extensions.AI.ChatRole.User, [content]); List messages = new List() { new ChatMessage(Microsoft.Extensions.AI.ChatRole.System,"你是一个使用直接风格描述图像的AI助手"), new ChatMessage(Microsoft.Extensions.AI.ChatRole.User,"识别这段mp3语音的内容"), imageMessage, }; var dd = await chatClient.GetResponseAsync(messages); } }