58 lines
2.3 KiB
C#
58 lines
2.3 KiB
C#
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<SemanticKernelOptions>(configuration.GetSection("SemanticKernel"));
|
|
// 从配置中获取值
|
|
var options = semanticKernelSection.Get<SemanticKernelOptions>();
|
|
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<KernelPlugin>(sp =>
|
|
KernelPluginFactory.CreateFromType<NewsPlugins>(serviceProvider: sp));
|
|
services.AddSingleton<KernelPlugin>(sp =>
|
|
KernelPluginFactory.CreateFromType<StockPlugins>(serviceProvider: sp));
|
|
|
|
// 注册NewsManager
|
|
services.AddTransient<NewsManager>();
|
|
}
|
|
}
|
|
} |