2.13. semantic kernel函数过滤器
🧱 三种过滤器类型
类型
作用描述
🔍 1. Function Invocation Filter(函数调用过滤器)
✅ 示例:记录函数调用日志
public sealed class LoggingFilter(ILogger logger) : IFunctionInvocationFilter
{
public async Task OnFunctionInvocationAsync(FunctionInvocationContext context, Func<FunctionInvocationContext, Task> next)
{
logger.LogInformation("Invoking: {PluginName}.{FunctionName}", context.Function.PluginName, context.Function.Name);
await next(context); // 注意:必须调用 next 才能继续执行!
logger.LogInformation("Executed: {PluginName}.{FunctionName}", context.Function.PluginName, context.Function.Name);
}
}🧾 2. Prompt Render Filter(提示词渲染过滤器)
✅ 示例:替换为“安全提示词”
⚙️ 3. Auto Function Invocation Filter(自动函数调用过滤器)
✅ 示例:达到期望结果即终止调用链
🧩 如何注册过滤器?
✅ 方法一:通过 DI 容器注入
✅ 方法二:直接添加到 Kernel
🎯 小结
过滤器类型
用途
Last updated