当前位置: 欣欣网 > 码农

如何用大模型实现ChatGPT插件?来看看Semantic Kernel 的 OpenAPI插件

2024-03-19码农

ChatGPT插件在去年发布时轰动一时,在年末就被更丰富的应用形态GPTs替代了。不过基于OpenAPI的插件仍然有很大作用。这对于把大模型与现有系统集成提供了分布式的支持。

Semantic Kernel早就意识到这一点,并事件了自己的OpenAPI插件。只要应用发布了swagger文档,或者导出了manifest文件,即可创建OpenAPI插件,让利用大模型的function call能力,调用系统的接口,实现与业务的集成,让原有业务变拥有AI能力。

本文就基于星火大模型3.5,讲解实现一个GPT插件的步骤。

首先,我们写一个平平无奇的接口,可以用WebApi,也可以Minimal API。注意要把接口方法和参数、返回值的描述都写清楚。因为他们会被作为大模型命中方法的依据。

然后就是swagger的配置了。配置中有一个地方容易出错,就是要设置自定义OperationId,否则SK读取时会找不到函数。这里要设置成API的唯一标识。

生成swagger文档后,我们把swagger.json配置到应用中。

然后在在构建Kernel时,调用CreatePluginFromOpenApiAsync方法将swagger.json转换成KernelFunction列表。传入插件名,还有swagger.json的所在地址(这里也可以是文件流的方式已支持离线文档)如果需要需要验证的话,还要配置AuthCallback委托,查询到token后注入到Request中。

还可以直接用一个文档创建一个插件,调用ImportPluginFromOpenApiAsync方法即可。

最后就是结果展示了。下图所示,大模型调用了我们图一的API,把返回值重新组织语言进行回复。

我下一个目标就是GPTs,让大模型回复展示插件的UI。大家敬请期待!