From a14be2f704b3e1a9fdd09c5ad55647871af4cdb5 Mon Sep 17 00:00:00 2001 From: enisn Date: Wed, 10 Sep 2025 11:01:39 +0300 Subject: [PATCH] Allow null configuration in AbpAIOptions --- .../src/Volo.Abp.AI/Volo/Abp/AI/AbpAIModule.cs | 17 ++++++++++++++--- .../src/Volo.Abp.AI/Volo/Abp/AI/AbpAIOptions.cs | 3 --- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/framework/src/Volo.Abp.AI/Volo/Abp/AI/AbpAIModule.cs b/framework/src/Volo.Abp.AI/Volo/Abp/AI/AbpAIModule.cs index ed41a394f7..bb979de2e6 100644 --- a/framework/src/Volo.Abp.AI/Volo/Abp/AI/AbpAIModule.cs +++ b/framework/src/Volo.Abp.AI/Volo/Abp/AI/AbpAIModule.cs @@ -1,9 +1,11 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Linq; using Microsoft.Extensions.AI; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.SemanticKernel; +using Microsoft.SemanticKernel.ChatCompletion; using Volo.Abp.Modularity; namespace Volo.Abp.AI; @@ -65,17 +67,26 @@ public class AbpAIModule : AbpModule builderConfigurer.Action(workspaceConfig.Kernel.Builder!); } - context.Services.AddKeyedSingleton( + context.Services.AddKeyedTransient( AbpAIOptions.GetKernelServiceKeyName(workspaceConfig.Name), (provider, _) => workspaceConfig.Kernel.Builder!.Build()); if (workspaceConfig.Name == DefaultWorkspaceName) { - context.Services.AddSingleton(sp => sp.GetRequiredKeyedService( + context.Services.AddTransient(sp => sp.GetRequiredKeyedService( AbpAIOptions.GetKernelServiceKeyName(workspaceConfig.Name) ) ); } + + if (workspaceConfig.ChatClient?.Builder is null) + { + context.Services.AddKeyedTransient( + AbpAIOptions.GetChatClientServiceKeyName(workspaceConfig.Name), + (sp, _) => sp.GetKeyedService(AbpAIOptions.GetKernelServiceKeyName(workspaceConfig.Name))? + .GetRequiredService() ?? throw new InvalidOperationException("Kernel or IChatClient not found with workspace name: " + workspaceConfig.Name) + ); + } } context.Services.TryAddTransient(typeof(IKernelAccessor<>), typeof(TypedKernelAccessor<>)); diff --git a/framework/src/Volo.Abp.AI/Volo/Abp/AI/AbpAIOptions.cs b/framework/src/Volo.Abp.AI/Volo/Abp/AI/AbpAIOptions.cs index 859b942553..b5639580d7 100644 --- a/framework/src/Volo.Abp.AI/Volo/Abp/AI/AbpAIOptions.cs +++ b/framework/src/Volo.Abp.AI/Volo/Abp/AI/AbpAIOptions.cs @@ -1,6 +1,3 @@ -using System; -using System.Collections.Generic; - namespace Volo.Abp.AI; public class AbpAIOptions