| @@ -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 | |||
| @@ -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')) | |||
| @@ -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( | |||