From 73ead13d7f56478e3d0c3b6113e2b0d863400b2c Mon Sep 17 00:00:00 2001 From: hchen Date: Tue, 19 Sep 2023 11:29:25 -0500 Subject: [PATCH] Rename PackageVersion to BotSharpVersion; Add SetModelName to IChatCompletion. --- Directory.Build.props | 2 +- .../BotSharp.Abstraction.csproj | 2 +- .../MLTasks/IChatCompletion.cs | 14 +++++++++- .../BotSharp.Core/BotSharp.Core.csproj | 2 +- .../Infrastructures/CompletionProvider.cs | 23 +++++++++++++--- .../BotSharp.OpenAPI/BotSharp.OpenAPI.csproj | 2 +- .../AzureOpenAiPlugin.cs | 1 - .../BotSharp.Plugin.AzureOpenAI.csproj | 2 +- .../Providers/ChatCompletionProvider.cs | 26 ++++++++++++++----- .../Providers/GPT4CompletionProvider.cs | 24 ----------------- .../BotSharp.Plugin.ChatbotUI.csproj | 2 +- .../BotSharp.Plugin.HuggingFace.csproj | 2 +- .../Providers/ChatCompletionProvider.cs | 6 +++++ .../BotSharp.Plugin.KnowledgeBase.csproj | 2 +- .../BotSharp.Plugin.LLamaSharp.csproj | 2 +- .../Providers/ChatCompletionProvider.cs | 6 +++++ .../BotSharp.Plugin.MetaAI.csproj | 2 +- .../BotSharp.Plugin.MetaMessenger.csproj | 2 +- .../BotSharp.Plugin.MongoStorage.csproj | 2 +- .../BotSharp.Plugin.Qdrant.csproj | 2 +- .../BotSharp.Plugin.RoutingSpeeder.csproj | 2 +- .../BotSharp.Plugin.WeChat.csproj | 3 +-- 22 files changed, 79 insertions(+), 52 deletions(-) delete mode 100644 src/Plugins/BotSharp.Plugin.AzureOpenAI/Providers/GPT4CompletionProvider.cs diff --git a/Directory.Build.props b/Directory.Build.props index 249103d7..6940e0bc 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -2,7 +2,7 @@ 10.0 ..\..\..\packages - 0.12.3 + 0.13.0 true \ No newline at end of file diff --git a/src/Infrastructure/BotSharp.Abstraction/BotSharp.Abstraction.csproj b/src/Infrastructure/BotSharp.Abstraction/BotSharp.Abstraction.csproj index dcb9534f..ba1ea69d 100644 --- a/src/Infrastructure/BotSharp.Abstraction/BotSharp.Abstraction.csproj +++ b/src/Infrastructure/BotSharp.Abstraction/BotSharp.Abstraction.csproj @@ -4,7 +4,7 @@ netstandard2.1 enable $(LangVersion) - $(PackageVersion) + $(BotSharpVersion) Icon.png $(GeneratePackageOnBuild) diff --git a/src/Infrastructure/BotSharp.Abstraction/MLTasks/IChatCompletion.cs b/src/Infrastructure/BotSharp.Abstraction/MLTasks/IChatCompletion.cs index 15ad54aa..3854e1b0 100644 --- a/src/Infrastructure/BotSharp.Abstraction/MLTasks/IChatCompletion.cs +++ b/src/Infrastructure/BotSharp.Abstraction/MLTasks/IChatCompletion.cs @@ -2,11 +2,23 @@ namespace BotSharp.Abstraction.MLTasks; public interface IChatCompletion { + /// + /// The LLM provider like Microsoft Azure, OpenAI, ClaudAI + /// string Provider { get; } + + /// + /// Set model name, one provider can consume different model or version(s) + /// + /// + void SetModelName(string model); + Task GetChatCompletionsAsync(Agent agent, List conversations, Func onMessageReceived, Func onFunctionExecuting); - Task GetChatCompletionsStreamingAsync(Agent agent, List conversations, Func onMessageReceived); + Task GetChatCompletionsStreamingAsync(Agent agent, + List conversations, + Func onMessageReceived); } diff --git a/src/Infrastructure/BotSharp.Core/BotSharp.Core.csproj b/src/Infrastructure/BotSharp.Core/BotSharp.Core.csproj index cc807aee..71d4415d 100644 --- a/src/Infrastructure/BotSharp.Core/BotSharp.Core.csproj +++ b/src/Infrastructure/BotSharp.Core/BotSharp.Core.csproj @@ -3,7 +3,7 @@ netstandard2.1 $(LangVersion) - $(PackageVersion) + $(BotSharpVersion) $(GeneratePackageOnBuild) diff --git a/src/Infrastructure/BotSharp.Core/Infrastructures/CompletionProvider.cs b/src/Infrastructure/BotSharp.Core/Infrastructures/CompletionProvider.cs index 9534581e..d7b716f9 100644 --- a/src/Infrastructure/BotSharp.Core/Infrastructures/CompletionProvider.cs +++ b/src/Infrastructure/BotSharp.Core/Infrastructures/CompletionProvider.cs @@ -4,16 +4,31 @@ namespace BotSharp.Core.Infrastructures; public class CompletionProvider { - public static IChatCompletion GetChatCompletion(IServiceProvider services, string? provider = null) + public static IChatCompletion GetChatCompletion(IServiceProvider services, string? provider = null, string? model = null) { var completions = services.GetServices(); var state = services.GetRequiredService(); + if (provider == null) { - provider = state.GetState("provider", "azure-gpt-3.5"); + provider = state.GetState("provider", "azure-openai"); } - - return completions.FirstOrDefault(x => x.Provider == provider); + + if (model == null) + { + model = state.GetState("model", "gpt-3.5-turbo"); + } + + var completer = completions.FirstOrDefault(x => x.Provider == provider); + if (completer == null) + { + var logger = services.GetRequiredService>(); + logger.LogError($"Can't resolve completion provider by {provider}"); + } + + completer.SetModelName(model); + + return completer; } } diff --git a/src/Infrastructure/BotSharp.OpenAPI/BotSharp.OpenAPI.csproj b/src/Infrastructure/BotSharp.OpenAPI/BotSharp.OpenAPI.csproj index bbbf3ddf..cef8a0e6 100644 --- a/src/Infrastructure/BotSharp.OpenAPI/BotSharp.OpenAPI.csproj +++ b/src/Infrastructure/BotSharp.OpenAPI/BotSharp.OpenAPI.csproj @@ -5,7 +5,7 @@ enable enable $(LangVersion) - $(PackageVersion) + $(BotSharpVersion) $(GeneratePackageOnBuild) diff --git a/src/Plugins/BotSharp.Plugin.AzureOpenAI/AzureOpenAiPlugin.cs b/src/Plugins/BotSharp.Plugin.AzureOpenAI/AzureOpenAiPlugin.cs index b966d167..1232e668 100644 --- a/src/Plugins/BotSharp.Plugin.AzureOpenAI/AzureOpenAiPlugin.cs +++ b/src/Plugins/BotSharp.Plugin.AzureOpenAI/AzureOpenAiPlugin.cs @@ -23,6 +23,5 @@ public class AzureOpenAiPlugin : IBotSharpPlugin services.AddScoped(); services.AddScoped(); - services.AddScoped(); } } \ No newline at end of file diff --git a/src/Plugins/BotSharp.Plugin.AzureOpenAI/BotSharp.Plugin.AzureOpenAI.csproj b/src/Plugins/BotSharp.Plugin.AzureOpenAI/BotSharp.Plugin.AzureOpenAI.csproj index bc3a8a0d..2fdd480e 100644 --- a/src/Plugins/BotSharp.Plugin.AzureOpenAI/BotSharp.Plugin.AzureOpenAI.csproj +++ b/src/Plugins/BotSharp.Plugin.AzureOpenAI/BotSharp.Plugin.AzureOpenAI.csproj @@ -4,7 +4,7 @@ netstandard2.1 enable $(LangVersion) - $(PackageVersion) + $(BotSharpVersion) $(GeneratePackageOnBuild) diff --git a/src/Plugins/BotSharp.Plugin.AzureOpenAI/Providers/ChatCompletionProvider.cs b/src/Plugins/BotSharp.Plugin.AzureOpenAI/Providers/ChatCompletionProvider.cs index 1f71192a..5434d586 100644 --- a/src/Plugins/BotSharp.Plugin.AzureOpenAI/Providers/ChatCompletionProvider.cs +++ b/src/Plugins/BotSharp.Plugin.AzureOpenAI/Providers/ChatCompletionProvider.cs @@ -20,11 +20,12 @@ namespace BotSharp.Plugin.AzureOpenAI.Providers; public class ChatCompletionProvider : IChatCompletion { - protected readonly AzureOpenAiSettings _settings; - protected readonly IServiceProvider _services; - protected readonly ILogger _logger; + private readonly AzureOpenAiSettings _settings; + private readonly IServiceProvider _services; + private readonly ILogger _logger; + private string _model; - public virtual string Provider => "azure-gpt-3.5"; + public virtual string Provider => "azure-openai"; public ChatCompletionProvider(AzureOpenAiSettings settings, ILogger logger, @@ -37,8 +38,16 @@ public class ChatCompletionProvider : IChatCompletion protected virtual (OpenAIClient, string) GetClient() { - var client = new OpenAIClient(new Uri(_settings.Endpoint), new AzureKeyCredential(_settings.ApiKey)); - return (client, _settings.DeploymentModel.ChatCompletionModel); + if (_model == "gpt-4") + { + var client = new OpenAIClient(new Uri(_settings.GPT4.Endpoint), new AzureKeyCredential(_settings.GPT4.ApiKey)); + return (client, _settings.GPT4.DeploymentModel); + } + else + { + var client = new OpenAIClient(new Uri(_settings.Endpoint), new AzureKeyCredential(_settings.ApiKey)); + return (client, _settings.DeploymentModel.ChatCompletionModel); + } } public List GetChatSamples(string sampleText) @@ -243,4 +252,9 @@ public class ChatCompletionProvider : IChatCompletion return chatCompletionsOptions; } + + public void SetModelName(string model) + { + _model = model; + } } diff --git a/src/Plugins/BotSharp.Plugin.AzureOpenAI/Providers/GPT4CompletionProvider.cs b/src/Plugins/BotSharp.Plugin.AzureOpenAI/Providers/GPT4CompletionProvider.cs deleted file mode 100644 index 63c0da53..00000000 --- a/src/Plugins/BotSharp.Plugin.AzureOpenAI/Providers/GPT4CompletionProvider.cs +++ /dev/null @@ -1,24 +0,0 @@ -using Azure; -using Azure.AI.OpenAI; -using BotSharp.Plugin.AzureOpenAI.Settings; -using Microsoft.Extensions.Logging; -using System; - -namespace BotSharp.Plugin.AzureOpenAI.Providers; - -public class GPT4CompletionProvider : ChatCompletionProvider -{ - public override string Provider => "azure-gpt-4"; - - public GPT4CompletionProvider(AzureOpenAiSettings settings, - ILogger logger, - IServiceProvider services) : base(settings, logger, services) - { - } - - protected override (OpenAIClient, string) GetClient() - { - var client = new OpenAIClient(new Uri(_settings.GPT4.Endpoint), new AzureKeyCredential(_settings.GPT4.ApiKey)); - return (client, _settings.GPT4.DeploymentModel); - } -} diff --git a/src/Plugins/BotSharp.Plugin.ChatbotUI/BotSharp.Plugin.ChatbotUI.csproj b/src/Plugins/BotSharp.Plugin.ChatbotUI/BotSharp.Plugin.ChatbotUI.csproj index 1ce0ac4d..78b077dd 100644 --- a/src/Plugins/BotSharp.Plugin.ChatbotUI/BotSharp.Plugin.ChatbotUI.csproj +++ b/src/Plugins/BotSharp.Plugin.ChatbotUI/BotSharp.Plugin.ChatbotUI.csproj @@ -4,7 +4,7 @@ netstandard2.1 enable $(LangVersion) - $(PackageVersion) + $(BotSharpVersion) $(GeneratePackageOnBuild) diff --git a/src/Plugins/BotSharp.Plugin.HuggingFace/BotSharp.Plugin.HuggingFace.csproj b/src/Plugins/BotSharp.Plugin.HuggingFace/BotSharp.Plugin.HuggingFace.csproj index 7c6b51fe..d0c56c27 100644 --- a/src/Plugins/BotSharp.Plugin.HuggingFace/BotSharp.Plugin.HuggingFace.csproj +++ b/src/Plugins/BotSharp.Plugin.HuggingFace/BotSharp.Plugin.HuggingFace.csproj @@ -4,7 +4,7 @@ netstandard2.1 enable $(LangVersion) - $(PackageVersion) + $(BotSharpVersion) $(GeneratePackageOnBuild) diff --git a/src/Plugins/BotSharp.Plugin.HuggingFace/Providers/ChatCompletionProvider.cs b/src/Plugins/BotSharp.Plugin.HuggingFace/Providers/ChatCompletionProvider.cs index ceac5320..4e39ff7b 100644 --- a/src/Plugins/BotSharp.Plugin.HuggingFace/Providers/ChatCompletionProvider.cs +++ b/src/Plugins/BotSharp.Plugin.HuggingFace/Providers/ChatCompletionProvider.cs @@ -13,6 +13,7 @@ public class ChatCompletionProvider : IChatCompletion private readonly IServiceProvider _services; private readonly HuggingFaceSettings _settings; private readonly ILogger _logger; + private string _model; public ChatCompletionProvider(IServiceProvider services, HuggingFaceSettings settings, @@ -69,4 +70,9 @@ public class ChatCompletionProvider : IChatCompletion { return true; } + + public void SetModelName(string model) + { + _model = model; + } } diff --git a/src/Plugins/BotSharp.Plugin.KnowledgeBase/BotSharp.Plugin.KnowledgeBase.csproj b/src/Plugins/BotSharp.Plugin.KnowledgeBase/BotSharp.Plugin.KnowledgeBase.csproj index a66f1f28..acbfa4fd 100644 --- a/src/Plugins/BotSharp.Plugin.KnowledgeBase/BotSharp.Plugin.KnowledgeBase.csproj +++ b/src/Plugins/BotSharp.Plugin.KnowledgeBase/BotSharp.Plugin.KnowledgeBase.csproj @@ -4,7 +4,7 @@ netstandard2.1 enable $(LangVersion) - $(PackageVersion) + $(BotSharpVersion) $(GeneratePackageOnBuild) diff --git a/src/Plugins/BotSharp.Plugin.LLamaSharp/BotSharp.Plugin.LLamaSharp.csproj b/src/Plugins/BotSharp.Plugin.LLamaSharp/BotSharp.Plugin.LLamaSharp.csproj index df8c0e41..0a75a201 100644 --- a/src/Plugins/BotSharp.Plugin.LLamaSharp/BotSharp.Plugin.LLamaSharp.csproj +++ b/src/Plugins/BotSharp.Plugin.LLamaSharp/BotSharp.Plugin.LLamaSharp.csproj @@ -4,7 +4,7 @@ netstandard2.1 enable $(LangVersion) - $(PackageVersion) + $(BotSharpVersion) $(GeneratePackageOnBuild) diff --git a/src/Plugins/BotSharp.Plugin.LLamaSharp/Providers/ChatCompletionProvider.cs b/src/Plugins/BotSharp.Plugin.LLamaSharp/Providers/ChatCompletionProvider.cs index 02ab50e7..dbdaef4d 100644 --- a/src/Plugins/BotSharp.Plugin.LLamaSharp/Providers/ChatCompletionProvider.cs +++ b/src/Plugins/BotSharp.Plugin.LLamaSharp/Providers/ChatCompletionProvider.cs @@ -23,6 +23,7 @@ public class ChatCompletionProvider : IChatCompletion private readonly IServiceProvider _services; private readonly ILogger _logger; private readonly LlamaSharpSettings _settings; + private string _model; public ChatCompletionProvider(IServiceProvider services, ILogger logger, @@ -118,4 +119,9 @@ public class ChatCompletionProvider : IChatCompletion return true; } + + public void SetModelName(string model) + { + _model = model; + } } diff --git a/src/Plugins/BotSharp.Plugin.MetaAI/BotSharp.Plugin.MetaAI.csproj b/src/Plugins/BotSharp.Plugin.MetaAI/BotSharp.Plugin.MetaAI.csproj index fd3b01ef..1e234769 100644 --- a/src/Plugins/BotSharp.Plugin.MetaAI/BotSharp.Plugin.MetaAI.csproj +++ b/src/Plugins/BotSharp.Plugin.MetaAI/BotSharp.Plugin.MetaAI.csproj @@ -4,7 +4,7 @@ netstandard2.1 enable $(LangVersion) - $(PackageVersion) + $(BotSharpVersion) $(GeneratePackageOnBuild) diff --git a/src/Plugins/BotSharp.Plugin.MetaMessenger/BotSharp.Plugin.MetaMessenger.csproj b/src/Plugins/BotSharp.Plugin.MetaMessenger/BotSharp.Plugin.MetaMessenger.csproj index 289cdcc3..8c0499e5 100644 --- a/src/Plugins/BotSharp.Plugin.MetaMessenger/BotSharp.Plugin.MetaMessenger.csproj +++ b/src/Plugins/BotSharp.Plugin.MetaMessenger/BotSharp.Plugin.MetaMessenger.csproj @@ -3,7 +3,7 @@ netstandard2.1 $(LangVersion) - $(PackageVersion) + $(BotSharpVersion) $(GeneratePackageOnBuild) diff --git a/src/Plugins/BotSharp.Plugin.MongoStorage/BotSharp.Plugin.MongoStorage.csproj b/src/Plugins/BotSharp.Plugin.MongoStorage/BotSharp.Plugin.MongoStorage.csproj index 57385741..680c4126 100644 --- a/src/Plugins/BotSharp.Plugin.MongoStorage/BotSharp.Plugin.MongoStorage.csproj +++ b/src/Plugins/BotSharp.Plugin.MongoStorage/BotSharp.Plugin.MongoStorage.csproj @@ -3,7 +3,7 @@ netstandard2.1 $(LangVersion) - $(PackageVersion) + $(BotSharpVersion) $(GeneratePackageOnBuild) diff --git a/src/Plugins/BotSharp.Plugin.Qdrant/BotSharp.Plugin.Qdrant.csproj b/src/Plugins/BotSharp.Plugin.Qdrant/BotSharp.Plugin.Qdrant.csproj index 763b75a2..e02d4448 100644 --- a/src/Plugins/BotSharp.Plugin.Qdrant/BotSharp.Plugin.Qdrant.csproj +++ b/src/Plugins/BotSharp.Plugin.Qdrant/BotSharp.Plugin.Qdrant.csproj @@ -4,7 +4,7 @@ netstandard2.1 enable $(LangVersion) - $(PackageVersion) + $(BotSharpVersion) $(GeneratePackageOnBuild) diff --git a/src/Plugins/BotSharp.Plugin.RoutingSpeeder/BotSharp.Plugin.RoutingSpeeder.csproj b/src/Plugins/BotSharp.Plugin.RoutingSpeeder/BotSharp.Plugin.RoutingSpeeder.csproj index bd74b74d..aa8a9a2f 100644 --- a/src/Plugins/BotSharp.Plugin.RoutingSpeeder/BotSharp.Plugin.RoutingSpeeder.csproj +++ b/src/Plugins/BotSharp.Plugin.RoutingSpeeder/BotSharp.Plugin.RoutingSpeeder.csproj @@ -4,7 +4,7 @@ netstandard2.1 enable $(LangVersion) - $(PackageVersion) + $(BotSharpVersion) $(GeneratePackageOnBuild) diff --git a/src/Plugins/BotSharp.Plugin.WeChat/BotSharp.Plugin.WeChat.csproj b/src/Plugins/BotSharp.Plugin.WeChat/BotSharp.Plugin.WeChat.csproj index 59ae162a..fbff2484 100644 --- a/src/Plugins/BotSharp.Plugin.WeChat/BotSharp.Plugin.WeChat.csproj +++ b/src/Plugins/BotSharp.Plugin.WeChat/BotSharp.Plugin.WeChat.csproj @@ -3,7 +3,7 @@ netstandard2.1 $(LangVersion) - $(PackageVersion) + $(BotSharpVersion) $(GeneratePackageOnBuild) @@ -14,7 +14,6 @@ https://github.com/Oceania2018/botsharp-channel-weixin Apache 2.0 botsharp, wechat, wexin, chatbot - $(PackageVersion)