From f1daf02c5a25820da4c2c6f287cb4238fa4f0cc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 29 Apr 2025 20:53:59 +0300 Subject: [PATCH] Refactor the client building code --- .../Volo/Abp/AI/BuilderConfigurerList.cs | 2 +- .../Volo/Abp/AI/ChatClientConfiguration.cs | 14 +++++++++++++- .../Abp/AI/ChatClientConfigurationCollection.cs | 5 ++++- .../src/Volo.Abp.AI/Volo/Abp/AI/NamedAction.cs | 2 +- .../src/Volo.Abp.AI/Volo/Abp/AI/NamedActionList.cs | 14 ++++++++++++++ .../src/Volo.Abp.AI/Volo/Abp/AI/NamedObjectList.cs | 5 +---- 6 files changed, 34 insertions(+), 8 deletions(-) create mode 100644 framework/src/Volo.Abp.AI/Volo/Abp/AI/NamedActionList.cs diff --git a/framework/src/Volo.Abp.AI/Volo/Abp/AI/BuilderConfigurerList.cs b/framework/src/Volo.Abp.AI/Volo/Abp/AI/BuilderConfigurerList.cs index c5a279e658..0ee5e5164d 100644 --- a/framework/src/Volo.Abp.AI/Volo/Abp/AI/BuilderConfigurerList.cs +++ b/framework/src/Volo.Abp.AI/Volo/Abp/AI/BuilderConfigurerList.cs @@ -2,7 +2,7 @@ using Microsoft.Extensions.AI; namespace Volo.Abp.AI; -public class BuilderConfigurerList : NamedObjectList> +public class BuilderConfigurerList : NamedActionList { } \ No newline at end of file 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 9b7ec59462..d11ff98ad0 100644 --- a/framework/src/Volo.Abp.AI/Volo/Abp/AI/ChatClientConfiguration.cs +++ b/framework/src/Volo.Abp.AI/Volo/Abp/AI/ChatClientConfiguration.cs @@ -1,3 +1,4 @@ +using System; using Microsoft.Extensions.AI; namespace Volo.Abp.AI; @@ -8,10 +9,21 @@ public class ChatClientConfiguration public ChatClientBuilder? Builder { get; set; } - public BuilderConfigurerList BuilderConfigurers { get; } = new(); + public BuilderConfigurerList BuilderConfigurers { get; } public ChatClientConfiguration(string name) { Name = name; + BuilderConfigurers = new BuilderConfigurerList(); + } + + public void ConfigureBuilder(Action configureAction) + { + BuilderConfigurers.Add(configureAction); + } + + public void ConfigureBuilder(string name, Action configureAction) + { + BuilderConfigurers.Add(name, configureAction); } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.AI/Volo/Abp/AI/ChatClientConfigurationCollection.cs b/framework/src/Volo.Abp.AI/Volo/Abp/AI/ChatClientConfigurationCollection.cs index 8c782f7d3f..2e62cd5833 100644 --- a/framework/src/Volo.Abp.AI/Volo/Abp/AI/ChatClientConfigurationCollection.cs +++ b/framework/src/Volo.Abp.AI/Volo/Abp/AI/ChatClientConfigurationCollection.cs @@ -5,6 +5,9 @@ namespace Volo.Abp.AI; public class ChatClientConfigurationDictionary : Dictionary { + public void ConfigureDefault(Action configureAction) => + Configure("Default", configureAction); + public void Configure(string name, Action configureAction) { if (!this.TryGetValue(name, out var configuration)) @@ -15,4 +18,4 @@ public class ChatClientConfigurationDictionary : Dictionary : NamedObject //TODO: Move to Core package? +public class NamedAction : NamedObject { public Action Action { get; set; } diff --git a/framework/src/Volo.Abp.AI/Volo/Abp/AI/NamedActionList.cs b/framework/src/Volo.Abp.AI/Volo/Abp/AI/NamedActionList.cs new file mode 100644 index 0000000000..f5ebbc2bc1 --- /dev/null +++ b/framework/src/Volo.Abp.AI/Volo/Abp/AI/NamedActionList.cs @@ -0,0 +1,14 @@ +using System; + +namespace Volo.Abp.AI; + +public class NamedActionList : NamedObjectList> +{ + public void Add(Action action) + { + this.Add(Guid.NewGuid().ToString("N"), action); + } + + public void Add(string name, Action action) + => this.Add(new NamedAction(name, action)); +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.AI/Volo/Abp/AI/NamedObjectList.cs b/framework/src/Volo.Abp.AI/Volo/Abp/AI/NamedObjectList.cs index 48ea7e8db6..df91c0afc3 100644 --- a/framework/src/Volo.Abp.AI/Volo/Abp/AI/NamedObjectList.cs +++ b/framework/src/Volo.Abp.AI/Volo/Abp/AI/NamedObjectList.cs @@ -5,8 +5,5 @@ namespace Volo.Abp.AI; public class NamedObjectList : List where T : NamedObject { - public NamedObjectList() - { - - } + } \ No newline at end of file