diff --git a/src/Infrastructure/BotSharp.Core/Routing/RoutingService.cs b/src/Infrastructure/BotSharp.Core/Routing/RoutingService.cs index 8a0ab6661..19654deb9 100644 --- a/src/Infrastructure/BotSharp.Core/Routing/RoutingService.cs +++ b/src/Infrastructure/BotSharp.Core/Routing/RoutingService.cs @@ -37,6 +37,7 @@ public async Task InstructDirect(Agent agent, RoleDialogModel m storage.Append(conv.ConversationId, message); var dialogs = conv.GetDialogHistory(); + Context.SetDialogs(dialogs); handler.SetDialogs(dialogs); var inst = new FunctionCallFromLlm diff --git a/src/Plugins/BotSharp.Plugin.FileHandler/Functions/ReadImageFn.cs b/src/Plugins/BotSharp.Plugin.FileHandler/Functions/ReadImageFn.cs index 32769beee..710c2c800 100644 --- a/src/Plugins/BotSharp.Plugin.FileHandler/Functions/ReadImageFn.cs +++ b/src/Plugins/BotSharp.Plugin.FileHandler/Functions/ReadImageFn.cs @@ -31,8 +31,6 @@ public async Task Execute(RoleDialogModel message) fromAgent = await agentService.LoadAgent(message.CurrentAgentId); } - var wholeDialogs = routingCtx.GetDialogs(); - var dialogs = AssembleFiles(conv.ConversationId, args?.ImageUrls, wholeDialogs); var agent = new Agent { Id = BuiltInAgentId.UtilityAssistant, @@ -41,6 +39,13 @@ public async Task Execute(RoleDialogModel message) TemplateDict = new Dictionary() }; + var wholeDialogs = routingCtx.GetDialogs(); + if (wholeDialogs.IsNullOrEmpty()) + { + wholeDialogs = conv.GetDialogHistory(); + } + + var dialogs = AssembleFiles(conv.ConversationId, args?.ImageUrls, wholeDialogs); var response = await GetChatCompletion(agent, dialogs); message.Content = response; return true; @@ -76,7 +81,7 @@ private List AssembleFiles(string conversationId, IEnumerable x.Role == AgentRole.User) ?? dialogs.Last(); var files = lastDialog.Files ?? []; var addnFiles = imageUrls.Select(x => x?.Trim()) .Where(x => !string.IsNullOrWhiteSpace(x))