当我们使用Native Function的时候,除了处理一些基本的逻辑操作之外,更多的还是需要进行外部数据源和服务的对接,要么是获取相关的数据,要么是保存输出结果。这一过程在Semantic Kernel中可以被归类为Connector。
Connector更像是一种设计模式,并不像Function和Memory 一样有强制和明确的规定。所以从官方的接口定义上也没有一个 IConnector类似的东西。不过我们可以从官方示例中了解这一模式的使用方法。
以 [Web Skills 中的 WebSearchEngineSkill] 为例,该技能使用到了一个 IWebSearchEngineConnector
作为搜索引擎的查询服务。在构造的时候将Connector的实例注入到Skill中即可。这便是很常见的依赖注入。
另外一个示例是[DocumentSkill],使用 IDocumentConnector
实现对于文档的读写操作的,使用IFileSystemConnector
实现对于文件的访问。
不仅仅在 Native Function中的使用,OpenAI /Azure OpenAI 的接口对接,外部MemoryStore数据库的对接,都可以算在Connector的范围之内。
这样看来,Semantic Kernel使用Connector可以连接一切。
参考资料:
- Connectors in Semantic Kernel | Microsoft Learn
- semantic-kernel/WebSearchEngineSkill.cs at main · microsoft/semantic-kernel · GitHub
- semantic-kernel/DocumentSkill.cs at main · microsoft/semantic-kernel · GitHub