diff --git a/src/Infrastructure/BotSharp.Abstraction/Graph/IGraphDb.cs b/src/Infrastructure/BotSharp.Abstraction/Graph/IGraphDb.cs index c627bb570..01701e0be 100644 --- a/src/Infrastructure/BotSharp.Abstraction/Graph/IGraphDb.cs +++ b/src/Infrastructure/BotSharp.Abstraction/Graph/IGraphDb.cs @@ -9,7 +9,7 @@ public interface IGraphDb { public string Provider { get; } - Task SearchAsync(string query, GraphSearchOptions? options = null) + Task ExecuteQueryAsync(string query, GraphQueryExecuteOptions? options = null) => throw new NotImplementedException(); #region Node diff --git a/src/Infrastructure/BotSharp.Abstraction/Graph/IGraphKnowledgeService.cs b/src/Infrastructure/BotSharp.Abstraction/Graph/IGraphKnowledgeService.cs index 03a743e4b..22852a11b 100644 --- a/src/Infrastructure/BotSharp.Abstraction/Graph/IGraphKnowledgeService.cs +++ b/src/Infrastructure/BotSharp.Abstraction/Graph/IGraphKnowledgeService.cs @@ -7,7 +7,7 @@ namespace BotSharp.Abstraction.Graph; public interface IGraphKnowledgeService { - Task SearchAsync(string query, GraphSearchOptions? options = null); + Task ExecuteQueryAsync(string query, GraphQueryOptions? options = null); #region Node Task GetNodeAsync(string graphId, string nodeId, GraphNodeOptions? options = null); diff --git a/src/Infrastructure/BotSharp.Abstraction/Graph/Models/GraphSearchResult.cs b/src/Infrastructure/BotSharp.Abstraction/Graph/Models/GraphQueryResult.cs similarity index 87% rename from src/Infrastructure/BotSharp.Abstraction/Graph/Models/GraphSearchResult.cs rename to src/Infrastructure/BotSharp.Abstraction/Graph/Models/GraphQueryResult.cs index cb42d6f61..cf840b1a7 100644 --- a/src/Infrastructure/BotSharp.Abstraction/Graph/Models/GraphSearchResult.cs +++ b/src/Infrastructure/BotSharp.Abstraction/Graph/Models/GraphQueryResult.cs @@ -1,6 +1,6 @@ namespace BotSharp.Abstraction.Graph.Models; -public class GraphSearchResult +public class GraphQueryResult { public string Result { get; set; } = string.Empty; public string[] Keys { get; set; } = []; diff --git a/src/Infrastructure/BotSharp.Abstraction/Graph/Options/GraphSearchOptions.cs b/src/Infrastructure/BotSharp.Abstraction/Graph/Options/GraphQueryOptions.cs similarity index 58% rename from src/Infrastructure/BotSharp.Abstraction/Graph/Options/GraphSearchOptions.cs rename to src/Infrastructure/BotSharp.Abstraction/Graph/Options/GraphQueryOptions.cs index 3e00f3387..2d747d6e8 100644 --- a/src/Infrastructure/BotSharp.Abstraction/Graph/Options/GraphSearchOptions.cs +++ b/src/Infrastructure/BotSharp.Abstraction/Graph/Options/GraphQueryOptions.cs @@ -1,9 +1,13 @@ namespace BotSharp.Abstraction.Graph.Options; -public class GraphSearchOptions +public class GraphQueryOptions : GraphQueryExecuteOptions +{ + public string Provider { get; set; } +} + +public class GraphQueryExecuteOptions { - public string? Provider { get; set; } public string? GraphId { get; set; } public Dictionary? Arguments { get; set; } public string? Method { get; set; } -} +} \ No newline at end of file diff --git a/src/Infrastructure/BotSharp.OpenAPI/Controllers/KnowledgeBase/KnowledgeBaseController.cs b/src/Infrastructure/BotSharp.OpenAPI/Controllers/KnowledgeBase/KnowledgeBaseController.cs index c775cbf84..1ab9278b9 100644 --- a/src/Infrastructure/BotSharp.OpenAPI/Controllers/KnowledgeBase/KnowledgeBaseController.cs +++ b/src/Infrastructure/BotSharp.OpenAPI/Controllers/KnowledgeBase/KnowledgeBaseController.cs @@ -208,7 +208,7 @@ public async Task DeleteVectorCollectionSnapshots([FromRoute] string colle [HttpPost("/knowledge/graph/search")] public async Task SearchGraphKnowledge([FromBody] SearchGraphKnowledgeRequest request) { - var options = new GraphSearchOptions + var options = new GraphQueryOptions { Provider = request.Provider, GraphId = request.GraphId, @@ -216,7 +216,7 @@ public async Task SearchGraphKnowledge([FromBody] Searc Method = request.Method }; - var result = await _graphKnowledgeService.SearchAsync(request.Query, options); + var result = await _graphKnowledgeService.ExecuteQueryAsync(request.Query, options); return new GraphKnowledgeViewModel { Result = result.Result diff --git a/src/Plugins/BotSharp.Plugin.Graph/GraphDb.cs b/src/Plugins/BotSharp.Plugin.Graph/GraphDb.cs index 219a4a529..be189898e 100644 --- a/src/Plugins/BotSharp.Plugin.Graph/GraphDb.cs +++ b/src/Plugins/BotSharp.Plugin.Graph/GraphDb.cs @@ -38,11 +38,11 @@ public GraphDb( public string Provider => "Remote"; - public async Task SearchAsync(string query, GraphSearchOptions? options = null) + public async Task ExecuteQueryAsync(string query, GraphQueryExecuteOptions? options = null) { if (string.IsNullOrWhiteSpace(_settings.BaseUrl)) { - return new GraphSearchResult(); + return new GraphQueryResult(); } var url = $"{_settings.BaseUrl}{_settings.SearchPath}"; @@ -56,9 +56,9 @@ public async Task SearchAsync(string query, GraphSearchOption #region Private methods - private async Task SendRequest(string url, GraphQueryRequest request) + private async Task SendRequest(string url, GraphQueryRequest request) { - var result = new GraphSearchResult(); + var result = new GraphQueryResult(); var http = _services.GetRequiredService(); using (var client = http.CreateClient()) @@ -79,7 +79,7 @@ private async Task SendRequest(string url, GraphQueryRequest rawResponse.EnsureSuccessStatusCode(); var responseStr = await rawResponse.Content.ReadAsStringAsync(); - result = JsonSerializer.Deserialize(responseStr, _jsonOptions); + result = JsonSerializer.Deserialize(responseStr, _jsonOptions); return result; } catch (Exception ex) diff --git a/src/Plugins/BotSharp.Plugin.KnowledgeBase/Graph/GraphKnowledgeService.cs b/src/Plugins/BotSharp.Plugin.KnowledgeBase/Graph/GraphKnowledgeService.cs index 18d03d986..39b406a83 100644 --- a/src/Plugins/BotSharp.Plugin.KnowledgeBase/Graph/GraphKnowledgeService.cs +++ b/src/Plugins/BotSharp.Plugin.KnowledgeBase/Graph/GraphKnowledgeService.cs @@ -18,18 +18,18 @@ public GraphKnowledgeService( _settings = settings; } - public async Task SearchAsync(string query, GraphSearchOptions? options = null) + public async Task ExecuteQueryAsync(string query, GraphQueryOptions? options = null) { try { var db = GetGraphDb(options?.Provider); - var result = await db.SearchAsync(query, options); + var result = await db.ExecuteQueryAsync(query, options); return result; } catch (Exception ex) { _logger.LogError(ex, $"Error when searching graph knowledge (Query: {query})."); - return new GraphSearchResult(); + return new GraphQueryResult(); } } diff --git a/src/Plugins/BotSharp.Plugin.KnowledgeBase/Hooks/KnowledgeHook.cs b/src/Plugins/BotSharp.Plugin.KnowledgeBase/Hooks/KnowledgeHook.cs index 6b4b8b99a..00ec683b5 100644 --- a/src/Plugins/BotSharp.Plugin.KnowledgeBase/Hooks/KnowledgeHook.cs +++ b/src/Plugins/BotSharp.Plugin.KnowledgeBase/Hooks/KnowledgeHook.cs @@ -36,11 +36,12 @@ public async Task> GetDomainKnowledges(RoleDialogModel message, str { if (knowledgeBase.Type == "relationships") { - var options = new GraphSearchOptions + var options = new GraphQueryOptions { + Provider = "Remote", Method = "local" }; - var result = await _graphKnowledgeService.SearchAsync(text, options); + var result = await _graphKnowledgeService.ExecuteQueryAsync(text, options); results.Add(result.Result); } else if (knowledgeBase.Type == "document") @@ -89,11 +90,12 @@ public async Task> GetGlobalKnowledges(RoleDialogModel message) { if (knowledgeBase.Type == "relationships") { - var options = new GraphSearchOptions + var options = new GraphQueryOptions { + Provider = "Remote", Method = "local" }; - var result = await _graphKnowledgeService.SearchAsync(text, options); + var result = await _graphKnowledgeService.ExecuteQueryAsync(text, options); results.Add(result.Result); } else diff --git a/src/Plugins/BotSharp.Plugin.Membase/Controllers/MembaseController.cs b/src/Plugins/BotSharp.Plugin.Membase/Controllers/MembaseController.cs index 056409a83..dbc7393a8 100644 --- a/src/Plugins/BotSharp.Plugin.Membase/Controllers/MembaseController.cs +++ b/src/Plugins/BotSharp.Plugin.Membase/Controllers/MembaseController.cs @@ -40,7 +40,7 @@ public async Task ExecuteGraphQuery(string graphId, [FromBody] Cy try { var graph = _services.GetServices().First(x => x.Provider == "membase"); - var result = await graph.SearchAsync(query: request.Query, options: new() + var result = await graph.ExecuteQueryAsync(query: request.Query, options: new() { GraphId = graphId, Arguments = request.Parameters diff --git a/src/Plugins/BotSharp.Plugin.Membase/GraphDb/MembaseGraphDb.cs b/src/Plugins/BotSharp.Plugin.Membase/GraphDb/MembaseGraphDb.cs index 3c0f4d695..db31d329c 100644 --- a/src/Plugins/BotSharp.Plugin.Membase/GraphDb/MembaseGraphDb.cs +++ b/src/Plugins/BotSharp.Plugin.Membase/GraphDb/MembaseGraphDb.cs @@ -24,7 +24,7 @@ public MembaseGraphDb( public string Provider => "membase"; - public async Task SearchAsync(string query, GraphSearchOptions? options = null) + public async Task ExecuteQueryAsync(string query, GraphQueryExecuteOptions? options = null) { if (string.IsNullOrEmpty(options?.GraphId)) { @@ -39,7 +39,7 @@ public async Task SearchAsync(string query, GraphSearchOption Parameters = options.Arguments ?? new Dictionary() }); - return new GraphSearchResult + return new GraphQueryResult { Keys = response.Columns, Values = response.Data, diff --git a/src/Plugins/BotSharp.Plugin.Membase/Services/MembaseService.cs b/src/Plugins/BotSharp.Plugin.Membase/Services/MembaseService.cs index 040ef8e0f..87aa21566 100644 --- a/src/Plugins/BotSharp.Plugin.Membase/Services/MembaseService.cs +++ b/src/Plugins/BotSharp.Plugin.Membase/Services/MembaseService.cs @@ -14,7 +14,7 @@ public MembaseService(IServiceProvider services, IMembaseApi membase) _membase = membase; } - public async Task Execute(string graphId, string query, Dictionary? args = null) + public async Task Execute(string graphId, string query, Dictionary? args = null) { var response = await _membase.CypherQueryAsync(graphId, new CypherQueryRequest { @@ -22,7 +22,7 @@ public async Task Execute(string graphId, string query, Dicti Parameters = args ?? [] }); - return new GraphSearchResult + return new GraphQueryResult { Keys = response.Columns, Values = response.Data