Microsoft.SemanticKernel 1.0.1不支持SKContext与SKFunction属性的迁移咨询
SemanticKernel 1.0.1 从 SKContext 迁移指南
核心替换要点
属性替换:原
SKFunction系列属性全部替换为新的Kernel属性[SKFunction]→[KernelFunction][SKName]→[KernelFunctionName][Description]保留,但需确保引用Microsoft.SemanticKernel.Attributes命名空间
上下文与参数替换:
- 移除
SKContext参数,改用KernelArguments作为输入参数,用于读写变量 - 不再返回
SKContext,直接返回处理后的结果类型(如string、自定义对象),或返回Task(无返回值)
- 移除
修改后代码示例
原代码:
[SKFunction, SKName(nameof(Query)), Description("Request Process")] public async Task<SKContext> ProcessRequest(SKContext context) { //Migration Code here }
迁移后的代码:
using Microsoft.SemanticKernel; using Microsoft.SemanticKernel.Attributes; [KernelFunction, KernelFunctionName(nameof(Query)), Description("Request Process")] public async Task<string> ProcessRequest(KernelArguments arguments) { // 读取输入变量,替代原context.Variables["input"] var input = arguments["input"].ToString(); // 执行你的业务处理逻辑 var processedResult = await YourProcessingMethod(input); // 若需设置输出变量,直接修改KernelArguments arguments["processedOutput"] = processedResult; // 返回处理结果,也可根据需求返回Task(无返回值)或其他类型 return processedResult; }
额外注意事项
- 变量操作:
KernelArguments是键值对集合,用法和原SKContext.Variables一致,支持添加、读取、修改变量 - 服务获取:原通过
SKContext.Services获取依赖的场景,改为类构造函数注入依赖,或在方法中添加Kernel参数来访问服务 - 命名空间检查:确保项目中引用了
Microsoft.SemanticKernel和Microsoft.SemanticKernel.Attributes两个命名空间
内容的提问来源于stack exchange,提问作者Mohan
相关产品推荐
相关产品推荐

