From 72a90074bc5095c86111d297fe5ac11181767928 Mon Sep 17 00:00:00 2001 From: majian <46617237@qq.com> Date: Wed, 29 May 2024 13:39:11 +0800 Subject: [PATCH] Add WORKFLOW_CALL_MAX_DEPTH env var. (#4713) --- api/.env.example | 5 +++++ api/config.py | 2 ++ api/core/workflow/workflow_engine_manager.py | 7 +++---- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/api/.env.example b/api/.env.example index 1f3478b4da..4f69c21a62 100644 --- a/api/.env.example +++ b/api/.env.example @@ -182,3 +182,8 @@ LOG_FILE= # Indexing configuration INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH=1000 + +# Workflow runtime configuration +WORKFLOW_MAX_EXECUTION_STEPS=50 +WORKFLOW_MAX_EXECUTION_TIME=600 +WORKFLOW_CALL_MAX_DEPTH=5 diff --git a/api/config.py b/api/config.py index c329f14bd6..7627e94e88 100644 --- a/api/config.py +++ b/api/config.py @@ -83,6 +83,7 @@ DEFAULTS = { 'INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH': 1000, 'WORKFLOW_MAX_EXECUTION_STEPS': 50, 'WORKFLOW_MAX_EXECUTION_TIME': 600, + 'WORKFLOW_CALL_MAX_DEPTH': 5, } @@ -324,6 +325,7 @@ class Config: self.WORKFLOW_MAX_EXECUTION_STEPS = int(get_env('WORKFLOW_MAX_EXECUTION_STEPS')) self.WORKFLOW_MAX_EXECUTION_TIME = int(get_env('WORKFLOW_MAX_EXECUTION_TIME')) + self.WORKFLOW_CALL_MAX_DEPTH = int(get_env('WORKFLOW_CALL_MAX_DEPTH')) # Moderation in app Configurations. self.OUTPUT_MODERATION_BUFFER_SIZE = int(get_env('OUTPUT_MODERATION_BUFFER_SIZE')) diff --git a/api/core/workflow/workflow_engine_manager.py b/api/core/workflow/workflow_engine_manager.py index 86aa650056..afd19abfde 100644 --- a/api/core/workflow/workflow_engine_manager.py +++ b/api/core/workflow/workflow_engine_manager.py @@ -54,8 +54,6 @@ node_classes = { NodeType.PARAMETER_EXTRACTOR: ParameterExtractorNode } -WORKFLOW_CALL_MAX_DEPTH = 5 - logger = logging.getLogger(__name__) @@ -128,8 +126,9 @@ class WorkflowEngineManager: user_inputs=user_inputs ) - if call_depth > WORKFLOW_CALL_MAX_DEPTH: - raise ValueError('Max workflow call depth reached.') + workflow_call_max_depth = current_app.config.get("WORKFLOW_CALL_MAX_DEPTH") + if call_depth > workflow_call_max_depth: + raise ValueError('Max workflow call depth {} reached.'.format(workflow_call_max_depth)) # init workflow run state workflow_run_state = WorkflowRunState(