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#
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);
|
|
}
|
|
} |