From 8b7f80488bc68192c4aecdd561cabc1fd7dd89d0 Mon Sep 17 00:00:00 2001 From: Jicheng Lu <103353@smsassist.com> Date: Wed, 4 Dec 2024 16:12:02 -0600 Subject: [PATCH] refine utility name --- .../Agents/AgentHookBase.cs | 5 +- .../BotSharp.Plugin.AudioHandler.csproj | 8 +- .../Enums/UtilityName.cs | 2 +- .../Functions/HandleAudioRequestFn.cs | 2 +- .../Hooks/AudioHandlerUtilityHook.cs | 3 +- ...n => util-audio-handle_audio_request.json} | 2 +- .../templates/handle_audio_request.fn.liquid | 1 - .../util-audio-handle_audio_request.fn.liquid | 1 + .../BotSharp.Plugin.EmailHandler.csproj | 17 +- .../Enums/UtilityName.cs | 13 +- .../Functions/HandleEmailReaderFn.cs | 2 +- .../Functions/HandleEmailSenderFn.cs | 2 +- .../Hooks/EmailHandlerUtilityHook.cs | 5 +- ...on => util-email-handle_email_reader.json} | 2 +- ...on => util-email-handle_email_sender.json} | 2 +- .../templates/handle_email_reader.fn.liquid | 1 - .../util-email-handle_email_reader.fn.liquid | 1 + ... util-email-handle_email_sender.fn.liquid} | 2 +- .../BotSharp.Plugin.ExcelHandler.csproj | 8 +- .../Enums/UtilityName.cs | 2 +- .../Functions/HandleExcelRequestFn.cs | 3 +- .../Hooks/ExcelHandlerUtilityHook.cs | 3 +- ...n => util-excel-handle_excel_request.json} | 2 +- .../templates/handle_excel_request.fn.liquid | 2 - .../util-excel-handle_excel_request.fn.liquid | 2 + .../BotSharp.Plugin.FileHandler.csproj | 35 ++-- .../Enums/UtilityName.cs | 8 +- .../Functions/EditImageFn.cs | 2 +- .../Functions/GenerateImageFn.cs | 2 +- .../Functions/ReadImageFn.cs | 2 +- .../Functions/ReadPdfFn.cs | 2 +- .../Hooks/FileHandlerUtilityHook.cs | 8 +- .../functions/read_image.json | 14 -- ...t_image.json => util-file-edit_image.json} | 2 +- ...age.json => util-file-generate_image.json} | 2 +- .../functions/util-file-read_image.json | 14 ++ ...{read_pdf.json => util-file-read_pdf.json} | 2 +- .../templates/edit_image.fn.liquid | 1 - .../templates/generate_image.fn.liquid | 2 - .../templates/read_image.fn.liquid | 1 - .../templates/read_pdf.fn.liquid | 1 - .../templates/util-file-edit_image.fn.liquid | 1 + .../util-file-generate_image.fn.liquid | 2 + .../templates/util-file-read_image.fn.liquid | 1 + .../templates/util-file-read_pdf.fn.liquid | 1 + .../BotSharp.Plugin.HttpHandler.csproj | 8 +- .../Enums/UtilityName.cs | 2 +- .../Functions/HandleHttpRequestFn.cs | 2 +- .../Hooks/HttpHandlerUtilityHook.cs | 3 +- ...son => util-http-handle_http_request.json} | 2 +- .../templates/handle_http_request.fn.liquid | 1 - .../util-http-handle_http_request.fn.liquid | 1 + .../BotSharp.Plugin.KnowledgeBase.csproj | 9 +- .../Enum/UtilityName.cs | 2 +- .../Functions/KnowledgeRetrievalFn.cs | 2 +- .../Hooks/KnowledgeBaseUtilityHook.cs | 3 +- ...> util-knowledge-knowledge_retrieval.json} | 2 +- ...l-knowledge-knowledge_retrieval.fn.liquid} | 2 +- .../BotSharp.Plugin.Planner.csproj | 15 +- .../Enums/UtilityName.cs | 2 +- ...util-planner-plan_primary_stage.fn.liquid} | 0 ...il-planner-plan_secondary_stage.fn.liquid} | 0 ...id => util-planner-plan_summary.fn.liquid} | 0 .../BotSharp.Plugin.SqlDriver.csproj | 25 +-- .../Enum/UtilityName.cs | 6 +- .../Hooks/SqlUtilityHook.cs | 10 +- .../UtilFunctions/GetTableDefinitionFn.cs | 168 ++++++++++++++++++ .../UtilFunctions/SqlSelect.cs | 88 +++++++++ .../UtilFunctions/VerifyDictionaryTerm.cs | 130 ++++++++++++++ ...ql_select.json => util-db-sql_select.json} | 2 +- ...json => util-db-sql_table_definition.json} | 2 +- ...on => util-db-verify_dictionary_term.json} | 2 +- .../templates/sql_table_definition.fn.liquid | 1 - ....liquid => util-db-sql_executor.fn.liquid} | 2 +- .../util-db-sql_table_definition.fn.liquid | 1 + ... util-db-verify_dictionary_term.fn.liquid} | 2 +- .../BotSharp.Plugin.Twilio.csproj | 12 +- .../Enums/UtilityName.cs | 2 +- .../Functions/HandleOutboundPhoneCallFn.cs | 2 +- .../OutboundPhoneCallHandlerUtilityHook.cs | 5 +- ...il-twilio-twilio_outbound_phone_call.json} | 2 +- ...ilio-twilio_outbound_phone_call.fn.liquid} | 2 +- 82 files changed, 553 insertions(+), 163 deletions(-) rename src/Plugins/BotSharp.Plugin.AudioHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/{handle_audio_request.json => util-audio-handle_audio_request.json} (94%) delete mode 100644 src/Plugins/BotSharp.Plugin.AudioHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/handle_audio_request.fn.liquid create mode 100644 src/Plugins/BotSharp.Plugin.AudioHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-audio-handle_audio_request.fn.liquid rename src/Plugins/BotSharp.Plugin.EmailHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/{handle_email_reader.json => util-email-handle_email_reader.json} (95%) rename src/Plugins/BotSharp.Plugin.EmailHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/{handle_email_sender.json => util-email-handle_email_sender.json} (96%) delete mode 100644 src/Plugins/BotSharp.Plugin.EmailHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/handle_email_reader.fn.liquid create mode 100644 src/Plugins/BotSharp.Plugin.EmailHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-email-handle_email_reader.fn.liquid rename src/Plugins/BotSharp.Plugin.EmailHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/{handle_email_sender.fn.liquid => util-email-handle_email_sender.fn.liquid} (81%) rename src/Plugins/BotSharp.Plugin.ExcelHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/{handle_excel_request.json => util-excel-handle_excel_request.json} (95%) delete mode 100644 src/Plugins/BotSharp.Plugin.ExcelHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/handle_excel_request.fn.liquid create mode 100644 src/Plugins/BotSharp.Plugin.ExcelHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-excel-handle_excel_request.fn.liquid delete mode 100644 src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/read_image.json rename src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/{edit_image.json => util-file-edit_image.json} (92%) rename src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/{generate_image.json => util-file-generate_image.json} (90%) create mode 100644 src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-file-read_image.json rename src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/{read_pdf.json => util-file-read_pdf.json} (92%) delete mode 100644 src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/edit_image.fn.liquid delete mode 100644 src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/generate_image.fn.liquid delete mode 100644 src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/read_image.fn.liquid delete mode 100644 src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/read_pdf.fn.liquid create mode 100644 src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-file-edit_image.fn.liquid create mode 100644 src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-file-generate_image.fn.liquid create mode 100644 src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-file-read_image.fn.liquid create mode 100644 src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-file-read_pdf.fn.liquid rename src/Plugins/BotSharp.Plugin.HttpHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/{handle_http_request.json => util-http-handle_http_request.json} (95%) delete mode 100644 src/Plugins/BotSharp.Plugin.HttpHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/handle_http_request.fn.liquid create mode 100644 src/Plugins/BotSharp.Plugin.HttpHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-http-handle_http_request.fn.liquid rename src/Plugins/BotSharp.Plugin.KnowledgeBase/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/{knowledge_retrieval.json => util-knowledge-knowledge_retrieval.json} (86%) rename src/Plugins/BotSharp.Plugin.KnowledgeBase/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/{knowledge_retrieval.fn.liquid => util-knowledge-knowledge_retrieval.fn.liquid} (63%) rename src/Plugins/BotSharp.Plugin.Planner/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/{plan_primary_stage.fn.liquid => util-planner-plan_primary_stage.fn.liquid} (100%) rename src/Plugins/BotSharp.Plugin.Planner/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/{plan_secondary_stage.fn.liquid => util-planner-plan_secondary_stage.fn.liquid} (100%) rename src/Plugins/BotSharp.Plugin.Planner/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/{plan_summary.fn.liquid => util-planner-plan_summary.fn.liquid} (100%) create mode 100644 src/Plugins/BotSharp.Plugin.SqlDriver/UtilFunctions/GetTableDefinitionFn.cs create mode 100644 src/Plugins/BotSharp.Plugin.SqlDriver/UtilFunctions/SqlSelect.cs create mode 100644 src/Plugins/BotSharp.Plugin.SqlDriver/UtilFunctions/VerifyDictionaryTerm.cs rename src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/{sql_select.json => util-db-sql_select.json} (98%) rename src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/{sql_table_definition.json => util-db-sql_table_definition.json} (90%) rename src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/{verify_dictionary_term.json => util-db-verify_dictionary_term.json} (96%) delete mode 100644 src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/sql_table_definition.fn.liquid rename src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/{sql_executor.fn.liquid => util-db-sql_executor.fn.liquid} (78%) create mode 100644 src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-db-sql_table_definition.fn.liquid rename src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/{verify_dictionary_term.fn.liquid => util-db-verify_dictionary_term.fn.liquid} (92%) rename src/Plugins/BotSharp.Plugin.Twilio/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/{twilio_outbound_phone_call.json => util-twilio-twilio_outbound_phone_call.json} (92%) rename src/Plugins/BotSharp.Plugin.Twilio/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/{twilio_outbound_phone_call.fn.liquid => util-twilio-twilio_outbound_phone_call.fn.liquid} (51%) diff --git a/src/Infrastructure/BotSharp.Abstraction/Agents/AgentHookBase.cs b/src/Infrastructure/BotSharp.Abstraction/Agents/AgentHookBase.cs index 7759a4bf..867d9d78 100644 --- a/src/Infrastructure/BotSharp.Abstraction/Agents/AgentHookBase.cs +++ b/src/Infrastructure/BotSharp.Abstraction/Agents/AgentHookBase.cs @@ -116,13 +116,14 @@ public abstract class AgentHookBase : IAgentHook return ([], []); } + var prefix = "util-"; utilities = utilities?.Where(x => !string.IsNullOrEmpty(x.Name) && !x.Disabled)?.ToList() ?? []; var functionNames = utilities.SelectMany(x => x.Functions) - .Where(x => !string.IsNullOrEmpty(x.Name)) + .Where(x => !string.IsNullOrEmpty(x.Name) && x.Name.StartsWith(prefix)) .Select(x => x.Name) .Distinct().ToList(); var templateNames = utilities.SelectMany(x => x.Templates) - .Where(x => !string.IsNullOrEmpty(x.Name)) + .Where(x => !string.IsNullOrEmpty(x.Name) && x.Name.StartsWith(prefix)) .Select(x => x.Name) .Distinct().ToList(); diff --git a/src/Plugins/BotSharp.Plugin.AudioHandler/BotSharp.Plugin.AudioHandler.csproj b/src/Plugins/BotSharp.Plugin.AudioHandler/BotSharp.Plugin.AudioHandler.csproj index 4ae8c7d2..ace72c5c 100644 --- a/src/Plugins/BotSharp.Plugin.AudioHandler/BotSharp.Plugin.AudioHandler.csproj +++ b/src/Plugins/BotSharp.Plugin.AudioHandler/BotSharp.Plugin.AudioHandler.csproj @@ -24,15 +24,15 @@ - - + + - + PreserveNewest - + PreserveNewest diff --git a/src/Plugins/BotSharp.Plugin.AudioHandler/Enums/UtilityName.cs b/src/Plugins/BotSharp.Plugin.AudioHandler/Enums/UtilityName.cs index d11bd65a..51c86863 100644 --- a/src/Plugins/BotSharp.Plugin.AudioHandler/Enums/UtilityName.cs +++ b/src/Plugins/BotSharp.Plugin.AudioHandler/Enums/UtilityName.cs @@ -2,5 +2,5 @@ namespace BotSharp.Plugin.AudioHandler.Enums; public class UtilityName { - public const string AudioHandler = "audio-handler"; + public const string AudioHandler = "audio.audio-handler"; } diff --git a/src/Plugins/BotSharp.Plugin.AudioHandler/Functions/HandleAudioRequestFn.cs b/src/Plugins/BotSharp.Plugin.AudioHandler/Functions/HandleAudioRequestFn.cs index 34ec530c..9c0ab4f4 100644 --- a/src/Plugins/BotSharp.Plugin.AudioHandler/Functions/HandleAudioRequestFn.cs +++ b/src/Plugins/BotSharp.Plugin.AudioHandler/Functions/HandleAudioRequestFn.cs @@ -5,7 +5,7 @@ namespace BotSharp.Plugin.AudioHandler.Functions; public class HandleAudioRequestFn : IFunctionCallback { - public string Name => "handle_audio_request"; + public string Name => "util-audio-handle_audio_request"; public string Indication => "Handling audio request"; private readonly IServiceProvider _serviceProvider; diff --git a/src/Plugins/BotSharp.Plugin.AudioHandler/Hooks/AudioHandlerUtilityHook.cs b/src/Plugins/BotSharp.Plugin.AudioHandler/Hooks/AudioHandlerUtilityHook.cs index 3d1f3992..4cb6d61c 100644 --- a/src/Plugins/BotSharp.Plugin.AudioHandler/Hooks/AudioHandlerUtilityHook.cs +++ b/src/Plugins/BotSharp.Plugin.AudioHandler/Hooks/AudioHandlerUtilityHook.cs @@ -2,7 +2,8 @@ namespace BotSharp.Plugin.AudioHandler.Hooks; public class AudioHandlerUtilityHook : IAgentUtilityHook { - private const string HANDLER_AUDIO = "handle_audio_request"; + private const string PREFIX = "util-audio-"; + private const string HANDLER_AUDIO = $"{PREFIX}handle_audio_request"; public void AddUtilities(List utilities) { diff --git a/src/Plugins/BotSharp.Plugin.AudioHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/handle_audio_request.json b/src/Plugins/BotSharp.Plugin.AudioHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-audio-handle_audio_request.json similarity index 94% rename from src/Plugins/BotSharp.Plugin.AudioHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/handle_audio_request.json rename to src/Plugins/BotSharp.Plugin.AudioHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-audio-handle_audio_request.json index c0603b1a..7655f691 100644 --- a/src/Plugins/BotSharp.Plugin.AudioHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/handle_audio_request.json +++ b/src/Plugins/BotSharp.Plugin.AudioHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-audio-handle_audio_request.json @@ -1,5 +1,5 @@ { - "name": "handle_audio_request", + "name": "util-audio-handle_audio_request", "description": "If the user requests to transcribe or summarize audio content, you need to call this function to transcribe the audio content to raw texts or provide sunmmary based on raw texts transcribed from audio", "parameters": { "type": "object", diff --git a/src/Plugins/BotSharp.Plugin.AudioHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/handle_audio_request.fn.liquid b/src/Plugins/BotSharp.Plugin.AudioHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/handle_audio_request.fn.liquid deleted file mode 100644 index 95f17ae1..00000000 --- a/src/Plugins/BotSharp.Plugin.AudioHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/handle_audio_request.fn.liquid +++ /dev/null @@ -1 +0,0 @@ -Please call handle_audio_request if user wants to transcribe or summarize the content of a audio file. \ No newline at end of file diff --git a/src/Plugins/BotSharp.Plugin.AudioHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-audio-handle_audio_request.fn.liquid b/src/Plugins/BotSharp.Plugin.AudioHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-audio-handle_audio_request.fn.liquid new file mode 100644 index 00000000..b49c3440 --- /dev/null +++ b/src/Plugins/BotSharp.Plugin.AudioHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-audio-handle_audio_request.fn.liquid @@ -0,0 +1 @@ +Please call util-audio-handle_audio_request if user wants to transcribe or summarize the content of a audio file. \ 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 3aa65e97..f1a6c28e 100644 --- a/src/Plugins/BotSharp.Plugin.EmailHandler/BotSharp.Plugin.EmailHandler.csproj +++ b/src/Plugins/BotSharp.Plugin.EmailHandler/BotSharp.Plugin.EmailHandler.csproj @@ -11,24 +11,23 @@ - - - - - + + + + - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest diff --git a/src/Plugins/BotSharp.Plugin.EmailHandler/Enums/UtilityName.cs b/src/Plugins/BotSharp.Plugin.EmailHandler/Enums/UtilityName.cs index b84f9c5f..e9297d8c 100644 --- a/src/Plugins/BotSharp.Plugin.EmailHandler/Enums/UtilityName.cs +++ b/src/Plugins/BotSharp.Plugin.EmailHandler/Enums/UtilityName.cs @@ -1,13 +1,6 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +namespace BotSharp.Plugin.EmailHandler.Enums; -namespace BotSharp.Plugin.EmailHandler.Enums +public class UtilityName { - public class UtilityName - { - public const string EmailHandler = "email-handler"; - } + public const string EmailHandler = "email.email-handler"; } diff --git a/src/Plugins/BotSharp.Plugin.EmailHandler/Functions/HandleEmailReaderFn.cs b/src/Plugins/BotSharp.Plugin.EmailHandler/Functions/HandleEmailReaderFn.cs index d0f11466..1833a783 100644 --- a/src/Plugins/BotSharp.Plugin.EmailHandler/Functions/HandleEmailReaderFn.cs +++ b/src/Plugins/BotSharp.Plugin.EmailHandler/Functions/HandleEmailReaderFn.cs @@ -7,7 +7,7 @@ namespace BotSharp.Plugin.EmailReader.Functions; public class HandleEmailReaderFn : IFunctionCallback { - public string Name => "handle_email_reader"; + public string Name => "util-email-handle_email_reader"; public readonly static string PROMPT_SUMMARY = "Provide a text summary of the following content."; public readonly static string RICH_CONTENT_SUMMARIZE = "is_email_summarize: true. messageId"; public readonly static string RICH_CONTENT_READ_EMAIL = "Read the email by messageId"; diff --git a/src/Plugins/BotSharp.Plugin.EmailHandler/Functions/HandleEmailSenderFn.cs b/src/Plugins/BotSharp.Plugin.EmailHandler/Functions/HandleEmailSenderFn.cs index fa038811..a6b04e49 100644 --- a/src/Plugins/BotSharp.Plugin.EmailHandler/Functions/HandleEmailSenderFn.cs +++ b/src/Plugins/BotSharp.Plugin.EmailHandler/Functions/HandleEmailSenderFn.cs @@ -6,7 +6,7 @@ namespace BotSharp.Plugin.EmailHandler.Functions; public class HandleEmailSenderFn : IFunctionCallback { - public string Name => "handle_email_sender"; + public string Name => "util-email-handle_email_sender"; public string Indication => "Handling email send request"; private readonly IServiceProvider _services; diff --git a/src/Plugins/BotSharp.Plugin.EmailHandler/Hooks/EmailHandlerUtilityHook.cs b/src/Plugins/BotSharp.Plugin.EmailHandler/Hooks/EmailHandlerUtilityHook.cs index a909932e..a99dfc8c 100644 --- a/src/Plugins/BotSharp.Plugin.EmailHandler/Hooks/EmailHandlerUtilityHook.cs +++ b/src/Plugins/BotSharp.Plugin.EmailHandler/Hooks/EmailHandlerUtilityHook.cs @@ -5,8 +5,9 @@ namespace BotSharp.Plugin.EmailHandler.Hooks; public class EmailHandlerUtilityHook : IAgentUtilityHook { - private static string EMAIL_READER_FN = "handle_email_reader"; - private static string EMAIL_SENDER_FN = "handle_email_sender"; + private static string PREFIX = "util-email-"; + private static string EMAIL_READER_FN = $"{PREFIX}handle_email_reader"; + private static string EMAIL_SENDER_FN = $"{PREFIX}handle_email_sender"; public void AddUtilities(List utilities) { diff --git a/src/Plugins/BotSharp.Plugin.EmailHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/handle_email_reader.json b/src/Plugins/BotSharp.Plugin.EmailHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-email-handle_email_reader.json similarity index 95% rename from src/Plugins/BotSharp.Plugin.EmailHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/handle_email_reader.json rename to src/Plugins/BotSharp.Plugin.EmailHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-email-handle_email_reader.json index bcea2ac8..36e86402 100644 --- a/src/Plugins/BotSharp.Plugin.EmailHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/handle_email_reader.json +++ b/src/Plugins/BotSharp.Plugin.EmailHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-email-handle_email_reader.json @@ -1,5 +1,5 @@ { - "name": "handle_email_reader", + "name": "util-email-handle_email_reader", "description": "If the user wants to read messages from email inbox or user wants to mark an email message as read.If message id is provided, capture it but it is not required. Then call this function to read the email message or mark any message as read.", "parameters": { "type": "object", diff --git a/src/Plugins/BotSharp.Plugin.EmailHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/handle_email_sender.json b/src/Plugins/BotSharp.Plugin.EmailHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-email-handle_email_sender.json similarity index 96% rename from src/Plugins/BotSharp.Plugin.EmailHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/handle_email_sender.json rename to src/Plugins/BotSharp.Plugin.EmailHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-email-handle_email_sender.json index 730c4597..b1ebfb73 100644 --- a/src/Plugins/BotSharp.Plugin.EmailHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/handle_email_sender.json +++ b/src/Plugins/BotSharp.Plugin.EmailHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-email-handle_email_sender.json @@ -1,5 +1,5 @@ { - "name": "handle_email_sender", + "name": "util-email-handle_email_sender", "description": "If the user requests to send an email with or without attachments or files, you need to capture the email content and the recipient email address. If the user explicitly enter email subject use the same if not intelligently capture the email subject from the content. Then call this function to send out email.", "parameters": { "type": "object", diff --git a/src/Plugins/BotSharp.Plugin.EmailHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/handle_email_reader.fn.liquid b/src/Plugins/BotSharp.Plugin.EmailHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/handle_email_reader.fn.liquid deleted file mode 100644 index 0efb6229..00000000 --- a/src/Plugins/BotSharp.Plugin.EmailHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/handle_email_reader.fn.liquid +++ /dev/null @@ -1 +0,0 @@ -Please call handle_email_reader if user wants to read messages from email inbox. \ No newline at end of file diff --git a/src/Plugins/BotSharp.Plugin.EmailHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-email-handle_email_reader.fn.liquid b/src/Plugins/BotSharp.Plugin.EmailHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-email-handle_email_reader.fn.liquid new file mode 100644 index 00000000..10708bb7 --- /dev/null +++ b/src/Plugins/BotSharp.Plugin.EmailHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-email-handle_email_reader.fn.liquid @@ -0,0 +1 @@ +Please call util-email-handle_email_reader if user wants to read messages from email inbox. \ No newline at end of file diff --git a/src/Plugins/BotSharp.Plugin.EmailHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/handle_email_sender.fn.liquid b/src/Plugins/BotSharp.Plugin.EmailHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-email-handle_email_sender.fn.liquid similarity index 81% rename from src/Plugins/BotSharp.Plugin.EmailHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/handle_email_sender.fn.liquid rename to src/Plugins/BotSharp.Plugin.EmailHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-email-handle_email_sender.fn.liquid index eb6f0e6f..5fc29e3d 100644 --- a/src/Plugins/BotSharp.Plugin.EmailHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/handle_email_sender.fn.liquid +++ b/src/Plugins/BotSharp.Plugin.EmailHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-email-handle_email_sender.fn.liquid @@ -1,4 +1,4 @@ ** Please take a look at the conversation and decide whether user wants to send email. ** If yes, then decide whether user wants to send email with files/attachments/images or not. ** If user does not want to send email explicitly or only upload images or files, please do not respond anything email related message. -** Please call handle_email_sender if user wants to send email. \ No newline at end of file +** Please call util-email-handle_email_sender if user wants to send email. \ No newline at end of file diff --git a/src/Plugins/BotSharp.Plugin.ExcelHandler/BotSharp.Plugin.ExcelHandler.csproj b/src/Plugins/BotSharp.Plugin.ExcelHandler/BotSharp.Plugin.ExcelHandler.csproj index e23bd5e7..08cfd79a 100644 --- a/src/Plugins/BotSharp.Plugin.ExcelHandler/BotSharp.Plugin.ExcelHandler.csproj +++ b/src/Plugins/BotSharp.Plugin.ExcelHandler/BotSharp.Plugin.ExcelHandler.csproj @@ -13,15 +13,15 @@ - - + + - + PreserveNewest - + PreserveNewest diff --git a/src/Plugins/BotSharp.Plugin.ExcelHandler/Enums/UtilityName.cs b/src/Plugins/BotSharp.Plugin.ExcelHandler/Enums/UtilityName.cs index 66ef3f36..bc689259 100644 --- a/src/Plugins/BotSharp.Plugin.ExcelHandler/Enums/UtilityName.cs +++ b/src/Plugins/BotSharp.Plugin.ExcelHandler/Enums/UtilityName.cs @@ -2,5 +2,5 @@ namespace BotSharp.Plugin.ExcelHandler.Enums; public class UtilityName { - public const string ExcelHandler = "excel-handler"; + public const string ExcelHandler = "excel.excel-handler"; } diff --git a/src/Plugins/BotSharp.Plugin.ExcelHandler/Functions/HandleExcelRequestFn.cs b/src/Plugins/BotSharp.Plugin.ExcelHandler/Functions/HandleExcelRequestFn.cs index f72492e3..270f6177 100644 --- a/src/Plugins/BotSharp.Plugin.ExcelHandler/Functions/HandleExcelRequestFn.cs +++ b/src/Plugins/BotSharp.Plugin.ExcelHandler/Functions/HandleExcelRequestFn.cs @@ -2,7 +2,6 @@ using System.Linq.Dynamic.Core; using BotSharp.Abstraction.Files.Enums; using BotSharp.Abstraction.Files.Models; using BotSharp.Abstraction.Files.Utilities; -using BotSharp.Plugin.ExcelHandler.Helpers.Sqlite; using BotSharp.Plugin.ExcelHandler.Models; using BotSharp.Plugin.ExcelHandler.Services; using NPOI.SS.UserModel; @@ -12,7 +11,7 @@ namespace BotSharp.Plugin.ExcelHandler.Functions; public class HandleExcelRequestFn : IFunctionCallback { - public string Name => "handle_excel_request"; + public string Name => "util-excel-handle_excel_request"; public string Indication => "Handling excel request"; private readonly IServiceProvider _serviceProvider; diff --git a/src/Plugins/BotSharp.Plugin.ExcelHandler/Hooks/ExcelHandlerUtilityHook.cs b/src/Plugins/BotSharp.Plugin.ExcelHandler/Hooks/ExcelHandlerUtilityHook.cs index 15c41642..6293a832 100644 --- a/src/Plugins/BotSharp.Plugin.ExcelHandler/Hooks/ExcelHandlerUtilityHook.cs +++ b/src/Plugins/BotSharp.Plugin.ExcelHandler/Hooks/ExcelHandlerUtilityHook.cs @@ -2,7 +2,8 @@ namespace BotSharp.Plugin.ExcelHandler.Hooks; public class ExcelHandlerUtilityHook : IAgentUtilityHook { - private const string HANDLER_EXCEL = "handle_excel_request"; + private static string PREFIX = "util-excel-"; + private static string HANDLER_EXCEL = $"{PREFIX}handle_excel_request"; public void AddUtilities(List utilities) { diff --git a/src/Plugins/BotSharp.Plugin.ExcelHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/handle_excel_request.json b/src/Plugins/BotSharp.Plugin.ExcelHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-excel-handle_excel_request.json similarity index 95% rename from src/Plugins/BotSharp.Plugin.ExcelHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/handle_excel_request.json rename to src/Plugins/BotSharp.Plugin.ExcelHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-excel-handle_excel_request.json index 38f2faab..53381c67 100644 --- a/src/Plugins/BotSharp.Plugin.ExcelHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/handle_excel_request.json +++ b/src/Plugins/BotSharp.Plugin.ExcelHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-excel-handle_excel_request.json @@ -1,5 +1,5 @@ { - "name": "handle_excel_request", + "name": "util-excel-handle_excel_request", "description": "If the user requests to read/load data from excel/csv files, you need to call this function to load the data from excel/csv files and transform into JSON format data", "parameters": { "type": "object", diff --git a/src/Plugins/BotSharp.Plugin.ExcelHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/handle_excel_request.fn.liquid b/src/Plugins/BotSharp.Plugin.ExcelHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/handle_excel_request.fn.liquid deleted file mode 100644 index a3f27694..00000000 --- a/src/Plugins/BotSharp.Plugin.ExcelHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/handle_excel_request.fn.liquid +++ /dev/null @@ -1,2 +0,0 @@ -Please call handle_excel_request if user wants to load the data from a excel/csv file. -handle_excel_request can NOT generate excel/csv. \ No newline at end of file diff --git a/src/Plugins/BotSharp.Plugin.ExcelHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-excel-handle_excel_request.fn.liquid b/src/Plugins/BotSharp.Plugin.ExcelHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-excel-handle_excel_request.fn.liquid new file mode 100644 index 00000000..53aef674 --- /dev/null +++ b/src/Plugins/BotSharp.Plugin.ExcelHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-excel-handle_excel_request.fn.liquid @@ -0,0 +1,2 @@ +Please call util-excel-handle_excel_request if user wants to load the data from a excel/csv file. +util-excel-handle_excel_request can NOT generate excel/csv. \ No newline at end of file diff --git a/src/Plugins/BotSharp.Plugin.FileHandler/BotSharp.Plugin.FileHandler.csproj b/src/Plugins/BotSharp.Plugin.FileHandler/BotSharp.Plugin.FileHandler.csproj index 9b097fed..2147d178 100644 --- a/src/Plugins/BotSharp.Plugin.FileHandler/BotSharp.Plugin.FileHandler.csproj +++ b/src/Plugins/BotSharp.Plugin.FileHandler/BotSharp.Plugin.FileHandler.csproj @@ -11,40 +11,43 @@ - - - - - - - - + + + + + + + + + + + - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + 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 eb2b4e2b..68242202 100644 --- a/src/Plugins/BotSharp.Plugin.FileHandler/Enums/UtilityName.cs +++ b/src/Plugins/BotSharp.Plugin.FileHandler/Enums/UtilityName.cs @@ -2,8 +2,8 @@ namespace BotSharp.Plugin.FileHandler.Enums; public class UtilityName { - public const string ImageGenerator = "image-generator"; - public const string ImageReader = "image-reader"; - public const string ImageEditor = "image-editor"; - public const string PdfReader = "pdf-reader"; + public const string ImageGenerator = "file.image-generator"; + public const string ImageReader = "file.image-reader"; + public const string ImageEditor = "file.image-editor"; + public const string PdfReader = "file.pdf-reader"; } diff --git a/src/Plugins/BotSharp.Plugin.FileHandler/Functions/EditImageFn.cs b/src/Plugins/BotSharp.Plugin.FileHandler/Functions/EditImageFn.cs index cb7139f0..87d8268b 100644 --- a/src/Plugins/BotSharp.Plugin.FileHandler/Functions/EditImageFn.cs +++ b/src/Plugins/BotSharp.Plugin.FileHandler/Functions/EditImageFn.cs @@ -4,7 +4,7 @@ namespace BotSharp.Plugin.FileHandler.Functions; public class EditImageFn : IFunctionCallback { - public string Name => "edit_image"; + public string Name => "util-file-edit_image"; public string Indication => "Editing image"; private readonly IServiceProvider _services; diff --git a/src/Plugins/BotSharp.Plugin.FileHandler/Functions/GenerateImageFn.cs b/src/Plugins/BotSharp.Plugin.FileHandler/Functions/GenerateImageFn.cs index c3e8c147..a511ebae 100644 --- a/src/Plugins/BotSharp.Plugin.FileHandler/Functions/GenerateImageFn.cs +++ b/src/Plugins/BotSharp.Plugin.FileHandler/Functions/GenerateImageFn.cs @@ -2,7 +2,7 @@ namespace BotSharp.Plugin.FileHandler.Functions; public class GenerateImageFn : IFunctionCallback { - public string Name => "generate_image"; + public string Name => "util-file-generate_image"; public string Indication => "Generating image"; private readonly IServiceProvider _services; diff --git a/src/Plugins/BotSharp.Plugin.FileHandler/Functions/ReadImageFn.cs b/src/Plugins/BotSharp.Plugin.FileHandler/Functions/ReadImageFn.cs index a415207e..f2e79b21 100644 --- a/src/Plugins/BotSharp.Plugin.FileHandler/Functions/ReadImageFn.cs +++ b/src/Plugins/BotSharp.Plugin.FileHandler/Functions/ReadImageFn.cs @@ -2,7 +2,7 @@ namespace BotSharp.Plugin.FileHandler.Functions; public class ReadImageFn : IFunctionCallback { - public string Name => "read_image"; + public string Name => "util-file-read_image"; public string Indication => "Reading images"; private readonly IServiceProvider _services; diff --git a/src/Plugins/BotSharp.Plugin.FileHandler/Functions/ReadPdfFn.cs b/src/Plugins/BotSharp.Plugin.FileHandler/Functions/ReadPdfFn.cs index 814f943e..2aeb64a1 100644 --- a/src/Plugins/BotSharp.Plugin.FileHandler/Functions/ReadPdfFn.cs +++ b/src/Plugins/BotSharp.Plugin.FileHandler/Functions/ReadPdfFn.cs @@ -2,7 +2,7 @@ namespace BotSharp.Plugin.FileHandler.Functions; public class ReadPdfFn : IFunctionCallback { - public string Name => "read_pdf"; + public string Name => "util-file-read_pdf"; public string Indication => "Reading pdf"; private readonly IServiceProvider _services; diff --git a/src/Plugins/BotSharp.Plugin.FileHandler/Hooks/FileHandlerUtilityHook.cs b/src/Plugins/BotSharp.Plugin.FileHandler/Hooks/FileHandlerUtilityHook.cs index ab295063..3409c448 100644 --- a/src/Plugins/BotSharp.Plugin.FileHandler/Hooks/FileHandlerUtilityHook.cs +++ b/src/Plugins/BotSharp.Plugin.FileHandler/Hooks/FileHandlerUtilityHook.cs @@ -2,10 +2,10 @@ namespace BotSharp.Plugin.FileHandler.Hooks; public class FileHandlerUtilityHook : IAgentUtilityHook { - private const string READ_IMAGE_FN = "read_image"; - private const string READ_PDF_FN = "read_pdf"; - private const string GENERATE_IMAGE_FN = "generate_image"; - private const string EDIT_IMAGE_FN = "edit_image"; + private const string READ_IMAGE_FN = "util-file-read_image"; + private const string READ_PDF_FN = "util-file-read_pdf"; + private const string GENERATE_IMAGE_FN = "util-file-generate_image"; + private const string EDIT_IMAGE_FN = "util-file-edit_image"; public void AddUtilities(List utilities) { diff --git a/src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/read_image.json b/src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/read_image.json deleted file mode 100644 index 99daafc5..00000000 --- a/src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/read_image.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "read_image", - "description": "If the user's request is related to analyzing images, you can call this function to analyze images.", - "parameters": { - "type": "object", - "properties": { - "user_request": { - "type": "string", - "description": "The request posted by user, which is related to analyzing requested images. User can request for multiple images to process at one time." - } - }, - "required": [ "user_request" ] - } -} \ No newline at end of file diff --git a/src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/edit_image.json b/src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-file-edit_image.json similarity index 92% rename from src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/edit_image.json rename to src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-file-edit_image.json index f513ffba..306e44dd 100644 --- a/src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/edit_image.json +++ b/src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-file-edit_image.json @@ -1,5 +1,5 @@ { - "name": "edit_image", + "name": "util-file-edit_image", "description": "If the user requests you editting or changing an image or a picture, you can call this function to edit an image.", "parameters": { "type": "object", diff --git a/src/Plugins/BotSharp.Plugin.FileHandler/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/util-file-generate_image.json similarity index 90% rename from src/Plugins/BotSharp.Plugin.FileHandler/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/util-file-generate_image.json index d9c8b70e..ba96aef0 100644 --- a/src/Plugins/BotSharp.Plugin.FileHandler/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/util-file-generate_image.json @@ -1,5 +1,5 @@ { - "name": "generate_image", + "name": "util-file-generate_image", "description": "If the user requests you providing or generating image or picture, you can call this function to generate image.", "parameters": { "type": "object", diff --git a/src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-file-read_image.json b/src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-file-read_image.json new file mode 100644 index 00000000..a0f269a0 --- /dev/null +++ b/src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-file-read_image.json @@ -0,0 +1,14 @@ +{ + "name": "util-file-read_image", + "description": "If the user's request is related to analyzing images, you can call this function to analyze images.", + "parameters": { + "type": "object", + "properties": { + "user_request": { + "type": "string", + "description": "The request posted by user, which is related to analyzing requested images. User can request for multiple images to process at one time." + } + }, + "required": [ "user_request" ] + } +} \ No newline at end of file diff --git a/src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/read_pdf.json b/src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-file-read_pdf.json similarity index 92% rename from src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/read_pdf.json rename to src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-file-read_pdf.json index 54d9424c..d6b27819 100644 --- a/src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/read_pdf.json +++ b/src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-file-read_pdf.json @@ -1,5 +1,5 @@ { - "name": "read_pdf", + "name": "util-file-read_pdf", "description": "If the user's request is related to analyzing pdf files, you can call this function to analyze pdf.", "parameters": { "type": "object", diff --git a/src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/edit_image.fn.liquid b/src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/edit_image.fn.liquid deleted file mode 100644 index 7fa2ac21..00000000 --- a/src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/edit_image.fn.liquid +++ /dev/null @@ -1 +0,0 @@ -Please call edit_image if user wants to edit or change an image in the conversation. \ No newline at end of file diff --git a/src/Plugins/BotSharp.Plugin.FileHandler/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 deleted file mode 100644 index 9ee28f9c..00000000 --- a/src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/generate_image.fn.liquid +++ /dev/null @@ -1,2 +0,0 @@ -** Please call generate_image if user wants you to provide or generate an image or picture. -** If user does not generate image explicitly, please do not call generate_image. \ No newline at end of file diff --git a/src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/read_image.fn.liquid b/src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/read_image.fn.liquid deleted file mode 100644 index 3ebf28cc..00000000 --- a/src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/read_image.fn.liquid +++ /dev/null @@ -1 +0,0 @@ -Please call function read_image if user wants to describe an image or images. \ No newline at end of file diff --git a/src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/read_pdf.fn.liquid b/src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/read_pdf.fn.liquid deleted file mode 100644 index 0ea6706d..00000000 --- a/src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/read_pdf.fn.liquid +++ /dev/null @@ -1 +0,0 @@ -Please call function read_pdf if user wants to describe an pdf file or pdf files. diff --git a/src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-file-edit_image.fn.liquid b/src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-file-edit_image.fn.liquid new file mode 100644 index 00000000..49ab707f --- /dev/null +++ b/src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-file-edit_image.fn.liquid @@ -0,0 +1 @@ +Please call util-file-edit_image if user wants to edit or change an image in the conversation. \ No newline at end of file diff --git a/src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-file-generate_image.fn.liquid b/src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-file-generate_image.fn.liquid new file mode 100644 index 00000000..6d7dd619 --- /dev/null +++ b/src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-file-generate_image.fn.liquid @@ -0,0 +1,2 @@ +** Please call util-file-generate_image if user wants you to provide or generate an image or picture. +** If user does not generate image explicitly, please do not call generate_image. \ No newline at end of file diff --git a/src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-file-read_image.fn.liquid b/src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-file-read_image.fn.liquid new file mode 100644 index 00000000..76f75bd0 --- /dev/null +++ b/src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-file-read_image.fn.liquid @@ -0,0 +1 @@ +Please call function util-file-read_image if user wants to describe an image or images. \ No newline at end of file diff --git a/src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-file-read_pdf.fn.liquid b/src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-file-read_pdf.fn.liquid new file mode 100644 index 00000000..12d08f0a --- /dev/null +++ b/src/Plugins/BotSharp.Plugin.FileHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-file-read_pdf.fn.liquid @@ -0,0 +1 @@ +Please call function util-file-read_pdf if user wants to describe an pdf file or pdf files. diff --git a/src/Plugins/BotSharp.Plugin.HttpHandler/BotSharp.Plugin.HttpHandler.csproj b/src/Plugins/BotSharp.Plugin.HttpHandler/BotSharp.Plugin.HttpHandler.csproj index 8664c654..7dc0ac87 100644 --- a/src/Plugins/BotSharp.Plugin.HttpHandler/BotSharp.Plugin.HttpHandler.csproj +++ b/src/Plugins/BotSharp.Plugin.HttpHandler/BotSharp.Plugin.HttpHandler.csproj @@ -11,11 +11,11 @@ - - + + @@ -25,10 +25,10 @@ PreserveNewest - + PreserveNewest - + PreserveNewest diff --git a/src/Plugins/BotSharp.Plugin.HttpHandler/Enums/UtilityName.cs b/src/Plugins/BotSharp.Plugin.HttpHandler/Enums/UtilityName.cs index 2e0146bf..3a1e7cd5 100644 --- a/src/Plugins/BotSharp.Plugin.HttpHandler/Enums/UtilityName.cs +++ b/src/Plugins/BotSharp.Plugin.HttpHandler/Enums/UtilityName.cs @@ -2,5 +2,5 @@ namespace BotSharp.Plugin.HttpHandler.Enums; public class UtilityName { - public const string HttpHandler = "http-handler"; + public const string HttpHandler = "http.http-handler"; } diff --git a/src/Plugins/BotSharp.Plugin.HttpHandler/Functions/HandleHttpRequestFn.cs b/src/Plugins/BotSharp.Plugin.HttpHandler/Functions/HandleHttpRequestFn.cs index 20d2d012..d36aafba 100644 --- a/src/Plugins/BotSharp.Plugin.HttpHandler/Functions/HandleHttpRequestFn.cs +++ b/src/Plugins/BotSharp.Plugin.HttpHandler/Functions/HandleHttpRequestFn.cs @@ -7,7 +7,7 @@ namespace BotSharp.Plugin.HttpHandler.Functions; public class HandleHttpRequestFn : IFunctionCallback { - public string Name => "handle_http_request"; + public string Name => "util-http-handle_http_request"; public string Indication => "Handling http request"; private readonly IServiceProvider _services; diff --git a/src/Plugins/BotSharp.Plugin.HttpHandler/Hooks/HttpHandlerUtilityHook.cs b/src/Plugins/BotSharp.Plugin.HttpHandler/Hooks/HttpHandlerUtilityHook.cs index 265558ac..d99b6084 100644 --- a/src/Plugins/BotSharp.Plugin.HttpHandler/Hooks/HttpHandlerUtilityHook.cs +++ b/src/Plugins/BotSharp.Plugin.HttpHandler/Hooks/HttpHandlerUtilityHook.cs @@ -4,7 +4,8 @@ namespace BotSharp.Plugin.HttpHandler.Hooks; public class HttpHandlerUtilityHook : IAgentUtilityHook { - private static string HTTP_HANDLER_FN = "handle_http_request"; + private static string PREFIX = "util-http-"; + private static string HTTP_HANDLER_FN = $"{PREFIX}handle_http_request"; public void AddUtilities(List utilities) { diff --git a/src/Plugins/BotSharp.Plugin.HttpHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/handle_http_request.json b/src/Plugins/BotSharp.Plugin.HttpHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-http-handle_http_request.json similarity index 95% rename from src/Plugins/BotSharp.Plugin.HttpHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/handle_http_request.json rename to src/Plugins/BotSharp.Plugin.HttpHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-http-handle_http_request.json index c7335cee..40ce00d5 100644 --- a/src/Plugins/BotSharp.Plugin.HttpHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/handle_http_request.json +++ b/src/Plugins/BotSharp.Plugin.HttpHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-http-handle_http_request.json @@ -1,5 +1,5 @@ { - "name": "handle_http_request", + "name": "util-http-handle_http_request", "description": "If the user requests to send an http request, you need to capture the http method and request content, and then call this function to send the http request.", "parameters": { "type": "object", diff --git a/src/Plugins/BotSharp.Plugin.HttpHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/handle_http_request.fn.liquid b/src/Plugins/BotSharp.Plugin.HttpHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/handle_http_request.fn.liquid deleted file mode 100644 index 7640d81e..00000000 --- a/src/Plugins/BotSharp.Plugin.HttpHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/handle_http_request.fn.liquid +++ /dev/null @@ -1 +0,0 @@ -Please call handle_http_request if user wants to send an http request. \ No newline at end of file diff --git a/src/Plugins/BotSharp.Plugin.HttpHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-http-handle_http_request.fn.liquid b/src/Plugins/BotSharp.Plugin.HttpHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-http-handle_http_request.fn.liquid new file mode 100644 index 00000000..2d639dd0 --- /dev/null +++ b/src/Plugins/BotSharp.Plugin.HttpHandler/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-http-handle_http_request.fn.liquid @@ -0,0 +1 @@ +Please call util-http-handle_http_request if user wants to send an http request. \ No newline at end of file diff --git a/src/Plugins/BotSharp.Plugin.KnowledgeBase/BotSharp.Plugin.KnowledgeBase.csproj b/src/Plugins/BotSharp.Plugin.KnowledgeBase/BotSharp.Plugin.KnowledgeBase.csproj index 283d8b32..77a5d076 100644 --- a/src/Plugins/BotSharp.Plugin.KnowledgeBase/BotSharp.Plugin.KnowledgeBase.csproj +++ b/src/Plugins/BotSharp.Plugin.KnowledgeBase/BotSharp.Plugin.KnowledgeBase.csproj @@ -1,4 +1,4 @@ - + $(TargetFramework) @@ -23,7 +23,8 @@ - + + @@ -45,10 +46,10 @@ PreserveNewest - + PreserveNewest - + PreserveNewest diff --git a/src/Plugins/BotSharp.Plugin.KnowledgeBase/Enum/UtilityName.cs b/src/Plugins/BotSharp.Plugin.KnowledgeBase/Enum/UtilityName.cs index 18a28c91..de90430d 100644 --- a/src/Plugins/BotSharp.Plugin.KnowledgeBase/Enum/UtilityName.cs +++ b/src/Plugins/BotSharp.Plugin.KnowledgeBase/Enum/UtilityName.cs @@ -2,5 +2,5 @@ namespace BotSharp.Plugin.KnowledgeBase.Enum; public class UtilityName { - public const string KnowledgeRetrieval = "knowledge-retrieval"; + public const string KnowledgeRetrieval = "knowledge.knowledge-retrieval"; } diff --git a/src/Plugins/BotSharp.Plugin.KnowledgeBase/Functions/KnowledgeRetrievalFn.cs b/src/Plugins/BotSharp.Plugin.KnowledgeBase/Functions/KnowledgeRetrievalFn.cs index 606caad9..f3f8cbf1 100644 --- a/src/Plugins/BotSharp.Plugin.KnowledgeBase/Functions/KnowledgeRetrievalFn.cs +++ b/src/Plugins/BotSharp.Plugin.KnowledgeBase/Functions/KnowledgeRetrievalFn.cs @@ -2,7 +2,7 @@ namespace BotSharp.Plugin.KnowledgeBase.Functions; public class KnowledgeRetrievalFn : IFunctionCallback { - public string Name => "knowledge_retrieval"; + public string Name => "util-knowledge-knowledge_retrieval"; public string Indication => "searching my brain"; diff --git a/src/Plugins/BotSharp.Plugin.KnowledgeBase/Hooks/KnowledgeBaseUtilityHook.cs b/src/Plugins/BotSharp.Plugin.KnowledgeBase/Hooks/KnowledgeBaseUtilityHook.cs index 464fd5b2..700b8457 100644 --- a/src/Plugins/BotSharp.Plugin.KnowledgeBase/Hooks/KnowledgeBaseUtilityHook.cs +++ b/src/Plugins/BotSharp.Plugin.KnowledgeBase/Hooks/KnowledgeBaseUtilityHook.cs @@ -2,7 +2,8 @@ namespace BotSharp.Plugin.KnowledgeBase.Hooks; public class KnowledgeBaseUtilityHook : IAgentUtilityHook { - private const string KNOWLEDGE_RETRIEVAL_FN = "knowledge_retrieval"; + private static string PREFIX = "util-knowledge-"; + private static string KNOWLEDGE_RETRIEVAL_FN = $"{PREFIX}knowledge_retrieval"; public void AddUtilities(List utilities) { diff --git a/src/Plugins/BotSharp.Plugin.KnowledgeBase/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/knowledge_retrieval.json b/src/Plugins/BotSharp.Plugin.KnowledgeBase/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-knowledge-knowledge_retrieval.json similarity index 86% rename from src/Plugins/BotSharp.Plugin.KnowledgeBase/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/knowledge_retrieval.json rename to src/Plugins/BotSharp.Plugin.KnowledgeBase/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-knowledge-knowledge_retrieval.json index b292d7d9..088f4ea6 100644 --- a/src/Plugins/BotSharp.Plugin.KnowledgeBase/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/knowledge_retrieval.json +++ b/src/Plugins/BotSharp.Plugin.KnowledgeBase/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-knowledge-knowledge_retrieval.json @@ -1,5 +1,5 @@ { - "name": "knowledge_retrieval", + "name": "util-knowledge-knowledge_retrieval", "description": "Retrieve related domain knowledge to handle user request", "parameters": { "type": "object", diff --git a/src/Plugins/BotSharp.Plugin.KnowledgeBase/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/knowledge_retrieval.fn.liquid b/src/Plugins/BotSharp.Plugin.KnowledgeBase/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-knowledge-knowledge_retrieval.fn.liquid similarity index 63% rename from src/Plugins/BotSharp.Plugin.KnowledgeBase/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/knowledge_retrieval.fn.liquid rename to src/Plugins/BotSharp.Plugin.KnowledgeBase/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-knowledge-knowledge_retrieval.fn.liquid index da5e157b..f0bc60c8 100644 --- a/src/Plugins/BotSharp.Plugin.KnowledgeBase/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/knowledge_retrieval.fn.liquid +++ b/src/Plugins/BotSharp.Plugin.KnowledgeBase/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-knowledge-knowledge_retrieval.fn.liquid @@ -1,3 +1,3 @@ -Call function knowledge_retrieval to retrieve related domain knowledge to handle user request. +Call function util-knowledge-knowledge_retrieval to retrieve related domain knowledge to handle user request. You must retrieve existing KnowledgeBase to get prerequisite informations before you writing SQL query; You must retrieve existing API specification from KnowledgeBase before calling a Web API; diff --git a/src/Plugins/BotSharp.Plugin.Planner/BotSharp.Plugin.Planner.csproj b/src/Plugins/BotSharp.Plugin.Planner/BotSharp.Plugin.Planner.csproj index 72c4e710..fb183c77 100644 --- a/src/Plugins/BotSharp.Plugin.Planner/BotSharp.Plugin.Planner.csproj +++ b/src/Plugins/BotSharp.Plugin.Planner/BotSharp.Plugin.Planner.csproj @@ -1,4 +1,4 @@ - + $(TargetFramework) @@ -19,10 +19,9 @@ - - - - + + + @@ -53,13 +52,13 @@ PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest diff --git a/src/Plugins/BotSharp.Plugin.Planner/Enums/UtilityName.cs b/src/Plugins/BotSharp.Plugin.Planner/Enums/UtilityName.cs index 8a3ef6e3..7594fae0 100644 --- a/src/Plugins/BotSharp.Plugin.Planner/Enums/UtilityName.cs +++ b/src/Plugins/BotSharp.Plugin.Planner/Enums/UtilityName.cs @@ -2,5 +2,5 @@ namespace BotSharp.Plugin.Planner.Enums; public class UtilityName { - public const string TwoStagePlanner = "two-stage-planner"; + public const string TwoStagePlanner = "planner.two-stage-planner"; } diff --git a/src/Plugins/BotSharp.Plugin.Planner/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/plan_primary_stage.fn.liquid b/src/Plugins/BotSharp.Plugin.Planner/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-planner-plan_primary_stage.fn.liquid similarity index 100% rename from src/Plugins/BotSharp.Plugin.Planner/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/plan_primary_stage.fn.liquid rename to src/Plugins/BotSharp.Plugin.Planner/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-planner-plan_primary_stage.fn.liquid diff --git a/src/Plugins/BotSharp.Plugin.Planner/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/plan_secondary_stage.fn.liquid b/src/Plugins/BotSharp.Plugin.Planner/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-planner-plan_secondary_stage.fn.liquid similarity index 100% rename from src/Plugins/BotSharp.Plugin.Planner/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/plan_secondary_stage.fn.liquid rename to src/Plugins/BotSharp.Plugin.Planner/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-planner-plan_secondary_stage.fn.liquid diff --git a/src/Plugins/BotSharp.Plugin.Planner/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/plan_summary.fn.liquid b/src/Plugins/BotSharp.Plugin.Planner/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-planner-plan_summary.fn.liquid similarity index 100% rename from src/Plugins/BotSharp.Plugin.Planner/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/plan_summary.fn.liquid rename to src/Plugins/BotSharp.Plugin.Planner/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-planner-plan_summary.fn.liquid diff --git a/src/Plugins/BotSharp.Plugin.SqlDriver/BotSharp.Plugin.SqlDriver.csproj b/src/Plugins/BotSharp.Plugin.SqlDriver/BotSharp.Plugin.SqlDriver.csproj index 3a090f0c..84ecc1ee 100644 --- a/src/Plugins/BotSharp.Plugin.SqlDriver/BotSharp.Plugin.SqlDriver.csproj +++ b/src/Plugins/BotSharp.Plugin.SqlDriver/BotSharp.Plugin.SqlDriver.csproj @@ -17,12 +17,6 @@ - - - - - - @@ -36,22 +30,29 @@ + + + + + + + - + PreserveNewest - + PreserveNewest - + PreserveNewest PreserveNewest - + PreserveNewest @@ -69,10 +70,10 @@ PreserveNewest - + PreserveNewest - + PreserveNewest diff --git a/src/Plugins/BotSharp.Plugin.SqlDriver/Enum/UtilityName.cs b/src/Plugins/BotSharp.Plugin.SqlDriver/Enum/UtilityName.cs index 159d5e7a..abb1faa2 100644 --- a/src/Plugins/BotSharp.Plugin.SqlDriver/Enum/UtilityName.cs +++ b/src/Plugins/BotSharp.Plugin.SqlDriver/Enum/UtilityName.cs @@ -2,7 +2,7 @@ namespace BotSharp.Plugin.SqlDriver.Enum; public class UtilityName { - public const string SqlExecutor = "sql-executor"; - public const string SqlDictionaryLookup = "sql-dictionary-lookup"; - public const string SqlTableDefinition = "sql-table-definition"; + public const string SqlExecutor = "db.sql-executor"; + public const string SqlDictionaryLookup = "db.sql-dictionary-lookup"; + public const string SqlTableDefinition = "db.sql-table-definition"; } diff --git a/src/Plugins/BotSharp.Plugin.SqlDriver/Hooks/SqlUtilityHook.cs b/src/Plugins/BotSharp.Plugin.SqlDriver/Hooks/SqlUtilityHook.cs index 1984ee98..cdb65fc3 100644 --- a/src/Plugins/BotSharp.Plugin.SqlDriver/Hooks/SqlUtilityHook.cs +++ b/src/Plugins/BotSharp.Plugin.SqlDriver/Hooks/SqlUtilityHook.cs @@ -2,9 +2,11 @@ namespace BotSharp.Plugin.SqlDriver.Hooks; public class SqlUtilityHook : IAgentUtilityHook { - private const string SQL_TABLE_DEFINITION_FN = "sql_table_definition"; - private const string VERIFY_DICTIONARY_TERM_FN = "verify_dictionary_term"; - private const string SQL_SELECT_FN = "sql_select"; + private const string PREFIX = "util-db-"; + private const string SQL_TABLE_DEFINITION_FN = $"{PREFIX}sql_table_definition"; + private const string VERIFY_DICTIONARY_TERM_FN = $"{PREFIX}verify_dictionary_term"; + private const string SQL_SELECT_FN = $"{PREFIX}sql_select"; + private const string SQL_EXECUTOR_FN = $"{PREFIX}sql_executor"; public void AddUtilities(List utilities) { @@ -26,7 +28,7 @@ public class SqlUtilityHook : IAgentUtilityHook { Name = UtilityName.SqlExecutor, Functions = [new(SQL_SELECT_FN), new(SQL_TABLE_DEFINITION_FN)], - Templates = [new($"sql_executor.fn")] + Templates = [new($"{SQL_EXECUTOR_FN}.fn")] } }; diff --git a/src/Plugins/BotSharp.Plugin.SqlDriver/UtilFunctions/GetTableDefinitionFn.cs b/src/Plugins/BotSharp.Plugin.SqlDriver/UtilFunctions/GetTableDefinitionFn.cs new file mode 100644 index 00000000..a4b493a3 --- /dev/null +++ b/src/Plugins/BotSharp.Plugin.SqlDriver/UtilFunctions/GetTableDefinitionFn.cs @@ -0,0 +1,168 @@ +using Microsoft.Data.SqlClient; +using MySqlConnector; +using Npgsql; + +namespace BotSharp.Plugin.SqlDriver.UtilFunctions; + +public class GetTableDefinitionFn : IFunctionCallback +{ + public string Name => "util-db-sql_table_definition"; + public string Indication => "Obtain the relevant data structure definitions."; + private readonly IServiceProvider _services; + private readonly ILogger _logger; + + public GetTableDefinitionFn( + IServiceProvider services, + ILogger logger) + { + _services = services; + _logger = logger; + } + + public async Task Execute(RoleDialogModel message) + { + var args = JsonSerializer.Deserialize(message.FunctionArgs); + var tables = args.Tables; + var agentService = _services.GetRequiredService(); + var dbHook = _services.GetRequiredService(); + var dbType = dbHook.GetDatabaseType(message); + + // Get table DDL from database + var tableDdls = dbType switch + { + "mysql" => GetDdlFromMySql(tables), + "sqlserver" => GetDdlFromSqlServer(tables), + "redshift" => GetDdlFromRedshift(tables), + _ => throw new NotImplementedException($"Database type {dbType} is not supported.") + }; + + message.Content = string.Join("\r\n\r\n", tableDdls); + return true; + } + + private List GetDdlFromMySql(string[] tables) + { + var settings = _services.GetRequiredService(); + var tableDdls = new List(); + using var connection = new MySqlConnection(settings.MySqlMetaConnectionString ?? settings.MySqlConnectionString); + connection.Open(); + + foreach (var table in tables) + { + try + { + var escapedTableName = MySqlHelper.EscapeString(table); + var sql = $"SHOW CREATE TABLE `{escapedTableName}`"; + + using var command = new MySqlCommand(sql, connection); + using var reader = command.ExecuteReader(); + if (reader.Read()) + { + var result = reader.GetString(1); + tableDdls.Add(result); + } + + reader.Close(); + command.Dispose(); + } + catch (Exception ex) + { + _logger.LogWarning($"Error when getting ddl statement of table {table}. {ex.Message}\r\n{ex.InnerException}"); + } + } + + connection.Close(); + return tableDdls; + } + + private List GetDdlFromSqlServer(string[] tables) + { + var settings = _services.GetRequiredService(); + var tableDdls = new List(); + using var connection = new SqlConnection(settings.SqlServerExecutionConnectionString ?? settings.SqlServerConnectionString); + connection.Open(); + + foreach (var table in tables) + { + try + { + var sql = @$"DECLARE @TableName NVARCHAR(128) = '{table}'; + DECLARE @SQL NVARCHAR(MAX) = 'CREATE TABLE ' + @TableName + ' ('; + + SELECT @SQL = @SQL + ' + ' + COLUMN_NAME + ' ' + + DATA_TYPE + + CASE + WHEN CHARACTER_MAXIMUM_LENGTH IS NOT NULL AND DATA_TYPE LIKE '%char%' + THEN '(' + CAST(CHARACTER_MAXIMUM_LENGTH AS VARCHAR(10)) + ')' + WHEN DATA_TYPE IN ('decimal', 'numeric') + THEN '(' + CAST(NUMERIC_PRECISION AS VARCHAR(10)) + ',' + CAST(NUMERIC_SCALE AS VARCHAR(10)) + ')' + ELSE '' + END + ' ' + + CASE WHEN IS_NULLABLE = 'NO' THEN 'NOT NULL' ELSE 'NULL' END + ',' + FROM INFORMATION_SCHEMA.COLUMNS + WHERE TABLE_NAME = @TableName + ORDER BY ORDINAL_POSITION; + + -- Remove the last comma and add closing parenthesis + SET @SQL = LEFT(@SQL, LEN(@SQL) - 1) + ');'; + + SELECT @SQL;"; + + using var command = new SqlCommand(sql, connection); + using var reader = command.ExecuteReader(); + if (reader.Read()) + { + var result = reader.GetString(0); + tableDdls.Add(result); + } + } + catch (Exception ex) + { + _logger.LogWarning($"Error when getting ddl statement of table {table}. {ex.Message}\r\n{ex.InnerException}"); + } + } + + connection.Close(); + return tableDdls; + } + + private List GetDdlFromRedshift(string[] tables) + { + var settings = _services.GetRequiredService(); + var tableDdls = new List(); + var schemas = "'onebi_hour','onebi_day'"; + using var connection = new NpgsqlConnection(settings.RedshiftConnectionString); + connection.Open(); + + foreach (var table in tables) + { + try + { + var sql = $"SELECT columnname, external_type, columnnum FROM svv_external_columns WHERE schemaname in ({schemas}) AND tablename = '{table}';"; + + using var command = new NpgsqlCommand(sql, connection); + using var reader = command.ExecuteReader(); + var ddl = $"Table {table} contains below fields: \r\n"; + while (reader.Read()) + { + /*var result = reader.GetString(0); + tableDdls.Add(result);*/ + var columnName = reader.GetString(0); + var dataType = reader.GetString(1); + ddl += $"{columnName} {dataType}\n"; + } + tableDdls.Add(ddl); + + reader.Close(); + command.Dispose(); + } + catch (Exception ex) + { + _logger.LogWarning($"Error when getting ddl statement of table {table}. {ex.Message}\r\n{ex.InnerException}"); + } + } + connection.Close(); + return tableDdls; + } +} diff --git a/src/Plugins/BotSharp.Plugin.SqlDriver/UtilFunctions/SqlSelect.cs b/src/Plugins/BotSharp.Plugin.SqlDriver/UtilFunctions/SqlSelect.cs new file mode 100644 index 00000000..5ece6ecf --- /dev/null +++ b/src/Plugins/BotSharp.Plugin.SqlDriver/UtilFunctions/SqlSelect.cs @@ -0,0 +1,88 @@ +using Microsoft.Data.SqlClient; +using MySqlConnector; +using Npgsql; +using static Dapper.SqlMapper; + +namespace BotSharp.Plugin.SqlDriver.UtilFunctions; + +public class SqlSelect : IFunctionCallback +{ + public string Name => "util-db-sql_select"; + private readonly IServiceProvider _services; + + public SqlSelect(IServiceProvider services) + { + _services = services; + } + + public async Task Execute(RoleDialogModel message) + { + var args = JsonSerializer.Deserialize(message.FunctionArgs); + + if (args.GeneratedWithoutTableDefinition) + { + message.Content = $"Get the table definition first."; + return false; + } + + // check if need to instantely + var dbHook = _services.GetRequiredService(); + var dbType = dbHook.GetDatabaseType(message); + + var result = dbType switch + { + "mysql" => RunQueryInMySql(args), + "sqlserver" => RunQueryInSqlServer(args), + "redshift" => RunQueryInRedshift(args), + _ => throw new NotImplementedException($"Database type {dbType} is not supported.") + }; + + if (result == null) + { + message.Content = "Record not found"; + } + else + { + message.Content = JsonSerializer.Serialize(result); + args.Return.Value = message.Content; + } + + return true; + } + + private IEnumerable RunQueryInMySql(SqlStatement args) + { + var settings = _services.GetRequiredService(); + using var connection = new MySqlConnection(settings.MySqlExecutionConnectionString); + var dictionary = new Dictionary(); + foreach (var p in args.Parameters) + { + dictionary["@" + p.Name] = p.Value; + } + return connection.Query(args.Statement, dictionary); + } + + private IEnumerable RunQueryInSqlServer(SqlStatement args) + { + var settings = _services.GetRequiredService(); + using var connection = new SqlConnection(settings.SqlServerExecutionConnectionString ?? settings.SqlServerConnectionString); + var dictionary = new Dictionary(); + foreach (var p in args.Parameters) + { + dictionary["@" + p.Name] = p.Value; + } + return connection.Query(args.Statement, dictionary); + } + + private IEnumerable RunQueryInRedshift(SqlStatement args) + { + var settings = _services.GetRequiredService(); + using var connection = new NpgsqlConnection(settings.RedshiftConnectionString); + var dictionary = new Dictionary(); + foreach (var p in args.Parameters) + { + dictionary["@" + p.Name] = p.Value; + } + return connection.Query(args.Statement, dictionary); + } +} diff --git a/src/Plugins/BotSharp.Plugin.SqlDriver/UtilFunctions/VerifyDictionaryTerm.cs b/src/Plugins/BotSharp.Plugin.SqlDriver/UtilFunctions/VerifyDictionaryTerm.cs new file mode 100644 index 00000000..2e6dbe72 --- /dev/null +++ b/src/Plugins/BotSharp.Plugin.SqlDriver/UtilFunctions/VerifyDictionaryTerm.cs @@ -0,0 +1,130 @@ +using BotSharp.Core.Infrastructures; +using MySqlConnector; +using static Dapper.SqlMapper; + +namespace BotSharp.Plugin.SqlDriver.UtilFunctions; + +public class VerifyDictionaryTerm : IFunctionCallback +{ + public string Name => "util-db-verify_dictionary_term"; + public string Indication => "Verifying dictionary term"; + + + private readonly IServiceProvider _services; + + public VerifyDictionaryTerm(IServiceProvider services) + { + _services = services; + } + + public async Task Execute(RoleDialogModel message) + { + var args = JsonSerializer.Deserialize(message.FunctionArgs); + + // get table DDL + var fn = _services.GetRequiredService(); + var msgCopy = RoleDialogModel.From(message); + await fn.InvokeFunction("sql_table_definition", msgCopy); + + // refine SQL + var agentService = _services.GetRequiredService(); + var currentAgent = await agentService.LoadAgent(message.CurrentAgentId); + var dictionarySqlPrompt = await GetDictionarySQLPrompt(args.SqlStatement, msgCopy.Content); + var agent = new Agent + { + Id = message.CurrentAgentId ?? string.Empty, + Name = "sqlDriver_DictionarySearch", + Instruction = dictionarySqlPrompt, + TemplateDict = new Dictionary(), + LlmConfig = currentAgent.LlmConfig + }; + + var response = await GetAiResponse(agent); + args = response.Content.JsonContent(); + + // check if need to instantely + IEnumerable? result = null; + if (!string.IsNullOrWhiteSpace(args.SqlStatement)) + { + var settings = _services.GetRequiredService(); + using var connection = new MySqlConnection(settings.MySqlExecutionConnectionString); + result = connection.Query(args.SqlStatement); + } + + if (result.IsNullOrEmpty()) + { + message.Content = "Record not found"; + } + else + { + message.Content = JsonSerializer.Serialize(result); + } + + var states = _services.GetRequiredService(); + var dictionaryItems = states.GetState("dictionary_items", ""); + var newItem = BuildDictionaryItem(args.Table, args.Reason, message.Content); + dictionaryItems += !string.IsNullOrWhiteSpace(newItem) ? $"\r\n{newItem}\r\n" : string.Empty; + states.SetState("dictionary_items", dictionaryItems); + + return true; + } + + private async Task GetDictionarySQLPrompt(string originalSql, string tableStructure) + { + var agentService = _services.GetRequiredService(); + var render = _services.GetRequiredService(); + var knowledgeHooks = _services.GetServices(); + + var agent = await agentService.GetAgent(BuiltInAgentId.SqlDriver); + var template = agent.Templates.FirstOrDefault(x => x.Name == "database.dictionary.sql")?.Content ?? string.Empty; + var responseFormat = JsonSerializer.Serialize(new LookupDictionary{ }); + + return render.Render(template, new Dictionary + { + { "original_sql", originalSql }, + { "table_structure", tableStructure }, + { "response_format", responseFormat } + }); + } + + private async Task GetAiResponse(Agent agent) + { + var text = "Check and correct the SQL statement."; + var message = new RoleDialogModel(AgentRole.User, text); + + var completion = CompletionProvider.GetChatCompletion(_services, + provider: agent.LlmConfig.Provider, + model: agent.LlmConfig.Model); + + return await completion.GetChatCompletions(agent, new List { message }); + } + + private string BuildDictionaryItem(string? table, string? reason, string? result) + { + var res = string.Empty; + if (!string.IsNullOrWhiteSpace(table)) + { + res += $"Table: {table}"; + } + + if (!string.IsNullOrWhiteSpace(reason)) + { + if (!string.IsNullOrWhiteSpace(res)) + { + res += "\r\n"; + } + res += $"Reason: {reason}"; + } + + if (!string.IsNullOrWhiteSpace(result)) + { + if (!string.IsNullOrWhiteSpace(res)) + { + res += "\r\n"; + } + res += $"Result: {result}"; + } + + return res; + } +} diff --git a/src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/sql_select.json b/src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-db-sql_select.json similarity index 98% rename from src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/sql_select.json rename to src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-db-sql_select.json index 1bcf76a3..29f04789 100644 --- a/src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/sql_select.json +++ b/src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-db-sql_select.json @@ -1,5 +1,5 @@ { - "name": "sql_select", + "name": "util-db-sql_select", "description": "Get the specific value from table", "parameters": { "type": "object", diff --git a/src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/sql_table_definition.json b/src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-db-sql_table_definition.json similarity index 90% rename from src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/sql_table_definition.json rename to src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-db-sql_table_definition.json index e973feb8..6e4b946c 100644 --- a/src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/sql_table_definition.json +++ b/src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-db-sql_table_definition.json @@ -1,5 +1,5 @@ { - "name": "sql_table_definition", + "name": "util-db-sql_table_definition", "description": "Get table structure from database by table name", "parameters": { "type": "object", diff --git a/src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/verify_dictionary_term.json b/src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-db-verify_dictionary_term.json similarity index 96% rename from src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/verify_dictionary_term.json rename to src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-db-verify_dictionary_term.json index 64502c62..c354c105 100644 --- a/src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/verify_dictionary_term.json +++ b/src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-db-verify_dictionary_term.json @@ -1,5 +1,5 @@ { - "name": "verify_dictionary_term", + "name": "util-db-verify_dictionary_term", "description": "Get id from dictionary table by keyword. Call this function only if need_lookup_dictionary is true, is_table_from_knowledge is true and is_insert is false. You can only query one table at a time. The table name must come from the global/domain knowledge.", "parameters": { "type": "object", diff --git a/src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/sql_table_definition.fn.liquid b/src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/sql_table_definition.fn.liquid deleted file mode 100644 index 9a8dee70..00000000 --- a/src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/sql_table_definition.fn.liquid +++ /dev/null @@ -1 +0,0 @@ -Call sql_table_definition to get the table definition of the table. \ No newline at end of file diff --git a/src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/sql_executor.fn.liquid b/src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-db-sql_executor.fn.liquid similarity index 78% rename from src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/sql_executor.fn.liquid rename to src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-db-sql_executor.fn.liquid index edcb4bef..f3dd7faf 100644 --- a/src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/sql_executor.fn.liquid +++ b/src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-db-sql_executor.fn.liquid @@ -1,6 +1,6 @@ You are connecting to {{ db_type }} database. You can run provided SQL statements by following {{ db_type }} rules. -Please call function sql_select if user wants to get or retrieve data from data tables. +Please call function util-db-sql_select if user wants to get or retrieve data from data tables. If there are any parameters, please add them in the WHERE clause, each of which starts with "@". Avoid returning the entire record and only return the fields you need. For example, SELECT Id FROM table WHERE Id=@Id AND Name=@Name diff --git a/src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-db-sql_table_definition.fn.liquid b/src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-db-sql_table_definition.fn.liquid new file mode 100644 index 00000000..3d8ad563 --- /dev/null +++ b/src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-db-sql_table_definition.fn.liquid @@ -0,0 +1 @@ +Call util-db-sql_table_definition to get the table definition of the table. \ No newline at end of file diff --git a/src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/verify_dictionary_term.fn.liquid b/src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-db-verify_dictionary_term.fn.liquid similarity index 92% rename from src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/verify_dictionary_term.fn.liquid rename to src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-db-verify_dictionary_term.fn.liquid index 6a9b06e8..12712215 100644 --- a/src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/verify_dictionary_term.fn.liquid +++ b/src/Plugins/BotSharp.Plugin.SqlDriver/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-db-verify_dictionary_term.fn.liquid @@ -1,4 +1,4 @@ -Rules to call verify_dictionary_term: +Rules to call util-db-verify_dictionary_term: ===== 1. The table name must come from the planning in conversation. 2. You must return the id and name/code for existing dictionary. diff --git a/src/Plugins/BotSharp.Plugin.Twilio/BotSharp.Plugin.Twilio.csproj b/src/Plugins/BotSharp.Plugin.Twilio/BotSharp.Plugin.Twilio.csproj index 662bf344..aff07e81 100644 --- a/src/Plugins/BotSharp.Plugin.Twilio/BotSharp.Plugin.Twilio.csproj +++ b/src/Plugins/BotSharp.Plugin.Twilio/BotSharp.Plugin.Twilio.csproj @@ -7,17 +7,17 @@ $(GeneratePackageOnBuild) $(SolutionDir)packages - + - - + + - + - + PreserveNewest - + PreserveNewest diff --git a/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/Enums/UtilityName.cs b/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/Enums/UtilityName.cs index 66abcd3a..63252a57 100644 --- a/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/Enums/UtilityName.cs +++ b/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/Enums/UtilityName.cs @@ -2,6 +2,6 @@ namespace BotSharp.Plugin.Twilio.OutboundPhoneCallHandler.Enums { public class UtilityName { - public const string OutboundPhoneCall = "twilio-outbound-phone-call"; + public const string OutboundPhoneCall = "twilio.twilio-outbound-phone-call"; } } diff --git a/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/Functions/HandleOutboundPhoneCallFn.cs b/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/Functions/HandleOutboundPhoneCallFn.cs index b9c77a71..a14564ba 100644 --- a/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/Functions/HandleOutboundPhoneCallFn.cs +++ b/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/Functions/HandleOutboundPhoneCallFn.cs @@ -16,7 +16,7 @@ namespace BotSharp.Plugin.Twilio.OutboundPhoneCallHandler.Functions private readonly BotSharpOptions _options; private readonly TwilioSetting _twilioSetting; - public string Name => "twilio_outbound_phone_call"; + public string Name => "util-twilio-twilio_outbound_phone_call"; public string Indication => "Dialing the number"; public HandleOutboundPhoneCallFn( diff --git a/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/Hooks/OutboundPhoneCallHandlerUtilityHook.cs b/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/Hooks/OutboundPhoneCallHandlerUtilityHook.cs index 09e8a9e4..32639c9a 100644 --- a/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/Hooks/OutboundPhoneCallHandlerUtilityHook.cs +++ b/src/Plugins/BotSharp.Plugin.Twilio/OutboundPhoneCallHandler/Hooks/OutboundPhoneCallHandlerUtilityHook.cs @@ -5,14 +5,15 @@ namespace BotSharp.Plugin.Twilio.OutboundPhoneCallHandler.Hooks; public class OutboundPhoneCallHandlerUtilityHook : IAgentUtilityHook { - private static string OUTBOUND_PHONE_CALL_FN = "twilio_outbound_phone_call"; + private static string PREFIX = "util-twilio-"; + private static string OUTBOUND_PHONE_CALL_FN = $"{PREFIX}twilio_outbound_phone_call"; public void AddUtilities(List utilities) { var utility = new AgentUtility { Name = UtilityName.OutboundPhoneCall, - Functions = [new(OUTBOUND_PHONE_CALL_FN)], + Functions = [new($"{OUTBOUND_PHONE_CALL_FN}")], Templates = [new($"{OUTBOUND_PHONE_CALL_FN}.fn")] }; diff --git a/src/Plugins/BotSharp.Plugin.Twilio/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/twilio_outbound_phone_call.json b/src/Plugins/BotSharp.Plugin.Twilio/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-twilio-twilio_outbound_phone_call.json similarity index 92% rename from src/Plugins/BotSharp.Plugin.Twilio/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/twilio_outbound_phone_call.json rename to src/Plugins/BotSharp.Plugin.Twilio/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-twilio-twilio_outbound_phone_call.json index 8a49f441..768c6fde 100644 --- a/src/Plugins/BotSharp.Plugin.Twilio/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/twilio_outbound_phone_call.json +++ b/src/Plugins/BotSharp.Plugin.Twilio/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/functions/util-twilio-twilio_outbound_phone_call.json @@ -1,5 +1,5 @@ { - "name": "twilio_outbound_phone_call", + "name": "util-twilio-twilio_outbound_phone_call", "description": "If the user wants to initiate a phone call, you need to capture the phone number and compose the message the users wants to send. Then call this function to make an outbound call via Twilio.", "parameters": { "type": "object", diff --git a/src/Plugins/BotSharp.Plugin.Twilio/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/twilio_outbound_phone_call.fn.liquid b/src/Plugins/BotSharp.Plugin.Twilio/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-twilio-twilio_outbound_phone_call.fn.liquid similarity index 51% rename from src/Plugins/BotSharp.Plugin.Twilio/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/twilio_outbound_phone_call.fn.liquid rename to src/Plugins/BotSharp.Plugin.Twilio/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-twilio-twilio_outbound_phone_call.fn.liquid index 55210a34..3bfb7dc2 100644 --- a/src/Plugins/BotSharp.Plugin.Twilio/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/twilio_outbound_phone_call.fn.liquid +++ b/src/Plugins/BotSharp.Plugin.Twilio/data/agents/6745151e-6d46-4a02-8de4-1c4f21c7da95/templates/util-twilio-twilio_outbound_phone_call.fn.liquid @@ -1,2 +1,2 @@ ** Please take a look at the conversation and decide whether user wants to make an outbound call. -** Please call handle_outbound_call if user wants to make an outbound call. \ No newline at end of file +** Please call util-twilio-twilio_outbound_phone_call if user wants to make an outbound call. \ No newline at end of file