diff --git a/README.md b/README.md
index e8518c0ef1cf..29ad470876bd 100644
--- a/README.md
+++ b/README.md
@@ -19,7 +19,7 @@ is an SDK that integrates Large Language Models (LLMs) like
[Azure OpenAI](https://azure.microsoft.com/en-us/products/ai-services/openai-service),
and [Hugging Face](https://huggingface.co/)
with conventional programming languages like C#, Python, and Java. Semantic Kernel achieves this
-by allowing you to define [plugins](https://learn.microsoft.com/en-us/semantic-kernel/ai-orchestration/plugins)
+by allowing you to define [plugins](https://learn.microsoft.com/en-us/semantic-kernel/concepts/plugins)
that can be chained together
in just a [few lines of code](https://learn.microsoft.com/en-us/semantic-kernel/ai-orchestration/chaining-functions?tabs=Csharp#using-the-runasync-method-to-simplify-your-code).
diff --git a/dotnet/docs/EXPERIMENTS.md b/dotnet/docs/EXPERIMENTS.md
index 2be4606e5596..8cc9287ff55e 100644
--- a/dotnet/docs/EXPERIMENTS.md
+++ b/dotnet/docs/EXPERIMENTS.md
@@ -26,57 +26,57 @@ You can use the following diagnostic IDs to ignore warnings or errors for a part
## Experimental Features Tracking
-| SKEXP | Features | API docs | Learn docs | Samples | Issues | Implementations |
-|-------|----------|----------|------------|---------|--------|-----------------|
-| SKEXP0001 | Embedding services | | | | | |
-| SKEXP0001 | Image services | | | | | |
-| SKEXP0001 | Memory connectors | | | | | |
-| SKEXP0001 | Kernel filters | | | | | |
-| SKEXP0001 | Audio services | | | | | |
+| SKEXP | Features |
+|-------|----------|
+| SKEXP0001 | Embedding services |
+| SKEXP0001 | Image services |
+| SKEXP0001 | Memory connectors |
+| SKEXP0001 | Kernel filters |
+| SKEXP0001 | Audio services |
| | | | | | | |
-| SKEXP0010 | Azure OpenAI with your data service | | | | | |
-| SKEXP0010 | OpenAI embedding service | | | | | |
-| SKEXP0010 | OpenAI image service | | | | | |
-| SKEXP0010 | OpenAI parameters | | | | | |
-| SKEXP0010 | OpenAI chat history extension | | | | | |
-| SKEXP0010 | OpenAI file service | | | | | |
+| SKEXP0010 | Azure OpenAI with your data service |
+| SKEXP0010 | OpenAI embedding service |
+| SKEXP0010 | OpenAI image service |
+| SKEXP0010 | OpenAI parameters |
+| SKEXP0010 | OpenAI chat history extension |
+| SKEXP0010 | OpenAI file service |
| | | | | | | |
-| SKEXP0020 | Azure AI Search memory connector | | | | | |
-| SKEXP0020 | Chroma memory connector | | | | | |
-| SKEXP0020 | DuckDB memory connector | | | | | |
-| SKEXP0020 | Kusto memory connector | | | | | |
-| SKEXP0020 | Milvus memory connector | | | | | |
-| SKEXP0020 | Qdrant memory connector | | | | | |
-| SKEXP0020 | Redis memory connector | | | | | |
-| SKEXP0020 | Sqlite memory connector | | | | | |
-| SKEXP0020 | Weaviate memory connector | | | | | |
-| SKEXP0020 | MongoDB memory connector | | | | | |
-| SKEXP0020 | Pinecone memory connector | | | | | |
-| SKEXP0020 | Postgres memory connector | | | | | |
+| SKEXP0020 | Azure AI Search memory connector |
+| SKEXP0020 | Chroma memory connector |
+| SKEXP0020 | DuckDB memory connector |
+| SKEXP0020 | Kusto memory connector |
+| SKEXP0020 | Milvus memory connector |
+| SKEXP0020 | Qdrant memory connector |
+| SKEXP0020 | Redis memory connector |
+| SKEXP0020 | Sqlite memory connector |
+| SKEXP0020 | Weaviate memory connector |
+| SKEXP0020 | MongoDB memory connector |
+| SKEXP0020 | Pinecone memory connector |
+| SKEXP0020 | Postgres memory connector |
| | | | | | | |
-| SKEXP0040 | GRPC functions | | | | | |
-| SKEXP0040 | Markdown functions | | | | | |
-| SKEXP0040 | OpenAPI functions | | | | | |
-| SKEXP0040 | OpenAPI function extensions | | | | | |
-| SKEXP0040 | Prompty Format support | | | | | |
+| SKEXP0040 | GRPC functions |
+| SKEXP0040 | Markdown functions |
+| SKEXP0040 | OpenAPI functions |
+| SKEXP0040 | OpenAPI function extensions |
+| SKEXP0040 | Prompty Format support |
| | | | | | | |
-| SKEXP0050 | Core plugins | | | | | |
-| SKEXP0050 | Document plugins | | | | | |
-| SKEXP0050 | Memory plugins | | | | | |
-| SKEXP0050 | Microsoft 365 plugins | | | | | |
-| SKEXP0050 | Web plugins | | | | | |
-| SKEXP0050 | Text chunker plugin | | | | | |
+| SKEXP0050 | Core plugins |
+| SKEXP0050 | Document plugins |
+| SKEXP0050 | Memory plugins |
+| SKEXP0050 | Microsoft 365 plugins |
+| SKEXP0050 | Web plugins |
+| SKEXP0050 | Text chunker plugin |
| | | | | | | |
-| SKEXP0060 | Handlebars planner | | | | | |
-| SKEXP0060 | OpenAI Stepwise planner | | | | | |
+| SKEXP0060 | Handlebars planner |
+| SKEXP0060 | OpenAI Stepwise planner |
| | | | | | | |
-| SKEXP0070 | Ollama AI connector | | | | | |
-| SKEXP0070 | Gemini AI connector | | | | | |
-| SKEXP0070 | Mistral AI connector | | | | | |
-| SKEXP0070 | ONNX AI connector | | | | | |
-| SKEXP0070 | Hugging Face AI connector | | | | | |
+| SKEXP0070 | Ollama AI connector |
+| SKEXP0070 | Gemini AI connector |
+| SKEXP0070 | Mistral AI connector |
+| SKEXP0070 | ONNX AI connector |
+| SKEXP0070 | Hugging Face AI connector |
| | | | | | | |
-| SKEXP0101 | Experiment with Assistants | | | | | |
-| SKEXP0101 | Experiment with Flow Orchestration | | | | | |
+| SKEXP0101 | Experiment with Assistants |
+| SKEXP0101 | Experiment with Flow Orchestration |
| | | | | | | |
-| SKEXP0110 | Agent Framework | | | | | |
\ No newline at end of file
+| SKEXP0110 | Agent Framework |
\ No newline at end of file
diff --git a/dotnet/samples/Concepts/Optimization/FrugalGPT.cs b/dotnet/samples/Concepts/Optimization/FrugalGPTWithFilters.cs
similarity index 99%
rename from dotnet/samples/Concepts/Optimization/FrugalGPT.cs
rename to dotnet/samples/Concepts/Optimization/FrugalGPTWithFilters.cs
index f5ede1764789..2ac3fce56b23 100644
--- a/dotnet/samples/Concepts/Optimization/FrugalGPT.cs
+++ b/dotnet/samples/Concepts/Optimization/FrugalGPTWithFilters.cs
@@ -15,7 +15,7 @@ namespace Optimization;
/// This example shows how to use FrugalGPT techniques to reduce cost and improve LLM-related task performance.
/// More information here: https://arxiv.org/abs/2305.05176.
///
-public sealed class FrugalGPT(ITestOutputHelper output) : BaseTest(output)
+public sealed class FrugalGPTWithFilters(ITestOutputHelper output) : BaseTest(output)
{
///
/// One of the FrugalGPT techniques is to reduce prompt size when using few-shot prompts.
diff --git a/dotnet/samples/Concepts/Optimization/PluginSelection.cs b/dotnet/samples/Concepts/Optimization/PluginSelectionWithFilters.cs
similarity index 99%
rename from dotnet/samples/Concepts/Optimization/PluginSelection.cs
rename to dotnet/samples/Concepts/Optimization/PluginSelectionWithFilters.cs
index 70c55456e72d..bd1766a61597 100644
--- a/dotnet/samples/Concepts/Optimization/PluginSelection.cs
+++ b/dotnet/samples/Concepts/Optimization/PluginSelectionWithFilters.cs
@@ -21,7 +21,7 @@ namespace Optimization;
/// It also helps to handle the scenario with a general purpose chat experience for a large enterprise,
/// where there are so many plugins, that it's impossible to share all of them with AI model in a single request.
///
-public sealed class PluginSelection(ITestOutputHelper output) : BaseTest(output)
+public sealed class PluginSelectionWithFilters(ITestOutputHelper output) : BaseTest(output)
{
///
/// This method shows how to select best functions to share with AI using vector similarity search.
@@ -37,7 +37,7 @@ public async Task UsingVectorSearchWithKernelAsync()
.AddOpenAITextEmbeddingGeneration("text-embedding-3-small", TestConfiguration.OpenAI.ApiKey);
// Add logging.
- var logger = this.LoggerFactory.CreateLogger();
+ var logger = this.LoggerFactory.CreateLogger();
builder.Services.AddSingleton(logger);
// Add memory store to keep functions and search for the most relevant ones for specific request.
@@ -111,7 +111,7 @@ public async Task UsingVectorSearchWithChatCompletionAsync()
.AddOpenAITextEmbeddingGeneration("text-embedding-3-small", TestConfiguration.OpenAI.ApiKey);
// Add logging.
- var logger = this.LoggerFactory.CreateLogger();
+ var logger = this.LoggerFactory.CreateLogger();
builder.Services.AddSingleton(logger);
// Add memory store to keep functions and search for the most relevant ones for specific request.
diff --git a/dotnet/samples/Concepts/README.md b/dotnet/samples/Concepts/README.md
index 4bdfbd064d39..8af311c992cf 100644
--- a/dotnet/samples/Concepts/README.md
+++ b/dotnet/samples/Concepts/README.md
@@ -106,8 +106,8 @@ Down below you can find the code snippets that demonstrate the usage of many Sem
## Optimization - Examples of different cost and performance optimization techniques
-- [FrugalGPT](https://github.com/microsoft/semantic-kernel/blob/main/dotnet/samples/Concepts/Optimization/FrugalGPT.cs)
-- [PluginSelection](https://github.com/microsoft/semantic-kernel/blob/main/dotnet/samples/Concepts/Optimization/PluginSelection.cs)
+- [FrugalGPTWithFilters](https://github.com/microsoft/semantic-kernel/blob/main/dotnet/samples/Concepts/Optimization/FrugalGPTWithFilters.cs)
+- [PluginSelectionWithFilters](https://github.com/microsoft/semantic-kernel/blob/main/dotnet/samples/Concepts/Optimization/PluginSelectionWithFilters.cs)
## Planners - Examples on using `Planners`
diff --git a/dotnet/src/SemanticKernel.Abstractions/Filters/Function/FunctionInvocationContext.cs b/dotnet/src/SemanticKernel.Abstractions/Filters/Function/FunctionInvocationContext.cs
index 1ef77aac8e60..2c7e92166ed0 100644
--- a/dotnet/src/SemanticKernel.Abstractions/Filters/Function/FunctionInvocationContext.cs
+++ b/dotnet/src/SemanticKernel.Abstractions/Filters/Function/FunctionInvocationContext.cs
@@ -1,6 +1,5 @@
// Copyright (c) Microsoft. All rights reserved.
-using System.Diagnostics.CodeAnalysis;
using System.Threading;
namespace Microsoft.SemanticKernel;
@@ -8,7 +7,6 @@ namespace Microsoft.SemanticKernel;
///
/// Class with data related to function invocation.
///
-[Experimental("SKEXP0001")]
public class FunctionInvocationContext
{
///
diff --git a/dotnet/src/SemanticKernel.Abstractions/Filters/Function/IFunctionInvocationFilter.cs b/dotnet/src/SemanticKernel.Abstractions/Filters/Function/IFunctionInvocationFilter.cs
index 90077a019eea..384640b1052b 100644
--- a/dotnet/src/SemanticKernel.Abstractions/Filters/Function/IFunctionInvocationFilter.cs
+++ b/dotnet/src/SemanticKernel.Abstractions/Filters/Function/IFunctionInvocationFilter.cs
@@ -1,7 +1,6 @@
// Copyright (c) Microsoft. All rights reserved.
using System;
-using System.Diagnostics.CodeAnalysis;
using System.Threading.Tasks;
namespace Microsoft.SemanticKernel;
@@ -11,7 +10,6 @@ namespace Microsoft.SemanticKernel;
///
/// Interface for filtering actions during function invocation.
///
-[Experimental("SKEXP0001")]
public interface IFunctionInvocationFilter
{
///
diff --git a/dotnet/src/SemanticKernel.Abstractions/Filters/Prompt/IPromptRenderFilter.cs b/dotnet/src/SemanticKernel.Abstractions/Filters/Prompt/IPromptRenderFilter.cs
index 036bf26859aa..75cb097fb3e9 100644
--- a/dotnet/src/SemanticKernel.Abstractions/Filters/Prompt/IPromptRenderFilter.cs
+++ b/dotnet/src/SemanticKernel.Abstractions/Filters/Prompt/IPromptRenderFilter.cs
@@ -1,7 +1,6 @@
// Copyright (c) Microsoft. All rights reserved.
using System;
-using System.Diagnostics.CodeAnalysis;
using System.Threading.Tasks;
namespace Microsoft.SemanticKernel;
@@ -11,7 +10,6 @@ namespace Microsoft.SemanticKernel;
///
/// Interface for filtering actions during prompt rendering.
///
-[Experimental("SKEXP0001")]
public interface IPromptRenderFilter
{
///
diff --git a/dotnet/src/SemanticKernel.Abstractions/Filters/Prompt/PromptRenderContext.cs b/dotnet/src/SemanticKernel.Abstractions/Filters/Prompt/PromptRenderContext.cs
index 918586bfa6f1..ee64d0a01f09 100644
--- a/dotnet/src/SemanticKernel.Abstractions/Filters/Prompt/PromptRenderContext.cs
+++ b/dotnet/src/SemanticKernel.Abstractions/Filters/Prompt/PromptRenderContext.cs
@@ -1,14 +1,11 @@
// Copyright (c) Microsoft. All rights reserved.
-using System.Diagnostics.CodeAnalysis;
using System.Threading;
-
namespace Microsoft.SemanticKernel;
///
/// Class with data related to prompt rendering.
///
-[Experimental("SKEXP0001")]
public sealed class PromptRenderContext
{
private string? _renderedPrompt;
diff --git a/dotnet/src/SemanticKernel.Abstractions/Kernel.cs b/dotnet/src/SemanticKernel.Abstractions/Kernel.cs
index 283d3de05dd5..987766feda4f 100644
--- a/dotnet/src/SemanticKernel.Abstractions/Kernel.cs
+++ b/dotnet/src/SemanticKernel.Abstractions/Kernel.cs
@@ -132,7 +132,6 @@ public Kernel Clone() =>
///
/// Gets the collection of function filters available through the kernel.
///
- [Experimental("SKEXP0001")]
public IList FunctionInvocationFilters =>
this._functionInvocationFilters ??
Interlocked.CompareExchange(ref this._functionInvocationFilters, [], null) ??
@@ -141,7 +140,6 @@ public Kernel Clone() =>
///
/// Gets the collection of function filters available through the kernel.
///
- [Experimental("SKEXP0001")]
public IList PromptRenderFilters =>
this._promptRenderFilters ??
Interlocked.CompareExchange(ref this._promptRenderFilters, [], null) ??
@@ -309,7 +307,6 @@ private void AddFilters()
}
}
- [Experimental("SKEXP0001")]
internal async Task OnFunctionInvocationAsync(
KernelFunction function,
KernelArguments arguments,
@@ -351,7 +348,6 @@ await functionFilters[index].OnFunctionInvocationAsync(context,
}
}
- [Experimental("SKEXP0001")]
internal async Task OnPromptRenderAsync(
KernelFunction function,
KernelArguments arguments,