From 19e16ff4fe7ac099a459d3d253b5a96be852effe Mon Sep 17 00:00:00 2001 From: Jicheng Lu Date: Wed, 28 May 2025 08:59:29 -0500 Subject: [PATCH] temp save --- .../BotSharp.Abstraction/Files/Utilities/FileUtility.cs | 4 ++-- .../BotSharp.OpenAPI/Controllers/InstructModeController.cs | 3 ++- .../Providers/Chat/ChatCompletionProvider.cs | 3 ++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/Infrastructure/BotSharp.Abstraction/Files/Utilities/FileUtility.cs b/src/Infrastructure/BotSharp.Abstraction/Files/Utilities/FileUtility.cs index d7867cf6..9dc67fd5 100644 --- a/src/Infrastructure/BotSharp.Abstraction/Files/Utilities/FileUtility.cs +++ b/src/Infrastructure/BotSharp.Abstraction/Files/Utilities/FileUtility.cs @@ -20,7 +20,7 @@ public static class FileUtility if (!data.StartsWith("data:")) { - return (null, BinaryData.FromString(data)); + return (null, BinaryData.FromBytes(Convert.FromBase64String(data))); } var typeStartIdx = data.IndexOf(':'); @@ -30,7 +30,7 @@ public static class FileUtility var base64startIdx = data.IndexOf(','); var base64Str = data.Substring(base64startIdx + 1); - return (contentType, BinaryData.FromString(base64Str)); + return (contentType, BinaryData.FromBytes(Convert.FromBase64String(base64Str))); } public static string BuildFileDataFromFile(string fileName, BinaryData binary) diff --git a/src/Infrastructure/BotSharp.OpenAPI/Controllers/InstructModeController.cs b/src/Infrastructure/BotSharp.OpenAPI/Controllers/InstructModeController.cs index d7f31549..d12450cd 100644 --- a/src/Infrastructure/BotSharp.OpenAPI/Controllers/InstructModeController.cs +++ b/src/Infrastructure/BotSharp.OpenAPI/Controllers/InstructModeController.cs @@ -141,7 +141,8 @@ public class InstructModeController : ControllerBase } [HttpPost("/instruct/multi-modal/upload")] - public async Task MultiModalCompletion([FromForm] IEnumerable files, [FromForm] MultiModalRequest request) + public async Task MultiModalCompletion([FromForm] IEnumerable files, [FromForm] MultiModalRequest request, + [FromForm] List? states = null, [FromForm] List? list = null) { var state = _services.GetRequiredService(); request?.States?.ForEach(x => state.SetState(x.Key, x.Value, activeRounds: x.ActiveRounds, source: StateSource.External)); diff --git a/src/Plugins/BotSharp.Plugin.OpenAI/Providers/Chat/ChatCompletionProvider.cs b/src/Plugins/BotSharp.Plugin.OpenAI/Providers/Chat/ChatCompletionProvider.cs index d4082393..548f1eda 100644 --- a/src/Plugins/BotSharp.Plugin.OpenAI/Providers/Chat/ChatCompletionProvider.cs +++ b/src/Plugins/BotSharp.Plugin.OpenAI/Providers/Chat/ChatCompletionProvider.cs @@ -1,5 +1,6 @@ using BotSharp.Abstraction.Hooks; using OpenAI.Chat; +using static System.Runtime.InteropServices.JavaScript.JSType; namespace BotSharp.Plugin.OpenAI.Providers.Chat; @@ -289,7 +290,7 @@ public class ChatCompletionProvider : IChatCompletion if (!string.IsNullOrEmpty(file.FileData)) { var (contentType, binary) = FileUtility.GetFileInfoFromData(file.FileData); - var contentPart = ChatMessageContentPart.CreateImagePart(BinaryData.FromBytes(binary.ToArray()), contentType, ChatImageDetailLevel.Auto); + var contentPart = ChatMessageContentPart.CreateImagePart(binary, contentType, ChatImageDetailLevel.Auto); contentParts.Add(contentPart); } else if (!string.IsNullOrEmpty(file.FileStorageUrl))