想利用大模型驱动真实业务系统?基于Semantic Kernel 接入讯飞星火 Function Call 调用本地方法!...

💡 原文中文,约1500字,阅读约需4分钟。
📝

内容提要

本文介绍了利用Semantic Kernel和星火大模型的function call能力调用C#的本地方法的实现方法。通过在消息中带上可调用的函数描述,大模型可以根据上下文分析是否匹配某个函数,并返回函数名和参数值。作者在本地写了一个简单的方法,并通过自定义特性AntSkFunction精确找到该方法。然后通过扫描程序集和读取注释获取方法和参数的描述。在构建Kernel实例时,可以使用CreateFunctionFromMethod方法传入MethodInfo或委托来构建KernelFunction。在构建星火大模型客户端时,可以通过kernel.Plugins.GetFunctionMetadata()方法获取所有配置的sk function,并构建星火sdk的函数参数。最后,通过SkFunction.InvokeAsync方法调用sk的函数,并将结果反馈到UI。作者还提到了递归的处理方式,以及下一步的计划。

🎯

关键要点

  • 本文介绍了利用Semantic Kernel和星火大模型的function call能力调用C#的本地方法。
  • 大模型的function call能力是将大模型应用到企业业务场景中的关键。
  • function call的原理是发送消息时带上可调用的函数描述,大模型根据上下文分析匹配函数。
  • 作者在本地实现了一个简单的方法,传入订单ID返回订单信息,并加上注释和自定义特性AntSkFunction。
  • 通过扫描程序集和读取xml注释获取方法和参数的描述。
  • 在构建kernel实例时,可以使用CreateFunctionFromMethod方法传入MethodInfo或委托。
  • 构建星火大模型客户端时,通过kernel.Plugins.GetFunctionMetadata()获取所有配置的sk function。
  • 在模型响应中获取识别的函数,解析参数并调用sk的函数,使用SkFunction.InvokeAsync方法。
  • 处理过程中涉及递归,以便将函数调用结果反馈给大模型。
  • 最终实现了用大模型调C#本地方法的基本功能,计划兼容其他sdk并在UI中呈现交互。
➡️

继续阅读