From fa7e387ae983a070dd68be5c3424e8ed27a1f8a1 Mon Sep 17 00:00:00 2001 From: Jicheng Lu <103353@smsassist.com> Date: Wed, 17 Jul 2024 21:41:25 -0500 Subject: [PATCH] move generate image to file handler --- .../Agents/Enums/AgentUtility.cs | 7 --- .../BotSharp.Core/BotSharp.Core.csproj | 10 +--- .../BotSharp.Core/Files/FilePlugin.cs | 4 -- .../Files/Hooks/ImageGeneratorHook.cs | 52 ------------------- .../Files/Hooks/ImageGeneratorUtilityHook.cs | 9 ---- .../BotSharp.Plugin.EmailHandler.csproj | 6 +-- .../Functions/HandleEmailRequestFn.cs | 2 +- ...liquid => select_attachment_prompt.liquid} | 0 .../BotSharp.Plugin.FileHandler.csproj | 8 +++ .../Enums/UtilityName.cs | 1 + .../Functions/GenerateImageFn.cs | 4 +- .../Hooks/FileHandlerHook.cs | 2 + .../Hooks/FileHandlerUtilityHook.cs | 1 + .../functions/generate_image.json | 0 .../templates/generate_image.fn.liquid | 0 15 files changed, 18 insertions(+), 88 deletions(-) delete mode 100644 src/Infrastructure/BotSharp.Abstraction/Agents/Enums/AgentUtility.cs delete mode 100644 src/Infrastructure/BotSharp.Core/Files/Hooks/ImageGeneratorHook.cs delete mode 100644 src/Infrastructure/BotSharp.Core/Files/Hooks/ImageGeneratorUtilityHook.cs rename src/Plugins/BotSharp.Plugin.EmailHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/{email_attachment_prompt.liquid => select_attachment_prompt.liquid} (100%) rename src/{Infrastructure/BotSharp.Core/Files => Plugins/BotSharp.Plugin.FileHandler}/Functions/GenerateImageFn.cs (97%) rename src/{Infrastructure/BotSharp.Core => Plugins/BotSharp.Plugin.FileHandler}/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/generate_image.json (100%) rename src/{Infrastructure/BotSharp.Core => Plugins/BotSharp.Plugin.FileHandler}/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/generate_image.fn.liquid (100%) diff --git a/src/Infrastructure/BotSharp.Abstraction/Agents/Enums/AgentUtility.cs b/src/Infrastructure/BotSharp.Abstraction/Agents/Enums/AgentUtility.cs deleted file mode 100644 index 4f477563..00000000 --- a/src/Infrastructure/BotSharp.Abstraction/Agents/Enums/AgentUtility.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace BotSharp.Abstraction.Agents.Enums; - -public class AgentUtility -{ - public const string FileReader = "file-reader"; - public const string ImageGenerator = "image-generator"; -} diff --git a/src/Infrastructure/BotSharp.Core/BotSharp.Core.csproj b/src/Infrastructure/BotSharp.Core/BotSharp.Core.csproj index 009cad30..5fd9bc4c 100644 --- a/src/Infrastructure/BotSharp.Core/BotSharp.Core.csproj +++ b/src/Infrastructure/BotSharp.Core/BotSharp.Core.csproj @@ -1,4 +1,4 @@ - + $(TargetFramework) @@ -47,9 +47,7 @@ - - @@ -157,12 +155,6 @@ PreserveNewest - - PreserveNewest - - - PreserveNewest - PreserveNewest diff --git a/src/Infrastructure/BotSharp.Core/Files/FilePlugin.cs b/src/Infrastructure/BotSharp.Core/Files/FilePlugin.cs index 17630f20..a4c7f7af 100644 --- a/src/Infrastructure/BotSharp.Core/Files/FilePlugin.cs +++ b/src/Infrastructure/BotSharp.Core/Files/FilePlugin.cs @@ -1,4 +1,3 @@ -using BotSharp.Core.Files.Hooks; using BotSharp.Core.Files.Services; using Microsoft.Extensions.Configuration; @@ -16,8 +15,5 @@ public class FilePlugin : IBotSharpPlugin public void RegisterDI(IServiceCollection services, IConfiguration config) { services.AddScoped(); - - services.AddScoped(); - services.AddScoped(); } } diff --git a/src/Infrastructure/BotSharp.Core/Files/Hooks/ImageGeneratorHook.cs b/src/Infrastructure/BotSharp.Core/Files/Hooks/ImageGeneratorHook.cs deleted file mode 100644 index dadba673..00000000 --- a/src/Infrastructure/BotSharp.Core/Files/Hooks/ImageGeneratorHook.cs +++ /dev/null @@ -1,52 +0,0 @@ -namespace BotSharp.Core.Files.Hooks; - -public class ImageGeneratorHook : AgentHookBase -{ - private static string FUNCTION_NAME = "generate_image"; - - public override string SelfId => string.Empty; - - public ImageGeneratorHook(IServiceProvider services, AgentSettings settings) - : base(services, settings) - { - } - - public override void OnAgentLoaded(Agent agent) - { - var conv = _services.GetRequiredService(); - var isConvMode = conv.IsConversationMode(); - var isEnabled = !agent.Utilities.IsNullOrEmpty() && agent.Utilities.Contains(AgentUtility.ImageGenerator); - - if (isConvMode && isEnabled) - { - var (prompt, fn) = GetPromptAndFunction(); - if (fn != null) - { - if (!string.IsNullOrWhiteSpace(prompt)) - { - agent.Instruction += $"\r\n\r\n{prompt}\r\n\r\n"; - } - - if (agent.Functions == null) - { - agent.Functions = new List { fn }; - } - else - { - agent.Functions.Add(fn); - } - } - } - - base.OnAgentLoaded(agent); - } - - private (string, FunctionDef?) GetPromptAndFunction() - { - var db = _services.GetRequiredService(); - var agent = db.GetAgent(BuiltInAgentId.UtilityAssistant); - var prompt = agent?.Templates?.FirstOrDefault(x => x.Name.IsEqualTo($"{FUNCTION_NAME}.fn"))?.Content ?? string.Empty; - var loadAttachmentFn = agent?.Functions?.FirstOrDefault(x => x.Name.IsEqualTo(FUNCTION_NAME)); - return (prompt, loadAttachmentFn); - } -} diff --git a/src/Infrastructure/BotSharp.Core/Files/Hooks/ImageGeneratorUtilityHook.cs b/src/Infrastructure/BotSharp.Core/Files/Hooks/ImageGeneratorUtilityHook.cs deleted file mode 100644 index a7fdbb51..00000000 --- a/src/Infrastructure/BotSharp.Core/Files/Hooks/ImageGeneratorUtilityHook.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace BotSharp.Core.Files.Hooks; - -internal class ImageGeneratorUtilityHook : IAgentUtilityHook -{ - public void AddUtilities(List utilities) - { - utilities.Add(AgentUtility.ImageGenerator); - } -} \ No newline at end of file diff --git a/src/Plugins/BotSharp.Plugin.EmailHandler/BotSharp.Plugin.EmailHandler.csproj b/src/Plugins/BotSharp.Plugin.EmailHandler/BotSharp.Plugin.EmailHandler.csproj index d577a232..24d28331 100644 --- a/src/Plugins/BotSharp.Plugin.EmailHandler/BotSharp.Plugin.EmailHandler.csproj +++ b/src/Plugins/BotSharp.Plugin.EmailHandler/BotSharp.Plugin.EmailHandler.csproj @@ -1,4 +1,4 @@ - + $(TargetFramework) @@ -12,8 +12,8 @@ - + @@ -23,7 +23,7 @@ PreserveNewest - + PreserveNewest diff --git a/src/Plugins/BotSharp.Plugin.EmailHandler/Functions/HandleEmailRequestFn.cs b/src/Plugins/BotSharp.Plugin.EmailHandler/Functions/HandleEmailRequestFn.cs index 984732a9..388860c1 100644 --- a/src/Plugins/BotSharp.Plugin.EmailHandler/Functions/HandleEmailRequestFn.cs +++ b/src/Plugins/BotSharp.Plugin.EmailHandler/Functions/HandleEmailRequestFn.cs @@ -96,7 +96,7 @@ public class HandleEmailRequestFn : IFunctionCallback { return $"id: {idx + 1}, file_name: {x.FileName}.{x.FileType}, content_type: {x.ContentType}"; }).ToList(); - var prompt = db.GetAgentTemplate(BuiltInAgentId.UtilityAssistant, "email_attachment_prompt"); + var prompt = db.GetAgentTemplate(BuiltInAgentId.UtilityAssistant, "select_attachment_prompt"); prompt = render.Render(prompt, new Dictionary { { "file_list", promptFiles } diff --git a/src/Plugins/BotSharp.Plugin.EmailHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/email_attachment_prompt.liquid b/src/Plugins/BotSharp.Plugin.EmailHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/select_attachment_prompt.liquid similarity index 100% rename from src/Plugins/BotSharp.Plugin.EmailHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/email_attachment_prompt.liquid rename to src/Plugins/BotSharp.Plugin.EmailHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/select_attachment_prompt.liquid diff --git a/src/Plugins/BotSharp.Plugin.FileHandler/BotSharp.Plugin.FileHandler.csproj b/src/Plugins/BotSharp.Plugin.FileHandler/BotSharp.Plugin.FileHandler.csproj index 035992cf..f5b5ef1b 100644 --- a/src/Plugins/BotSharp.Plugin.FileHandler/BotSharp.Plugin.FileHandler.csproj +++ b/src/Plugins/BotSharp.Plugin.FileHandler/BotSharp.Plugin.FileHandler.csproj @@ -11,16 +11,24 @@ + + + + PreserveNewest + PreserveNewest + + PreserveNewest + PreserveNewest diff --git a/src/Plugins/BotSharp.Plugin.FileHandler/Enums/UtilityName.cs b/src/Plugins/BotSharp.Plugin.FileHandler/Enums/UtilityName.cs index f28bc9a6..afa34a02 100644 --- a/src/Plugins/BotSharp.Plugin.FileHandler/Enums/UtilityName.cs +++ b/src/Plugins/BotSharp.Plugin.FileHandler/Enums/UtilityName.cs @@ -2,6 +2,7 @@ namespace BotSharp.Plugin.FileHandler.Enums; public class UtilityName { + public const string ImageGenerator = "image-generator"; public const string ImageReader = "image-reader"; public const string PdfReader = "pdf-reader"; } diff --git a/src/Infrastructure/BotSharp.Core/Files/Functions/GenerateImageFn.cs b/src/Plugins/BotSharp.Plugin.FileHandler/Functions/GenerateImageFn.cs similarity index 97% rename from src/Infrastructure/BotSharp.Core/Files/Functions/GenerateImageFn.cs rename to src/Plugins/BotSharp.Plugin.FileHandler/Functions/GenerateImageFn.cs index c1e816e3..8f24e98d 100644 --- a/src/Infrastructure/BotSharp.Core/Files/Functions/GenerateImageFn.cs +++ b/src/Plugins/BotSharp.Plugin.FileHandler/Functions/GenerateImageFn.cs @@ -1,6 +1,4 @@ -using BotSharp.Abstraction.Functions; - -namespace BotSharp.Core.Files.Functions; +namespace BotSharp.Plugin.FileHandler.Functions; public class GenerateImageFn : IFunctionCallback { diff --git a/src/Plugins/BotSharp.Plugin.FileHandler/Hooks/FileHandlerHook.cs b/src/Plugins/BotSharp.Plugin.FileHandler/Hooks/FileHandlerHook.cs index 025e53ef..2bdcdee5 100644 --- a/src/Plugins/BotSharp.Plugin.FileHandler/Hooks/FileHandlerHook.cs +++ b/src/Plugins/BotSharp.Plugin.FileHandler/Hooks/FileHandlerHook.cs @@ -4,6 +4,7 @@ public class FileHandlerHook : AgentHookBase, IAgentHook { private const string READ_IMAGE_FN = "read_image"; private const string READ_PDF_FN = "read_pdf"; + private const string GENERATE_IMAGE_FN = "generate_image"; public override string SelfId => string.Empty; @@ -20,6 +21,7 @@ public class FileHandlerHook : AgentHookBase, IAgentHook { AddUtility(agent, UtilityName.ImageReader, READ_IMAGE_FN); AddUtility(agent, UtilityName.PdfReader, READ_PDF_FN); + AddUtility(agent, UtilityName.ImageGenerator, GENERATE_IMAGE_FN); } base.OnAgentLoaded(agent); diff --git a/src/Plugins/BotSharp.Plugin.FileHandler/Hooks/FileHandlerUtilityHook.cs b/src/Plugins/BotSharp.Plugin.FileHandler/Hooks/FileHandlerUtilityHook.cs index f5ef469e..7bfa1ce2 100644 --- a/src/Plugins/BotSharp.Plugin.FileHandler/Hooks/FileHandlerUtilityHook.cs +++ b/src/Plugins/BotSharp.Plugin.FileHandler/Hooks/FileHandlerUtilityHook.cs @@ -6,5 +6,6 @@ public class FileHandlerUtilityHook : IAgentUtilityHook { utilities.Add(UtilityName.ImageReader); utilities.Add(UtilityName.PdfReader); + utilities.Add(UtilityName.ImageGenerator); } } diff --git a/src/Infrastructure/BotSharp.Core/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/generate_image.json b/src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/generate_image.json similarity index 100% rename from src/Infrastructure/BotSharp.Core/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/generate_image.json rename to src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/generate_image.json diff --git a/src/Infrastructure/BotSharp.Core/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/generate_image.fn.liquid b/src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/generate_image.fn.liquid similarity index 100% rename from src/Infrastructure/BotSharp.Core/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/generate_image.fn.liquid rename to src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/generate_image.fn.liquid