All exclude some states when cleaning states.
This commit is contained in:
parent
434b7a68e7
commit
d12954824b
|
|
@ -17,6 +17,6 @@ public interface IConversationStateService
|
|||
int activeRounds = -1, string valueType = StateDataType.String, string source = StateSource.User, bool readOnly = false);
|
||||
void SaveStateByArgs(JsonDocument args);
|
||||
bool RemoveState(string name);
|
||||
void CleanStates();
|
||||
void CleanStates(params string[] keepStates);
|
||||
void Save();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,4 +7,6 @@ public class StateConst
|
|||
public const string NEXT_ACTION_AGENT = "next_action_agent";
|
||||
public const string NEXT_ACTION_REASON = "next_action_reason";
|
||||
public const string USER_GOAL_AGENT = "user_goal_agent";
|
||||
|
||||
public const string LANGUAGE = "language";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
using BotSharp.Abstraction.Infrastructures.Enums;
|
||||
|
||||
namespace BotSharp.Core.Conversations.Services;
|
||||
|
||||
public partial class ConversationService : IConversationService
|
||||
|
|
@ -19,7 +21,8 @@ public partial class ConversationService : IConversationService
|
|||
if (resetStates)
|
||||
{
|
||||
var states = _services.GetRequiredService<IConversationStateService>();
|
||||
states.CleanStates();
|
||||
// keep language state
|
||||
states.CleanStates(StateConst.LANGUAGE);
|
||||
}
|
||||
|
||||
var hooks = _services.GetServices<IConversationHook>()
|
||||
|
|
|
|||
|
|
@ -270,7 +270,7 @@ public class ConversationStateService : IConversationStateService, IDisposable
|
|||
return true;
|
||||
}
|
||||
|
||||
public void CleanStates()
|
||||
public void CleanStates(params string[] keepStates)
|
||||
{
|
||||
var routingCtx = _services.GetRequiredService<IRoutingContext>();
|
||||
var curMsgId = routingCtx.MessageId;
|
||||
|
|
@ -278,6 +278,12 @@ public class ConversationStateService : IConversationStateService, IDisposable
|
|||
|
||||
foreach (var key in _curStates.Keys)
|
||||
{
|
||||
// skip state
|
||||
if (keepStates.Contains(key))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var value = _curStates[key];
|
||||
if (value == null || !value.Versioning || value.Values.IsNullOrEmpty()) continue;
|
||||
|
||||
|
|
|
|||
|
|
@ -88,7 +88,7 @@ public partial class RoutingService : IRoutingService
|
|||
{
|
||||
var translator = _services.GetRequiredService<ITranslationService>();
|
||||
|
||||
var language = states.GetState("language", LanguageType.UNKNOWN);
|
||||
var language = states.GetState(StateConst.LANGUAGE, LanguageType.UNKNOWN);
|
||||
if (language != LanguageType.ENGLISH)
|
||||
{
|
||||
message.SecondaryContent = message.Content;
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ namespace BotSharp.Logger.Hooks
|
|||
var agentService = _services.GetRequiredService<IAgentService>();
|
||||
var router = await agentService.LoadAgent(AIAssistant);
|
||||
var translator = _services.GetRequiredService<ITranslationService>();
|
||||
var language = _states.GetState("language", LanguageType.ENGLISH);
|
||||
var language = _states.GetState(StateConst.LANGUAGE, LanguageType.ENGLISH);
|
||||
if (language != LanguageType.UNKNOWN && language != LanguageType.ENGLISH)
|
||||
{
|
||||
if (message.RichContent != null)
|
||||
|
|
|
|||
|
|
@ -61,10 +61,10 @@ public class TranslationService : ITranslationService
|
|||
{
|
||||
// Override language if it's Unknown, it's used to output the corresponding language.
|
||||
var states = _services.GetRequiredService<IConversationStateService>();
|
||||
if (!states.ContainsState("language"))
|
||||
if (!states.ContainsState(StateConst.LANGUAGE))
|
||||
{
|
||||
var inputLanguage = string.IsNullOrEmpty(translatedStringList.InputLanguage) ? LanguageType.ENGLISH : translatedStringList.InputLanguage;
|
||||
states.SetState("language", inputLanguage, activeRounds: 1);
|
||||
states.SetState(StateConst.LANGUAGE, inputLanguage, activeRounds: 1);
|
||||
}
|
||||
|
||||
var translatedTexts = translatedStringList.Texts;
|
||||
|
|
@ -302,7 +302,7 @@ public class TranslationService : ITranslationService
|
|||
TemplateDict = new Dictionary<string, object>
|
||||
{
|
||||
{ "text_list", texts },
|
||||
{ "language", language }
|
||||
{ StateConst.LANGUAGE, language }
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue