using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.SemanticKernel; using Volo.Abp.Caching; using Volo.Abp.Domain; using Yi.Framework.Mapster; using Yi.Framework.Stock.Domain.Managers; using Yi.Framework.Stock.Domain.Managers.SemanticKernel; using Yi.Framework.Stock.Domain.Managers.SemanticKernel.Plugins; using Yi.Framework.Stock.Domain.Shared; namespace Yi.Framework.Stock.Domain { [DependsOn( typeof(YiFrameworkStockDomainSharedModule), typeof(YiFrameworkMapsterModule), typeof(AbpDddDomainModule), typeof(AbpCachingModule) )] public class YiFrameworkStockDomainModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) { var configuration = context.Services.GetConfiguration(); var services = context.Services; // 配置绑定 var semanticKernelSection = configuration.GetSection("SemanticKernel"); services.Configure(configuration.GetSection("SemanticKernel")); // 从配置中获取值 var options = semanticKernelSection.Get(); foreach (var optionsModelId in options.ModelIds) { services.AddKernel() // .AddAzureOpenAIChatCompletion( // deploymentName: optionsModelId, // endpoint: options.Endpoint, // apiKey: options.ApiKey, // serviceId: optionsModelId, // modelId: optionsModelId); .AddOpenAIChatCompletion( serviceId: optionsModelId, modelId: optionsModelId, endpoint: new Uri(options.Endpoint), apiKey: options.ApiKey); } // 添加插件 services.AddSingleton(sp => KernelPluginFactory.CreateFromType(serviceProvider: sp)); services.AddSingleton(sp => KernelPluginFactory.CreateFromType(serviceProvider: sp)); // 注册NewsManager services.AddTransient(); } } }