From f4b4cd7f761533686bed6ade35025dc01c3a61d2 Mon Sep 17 00:00:00 2001 From: uezo Date: Mon, 2 Sep 2024 01:46:31 +0900 Subject: [PATCH] Provide workaround to clear state data, including LLM context Execute `DialogController.ClearStateAsync()` to clear LLM context. --- Scripts/Dialog/DialogController.cs | 12 ++++++++++++ Scripts/Dialog/Processor/LocalRequestProcessor.cs | 5 +++++ 2 files changed, 17 insertions(+) diff --git a/Scripts/Dialog/DialogController.cs b/Scripts/Dialog/DialogController.cs index 75c8e0e..6302e29 100644 --- a/Scripts/Dialog/DialogController.cs +++ b/Scripts/Dialog/DialogController.cs @@ -569,6 +569,18 @@ public CancellationToken GetDialogToken() return dialogTokenSource.Token; } + public async UniTask ClearStateAsync(string userId = null) + { + if (requestProcessor is LocalRequestProcessor) + { + if (string.IsNullOrEmpty(userId)) + { + userId = GetClientIdDefault(); + } + await ((LocalRequestProcessor)requestProcessor).ClearStateAsync(userId); + } + } + private void Update() { // Control mute diff --git a/Scripts/Dialog/Processor/LocalRequestProcessor.cs b/Scripts/Dialog/Processor/LocalRequestProcessor.cs index 274ba6a..ff96acb 100644 --- a/Scripts/Dialog/Processor/LocalRequestProcessor.cs +++ b/Scripts/Dialog/Processor/LocalRequestProcessor.cs @@ -151,5 +151,10 @@ public virtual async UniTask ProcessRequestAsync(Request request, Canc throw ex; } } + + public virtual async UniTask ClearStateAsync(string userId) + { + await StateStore.DeleteStateAsync(userId); + } } }