From 47bb3941a71dfcb5b03f371bc92c56ef324910c2 Mon Sep 17 00:00:00 2001 From: Haiping Chen Date: Wed, 2 Oct 2024 14:18:12 -0500 Subject: [PATCH] Redis backplane for SignalR --- .../Knowledges/IKnowledgeHook.cs | 4 ++-- .../Functions/PrimaryStagePlanFn.cs | 17 ++++------------- src/WebStarter/Program.cs | 8 +++++++- src/WebStarter/WebStarter.csproj | 1 + 4 files changed, 14 insertions(+), 16 deletions(-) diff --git a/src/Infrastructure/BotSharp.Abstraction/Knowledges/IKnowledgeHook.cs b/src/Infrastructure/BotSharp.Abstraction/Knowledges/IKnowledgeHook.cs index 7143d7897..6234611ca 100644 --- a/src/Infrastructure/BotSharp.Abstraction/Knowledges/IKnowledgeHook.cs +++ b/src/Infrastructure/BotSharp.Abstraction/Knowledges/IKnowledgeHook.cs @@ -5,9 +5,9 @@ public interface IKnowledgeHook Task> CollectChunkedKnowledge() => Task.FromResult(new List()); - Task> GetRelevantKnowledges(string text) + Task> GetRelevantKnowledges(RoleDialogModel message, string text) => Task.FromResult(new List()); - Task> GetGlobalKnowledges() + Task> GetGlobalKnowledges(RoleDialogModel message) => Task.FromResult(new List()); } diff --git a/src/Plugins/BotSharp.Plugin.Planner/Functions/PrimaryStagePlanFn.cs b/src/Plugins/BotSharp.Plugin.Planner/Functions/PrimaryStagePlanFn.cs index e92c3e8ed..f854a51d9 100644 --- a/src/Plugins/BotSharp.Plugin.Planner/Functions/PrimaryStagePlanFn.cs +++ b/src/Plugins/BotSharp.Plugin.Planner/Functions/PrimaryStagePlanFn.cs @@ -19,27 +19,18 @@ public async Task Execute(RoleDialogModel message) { var agentService = _services.GetRequiredService(); var state = _services.GetRequiredService(); - // var knowledgeService = _services.GetRequiredService(); - // var knowledgeSettings = _services.GetRequiredService(); state.SetState("max_tokens", "4096"); var task = JsonSerializer.Deserialize(message.FunctionArgs); - // var collectionName = knowledgeSettings.Default.CollectionName ?? KnowledgeCollectionName.BotSharp; // Get knowledge from vectordb var hooks = _services.GetServices(); var knowledges = new List(); foreach (var question in task.Questions) { - /*var list = await knowledgeService.SearchVectorKnowledge(question, collectionName, new VectorSearchOptions - { - Confidence = 0.4f - }); - knowledges.Add(string.Join("\r\n\r\n=====\r\n", list.Select(x => x.ToQuestionAnswer())));*/ - foreach (var hook in hooks) { - var k = await hook.GetRelevantKnowledges(question); + var k = await hook.GetRelevantKnowledges(message, question); knowledges.AddRange(k); } } @@ -47,7 +38,7 @@ public async Task Execute(RoleDialogModel message) // Get first stage planning prompt var currentAgent = await agentService.LoadAgent(message.CurrentAgentId); - var firstPlanningPrompt = await GetFirstStagePlanPrompt(task.Requirements, knowledges); + var firstPlanningPrompt = await GetFirstStagePlanPrompt(message, task.Requirements, knowledges); var plannerAgent = new Agent { Id = BuiltInAgentId.Planner, @@ -65,7 +56,7 @@ public async Task Execute(RoleDialogModel message) return true; } - private async Task GetFirstStagePlanPrompt(string taskDescription, List relevantKnowledges) + private async Task GetFirstStagePlanPrompt(RoleDialogModel message, string taskDescription, List relevantKnowledges) { var agentService = _services.GetRequiredService(); var render = _services.GetRequiredService(); @@ -83,7 +74,7 @@ private async Task GetFirstStagePlanPrompt(string taskDescription, List< var globalKnowledges = new List(); foreach (var hook in knowledgeHooks) { - var k = await hook.GetGlobalKnowledges(); + var k = await hook.GetGlobalKnowledges(message); globalKnowledges.AddRange(k); } diff --git a/src/WebStarter/Program.cs b/src/WebStarter/Program.cs index e6daf9c16..d40152677 100644 --- a/src/WebStarter/Program.cs +++ b/src/WebStarter/Program.cs @@ -4,6 +4,7 @@ using BotSharp.Plugin.ChatHub; using Serilog; using BotSharp.Abstraction.Messaging.JsonConverters; +using StackExchange.Redis; var builder = WebApplication.CreateBuilder(args); @@ -28,7 +29,12 @@ builder.AddServiceDefaults(); // Add SignalR for WebSocket -builder.Services.AddSignalR(); +builder.Services.AddSignalR() + // Enable Redis backplane for SignalR + /*.AddStackExchangeRedis("127.0.0.1", o => + { + o.Configuration.ChannelPrefix = RedisChannel.Literal("botsharp"); + })*/; var app = builder.Build(); diff --git a/src/WebStarter/WebStarter.csproj b/src/WebStarter/WebStarter.csproj index 4d7a31ac2..833b7c0a1 100644 --- a/src/WebStarter/WebStarter.csproj +++ b/src/WebStarter/WebStarter.csproj @@ -21,6 +21,7 @@ +