Skip to content

Commit 7b649c0

Browse files
authored
Merge pull request #665 from hchen2020/master
Redis backplane for SignalR
2 parents 0b9960b + 47bb394 commit 7b649c0

File tree

4 files changed

+14
-16
lines changed

4 files changed

+14
-16
lines changed

src/Infrastructure/BotSharp.Abstraction/Knowledges/IKnowledgeHook.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ public interface IKnowledgeHook
55
Task<List<KnowledgeChunk>> CollectChunkedKnowledge()
66
=> Task.FromResult(new List<KnowledgeChunk>());
77

8-
Task<List<string>> GetRelevantKnowledges(string text)
8+
Task<List<string>> GetRelevantKnowledges(RoleDialogModel message, string text)
99
=> Task.FromResult(new List<string>());
1010

11-
Task<List<string>> GetGlobalKnowledges()
11+
Task<List<string>> GetGlobalKnowledges(RoleDialogModel message)
1212
=> Task.FromResult(new List<string>());
1313
}

src/Plugins/BotSharp.Plugin.Planner/Functions/PrimaryStagePlanFn.cs

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,35 +19,26 @@ public async Task<bool> Execute(RoleDialogModel message)
1919
{
2020
var agentService = _services.GetRequiredService<IAgentService>();
2121
var state = _services.GetRequiredService<IConversationStateService>();
22-
// var knowledgeService = _services.GetRequiredService<IKnowledgeService>();
23-
// var knowledgeSettings = _services.GetRequiredService<KnowledgeBaseSettings>();
2422

2523
state.SetState("max_tokens", "4096");
2624
var task = JsonSerializer.Deserialize<PrimaryRequirementRequest>(message.FunctionArgs);
27-
// var collectionName = knowledgeSettings.Default.CollectionName ?? KnowledgeCollectionName.BotSharp;
2825

2926
// Get knowledge from vectordb
3027
var hooks = _services.GetServices<IKnowledgeHook>();
3128
var knowledges = new List<string>();
3229
foreach (var question in task.Questions)
3330
{
34-
/*var list = await knowledgeService.SearchVectorKnowledge(question, collectionName, new VectorSearchOptions
35-
{
36-
Confidence = 0.4f
37-
});
38-
knowledges.Add(string.Join("\r\n\r\n=====\r\n", list.Select(x => x.ToQuestionAnswer())));*/
39-
4031
foreach (var hook in hooks)
4132
{
42-
var k = await hook.GetRelevantKnowledges(question);
33+
var k = await hook.GetRelevantKnowledges(message, question);
4334
knowledges.AddRange(k);
4435
}
4536
}
4637
knowledges = knowledges.Distinct().ToList();
4738

4839
// Get first stage planning prompt
4940
var currentAgent = await agentService.LoadAgent(message.CurrentAgentId);
50-
var firstPlanningPrompt = await GetFirstStagePlanPrompt(task.Requirements, knowledges);
41+
var firstPlanningPrompt = await GetFirstStagePlanPrompt(message, task.Requirements, knowledges);
5142
var plannerAgent = new Agent
5243
{
5344
Id = BuiltInAgentId.Planner,
@@ -65,7 +56,7 @@ public async Task<bool> Execute(RoleDialogModel message)
6556
return true;
6657
}
6758

68-
private async Task<string> GetFirstStagePlanPrompt(string taskDescription, List<string> relevantKnowledges)
59+
private async Task<string> GetFirstStagePlanPrompt(RoleDialogModel message, string taskDescription, List<string> relevantKnowledges)
6960
{
7061
var agentService = _services.GetRequiredService<IAgentService>();
7162
var render = _services.GetRequiredService<ITemplateRender>();
@@ -83,7 +74,7 @@ private async Task<string> GetFirstStagePlanPrompt(string taskDescription, List<
8374
var globalKnowledges = new List<string>();
8475
foreach (var hook in knowledgeHooks)
8576
{
86-
var k = await hook.GetGlobalKnowledges();
77+
var k = await hook.GetGlobalKnowledges(message);
8778
globalKnowledges.AddRange(k);
8879
}
8980

src/WebStarter/Program.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using BotSharp.Plugin.ChatHub;
55
using Serilog;
66
using BotSharp.Abstraction.Messaging.JsonConverters;
7+
using StackExchange.Redis;
78

89
var builder = WebApplication.CreateBuilder(args);
910

@@ -28,7 +29,12 @@
2829
builder.AddServiceDefaults();
2930

3031
// Add SignalR for WebSocket
31-
builder.Services.AddSignalR();
32+
builder.Services.AddSignalR()
33+
// Enable Redis backplane for SignalR
34+
/*.AddStackExchangeRedis("127.0.0.1", o =>
35+
{
36+
o.Configuration.ChannelPrefix = RedisChannel.Literal("botsharp");
37+
})*/;
3238

3339
var app = builder.Build();
3440

src/WebStarter/WebStarter.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
</ItemGroup>
2222

2323
<ItemGroup>
24+
<PackageReference Include="Microsoft.AspNetCore.SignalR.StackExchangeRedis" Version="8.0.8" />
2425
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.20.1" />
2526
</ItemGroup>
2627

0 commit comments

Comments
 (0)