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

Semantic Kernel 1.43.0:注册AzureOpenAI嵌入服务后无法获取指定接口

解决Semantic Kernel 1.43.0中ITextEmbeddingGenerationService未注册的问题

问题根源

你使用的AddAzureOpenAITextEmbeddingGeneration重载包含第一个参数"test-service",这会将嵌入服务以命名(键控)服务的形式注册,而非默认的无名称服务。此时直接调用_kernel.GetRequiredService<ITextEmbeddingGenerationService>()会尝试获取无名称的默认服务实例,自然会提示未注册。

解决方案

根据你的需求选择以下任意一种方式:

方案1:注册无名称的默认服务

如果不需要区分多个嵌入服务,使用不带名称参数的重载注册:

services.AddAzureOpenAITextEmbeddingGeneration("https://test.com", "test-key", "text-embedding-ada-002");

注册完成后,原有的var embeddingService = _kernel.GetRequiredService<ITextEmbeddingGenerationService>()即可正常获取服务。

方案2:获取命名的键控服务

如果确实需要保留命名服务,获取时必须指定对应的服务名称:

// 方式一:通过Kernel获取命名服务
var embeddingService = _kernel.GetService<ITextEmbeddingGenerationService>("test-service") 
                       ?? throw new InvalidOperationException("指定名称的嵌入服务未找到");

// 方式二:直接从服务提供者获取键控服务
var embeddingService = _kernel.Services.GetRequiredKeyedService<ITextEmbeddingGenerationService>("test-service");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 10:23:22