From 79260da70ffc5abf6bff3b87d1f0f247d67b2205 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 30 Apr 2025 11:23:31 +0300 Subject: [PATCH] Refactored AI services --- .../src/Volo.Abp.AI/Volo/Abp/AI/AbpAIModule.cs | 14 +++----------- .../{AbpAIChatClientOptions.cs => AbpAIOptions.cs} | 2 +- .../Volo/Abp/AI/ChatClientConfiguration.cs | 2 ++ .../src/Volo.Abp.AI/Volo/Abp/AI/TypedChatClient.cs | 2 +- .../Volo/Abp/Collections}/NamedActionList.cs | 0 .../Volo/Abp/Collections}/NamedObjectList.cs | 0 .../AI => Volo.Abp.Core/Volo/Abp}/NamedAction.cs | 2 +- .../AI => Volo.Abp.Core/Volo/Abp}/NamedObject.cs | 4 ++-- 8 files changed, 10 insertions(+), 16 deletions(-) rename framework/src/Volo.Abp.AI/Volo/Abp/AI/{AbpAIChatClientOptions.cs => AbpAIOptions.cs} (89%) rename framework/src/{Volo.Abp.AI/Volo/Abp/AI => Volo.Abp.Core/Volo/Abp/Collections}/NamedActionList.cs (100%) rename framework/src/{Volo.Abp.AI/Volo/Abp/AI => Volo.Abp.Core/Volo/Abp/Collections}/NamedObjectList.cs (100%) rename framework/src/{Volo.Abp.AI/Volo/Abp/AI => Volo.Abp.Core/Volo/Abp}/NamedAction.cs (91%) rename framework/src/{Volo.Abp.AI/Volo/Abp/AI => Volo.Abp.Core/Volo/Abp}/NamedObject.cs (64%) 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 6ac2dd8453..b3730b62f4 100644 --- a/framework/src/Volo.Abp.AI/Volo/Abp/AI/AbpAIModule.cs +++ b/framework/src/Volo.Abp.AI/Volo/Abp/AI/AbpAIModule.cs @@ -4,25 +4,17 @@ using Volo.Abp.Modularity; namespace Volo.Abp.AI; -/* TODO: - * - A factory service (IChatClientFactory) to create a IChatClient by given name - * (currently, we are using a keyed service collection to resolve the IChatClient) - * - We can also inject typed clients, like ICommentSummaryChatClient or IChatClient (more practical to resolve) - * In this way, we can write specific extension methods to some clients, for prompts. - * - - */ - public class AbpAIModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) { - var options = context.Services.ExecutePreConfiguredActions(); + var options = context.Services.ExecutePreConfiguredActions(); foreach (var chatClientConfig in options.ChatClients.Values) { if (chatClientConfig.Builder == null) { - throw new AbpException("ChatClientBuilder is not properly configured. Set the Builder."); + throw new AbpException("ChatClientBuilder is not properly configured. Set the Builder property."); } foreach (var builderConfigurer in chatClientConfig.BuilderConfigurers) @@ -31,7 +23,7 @@ public class AbpAIModule : AbpModule } context.Services.AddKeyedChatClient( - AbpAIChatClientOptions.GetChatClientServiceKeyName(chatClientConfig.Name), + AbpAIOptions.GetChatClientServiceKeyName(chatClientConfig.Name), provider => chatClientConfig.Builder.Build(provider) ); } diff --git a/framework/src/Volo.Abp.AI/Volo/Abp/AI/AbpAIChatClientOptions.cs b/framework/src/Volo.Abp.AI/Volo/Abp/AI/AbpAIOptions.cs similarity index 89% rename from framework/src/Volo.Abp.AI/Volo/Abp/AI/AbpAIChatClientOptions.cs rename to framework/src/Volo.Abp.AI/Volo/Abp/AI/AbpAIOptions.cs index 9369da6a0f..c38e9db82e 100644 --- a/framework/src/Volo.Abp.AI/Volo/Abp/AI/AbpAIChatClientOptions.cs +++ b/framework/src/Volo.Abp.AI/Volo/Abp/AI/AbpAIOptions.cs @@ -1,6 +1,6 @@ namespace Volo.Abp.AI; -public class AbpAIChatClientOptions +public class AbpAIOptions { public const string ChatClientServiceKeyNamePrefix = "Abp.AI.ChatClient_"; diff --git a/framework/src/Volo.Abp.AI/Volo/Abp/AI/ChatClientConfiguration.cs b/framework/src/Volo.Abp.AI/Volo/Abp/AI/ChatClientConfiguration.cs index d11ff98ad0..1f486a9ff0 100644 --- a/framework/src/Volo.Abp.AI/Volo/Abp/AI/ChatClientConfiguration.cs +++ b/framework/src/Volo.Abp.AI/Volo/Abp/AI/ChatClientConfiguration.cs @@ -10,6 +10,8 @@ public class ChatClientConfiguration public ChatClientBuilder? Builder { get; set; } public BuilderConfigurerList BuilderConfigurers { get; } + + // TODO: Base chat client (for inheriting a chat client configuration from some other one) public ChatClientConfiguration(string name) { diff --git a/framework/src/Volo.Abp.AI/Volo/Abp/AI/TypedChatClient.cs b/framework/src/Volo.Abp.AI/Volo/Abp/AI/TypedChatClient.cs index b77e803cb9..e8d68a516c 100644 --- a/framework/src/Volo.Abp.AI/Volo/Abp/AI/TypedChatClient.cs +++ b/framework/src/Volo.Abp.AI/Volo/Abp/AI/TypedChatClient.cs @@ -10,7 +10,7 @@ public class TypedChatClient : DelegatingChatClient, IChatClient public TypedChatClient(IServiceProvider serviceProvider) : base( serviceProvider.GetRequiredKeyedService( - AbpAIChatClientOptions.GetChatClientServiceKeyName( + AbpAIOptions.GetChatClientServiceKeyName( ChatClientNameAttribute.GetChatClientName())) ) { diff --git a/framework/src/Volo.Abp.AI/Volo/Abp/AI/NamedActionList.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Collections/NamedActionList.cs similarity index 100% rename from framework/src/Volo.Abp.AI/Volo/Abp/AI/NamedActionList.cs rename to framework/src/Volo.Abp.Core/Volo/Abp/Collections/NamedActionList.cs diff --git a/framework/src/Volo.Abp.AI/Volo/Abp/AI/NamedObjectList.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Collections/NamedObjectList.cs similarity index 100% rename from framework/src/Volo.Abp.AI/Volo/Abp/AI/NamedObjectList.cs rename to framework/src/Volo.Abp.Core/Volo/Abp/Collections/NamedObjectList.cs diff --git a/framework/src/Volo.Abp.AI/Volo/Abp/AI/NamedAction.cs b/framework/src/Volo.Abp.Core/Volo/Abp/NamedAction.cs similarity index 91% rename from framework/src/Volo.Abp.AI/Volo/Abp/AI/NamedAction.cs rename to framework/src/Volo.Abp.Core/Volo/Abp/NamedAction.cs index 9c820106e7..f7bf5a7177 100644 --- a/framework/src/Volo.Abp.AI/Volo/Abp/AI/NamedAction.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/NamedAction.cs @@ -1,6 +1,6 @@ using System; -namespace Volo.Abp.AI; +namespace Volo.Abp; public class NamedAction : NamedObject { diff --git a/framework/src/Volo.Abp.AI/Volo/Abp/AI/NamedObject.cs b/framework/src/Volo.Abp.Core/Volo/Abp/NamedObject.cs similarity index 64% rename from framework/src/Volo.Abp.AI/Volo/Abp/AI/NamedObject.cs rename to framework/src/Volo.Abp.Core/Volo/Abp/NamedObject.cs index 1d16e11f11..579a97cce1 100644 --- a/framework/src/Volo.Abp.AI/Volo/Abp/AI/NamedObject.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/NamedObject.cs @@ -1,6 +1,6 @@ -namespace Volo.Abp.AI; +namespace Volo.Abp; -public class NamedObject //TODO: Move to Core package? +public class NamedObject { public string Name { get; }