Semantic Kernel .NET 实验性功能(SKEXP)完整指南:诊断代码、启用方式与特性追踪 📅 发布时间:2026/9/12 4:35:39 👁 浏览次数: Semantic Kernel .NET 实验性功能SKEXP完整指南诊断代码、启用方式与特性追踪【免费下载链接】semantic-kernelIntegrate cutting-edge LLM technology quickly and easily into your apps项目地址: https://gitcode.com/GitHub_Trending/se/semantic-kernelSemantic Kernel 是微软开源的 AI 编排 SDK其 .NET 版本在快速迭代过程中通过SKEXP系列诊断代码标记仍处于实验阶段的 API防止开发者误将不稳定接口用于生产。本文以仓库内 dotnet/docs/EXPERIMENTS.md 为核心脉络完整梳理从SKEXP0001到MEVD9001的全部实验性功能分类给出在 .NET 工程中精准忽略警告/错误的配置写法并结合dotnet/src下的真实源码说明诊断代码如何落地帮助读者在迁移新功能时准确判断 API 稳定性边界、安全开启实验特性。实验性Experimental机制概述Semantic Kernel .NET SDK 中凡是尚未定稿、后续可能破坏性变更的 API都会被标注为Experimental。官方在 dotnet/docs/EXPERIMENTS.md 中明确了这一机制的三条关键事实API 尚未稳定这些功能的 API 在稳定之前随时可能变化不应默认用于生产环境稳定后移除标注一旦对应功能 API 定稿Experimental特性会被移除届时开发者无需再忽略警告用诊断代码控制每个实验性功能都分配了唯一的诊断 ID如SKEXP0001、SKEXP0010开发者可以用这些 ID 精确地忽略警告或错误。该机制的实现依赖 .NET 内置的System.Diagnostics.CodeAnalysis.ExperimentalAttribute。例如在 dotnet/src/Agents/Core/AgentGroupChat.cs 中多智能体群聊的核心类AgentGroupChat被标注为[Experimental(SKEXP0110)]而 dotnet/src/Experimental/Process.Core/AssemblyInfo.cs 则是通过程序集级特性[assembly: Experimental(SKEXP0080)]将整个 Process 程序集标记为实验性。两种标注方式类型级与程序集级共同构成了 SK 实验特性的双层落地机制。忽略实验性警告的正确姿势NoWarn 配置使用实验性 API 时编译器会默认生成 CS 级别的警告在较新的 .NET 版本中ExperimentalAttribute产生的警告可被配置为错误。文档给出的标准做法是在.csproj项目文件中把需要的诊断 ID 追加到NoWarn属性示例来自文档原文PropertyGroup NoWarn$(NoWarn);SKEXP0001,SKEXP0010/NoWarn /PropertyGroup写法要点保留既有值$(NoWarn)用于继承可能来自Directory.Build.props或其他导入文件中的既有忽略项切勿覆盖精确到功能SKEXP0001覆盖 Embedding/Image/Audio 等服务Semantic Kernel 核心功能SKEXP0010覆盖 OpenAI 与 Azure OpenAI 服务只需按实际用到的功能选择 ID多个 ID 逗号分隔多个诊断 ID 可在同一条NoWarn中并列书写如示例中的SKEXP0001,SKEXP0010。该写法的工程实践遍布整个仓库。例如 dotnet/samples/Demos/BookingRestaurant/BookingRestaurant.csproj 中直接书写了NoWarn$(NoWarn);CA2007;VSTHRD111;SKEXP0001/NoWarndotnet/src/Connectors/Connectors.HuggingFace.UnitTests/Connectors.HuggingFace.UnitTests.csproj 更是同时忽略了SKEXP0001,SKEXP0010,SKEXP0070,SKEXP0050四类诊断展示了典型的多功能项目配置。另外dotnet/notebooks/05-using-function-calling.ipynb 等 Notebook 样例同样会用到上述 ID说明该配置在交互式示例中同样适用。提示将某个 SKEXP ID 加入NoWarn仅表示你接受了该 API 当前可能变更的代价。若编译器将实验性警告提升为错误例如在启用TreatWarningsAsErrors或针对该 ID 设置了WarningsAsErrors的项目中NoWarn同样可以压制但更稳妥的做法是先用小范围样例验证 API 行为再放开到业务代码。实验性功能诊断代码全表SKEXP / MEVD文档以两张表格完整给出了全部诊断代码。第一张表是诊断代码与功能分类的映射这是选择NoWarn时最核心的查表依据SKEXP实验性功能分类SKEXP0001Semantic Kernel 核心功能SKEXP0010OpenAI 与 Azure OpenAI 服务SKEXP0020记忆连接器Memory connectorsSKEXP0040函数类型Function typesSKEXP0050开箱即用插件Out-of-the-box pluginsSKEXP0060规划器PlannersSKEXP0070AI 连接器AI connectorsSKEXP0080进程ProcessesSKEXP0100高级 Semantic Kernel 功能SKEXP0110Semantic Kernel 智能体AgentsSKEXP0120原生 AOTNative-AOTSKEXP0130AI 上下文提供程序AI Context ProvidersMEVD9000Microsoft.Extensions.VectorData 实验性用户面向 APIMEVD9001Microsoft.Extensions.VectorData 实验性连接器面向 API从源码标注可以验证上述分类的实际落地方式SKEXP0010在 dotnet/src/Connectors/Connectors.AzureOpenAI/Extensions/AzureOpenAIKernelBuilderExtensions.cs 中Azure OpenAI 的各类扩展方法批量标注了[Experimental(SKEXP0010)]这些方法涵盖带 Your Data数据检索的模型接入、多模态与图像服务注册等能力SKEXP0080Process 框架作为独立实验模块位于 dotnet/src/Experimental/Process.Core其 AssemblyInfo.cs 以程序集级特性一次性标注整个程序集SKEXP0110Agent 框架的大量核心类型都带该标注除前文提到的AgentGroupChat外dotnet/src/Agents/Abstractions/Agent.cs 的基类定义与 dotnet/src/Agents/Abstractions/AgentChat.cs 等抽象层类型同样使用该 IDSKEXP0120对应 Native-AOT 场景SemanticKernel.AotTests项目dotnet/src/SemanticKernel.AotTests即用于验证 SDK 在原生 AOT 编译下的行为。实验性功能追踪清单Features Tracking文档第二张表按诊断 ID 列出当前处于实验状态的具体功能这是评估我要用的功能是否稳定的直接清单SKEXP功能SKEXP0001Embedding 服务SKEXP0001Image 服务SKEXP0001Memory 连接器SKEXP0001Kernel 过滤器Kernel filtersSKEXP0001Audio 服务SKEXP0010Azure OpenAI with your data 服务SKEXP0010OpenAI embedding 服务SKEXP0010OpenAI image 服务SKEXP0010OpenAI 参数SKEXP0010OpenAI 聊天历史扩展SKEXP0010OpenAI 文件服务SKEXP0020Azure AI Search、Chroma、DuckDB、Kusto、Milvus、Qdrant、Redis、Sqlite、Weaviate、MongoDB、Pinecone、Postgres 记忆连接器SKEXP0040GRPC 函数、Markdown 函数、OpenAPI 函数、OpenAPI 函数扩展API Manifest、OpenAPI 函数扩展Copilot Agent Plugin、Prompty 格式支持SKEXP0050Core 插件、Document 插件、Memory 插件、Microsoft 365 插件、Web 插件、Text chunker 插件SKEXP0060Handlebars 规划器、OpenAI Stepwise 规划器SKEXP0080Process 框架SKEXP0081Process 框架 - Foundry ProcessSKEXP0101实验AssistantsSKEXP0101实验Flow OrchestrationSKEXP0110Agent 框架SKEXP0120Native-AOT阅读这张清单时应注意以下几点SKEXP0001 与 SKEXP0020 存在交叉Memory 连接器既出现在SKEXP0001核心功能分类也单独占用SKEXP0020分类。实际使用时若项目引用 Qdrant、Redis 等连接器包通常需要同时忽略SKEXP0001与SKEXP0020才能无警告编译子代码用于细分SKEXP0081是SKEXP0080Process 框架下的细分诊断说明一个父分类下可以有多个更精确的子 ID开发者可以只对使用的子集放行SKEXP0101 出现两次Assistants 与 Flow Orchestration 共用一个 ID说明同一诊断代码可覆盖多个独立功能模块功能会随版本变化该清单是当前仓库快照后续版本中已稳定的功能会移除对应标注清单也会相应收敛使用时以你所引用的 SDK 版本为准。仓库中的样例项目也印证了清单的实用性。例如 dotnet/samples/Concepts/Concepts.csproj 汇集了大量概念示例其中 OpenAI_ChatCompletionExtraBody.cs 属于SKEXP0010OpenAI 参数范畴dotnet/samples/Demos/StepwisePlannerMigration 与 dotnet/samples/Demos/VectorStoreRAG 则分别对应规划器与记忆连接器实验功能的迁移与落地。需要动手验证时这些项目的 csproj 是查看每个功能该忽略哪些 SKEXP ID的最佳参考。结合源码理解诊断代码如何影响编译与运行ExperimentalAttribute的语义由 .NET 编译器在编译期强制执行一旦类型、成员或程序集被标注调用方代码会收到实验性警告默认情况除非在调用项目中通过NoWarn忽略对应诊断 ID。Semantic Kernel 仓库对它的使用呈现两个明显模式模式一类型级标注精准控制。核心抽象层普遍采用类型级标注例如AgentGroupChat、AgentChat、Agent等智能体类型均逐个标注[Experimental(SKEXP0110)]。这样同一个程序集中稳定的类型如基础Kernel与实验性类型如群聊 Agent可以共存互不污染。模式二程序集级标注整包放行。Process 框架与部分 Agent 连接器如 Azure AI、Bedrock、Copilot见 dotnet/src/Agents/AzureAI/Properties/AssemblyInfo.cs使用[assembly: Experimental(SKEXPxxxx)]意味着只要引用该程序集就会触发对应警告必须在消费项目中显式忽略。两种模式的共同点是警告是默认值放行是显式操作。这保证了开发者使用实验功能时始终是有意识的选择——每次在 csproj 中添加 SKEXP ID都是一次我已知晓该 API 可能变化的签名确认。实践建议与版本注意按需放行最小化忽略列表只忽略你实际使用到的功能 ID避免整段复制他人项目的大段NoWarn。多引用一个 ID 意味着多接受一份 API 变更风险关注官方收敛进度文档明确说明功能稳定后实验标注会被移除。升级 Semantic Kernel NuGet 包后如果发现某段NoWarn中出现了无用的 SKEXP ID不再产生任何警告说明对应功能可能已经毕业为稳定 API可以顺手清理区分警告与错误在开启TreatWarningsAsErrors的严格工程中实验性警告可能升级为错误导致编译失败此时NoWarn依然是官方推荐的放行方式但请务必在代码评审中保留该配置项便于追踪实验功能的使用范围生产使用需谨慎实验性 API 不保证向后兼容升级 SDK 时可能发生破坏性变更。对生产项目优先使用稳定 API确需实验功能时应将其隔离在独立模块/程序集中并配套充分的单元测试参考 dotnet/src/SemanticKernel.UnitTests 与 dotnet/src/Agents/UnitTests 的测试组织方式以当前仓库为准本文的代码表与清单基于本仓库快照若你使用的 SDK 版本不同请以所引版本包内对应EXPERIMENTS.md或 NuGet 包文档为准。通过本文的SKEXP诊断代码全表、NoWarn配置详解与源码标注模式分析你可以在任何 Semantic Kernel .NET 项目中快速定位实验性 API、精确放行所需功能并在功能毕业为稳定 API 时及时清理配置让实验特性用得明白、管得清爽。【免费下载链接】semantic-kernelIntegrate cutting-edge LLM technology quickly and easily into your apps项目地址: https://gitcode.com/GitHub_Trending/se/semantic-kernel创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考