From c87c213febf3acdbb5d7c3aaf9644ffe409e0967 Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Sun, 3 Mar 2024 18:46:31 -0300 Subject: [PATCH] Refactor vertex running logic in Graph class --- src/backend/langflow/api/v1/chat.py | 3 +++ src/backend/langflow/graph/graph/base.py | 9 ++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/backend/langflow/api/v1/chat.py b/src/backend/langflow/api/v1/chat.py index 206d591fa..63f9e329f 100644 --- a/src/backend/langflow/api/v1/chat.py +++ b/src/backend/langflow/api/v1/chat.py @@ -125,6 +125,9 @@ async def build_vertex( else: raise ValueError(f"No result found for vertex {vertex_id}") next_vertices_ids = vertex.successors_ids + next_vertices_ids = [ + v for v in next_vertices_ids if graph.should_run_vertex(v) + ] result_data_response = ResultDataResponse(**result_dict.model_dump()) except Exception as exc: diff --git a/src/backend/langflow/graph/graph/base.py b/src/backend/langflow/graph/graph/base.py index 163cc7cc4..a3038d613 100644 --- a/src/backend/langflow/graph/graph/base.py +++ b/src/backend/langflow/graph/graph/base.py @@ -773,14 +773,21 @@ class Graph: vertices = self.vertices vertices_layers = self.layered_topological_sort(vertices) vertices_layers = self.sort_by_avg_build_time(vertices_layers) - vertices_layers = self.sort_chat_inputs_first(vertices_layers) + # vertices_layers = self.sort_chat_inputs_first(vertices_layers) self.increment_run_count() first_layer = vertices_layers[0] # save the only the rest self.vertices_layers = vertices_layers[1:] + self.vertices_to_run = { + vertex for vertex in chain.from_iterable(vertices_layers) + } # Return just the first layer return first_layer + def should_run_vertex(self, vertex_id: str) -> bool: + """Returns whether a component should be run.""" + return vertex_id in self.vertices_to_run + def sort_interface_components_first( self, vertices_layers: List[List[str]] ) -> List[List[str]]: