You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

98 lines
3.3 KiB
C#

namespace SemanticKernelStudy.Test;
public class SemanticKernelTest
{
private ILogger<SemanticKernelTest> _logger;
public SemanticKernelTest(ILogger<SemanticKernelTest> 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<TimePlugin>();
//添加企业级服务(日志、过滤器等)
kernelBuilder.Services.AddLogging(services => services.AddConsole().SetMinimumLevel(LogLevel.Trace));
//由构建器构建Kernel
Kernel kernel = kernelBuilder.Build();
//发请求信息
FunctionResult result = await kernel.InvokePromptAsync("你好");
//获取返回结果
ChatResponse? response = result.GetValue<ChatResponse>();
//提取返回文本
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<ChatMessage> messages = new List<ChatMessage>()
{
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<ChatMessage> messages = new List<ChatMessage>()
{
new ChatMessage(Microsoft.Extensions.AI.ChatRole.System,"你是一个使用直接风格描述图像的AI助手"),
new ChatMessage(Microsoft.Extensions.AI.ChatRole.User,"识别这段mp3语音的内容"),
imageMessage,
};
var dd = await chatClient.GetResponseAsync(messages);
}
}