From 295744958f6efdb4b9224ca08f09377811af07c6 Mon Sep 17 00:00:00 2001 From: Haiping Chen Date: Wed, 7 Jun 2023 22:43:16 -0500 Subject: [PATCH] Simulate HuggingFace inference API. --- BotSharp.sln | 100 +++++++------- README.md | 2 +- .../BotSharp.Plugin.FacebookMessenger.csproj | 4 - .../BotSharp.Plugin.WeChat.csproj} | 4 - .../README.md | 0 .../AzureOpenAiServiceCollectionExtensions.cs | 0 .../AzureOpenAiSettings.cs | 0 .../BotSharp.Plugin.AzureOpenAI.csproj | 2 +- .../TextGeneratives/ChatCompletionProvider.cs | 0 .../BotSharp.Plugin.ChatbotUI.csproj | 4 +- .../BotSharp.Plugin.ChatbotUI/Chatbot-UI.md | 0 .../ChatbotUiController.cs | 0 .../ViewModels/OpenAiChatOutput.cs | 0 .../ViewModels/OpenAiChoice.cs | 2 + .../ViewModels/OpenAiMessageBody.cs | 0 .../ViewModels/OpenAiMessageInput.cs | 0 .../ViewModels/OpenAiModels.cs | 0 .../BotSharp.Plugin.HuggingFace.csproj | 4 +- .../HuggingChat-UI.md | 0 .../HuggingChat/HuggingChatController.cs | 130 ++++++++++++++++++ .../HuggingChat/ViewModels/ChatInput.cs | 1 + .../HuggingChat/ViewModels/ChatResponse.cs | 2 + .../ViewModels/ConversationCreationModel.cs | 0 .../ViewModels/ConversationViewModel.cs | 0 .../HuggingChat/HuggingChatController.cs | 61 -------- src/WebStarter/WebStarter.csproj | 8 +- 26 files changed, 194 insertions(+), 130 deletions(-) rename src/Plugins/{Messages => }/BotSharp.Channel.FacebookMessenger/BotSharp.Plugin.FacebookMessenger.csproj (50%) rename src/Plugins/{Messages/BotSharp.Channel.Weixin/BotSharp.Plugin.Weixin.csproj => BotSharp.Channel.WeChat/BotSharp.Plugin.WeChat.csproj} (86%) rename src/Plugins/{Messages/BotSharp.Channel.Weixin => BotSharp.Channel.WeChat}/README.md (100%) rename src/Plugins/{Platforms/BotSharp.Plugin.AureOpenAI => BotSharp.Plugin.AzureOpenAI}/AzureOpenAiServiceCollectionExtensions.cs (100%) rename src/Plugins/{Platforms/BotSharp.Plugin.AureOpenAI => BotSharp.Plugin.AzureOpenAI}/AzureOpenAiSettings.cs (100%) rename src/Plugins/{Platforms/BotSharp.Plugin.AureOpenAI => BotSharp.Plugin.AzureOpenAI}/BotSharp.Plugin.AzureOpenAI.csproj (75%) rename src/Plugins/{Platforms/BotSharp.Plugin.AureOpenAI => BotSharp.Plugin.AzureOpenAI}/TextGeneratives/ChatCompletionProvider.cs (100%) rename src/Plugins/{UIs => }/BotSharp.Plugin.ChatbotUI/BotSharp.Plugin.ChatbotUI.csproj (71%) rename src/Plugins/{UIs => }/BotSharp.Plugin.ChatbotUI/Chatbot-UI.md (100%) rename src/Plugins/{UIs => }/BotSharp.Plugin.ChatbotUI/ChatbotUiController.cs (100%) rename src/Plugins/{UIs => }/BotSharp.Plugin.ChatbotUI/ViewModels/OpenAiChatOutput.cs (100%) rename src/Plugins/{UIs => }/BotSharp.Plugin.ChatbotUI/ViewModels/OpenAiChoice.cs (82%) rename src/Plugins/{UIs => }/BotSharp.Plugin.ChatbotUI/ViewModels/OpenAiMessageBody.cs (100%) rename src/Plugins/{UIs => }/BotSharp.Plugin.ChatbotUI/ViewModels/OpenAiMessageInput.cs (100%) rename src/Plugins/{UIs => }/BotSharp.Plugin.ChatbotUI/ViewModels/OpenAiModels.cs (100%) rename src/Plugins/{Platforms => }/BotSharp.Plugin.HuggingFace/BotSharp.Plugin.HuggingFace.csproj (66%) rename src/Plugins/{Platforms => }/BotSharp.Plugin.HuggingFace/HuggingChat-UI.md (100%) create mode 100644 src/Plugins/BotSharp.Plugin.HuggingFace/HuggingChat/HuggingChatController.cs rename src/Plugins/{Platforms => }/BotSharp.Plugin.HuggingFace/HuggingChat/ViewModels/ChatInput.cs (77%) rename src/Plugins/{Platforms => }/BotSharp.Plugin.HuggingFace/HuggingChat/ViewModels/ChatResponse.cs (85%) rename src/Plugins/{Platforms => }/BotSharp.Plugin.HuggingFace/HuggingChat/ViewModels/ConversationCreationModel.cs (100%) rename src/Plugins/{Platforms => }/BotSharp.Plugin.HuggingFace/HuggingChat/ViewModels/ConversationViewModel.cs (100%) delete mode 100644 src/Plugins/Platforms/BotSharp.Plugin.HuggingFace/HuggingChat/HuggingChatController.cs diff --git a/BotSharp.sln b/BotSharp.sln index 964017ae..e04762ba 100644 --- a/BotSharp.sln +++ b/BotSharp.sln @@ -19,15 +19,15 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Messages", "Messages", "{64 EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Platforms", "Platforms", "{D5293208-2BEF-42FC-A64C-5954F61720BA}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BotSharp.Plugin.AzureOpenAI", "src\Plugins\Platforms\BotSharp.Plugin.AureOpenAI\BotSharp.Plugin.AzureOpenAI.csproj", "{A8DF9393-9D67-460C-86F3-1D3C65A80D0A}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BotSharp.Plugin.FacebookMessenger", "src\Plugins\BotSharp.Channel.FacebookMessenger\BotSharp.Plugin.FacebookMessenger.csproj", "{FF9B429F-972E-47CE-80A6-5339E6119EE6}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BotSharp.Plugin.FacebookMessenger", "src\Plugins\Messages\BotSharp.Channel.FacebookMessenger\BotSharp.Plugin.FacebookMessenger.csproj", "{ACAB7D42-CCB3-4559-9DB7-B969C52A833D}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BotSharp.Plugin.WeChat", "src\Plugins\BotSharp.Channel.WeChat\BotSharp.Plugin.WeChat.csproj", "{8014739C-1B56-4859-A5A5-CA2EF9C58833}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BotSharp.Plugin.Weixin", "src\Plugins\Messages\BotSharp.Channel.Weixin\BotSharp.Plugin.Weixin.csproj", "{4DA3E063-9F5A-4361-8EFE-8727409B238D}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BotSharp.Plugin.AzureOpenAI", "src\Plugins\BotSharp.Plugin.AzureOpenAI\BotSharp.Plugin.AzureOpenAI.csproj", "{3EAB9CF3-0F47-4BFB-8BAC-8ADFF24AD899}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BotSharp.Plugin.ChatbotUI", "src\Plugins\UIs\BotSharp.Plugin.ChatbotUI\BotSharp.Plugin.ChatbotUI.csproj", "{BDCE7250-A5B0-4AA6-BEB6-B799C12990EF}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BotSharp.Plugin.HuggingFace", "src\Plugins\BotSharp.Plugin.HuggingFace\BotSharp.Plugin.HuggingFace.csproj", "{57806BAF-7736-425A-B499-13A2A2DF1E63}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BotSharp.Plugin.HuggingFace", "src\Plugins\Platforms\BotSharp.Plugin.HuggingFace\BotSharp.Plugin.HuggingFace.csproj", "{48889657-1BFF-4FDD-B702-CFA5F866BC20}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BotSharp.Plugin.ChatbotUI", "src\Plugins\BotSharp.Plugin.ChatbotUI\BotSharp.Plugin.ChatbotUI.csproj", "{68C7C9E9-496B-4004-A1F8-75FFB8C06C76}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -61,46 +61,46 @@ Global {07AD18C5-CE7B-495A-815F-170E93CCC42A}.Release|Any CPU.Build.0 = Release|Any CPU {07AD18C5-CE7B-495A-815F-170E93CCC42A}.Release|x64.ActiveCfg = Release|Any CPU {07AD18C5-CE7B-495A-815F-170E93CCC42A}.Release|x64.Build.0 = Release|Any CPU - {A8DF9393-9D67-460C-86F3-1D3C65A80D0A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A8DF9393-9D67-460C-86F3-1D3C65A80D0A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A8DF9393-9D67-460C-86F3-1D3C65A80D0A}.Debug|x64.ActiveCfg = Debug|Any CPU - {A8DF9393-9D67-460C-86F3-1D3C65A80D0A}.Debug|x64.Build.0 = Debug|Any CPU - {A8DF9393-9D67-460C-86F3-1D3C65A80D0A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A8DF9393-9D67-460C-86F3-1D3C65A80D0A}.Release|Any CPU.Build.0 = Release|Any CPU - {A8DF9393-9D67-460C-86F3-1D3C65A80D0A}.Release|x64.ActiveCfg = Release|Any CPU - {A8DF9393-9D67-460C-86F3-1D3C65A80D0A}.Release|x64.Build.0 = Release|Any CPU - {ACAB7D42-CCB3-4559-9DB7-B969C52A833D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {ACAB7D42-CCB3-4559-9DB7-B969C52A833D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {ACAB7D42-CCB3-4559-9DB7-B969C52A833D}.Debug|x64.ActiveCfg = Debug|Any CPU - {ACAB7D42-CCB3-4559-9DB7-B969C52A833D}.Debug|x64.Build.0 = Debug|Any CPU - {ACAB7D42-CCB3-4559-9DB7-B969C52A833D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {ACAB7D42-CCB3-4559-9DB7-B969C52A833D}.Release|Any CPU.Build.0 = Release|Any CPU - {ACAB7D42-CCB3-4559-9DB7-B969C52A833D}.Release|x64.ActiveCfg = Release|Any CPU - {ACAB7D42-CCB3-4559-9DB7-B969C52A833D}.Release|x64.Build.0 = Release|Any CPU - {4DA3E063-9F5A-4361-8EFE-8727409B238D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4DA3E063-9F5A-4361-8EFE-8727409B238D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4DA3E063-9F5A-4361-8EFE-8727409B238D}.Debug|x64.ActiveCfg = Debug|Any CPU - {4DA3E063-9F5A-4361-8EFE-8727409B238D}.Debug|x64.Build.0 = Debug|Any CPU - {4DA3E063-9F5A-4361-8EFE-8727409B238D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4DA3E063-9F5A-4361-8EFE-8727409B238D}.Release|Any CPU.Build.0 = Release|Any CPU - {4DA3E063-9F5A-4361-8EFE-8727409B238D}.Release|x64.ActiveCfg = Release|Any CPU - {4DA3E063-9F5A-4361-8EFE-8727409B238D}.Release|x64.Build.0 = Release|Any CPU - {BDCE7250-A5B0-4AA6-BEB6-B799C12990EF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BDCE7250-A5B0-4AA6-BEB6-B799C12990EF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BDCE7250-A5B0-4AA6-BEB6-B799C12990EF}.Debug|x64.ActiveCfg = Debug|Any CPU - {BDCE7250-A5B0-4AA6-BEB6-B799C12990EF}.Debug|x64.Build.0 = Debug|Any CPU - {BDCE7250-A5B0-4AA6-BEB6-B799C12990EF}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BDCE7250-A5B0-4AA6-BEB6-B799C12990EF}.Release|Any CPU.Build.0 = Release|Any CPU - {BDCE7250-A5B0-4AA6-BEB6-B799C12990EF}.Release|x64.ActiveCfg = Release|Any CPU - {BDCE7250-A5B0-4AA6-BEB6-B799C12990EF}.Release|x64.Build.0 = Release|Any CPU - {48889657-1BFF-4FDD-B702-CFA5F866BC20}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {48889657-1BFF-4FDD-B702-CFA5F866BC20}.Debug|Any CPU.Build.0 = Debug|Any CPU - {48889657-1BFF-4FDD-B702-CFA5F866BC20}.Debug|x64.ActiveCfg = Debug|Any CPU - {48889657-1BFF-4FDD-B702-CFA5F866BC20}.Debug|x64.Build.0 = Debug|Any CPU - {48889657-1BFF-4FDD-B702-CFA5F866BC20}.Release|Any CPU.ActiveCfg = Release|Any CPU - {48889657-1BFF-4FDD-B702-CFA5F866BC20}.Release|Any CPU.Build.0 = Release|Any CPU - {48889657-1BFF-4FDD-B702-CFA5F866BC20}.Release|x64.ActiveCfg = Release|Any CPU - {48889657-1BFF-4FDD-B702-CFA5F866BC20}.Release|x64.Build.0 = Release|Any CPU + {FF9B429F-972E-47CE-80A6-5339E6119EE6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FF9B429F-972E-47CE-80A6-5339E6119EE6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FF9B429F-972E-47CE-80A6-5339E6119EE6}.Debug|x64.ActiveCfg = Debug|Any CPU + {FF9B429F-972E-47CE-80A6-5339E6119EE6}.Debug|x64.Build.0 = Debug|Any CPU + {FF9B429F-972E-47CE-80A6-5339E6119EE6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FF9B429F-972E-47CE-80A6-5339E6119EE6}.Release|Any CPU.Build.0 = Release|Any CPU + {FF9B429F-972E-47CE-80A6-5339E6119EE6}.Release|x64.ActiveCfg = Release|Any CPU + {FF9B429F-972E-47CE-80A6-5339E6119EE6}.Release|x64.Build.0 = Release|Any CPU + {8014739C-1B56-4859-A5A5-CA2EF9C58833}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8014739C-1B56-4859-A5A5-CA2EF9C58833}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8014739C-1B56-4859-A5A5-CA2EF9C58833}.Debug|x64.ActiveCfg = Debug|Any CPU + {8014739C-1B56-4859-A5A5-CA2EF9C58833}.Debug|x64.Build.0 = Debug|Any CPU + {8014739C-1B56-4859-A5A5-CA2EF9C58833}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8014739C-1B56-4859-A5A5-CA2EF9C58833}.Release|Any CPU.Build.0 = Release|Any CPU + {8014739C-1B56-4859-A5A5-CA2EF9C58833}.Release|x64.ActiveCfg = Release|Any CPU + {8014739C-1B56-4859-A5A5-CA2EF9C58833}.Release|x64.Build.0 = Release|Any CPU + {3EAB9CF3-0F47-4BFB-8BAC-8ADFF24AD899}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3EAB9CF3-0F47-4BFB-8BAC-8ADFF24AD899}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3EAB9CF3-0F47-4BFB-8BAC-8ADFF24AD899}.Debug|x64.ActiveCfg = Debug|Any CPU + {3EAB9CF3-0F47-4BFB-8BAC-8ADFF24AD899}.Debug|x64.Build.0 = Debug|Any CPU + {3EAB9CF3-0F47-4BFB-8BAC-8ADFF24AD899}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3EAB9CF3-0F47-4BFB-8BAC-8ADFF24AD899}.Release|Any CPU.Build.0 = Release|Any CPU + {3EAB9CF3-0F47-4BFB-8BAC-8ADFF24AD899}.Release|x64.ActiveCfg = Release|Any CPU + {3EAB9CF3-0F47-4BFB-8BAC-8ADFF24AD899}.Release|x64.Build.0 = Release|Any CPU + {57806BAF-7736-425A-B499-13A2A2DF1E63}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {57806BAF-7736-425A-B499-13A2A2DF1E63}.Debug|Any CPU.Build.0 = Debug|Any CPU + {57806BAF-7736-425A-B499-13A2A2DF1E63}.Debug|x64.ActiveCfg = Debug|Any CPU + {57806BAF-7736-425A-B499-13A2A2DF1E63}.Debug|x64.Build.0 = Debug|Any CPU + {57806BAF-7736-425A-B499-13A2A2DF1E63}.Release|Any CPU.ActiveCfg = Release|Any CPU + {57806BAF-7736-425A-B499-13A2A2DF1E63}.Release|Any CPU.Build.0 = Release|Any CPU + {57806BAF-7736-425A-B499-13A2A2DF1E63}.Release|x64.ActiveCfg = Release|Any CPU + {57806BAF-7736-425A-B499-13A2A2DF1E63}.Release|x64.Build.0 = Release|Any CPU + {68C7C9E9-496B-4004-A1F8-75FFB8C06C76}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {68C7C9E9-496B-4004-A1F8-75FFB8C06C76}.Debug|Any CPU.Build.0 = Debug|Any CPU + {68C7C9E9-496B-4004-A1F8-75FFB8C06C76}.Debug|x64.ActiveCfg = Debug|Any CPU + {68C7C9E9-496B-4004-A1F8-75FFB8C06C76}.Debug|x64.Build.0 = Debug|Any CPU + {68C7C9E9-496B-4004-A1F8-75FFB8C06C76}.Release|Any CPU.ActiveCfg = Release|Any CPU + {68C7C9E9-496B-4004-A1F8-75FFB8C06C76}.Release|Any CPU.Build.0 = Release|Any CPU + {68C7C9E9-496B-4004-A1F8-75FFB8C06C76}.Release|x64.ActiveCfg = Release|Any CPU + {68C7C9E9-496B-4004-A1F8-75FFB8C06C76}.Release|x64.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -111,11 +111,11 @@ Global {42226933-0A0D-48E8-85EC-AFE773A1F841} = {2635EC9B-2E5F-4313-AC21-0B847F31F36C} {64264688-0F5C-4AB0-8F2B-B59B717CCE00} = {2635EC9B-2E5F-4313-AC21-0B847F31F36C} {D5293208-2BEF-42FC-A64C-5954F61720BA} = {2635EC9B-2E5F-4313-AC21-0B847F31F36C} - {A8DF9393-9D67-460C-86F3-1D3C65A80D0A} = {D5293208-2BEF-42FC-A64C-5954F61720BA} - {ACAB7D42-CCB3-4559-9DB7-B969C52A833D} = {64264688-0F5C-4AB0-8F2B-B59B717CCE00} - {4DA3E063-9F5A-4361-8EFE-8727409B238D} = {64264688-0F5C-4AB0-8F2B-B59B717CCE00} - {BDCE7250-A5B0-4AA6-BEB6-B799C12990EF} = {42226933-0A0D-48E8-85EC-AFE773A1F841} - {48889657-1BFF-4FDD-B702-CFA5F866BC20} = {D5293208-2BEF-42FC-A64C-5954F61720BA} + {FF9B429F-972E-47CE-80A6-5339E6119EE6} = {64264688-0F5C-4AB0-8F2B-B59B717CCE00} + {8014739C-1B56-4859-A5A5-CA2EF9C58833} = {64264688-0F5C-4AB0-8F2B-B59B717CCE00} + {3EAB9CF3-0F47-4BFB-8BAC-8ADFF24AD899} = {D5293208-2BEF-42FC-A64C-5954F61720BA} + {57806BAF-7736-425A-B499-13A2A2DF1E63} = {D5293208-2BEF-42FC-A64C-5954F61720BA} + {68C7C9E9-496B-4004-A1F8-75FFB8C06C76} = {42226933-0A0D-48E8-85EC-AFE773A1F841} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {A9969D89-C98B-40A5-A12B-FC87E55B3A19} diff --git a/README.md b/README.md index eb5e1a8a..d570afc6 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ BotSharp is in accordance with components principle strictly, decouples every pa * Built-in multi-agents and conversation management. * Support multiple LLM platforms. * Support export/ import agent from other bot platforms directly. -* Support different open source UI [Chatbot UI](src\BotUIs\ChatbotUI\Chatbot-UI.md). +* Support different open source UI [Chatbot UI](src\Plugins\BotSharp.Plugin.ChatbotUI\Chatbot-UI.md), [HuggingChat UI](src\Plugins\BotSharp.Plugin.HuggingFace\HuggingChat-UI.md). * Integrate with popular message channels like Facebook Messenger, Slack and Telegram. ### Quick Started diff --git a/src/Plugins/Messages/BotSharp.Channel.FacebookMessenger/BotSharp.Plugin.FacebookMessenger.csproj b/src/Plugins/BotSharp.Channel.FacebookMessenger/BotSharp.Plugin.FacebookMessenger.csproj similarity index 50% rename from src/Plugins/Messages/BotSharp.Channel.FacebookMessenger/BotSharp.Plugin.FacebookMessenger.csproj rename to src/Plugins/BotSharp.Channel.FacebookMessenger/BotSharp.Plugin.FacebookMessenger.csproj index 3590be46..d4c395e8 100644 --- a/src/Plugins/Messages/BotSharp.Channel.FacebookMessenger/BotSharp.Plugin.FacebookMessenger.csproj +++ b/src/Plugins/BotSharp.Channel.FacebookMessenger/BotSharp.Plugin.FacebookMessenger.csproj @@ -4,8 +4,4 @@ netstandard2.1 - - - - diff --git a/src/Plugins/Messages/BotSharp.Channel.Weixin/BotSharp.Plugin.Weixin.csproj b/src/Plugins/BotSharp.Channel.WeChat/BotSharp.Plugin.WeChat.csproj similarity index 86% rename from src/Plugins/Messages/BotSharp.Channel.Weixin/BotSharp.Plugin.Weixin.csproj rename to src/Plugins/BotSharp.Channel.WeChat/BotSharp.Plugin.WeChat.csproj index dfc83769..d1ee4dc0 100644 --- a/src/Plugins/Messages/BotSharp.Channel.Weixin/BotSharp.Plugin.Weixin.csproj +++ b/src/Plugins/BotSharp.Channel.WeChat/BotSharp.Plugin.WeChat.csproj @@ -23,8 +23,4 @@ - - - - diff --git a/src/Plugins/Messages/BotSharp.Channel.Weixin/README.md b/src/Plugins/BotSharp.Channel.WeChat/README.md similarity index 100% rename from src/Plugins/Messages/BotSharp.Channel.Weixin/README.md rename to src/Plugins/BotSharp.Channel.WeChat/README.md diff --git a/src/Plugins/Platforms/BotSharp.Plugin.AureOpenAI/AzureOpenAiServiceCollectionExtensions.cs b/src/Plugins/BotSharp.Plugin.AzureOpenAI/AzureOpenAiServiceCollectionExtensions.cs similarity index 100% rename from src/Plugins/Platforms/BotSharp.Plugin.AureOpenAI/AzureOpenAiServiceCollectionExtensions.cs rename to src/Plugins/BotSharp.Plugin.AzureOpenAI/AzureOpenAiServiceCollectionExtensions.cs diff --git a/src/Plugins/Platforms/BotSharp.Plugin.AureOpenAI/AzureOpenAiSettings.cs b/src/Plugins/BotSharp.Plugin.AzureOpenAI/AzureOpenAiSettings.cs similarity index 100% rename from src/Plugins/Platforms/BotSharp.Plugin.AureOpenAI/AzureOpenAiSettings.cs rename to src/Plugins/BotSharp.Plugin.AzureOpenAI/AzureOpenAiSettings.cs diff --git a/src/Plugins/Platforms/BotSharp.Plugin.AureOpenAI/BotSharp.Plugin.AzureOpenAI.csproj b/src/Plugins/BotSharp.Plugin.AzureOpenAI/BotSharp.Plugin.AzureOpenAI.csproj similarity index 75% rename from src/Plugins/Platforms/BotSharp.Plugin.AureOpenAI/BotSharp.Plugin.AzureOpenAI.csproj rename to src/Plugins/BotSharp.Plugin.AzureOpenAI/BotSharp.Plugin.AzureOpenAI.csproj index 7e954f29..867e58c3 100644 --- a/src/Plugins/Platforms/BotSharp.Plugin.AureOpenAI/BotSharp.Plugin.AzureOpenAI.csproj +++ b/src/Plugins/BotSharp.Plugin.AzureOpenAI/BotSharp.Plugin.AzureOpenAI.csproj @@ -11,7 +11,7 @@ - + diff --git a/src/Plugins/Platforms/BotSharp.Plugin.AureOpenAI/TextGeneratives/ChatCompletionProvider.cs b/src/Plugins/BotSharp.Plugin.AzureOpenAI/TextGeneratives/ChatCompletionProvider.cs similarity index 100% rename from src/Plugins/Platforms/BotSharp.Plugin.AureOpenAI/TextGeneratives/ChatCompletionProvider.cs rename to src/Plugins/BotSharp.Plugin.AzureOpenAI/TextGeneratives/ChatCompletionProvider.cs diff --git a/src/Plugins/UIs/BotSharp.Plugin.ChatbotUI/BotSharp.Plugin.ChatbotUI.csproj b/src/Plugins/BotSharp.Plugin.ChatbotUI/BotSharp.Plugin.ChatbotUI.csproj similarity index 71% rename from src/Plugins/UIs/BotSharp.Plugin.ChatbotUI/BotSharp.Plugin.ChatbotUI.csproj rename to src/Plugins/BotSharp.Plugin.ChatbotUI/BotSharp.Plugin.ChatbotUI.csproj index 4301521d..f01a29ba 100644 --- a/src/Plugins/UIs/BotSharp.Plugin.ChatbotUI/BotSharp.Plugin.ChatbotUI.csproj +++ b/src/Plugins/BotSharp.Plugin.ChatbotUI/BotSharp.Plugin.ChatbotUI.csproj @@ -9,11 +9,11 @@ - + - + diff --git a/src/Plugins/UIs/BotSharp.Plugin.ChatbotUI/Chatbot-UI.md b/src/Plugins/BotSharp.Plugin.ChatbotUI/Chatbot-UI.md similarity index 100% rename from src/Plugins/UIs/BotSharp.Plugin.ChatbotUI/Chatbot-UI.md rename to src/Plugins/BotSharp.Plugin.ChatbotUI/Chatbot-UI.md diff --git a/src/Plugins/UIs/BotSharp.Plugin.ChatbotUI/ChatbotUiController.cs b/src/Plugins/BotSharp.Plugin.ChatbotUI/ChatbotUiController.cs similarity index 100% rename from src/Plugins/UIs/BotSharp.Plugin.ChatbotUI/ChatbotUiController.cs rename to src/Plugins/BotSharp.Plugin.ChatbotUI/ChatbotUiController.cs diff --git a/src/Plugins/UIs/BotSharp.Plugin.ChatbotUI/ViewModels/OpenAiChatOutput.cs b/src/Plugins/BotSharp.Plugin.ChatbotUI/ViewModels/OpenAiChatOutput.cs similarity index 100% rename from src/Plugins/UIs/BotSharp.Plugin.ChatbotUI/ViewModels/OpenAiChatOutput.cs rename to src/Plugins/BotSharp.Plugin.ChatbotUI/ViewModels/OpenAiChatOutput.cs diff --git a/src/Plugins/UIs/BotSharp.Plugin.ChatbotUI/ViewModels/OpenAiChoice.cs b/src/Plugins/BotSharp.Plugin.ChatbotUI/ViewModels/OpenAiChoice.cs similarity index 82% rename from src/Plugins/UIs/BotSharp.Plugin.ChatbotUI/ViewModels/OpenAiChoice.cs rename to src/Plugins/BotSharp.Plugin.ChatbotUI/ViewModels/OpenAiChoice.cs index 21c2597e..a72510df 100644 --- a/src/Plugins/UIs/BotSharp.Plugin.ChatbotUI/ViewModels/OpenAiChoice.cs +++ b/src/Plugins/BotSharp.Plugin.ChatbotUI/ViewModels/OpenAiChoice.cs @@ -1,4 +1,5 @@ using Azure.AI.OpenAI; +using Newtonsoft.Json; using System.Text.Json.Serialization; namespace BotSharp.Plugin.ChatbotUI.ViewModels; @@ -6,6 +7,7 @@ namespace BotSharp.Plugin.ChatbotUI.ViewModels; public class OpenAiChoice { [JsonPropertyName("finish_reason")] + [JsonProperty("finish_reason")] public string FinishReason { get; set; } public ChatMessage Delta { get; set; } } diff --git a/src/Plugins/UIs/BotSharp.Plugin.ChatbotUI/ViewModels/OpenAiMessageBody.cs b/src/Plugins/BotSharp.Plugin.ChatbotUI/ViewModels/OpenAiMessageBody.cs similarity index 100% rename from src/Plugins/UIs/BotSharp.Plugin.ChatbotUI/ViewModels/OpenAiMessageBody.cs rename to src/Plugins/BotSharp.Plugin.ChatbotUI/ViewModels/OpenAiMessageBody.cs diff --git a/src/Plugins/UIs/BotSharp.Plugin.ChatbotUI/ViewModels/OpenAiMessageInput.cs b/src/Plugins/BotSharp.Plugin.ChatbotUI/ViewModels/OpenAiMessageInput.cs similarity index 100% rename from src/Plugins/UIs/BotSharp.Plugin.ChatbotUI/ViewModels/OpenAiMessageInput.cs rename to src/Plugins/BotSharp.Plugin.ChatbotUI/ViewModels/OpenAiMessageInput.cs diff --git a/src/Plugins/UIs/BotSharp.Plugin.ChatbotUI/ViewModels/OpenAiModels.cs b/src/Plugins/BotSharp.Plugin.ChatbotUI/ViewModels/OpenAiModels.cs similarity index 100% rename from src/Plugins/UIs/BotSharp.Plugin.ChatbotUI/ViewModels/OpenAiModels.cs rename to src/Plugins/BotSharp.Plugin.ChatbotUI/ViewModels/OpenAiModels.cs diff --git a/src/Plugins/Platforms/BotSharp.Plugin.HuggingFace/BotSharp.Plugin.HuggingFace.csproj b/src/Plugins/BotSharp.Plugin.HuggingFace/BotSharp.Plugin.HuggingFace.csproj similarity index 66% rename from src/Plugins/Platforms/BotSharp.Plugin.HuggingFace/BotSharp.Plugin.HuggingFace.csproj rename to src/Plugins/BotSharp.Plugin.HuggingFace/BotSharp.Plugin.HuggingFace.csproj index 877bb599..a27882a7 100644 --- a/src/Plugins/Platforms/BotSharp.Plugin.HuggingFace/BotSharp.Plugin.HuggingFace.csproj +++ b/src/Plugins/BotSharp.Plugin.HuggingFace/BotSharp.Plugin.HuggingFace.csproj @@ -8,11 +8,11 @@ - + - + diff --git a/src/Plugins/Platforms/BotSharp.Plugin.HuggingFace/HuggingChat-UI.md b/src/Plugins/BotSharp.Plugin.HuggingFace/HuggingChat-UI.md similarity index 100% rename from src/Plugins/Platforms/BotSharp.Plugin.HuggingFace/HuggingChat-UI.md rename to src/Plugins/BotSharp.Plugin.HuggingFace/HuggingChat-UI.md diff --git a/src/Plugins/BotSharp.Plugin.HuggingFace/HuggingChat/HuggingChatController.cs b/src/Plugins/BotSharp.Plugin.HuggingFace/HuggingChat/HuggingChatController.cs new file mode 100644 index 00000000..3a9b6aa2 --- /dev/null +++ b/src/Plugins/BotSharp.Plugin.HuggingFace/HuggingChat/HuggingChatController.cs @@ -0,0 +1,130 @@ +using BotSharp.Abstraction; +using BotSharp.Abstraction.ApiAdapters; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Net.Http.Headers; +using Newtonsoft.Json.Serialization; +using Newtonsoft.Json; +using System; +using System.Text; +using System.Threading.Tasks; +using BotSharp.Plugin.HuggingFace.HuggingChat.ViewModels; +using BotSharp.Abstraction.TextGeneratives; +using System.Collections.Generic; +using System.Threading; + +namespace BotSharp.Plugin.HuggingFace.HuggingChat; + +public class HuggingChatController : ControllerBase, IApiAdapter +{ + private readonly IPlatformMidware _platform; + public HuggingChatController(IPlatformMidware platform) + { + _platform = platform; + } + + [HttpPost("/conversation")] + public async Task NewSession([FromBody] ConversationCreationModel conversationCreationModel) + { + var session = await _platform.SessionService.NewSession("anonymous"); + return new ConversationViewModel + { + ConversationId = session.SessionId + }; + } + + [HttpPost("/conversation/{id}/summarize")] + public string SummarizeTitle([FromRoute] string id) + { + return "SummarizeTitle"; + } + + [HttpPost("/models/OpenAssistant/{model}")] + public async Task SendMessage([FromRoute] string model, [FromBody] ChatInput message) + { + if (message.Stream) + { + Response.StatusCode = 200; + Response.Headers.Add(HeaderNames.ContentType, "text/event-stream"); + Response.Headers.Add(HeaderNames.CacheControl, "no-cache"); + Response.Headers.Add(HeaderNames.Connection, "keep-alive"); + var outputStream = Response.Body; + + var response = new ChatResponse + { + Token = new TextToken + { + Id = 12092, + Text = "Hello" + } + }; + + var json = JsonConvert.SerializeObject(response, new JsonSerializerSettings + { + Formatting = Formatting.None, + ContractResolver = new CamelCasePropertyNamesContractResolver() + }); + + var buffer = Encoding.UTF8.GetBytes($"data:{json}\n"); + await outputStream.WriteAsync(buffer, 0, buffer.Length); + + await Task.Delay(100); + + buffer = Encoding.UTF8.GetBytes("\n"); + await outputStream.WriteAsync(buffer, 0, buffer.Length); + + response = new ChatResponse + { + Token = new TextToken + { + Text = "<|endoftext|>", + Special = true + }, + GeneratedText = "Hello there! How can I assist you today?" + }; + + json = JsonConvert.SerializeObject(response, new JsonSerializerSettings + { + Formatting = Formatting.None, + ContractResolver = new CamelCasePropertyNamesContractResolver() + }); + + buffer = Encoding.UTF8.GetBytes($"data:{json}\n"); + await outputStream.WriteAsync(buffer, 0, buffer.Length); + + await Task.Delay(100); + + buffer = Encoding.UTF8.GetBytes("\n"); + await outputStream.WriteAsync(buffer, 0, buffer.Length); + } + else + { + Response.StatusCode = 200; + Response.Headers.Add(HeaderNames.ContentType, "application/json"); + Response.Headers.Add(HeaderNames.CacheControl, "no-cache"); + Response.Headers.Add(HeaderNames.Connection, "keep-alive"); + var outputStream = Response.Body; + + var response = new ChatResponse + { + Token = new TextToken + { + Text = "<|endoftext|>", + Special = true + }, + GeneratedText = "Hello there! How can I assist you today?" + }; + + var json = JsonConvert.SerializeObject(new List + { + response + }, new JsonSerializerSettings + { + Formatting = Formatting.None, + ContractResolver = new CamelCasePropertyNamesContractResolver() + }); + + var buffer = Encoding.UTF8.GetBytes(json); + await outputStream.WriteAsync(buffer, 0, buffer.Length); + } + } +} diff --git a/src/Plugins/Platforms/BotSharp.Plugin.HuggingFace/HuggingChat/ViewModels/ChatInput.cs b/src/Plugins/BotSharp.Plugin.HuggingFace/HuggingChat/ViewModels/ChatInput.cs similarity index 77% rename from src/Plugins/Platforms/BotSharp.Plugin.HuggingFace/HuggingChat/ViewModels/ChatInput.cs rename to src/Plugins/BotSharp.Plugin.HuggingFace/HuggingChat/ViewModels/ChatInput.cs index ec4be48b..79f792d6 100644 --- a/src/Plugins/Platforms/BotSharp.Plugin.HuggingFace/HuggingChat/ViewModels/ChatInput.cs +++ b/src/Plugins/BotSharp.Plugin.HuggingFace/HuggingChat/ViewModels/ChatInput.cs @@ -3,4 +3,5 @@ namespace BotSharp.Plugin.HuggingFace.HuggingChat.ViewModels; public class ChatInput { public string Inputs { get; set; } + public bool Stream { get; set; } } diff --git a/src/Plugins/Platforms/BotSharp.Plugin.HuggingFace/HuggingChat/ViewModels/ChatResponse.cs b/src/Plugins/BotSharp.Plugin.HuggingFace/HuggingChat/ViewModels/ChatResponse.cs similarity index 85% rename from src/Plugins/Platforms/BotSharp.Plugin.HuggingFace/HuggingChat/ViewModels/ChatResponse.cs rename to src/Plugins/BotSharp.Plugin.HuggingFace/HuggingChat/ViewModels/ChatResponse.cs index 97291918..852041a2 100644 --- a/src/Plugins/Platforms/BotSharp.Plugin.HuggingFace/HuggingChat/ViewModels/ChatResponse.cs +++ b/src/Plugins/BotSharp.Plugin.HuggingFace/HuggingChat/ViewModels/ChatResponse.cs @@ -1,4 +1,5 @@ using BotSharp.Abstraction.TextGeneratives; +using Newtonsoft.Json; using System.Text.Json.Serialization; namespace BotSharp.Plugin.HuggingFace.HuggingChat.ViewModels; @@ -7,6 +8,7 @@ public class ChatResponse { public TextToken Token { get; set; } [JsonPropertyName("generated_text")] + [JsonProperty("generated_text")] public string GeneratedText { get; set; } public string Details { get; set; } } diff --git a/src/Plugins/Platforms/BotSharp.Plugin.HuggingFace/HuggingChat/ViewModels/ConversationCreationModel.cs b/src/Plugins/BotSharp.Plugin.HuggingFace/HuggingChat/ViewModels/ConversationCreationModel.cs similarity index 100% rename from src/Plugins/Platforms/BotSharp.Plugin.HuggingFace/HuggingChat/ViewModels/ConversationCreationModel.cs rename to src/Plugins/BotSharp.Plugin.HuggingFace/HuggingChat/ViewModels/ConversationCreationModel.cs diff --git a/src/Plugins/Platforms/BotSharp.Plugin.HuggingFace/HuggingChat/ViewModels/ConversationViewModel.cs b/src/Plugins/BotSharp.Plugin.HuggingFace/HuggingChat/ViewModels/ConversationViewModel.cs similarity index 100% rename from src/Plugins/Platforms/BotSharp.Plugin.HuggingFace/HuggingChat/ViewModels/ConversationViewModel.cs rename to src/Plugins/BotSharp.Plugin.HuggingFace/HuggingChat/ViewModels/ConversationViewModel.cs diff --git a/src/Plugins/Platforms/BotSharp.Plugin.HuggingFace/HuggingChat/HuggingChatController.cs b/src/Plugins/Platforms/BotSharp.Plugin.HuggingFace/HuggingChat/HuggingChatController.cs deleted file mode 100644 index b77e429a..00000000 --- a/src/Plugins/Platforms/BotSharp.Plugin.HuggingFace/HuggingChat/HuggingChatController.cs +++ /dev/null @@ -1,61 +0,0 @@ -using BotSharp.Abstraction; -using BotSharp.Abstraction.ApiAdapters; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Net.Http.Headers; -using Newtonsoft.Json.Serialization; -using Newtonsoft.Json; -using System; -using System.Text; -using System.Threading.Tasks; -using BotSharp.Plugin.HuggingFace.HuggingChat.ViewModels; - -namespace BotSharp.Plugin.HuggingFace.HuggingChat; - -public class HuggingChatController : ControllerBase, IApiAdapter -{ - private readonly IPlatformMidware _platform; - public HuggingChatController(IPlatformMidware platform) - { - _platform = platform; - } - - [HttpPost("/conversation")] - public async Task NewSession([FromBody] ConversationCreationModel conversationCreationModel) - { - var session = await _platform.SessionService.NewSession("anonymous"); - return new ConversationViewModel - { - ConversationId = session.SessionId - }; - } - - [HttpPost("/conversation/{id}/summarize")] - public string SummarizeTitle([FromRoute] string id) - { - return "SummarizeTitle"; - } - - [HttpPost("/models/OpenAssistant/{model}")] - public async Task SendMessage([FromRoute] string model, [FromBody] ChatInput message) - { - Response.StatusCode = 200; - Response.Headers.Add(HeaderNames.ContentType, "text/event-stream"); - Response.Headers.Add(HeaderNames.CacheControl, "no-cache"); - Response.Headers.Add(HeaderNames.Connection, "keep-alive"); - var outputStream = Response.Body; - - var response = new ChatResponse - { - - }; - - var json = JsonConvert.SerializeObject(response, new JsonSerializerSettings - { - Formatting = Formatting.None, - ContractResolver = new CamelCasePropertyNamesContractResolver() - }); - - var buffer = Encoding.UTF8.GetBytes(json); - await outputStream.WriteAsync(buffer, 0, buffer.Length); - } -} diff --git a/src/WebStarter/WebStarter.csproj b/src/WebStarter/WebStarter.csproj index cdbe052c..fd6006b0 100644 --- a/src/WebStarter/WebStarter.csproj +++ b/src/WebStarter/WebStarter.csproj @@ -27,11 +27,9 @@ - - - - - + + +