From d4f4e1e805944eba80555e3a306449855bf570fe Mon Sep 17 00:00:00 2001 From: hchen Date: Thu, 10 Aug 2023 11:43:35 -0500 Subject: [PATCH] Support agent switch based on state. --- .../Conversations/ConversationCompletionHookBase.cs | 2 +- .../Conversations/IConversationCompletionHook.cs | 2 +- .../Conversations/Services/ConversationService.cs | 6 +++++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/Infrastructure/BotSharp.Abstraction/Conversations/ConversationCompletionHookBase.cs b/src/Infrastructure/BotSharp.Abstraction/Conversations/ConversationCompletionHookBase.cs index 5ac920c2..435fabaf 100644 --- a/src/Infrastructure/BotSharp.Abstraction/Conversations/ConversationCompletionHookBase.cs +++ b/src/Infrastructure/BotSharp.Abstraction/Conversations/ConversationCompletionHookBase.cs @@ -41,7 +41,7 @@ public abstract class ConversationCompletionHookBase : IConversationCompletionHo return this; } - public virtual Task OnStateLoaded(ConversationState state) + public virtual Task OnStateLoaded(ConversationState state, Action? onAgentSwitched = null) { return Task.CompletedTask; } diff --git a/src/Infrastructure/BotSharp.Abstraction/Conversations/IConversationCompletionHook.cs b/src/Infrastructure/BotSharp.Abstraction/Conversations/IConversationCompletionHook.cs index 6421401e..02b294c9 100644 --- a/src/Infrastructure/BotSharp.Abstraction/Conversations/IConversationCompletionHook.cs +++ b/src/Infrastructure/BotSharp.Abstraction/Conversations/IConversationCompletionHook.cs @@ -17,7 +17,7 @@ public interface IConversationCompletionHook IChatCompletion ChatCompletion { get; } IConversationCompletionHook SetChatCompletion(IChatCompletion chatCompletion); - Task OnStateLoaded(ConversationState state); + Task OnStateLoaded(ConversationState state, Action? onAgentSwitched = null); Task BeforeCompletion(); Task OnFunctionExecuting(string name, string args); Task AfterCompletion(RoleDialogModel message); diff --git a/src/Infrastructure/BotSharp.Core/Conversations/Services/ConversationService.cs b/src/Infrastructure/BotSharp.Core/Conversations/Services/ConversationService.cs index f109126f..6d2ee970 100644 --- a/src/Infrastructure/BotSharp.Core/Conversations/Services/ConversationService.cs +++ b/src/Infrastructure/BotSharp.Core/Conversations/Services/ConversationService.cs @@ -149,7 +149,11 @@ public class ConversationService : IConversationService .SetDialogs(wholeDialogs) .SetChatCompletion(chatCompletion); - await hook.OnStateLoaded(state); + await hook.OnStateLoaded(state, onAgentSwitched: (x, prompt) => + { + agent = x; + wholeDialogs.Add(new RoleDialogModel("user", prompt)); + }); await hook.BeforeCompletion(); }