Semantic Kernel dotnet 1.0 beta5 发布了!
这个版本带来了一些重要的变化和改进:
破坏性变更:
将 IPromptTemplateEngine
替换为 IPromptTemplateFactory
这个变更是为了让 Semantic Kernel 更方便的支持自定义提示模板语言,允许变量插值和函数执行。Semantic Kernel 允许集成自定义提示模板格式,例如,可以使用 Handlebars 语法的提示模板。本次也更新了 .NET 示例中的提示渲染和模板引擎。主要变更包括:
- 替换
PromptTemplate
类为BasicPromptTemplate
类 - 更新
RunSemanticFunctionAsync
方法使用BasicPromptTemplate
类 - 删除
PromptTemplateEngineTests
, 因为它已经过时 - 引入
BasicPromptTemplateFactory
类来创建BasicPromptTemplate
类的实例
注意:BasicPromptTemplateFactory
将是缺省实现,并将在 KernelSemanticFunctionExtensions
中自动提供。开发人员可以提供自己的实现。
SemanticFunction
中的 _modelSettings
和 _promptTemplate
的可见性从 public
变为 private
这两个变量本应该是私有的,不小心被公开了,这次修复了这个问题。
删除 Oobabooga AI 连接器
Oobabooga AI 连接器现已移至 https://github.com/MyIntelligenceAgency/semantic-fleet 因此删除了 Semantic Kernel 库中的副本
增加了一个实验性的 Flow Orchestrator 扩展
Copilots 通常被视为提供各种功能的代理,如指挥、问答、协作、建议等。为了以智能和可靠的方式将这些功能产品化,Copilot 的编排层需要以下功能。
- 将目标/问题分解为多个子目标,这在 Semantic Kernel 世界中也称为 Plan。
- 利用可用的技能,以多步骤、多通道的方式执行计划,包括与用户互动以明确目标、输入技能/功能以及在需要时授权采取行动。
为了实现这一点,需要一个新的流程计划器/执行代理。自动将任务分解为多个步骤的“计划器”部分的优先级可能较低。取而代之的是,对于每个 Copilot,可以提供一些预定义的流程,“执行者”部分应该负责通过解析依赖关系、传递参数并尝试使用 ReAct 风格的可用技能实现每个步骤的目标来可靠地编排这些流程的执行,类似于 ReAct:在语言模型中协同推理和行动 中的描述。
这个规划器包括以下部分:
- 流程的数据模型、步骤
- 执行代理,用于解析依赖关系、确定执行顺序、维护上下文范围
- 每个步骤的 ReAct 执行引擎
- 状态跟踪器,因此 Copilot 是重新进入的,并在用户提供更多输入时恢复工作。
新的规划器还提供灵活性,支持多种技能,包括语义功能、原生功能和技能要求以更易于使用的方式进行聊天交互。
向 ChatStreaming 接口添加 FunctionResponse
IChatResult
具有从 GetFunctionResponse
结果中提取函数响应信息的扩展方法。之前的版本 IChatStreamingResult
继承了 IChatResult
,但 GetFunctionResponse
不适用于它,也不能作为函数响应的一部分发送函数信息(并且几乎总是)跨越多个流式处理结果.
例如:第一个结果可能只说它是一个函数调用,第二个结果可能只包含名称,参数可能被拆分到第三个、第四个 IChatResult
等等。
这次的变更,使得我们可以在流式响应中处理函数调用了。参考样例如下:
StringBuilder chatContent = new();
// Non function result streaming will happen here.
await foreach (var message in chatResult.GetStreamingChatMessageAsync())
{
if (message.Content is not null)
{
Console.Write(message.Content);
chatContent.Append(message.Content);
}
}
chatHistory.AddAssistantMessage(chatContent.ToString());
// After all stream was loaded check if a `FunctionResponse` was present.
var functionResponse = await chatResult.GetStreamingFunctionResponseAsync();
其他变更
- 修复了 InternalsVisibleTo 的使用
- 将 Grpc.Net.Client 从 2.57.0 升级到 2.58.0
- 将 Roslynator 包版本锁定为 4.3.0, 避免 Dependabot 再次自动升级诱发问题