diff --git a/BotSharp.sln b/BotSharp.sln
index 31ce5133e..78db00ed4 100644
--- a/BotSharp.sln
+++ b/BotSharp.sln
@@ -125,6 +125,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BotSharp.Core.Rules", "src\
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BotSharp.Plugin.DeepSeekAI", "src\Plugins\BotSharp.Plugin.DeepSeekAI\BotSharp.Plugin.DeepSeekAI.csproj", "{AF329442-B48E-4B48-A18A-1C869D1BA6F5}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BotSharp.Plugin.MiniMaxAI", "src\Plugins\BotSharp.Plugin.MiniMaxAI\BotSharp.Plugin.MiniMaxAI.csproj", "{D92C1A49-3F64-4D0C-91C0-B14EA47D2503}"
+EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BotSharp.Core.Realtime", "src\Infrastructure\BotSharp.Core.Realtime\BotSharp.Core.Realtime.csproj", "{781F1465-365C-0F22-1775-25025DAFA4C7}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BotSharp.Test.ComputerUse", "tests\BotSharp.Test.ComputerUse\BotSharp.Test.ComputerUse.csproj", "{C19D9AC1-97DD-8E65-E8DB-D295A095AA2D}"
@@ -737,6 +739,18 @@ Global
{AF329442-B48E-4B48-A18A-1C869D1BA6F5}.Release|x64.Build.0 = Release|Any CPU
{AF329442-B48E-4B48-A18A-1C869D1BA6F5}.Release|x86.ActiveCfg = Release|Any CPU
{AF329442-B48E-4B48-A18A-1C869D1BA6F5}.Release|x86.Build.0 = Release|Any CPU
+ {D92C1A49-3F64-4D0C-91C0-B14EA47D2503}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D92C1A49-3F64-4D0C-91C0-B14EA47D2503}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D92C1A49-3F64-4D0C-91C0-B14EA47D2503}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {D92C1A49-3F64-4D0C-91C0-B14EA47D2503}.Debug|x64.Build.0 = Debug|Any CPU
+ {D92C1A49-3F64-4D0C-91C0-B14EA47D2503}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {D92C1A49-3F64-4D0C-91C0-B14EA47D2503}.Debug|x86.Build.0 = Debug|Any CPU
+ {D92C1A49-3F64-4D0C-91C0-B14EA47D2503}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D92C1A49-3F64-4D0C-91C0-B14EA47D2503}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D92C1A49-3F64-4D0C-91C0-B14EA47D2503}.Release|x64.ActiveCfg = Release|Any CPU
+ {D92C1A49-3F64-4D0C-91C0-B14EA47D2503}.Release|x64.Build.0 = Release|Any CPU
+ {D92C1A49-3F64-4D0C-91C0-B14EA47D2503}.Release|x86.ActiveCfg = Release|Any CPU
+ {D92C1A49-3F64-4D0C-91C0-B14EA47D2503}.Release|x86.Build.0 = Release|Any CPU
{781F1465-365C-0F22-1775-25025DAFA4C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{781F1465-365C-0F22-1775-25025DAFA4C7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{781F1465-365C-0F22-1775-25025DAFA4C7}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -1001,6 +1015,7 @@ Global
{F812BAAE-5A7D-4DF7-8E71-70696B51C61F} = {E29DC6C4-5E57-48C5-BCB0-6B8F84782749}
{AFD64412-4D6A-452E-82A2-79E5D8842E29} = {E29DC6C4-5E57-48C5-BCB0-6B8F84782749}
{AF329442-B48E-4B48-A18A-1C869D1BA6F5} = {D5293208-2BEF-42FC-A64C-5954F61720BA}
+ {D92C1A49-3F64-4D0C-91C0-B14EA47D2503} = {D5293208-2BEF-42FC-A64C-5954F61720BA}
{781F1465-365C-0F22-1775-25025DAFA4C7} = {E29DC6C4-5E57-48C5-BCB0-6B8F84782749}
{C19D9AC1-97DD-8E65-E8DB-D295A095AA2D} = {32FAFFFE-A4CB-4FEE-BF7C-84518BBC6DCC}
{B268E2F0-060F-8466-7D81-ABA4D735CA59} = {51AFE054-AE99-497D-A593-69BAEFB5106F}
diff --git a/src/Plugins/BotSharp.Plugin.MiniMaxAI/BotSharp.Plugin.MiniMaxAI.csproj b/src/Plugins/BotSharp.Plugin.MiniMaxAI/BotSharp.Plugin.MiniMaxAI.csproj
new file mode 100644
index 000000000..4f3e17b8a
--- /dev/null
+++ b/src/Plugins/BotSharp.Plugin.MiniMaxAI/BotSharp.Plugin.MiniMaxAI.csproj
@@ -0,0 +1,17 @@
+
+
+
+ $(TargetFramework)
+ enable
+ $(LangVersion)
+ $(BotSharpVersion)
+ $(GeneratePackageOnBuild)
+ $(GenerateDocumentationFile)
+ $(SolutionDir)packages
+
+
+
+
+
+
+
diff --git a/src/Plugins/BotSharp.Plugin.MiniMaxAI/MiniMaxAiPlugin.cs b/src/Plugins/BotSharp.Plugin.MiniMaxAI/MiniMaxAiPlugin.cs
new file mode 100644
index 000000000..0cc18ceb3
--- /dev/null
+++ b/src/Plugins/BotSharp.Plugin.MiniMaxAI/MiniMaxAiPlugin.cs
@@ -0,0 +1,18 @@
+using BotSharp.Plugin.MiniMaxAI.Providers.Chat;
+using BotSharp.Plugin.MiniMaxAI.Providers.Text;
+
+namespace BotSharp.Plugin.MiniMaxAI;
+
+public class MiniMaxAiPlugin : IBotSharpPlugin
+{
+ public string Id => "8a4ebd68-4d7d-4c5c-aed9-263946cc3a0d";
+ public string Name => "MiniMax";
+ public string Description => "MiniMax AI models exposed through the OpenAI-compatible API.";
+ public string IconUrl => "https://www.minimax.io/favicon.ico";
+
+ public void RegisterDI(IServiceCollection services, IConfiguration config)
+ {
+ services.AddScoped();
+ services.AddScoped();
+ }
+}
diff --git a/src/Plugins/BotSharp.Plugin.MiniMaxAI/Providers/Chat/ChatCompletionProvider.cs b/src/Plugins/BotSharp.Plugin.MiniMaxAI/Providers/Chat/ChatCompletionProvider.cs
new file mode 100644
index 000000000..3dc603b77
--- /dev/null
+++ b/src/Plugins/BotSharp.Plugin.MiniMaxAI/Providers/Chat/ChatCompletionProvider.cs
@@ -0,0 +1,15 @@
+namespace BotSharp.Plugin.MiniMaxAI.Providers.Chat;
+
+public class ChatCompletionProvider : global::BotSharp.Plugin.OpenAI.Providers.Chat.ChatCompletionProvider
+{
+ public override string Provider => "minimax";
+
+ public ChatCompletionProvider(
+ global::BotSharp.Plugin.OpenAI.Settings.OpenAiSettings settings,
+ ILogger logger,
+ IServiceProvider services,
+ IConversationStateService state,
+ IFileStorageService fileStorage) : base(settings, logger, services, state, fileStorage)
+ {
+ }
+}
diff --git a/src/Plugins/BotSharp.Plugin.MiniMaxAI/Providers/Text/TextCompletionProvider.cs b/src/Plugins/BotSharp.Plugin.MiniMaxAI/Providers/Text/TextCompletionProvider.cs
new file mode 100644
index 000000000..1f94a1ba9
--- /dev/null
+++ b/src/Plugins/BotSharp.Plugin.MiniMaxAI/Providers/Text/TextCompletionProvider.cs
@@ -0,0 +1,13 @@
+namespace BotSharp.Plugin.MiniMaxAI.Providers.Text;
+
+public class TextCompletionProvider : global::BotSharp.Plugin.OpenAI.Providers.Text.TextCompletionProvider
+{
+ public override string Provider => "minimax";
+
+ public TextCompletionProvider(
+ global::BotSharp.Plugin.OpenAI.Settings.OpenAiSettings settings,
+ ILogger logger,
+ IServiceProvider services) : base(settings, logger, services)
+ {
+ }
+}
diff --git a/src/Plugins/BotSharp.Plugin.MiniMaxAI/Using.cs b/src/Plugins/BotSharp.Plugin.MiniMaxAI/Using.cs
new file mode 100644
index 000000000..06ffb04fd
--- /dev/null
+++ b/src/Plugins/BotSharp.Plugin.MiniMaxAI/Using.cs
@@ -0,0 +1,8 @@
+global using Microsoft.Extensions.Configuration;
+global using Microsoft.Extensions.DependencyInjection;
+global using Microsoft.Extensions.Logging;
+
+global using BotSharp.Abstraction.Conversations;
+global using BotSharp.Abstraction.Files;
+global using BotSharp.Abstraction.MLTasks;
+global using BotSharp.Abstraction.Plugins;
diff --git a/src/WebStarter/WebStarter.csproj b/src/WebStarter/WebStarter.csproj
index 11cba27bc..6f7129e45 100644
--- a/src/WebStarter/WebStarter.csproj
+++ b/src/WebStarter/WebStarter.csproj
@@ -62,6 +62,7 @@
+
diff --git a/src/WebStarter/appsettings.json b/src/WebStarter/appsettings.json
index 7688d81ea..79bbe9521 100644
--- a/src/WebStarter/appsettings.json
+++ b/src/WebStarter/appsettings.json
@@ -594,6 +594,30 @@
}
]
},
+ {
+ "Provider": "minimax",
+ "Models": [
+ {
+ "Id": "MiniMax-M3",
+ "Name": "MiniMax-M3",
+ "Version": "MiniMax-M3",
+ "ApiKey": "",
+ "Endpoint": "https://api.minimax.io/v1",
+ "Type": "chat",
+ "Capabilities": [
+ "Chat"
+ ],
+ "Cost": {
+ "TextInputCost": 0.0006,
+ "CachedTextInputCost": 0.00012,
+ "AudioInputCost": 0,
+ "CachedAudioInputCost": 0,
+ "TextOutputCost": 0.0024,
+ "AudioOutputCost": 0
+ }
+ }
+ ]
+ },
{
"Provider": "google-ai",
"Models": [
@@ -1056,6 +1080,7 @@
"BotSharp.Plugin.GoogleAI",
"BotSharp.Plugin.MetaAI",
"BotSharp.Plugin.DeepSeekAI",
+ "BotSharp.Plugin.MiniMaxAI",
"BotSharp.Plugin.MetaMessenger",
"BotSharp.Plugin.HuggingFace",
"BotSharp.Plugin.KnowledgeBase",