You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Microsoft.SemanticKernel 1.0.1不支持SKContext与SKFunction属性的迁移咨询

SemanticKernel 1.0.1 从 SKContext 迁移指南

核心替换要点

  1. 属性替换:原SKFunction系列属性全部替换为新的Kernel属性

    • [SKFunction] → [KernelFunction]
    • [SKName] → [KernelFunctionName]
    • [Description] 保留,但需确保引用Microsoft.SemanticKernel.Attributes命名空间
  2. 上下文与参数替换:

    • 移除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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 13:42:10