SemanticKernel之使用Plugins

💡 原文中文,约15900字,阅读约需38分钟。
📝

内容提要

这篇文章介绍了在SK中使用Plugins功能实现购买的案例。通过自然语言输入购买信息,代码将其转化为确定性的功能。文章还提供了具体的代码示例和核心方法的定义。

🔎

延伸解读

Plugins 如何将自然语言映射到确定性代码

文章通过购买水果的案例,展示了 Semantic Kernel 的 Plugins 机制:用 [KernelFunction] 和 [Description] 特性标注 C# 方法,SK 便能根据自然语言描述自动提取参数并调用对应函数。例如用户说“买两斤苹果”,SK 会解析出名称和数量,调用 BuyGoods 方法。这体现了将大语言模型的不确定性输出转化为确定性业务逻辑的核心思路。

代码结构中的关键设计点

示例中 StoreSystem 类集中管理商品列表和购买逻辑,Goods 类封装名称、价格、库存等属性。查询方法覆盖了按名称、价格区间、库存数量等多种条件,购买方法会检查库存并更新总价。这种设计让自然语言指令能灵活匹配到具体函数,同时保持业务逻辑的清晰和可测试性。

语音交互的集成方式与注意事项

文章还集成了语音输入和输出:使用 NAudio 录制音频,通过 Whisper 模型转文本,再经 TTS 模型合成语音回复。这增强了用户体验,但需注意音频文件路径、模型调用密钥等配置。代码中使用了实验性 API(如 SKEXP0001),实际使用时需关注版本兼容性和稳定性。

❓

Q&A

如何通过自然语言实现购买水果?

客户可以通过自然语言输入购买信息,代码将其转化为确定性的功能,使用Plugins功能实现购买。

什么是StoreSystem类,它的作用是什么?

StoreSystem类管理商品列表和购买逻辑,包括商品信息和库存管理。

如何查询库存数量大于等于某个值的水果?

可以使用GetGoodsGreaterEqualsQuantity方法查询库存数量大于等于指定值的水果。

Plugins在SK中的作用是什么?

Plugins将不确定性转化为确定性功能,使得自然语言输入可以被准确处理。

如何更新购买后的水果库存和总价?

在BuyGoods方法中,购买成功后会更新水果的库存数量和总价。

如何使用音频转文本功能增强用户体验?

通过音频转文本功能,用户可以通过语音输入购买信息,提升交互体验。

🏷️

标签

➡️

继续阅读