Method WithFilters
WithFilters(FilterPipeline)
Sets the filter pipeline for the agent.
public AgentBuilder WithFilters(FilterPipeline filters)
Parameters
filtersFilterPipelineThe filter pipeline to apply.
Returns
- AgentBuilder
This builder instance for method chaining.
Examples
Using a pre-configured pipeline:
var pipeline = new FilterPipeline();
pipeline.PromptFilters.Add(new LoggingPromptFilter());
pipeline.CompletionFilters.Add(new QualityGateFilter());
var agent = new AgentBuilder()
.WithModel(model)
.WithPersona("Assistant")
.WithFilters(pipeline)
.Build();
Remarks
The filter pipeline intercepts prompt, completion, and tool invocation stages using a middleware (onion) pattern. Use this overload with a pre-configured pipeline. For inline configuration, use WithFilters(Action<FilterPipeline>).
WithFilters(Action<FilterPipeline>)
Configures the filter pipeline using a setup action.
public AgentBuilder WithFilters(Action<FilterPipeline> configure)
Parameters
configureAction<FilterPipeline>An action to configure the filter pipeline.
Returns
- AgentBuilder
This builder instance for method chaining.
Examples
Adding filters inline:
var agent = new AgentBuilder()
.WithModel(model)
.WithPersona("Assistant")
.WithFilters(filters =>
{
filters.AddPromptFilter(async (ctx, next) =>
{
Console.WriteLine($"Prompt: {ctx.Prompt}");
await next(ctx);
});
filters.AddCompletionFilter(async (ctx, next) =>
{
await next(ctx);
Console.WriteLine($"Tokens: {ctx.Result?.GeneratedTokenCount}");
});
filters.AddToolInvocationFilter(async (ctx, next) =>
{
Console.WriteLine($"Tool: {ctx.ToolCall.Name}");
await next(ctx);
});
})
.Build();</code></pre>
Remarks
Creates a new FilterPipeline if one hasn't been set. The action receives the pipeline for inline configuration.
Exceptions
- ArgumentNullException
Thrown when
configureis null.