namespace SemanticKernelStudy.Test;
///
///
///
public class TryTest
{
//推荐:Xunit.DependencyInjection.Logging 库,与 Microsoft.Extensions.Logging 集成
private readonly ILogger _logger;
public TryTest(ILogger logger)
{
_logger = logger;
}
[Fact]
public void Try_SK_Test()
{
KernelFunction f1 = KernelFunctionFactory.CreateFromPrompt("河南省会在哪里?");
KernelFunction f2 = KernelFunctionFactory.CreateFromMethod(() => "河南省会在郑州");
KernelFunction f3 = KernelFunctionFactory.CreateFromPrompt(string.Empty);
}
[Fact]
public async Task Try_SK_Filter_Test()
{
var builder = Kernel.CreateBuilder();
// This filter overrides result with "Result from filter" value.
builder.Services.AddSingleton();
var kernel = builder.Build();
var function = KernelFunctionFactory.CreateFromMethod(() => "Result from method");
var result = await kernel.InvokeAsync(function);
Console.WriteLine(result);
Console.WriteLine($"Metadata: {string.Join(",", result.Metadata!.Select(kv => $"{kv.Key}: {kv.Value}"))}");
}
[Fact]
public async Task Try_SK_Filter2_Test()
{
var builder = Kernel.CreateBuilder();
// This filter overrides result with "Result from filter" value.
builder.Services.AddSingleton();
var kernel = builder.Build();
var function = KernelFunctionFactory.CreateFromMethod(() => "Result from method");
var result = await kernel.InvokeAsync(function);
Console.WriteLine(result);
Console.WriteLine($"Metadata: {string.Join(",", result.Metadata!.Select(kv => $"{kv.Key}: {kv.Value}"))}");
}
[Fact]
public void Try_Logger_Test()
{
var msg = "使用 Xunit.DependencyInjection 实现的 {abc} 输出测试内容";
_logger.LogInformation(msg);
Assert.True(true, msg);
}
private sealed class FunctionFilterExample : IFunctionInvocationFilter
{
public async Task OnFunctionInvocationAsync(Microsoft.SemanticKernel.FunctionInvocationContext context, Func next)
{
// Example: override kernel arguments
context.Arguments["input"] = "new input";
// This call is required to proceed with next filters in pipeline and actual function.
// Without this call next filters and function won't be invoked.
await next(context);
// Example: get function result value
var value = context.Result!.GetValue