You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用外部插件时,ImportPluginFromOpenApiAsync如何指定OpenAPI版本?

解决OpenAPI规范版本为空的错误

问题原因

你遇到的错误是因为Semantic Kernel从指定的endpoint拉取的OpenAPI规范文档中没有包含openapi版本字段,或者读取时无法识别版本。你在appsettings.json的aiPlugin配置中添加的openapi: 3.0.0无效——该配置是插件自身的元数据,不影响第三方OpenAPI接口的导入解析。

解决方案

方案1:修正目标API的OpenAPI规范文档

确保endpoint返回的OpenAPI文档开头包含明确的版本声明,比如OpenAPI 3.0的标准格式:

openapi: 3.0.0
info:
  title: 目标API名称
  version: 1.0.0
# 其他API定义内容

这样Semantic Kernel就能自动识别版本并正常解析。

方案2:手动强制指定OpenAPI版本

如果无法修改目标API的规范文档,可以在导入插件时通过OpenApiImportSettings手动指定版本,修改你的代码如下:

// 导入必要的命名空间
using Microsoft.SemanticKernel.Plugins.OpenApi;

// 创建导入设置并指定版本
var importSettings = new OpenApiImportSettings
{
    SpecVersion = OpenApiSpecVersion.OpenApi3_0
};

// 导入插件时传入设置
var plugin = await kernel.ImportPluginFromOpenApiAsync(
    name,
    endpoint,
    new OpenApiFunctionExecutionParameters(httpClient),
    importSettings);

var arguments = new KernelArguments
{
    ["param1"] = "..."
};

await plugin[functionName].InvokeAsync(kernel, arguments);

该方式会强制使用指定的OpenAPI版本解析规范文档,忽略文档中缺失的版本声明。

内容的提问来源于stack exchange,提问作者h8tow8

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 21:29:53