Kaynağa Gözat

Add WORKFLOW_CALL_MAX_DEPTH env var. (#4713)

majian 10 ay önce
ebeveyn
işleme
72a90074bc

+ 5 - 0
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

+ 2 - 0
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'))

+ 3 - 4
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(