Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
D
dify
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ai-tech
dify
Commits
737d0436
Commit
737d0436
authored
Mar 13, 2024
by
takatost
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
record inputs and process data when node failed
parent
5fe0d50c
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
29 additions
and
14 deletions
+29
-14
workflow_event_trigger_callback.py
...app/apps/advanced_chat/workflow_event_trigger_callback.py
+5
-1
workflow_event_trigger_callback.py
...core/app/apps/workflow/workflow_event_trigger_callback.py
+5
-1
queue_entities.py
api/core/app/entities/queue_entities.py
+3
-0
base_workflow_callback.py
api/core/workflow/callbacks/base_workflow_callback.py
+3
-1
workflow_engine_manager.py
api/core/workflow/workflow_engine_manager.py
+3
-1
workflow.py
api/models/workflow.py
+9
-9
test_llm.py
api/tests/integration_tests/workflow/nodes/test_llm.py
+1
-1
No files found.
api/core/app/apps/advanced_chat/workflow_event_trigger_callback.py
View file @
737d0436
...
...
@@ -96,7 +96,9 @@ class WorkflowEventTriggerCallback(BaseWorkflowCallback):
def
on_workflow_node_execute_failed
(
self
,
node_id
:
str
,
node_type
:
NodeType
,
node_data
:
BaseNodeData
,
error
:
str
)
->
None
:
error
:
str
,
inputs
:
Optional
[
dict
]
=
None
,
process_data
:
Optional
[
dict
]
=
None
)
->
None
:
"""
Workflow node execute failed
"""
...
...
@@ -105,6 +107,8 @@ class WorkflowEventTriggerCallback(BaseWorkflowCallback):
node_id
=
node_id
,
node_type
=
node_type
,
node_data
=
node_data
,
inputs
=
inputs
,
process_data
=
process_data
,
error
=
error
),
PublishFrom
.
APPLICATION_MANAGER
...
...
api/core/app/apps/workflow/workflow_event_trigger_callback.py
View file @
737d0436
...
...
@@ -96,7 +96,9 @@ class WorkflowEventTriggerCallback(BaseWorkflowCallback):
def
on_workflow_node_execute_failed
(
self
,
node_id
:
str
,
node_type
:
NodeType
,
node_data
:
BaseNodeData
,
error
:
str
)
->
None
:
error
:
str
,
inputs
:
Optional
[
dict
]
=
None
,
process_data
:
Optional
[
dict
]
=
None
)
->
None
:
"""
Workflow node execute failed
"""
...
...
@@ -105,6 +107,8 @@ class WorkflowEventTriggerCallback(BaseWorkflowCallback):
node_id
=
node_id
,
node_type
=
node_type
,
node_data
=
node_data
,
inputs
=
inputs
,
process_data
=
process_data
,
error
=
error
),
PublishFrom
.
APPLICATION_MANAGER
...
...
api/core/app/entities/queue_entities.py
View file @
737d0436
...
...
@@ -158,6 +158,9 @@ class QueueNodeFailedEvent(AppQueueEvent):
node_type
:
NodeType
node_data
:
BaseNodeData
inputs
:
Optional
[
dict
]
=
None
process_data
:
Optional
[
dict
]
=
None
error
:
str
...
...
api/core/workflow/callbacks/base_workflow_callback.py
View file @
737d0436
...
...
@@ -55,7 +55,9 @@ class BaseWorkflowCallback(ABC):
def
on_workflow_node_execute_failed
(
self
,
node_id
:
str
,
node_type
:
NodeType
,
node_data
:
BaseNodeData
,
error
:
str
)
->
None
:
error
:
str
,
inputs
:
Optional
[
dict
]
=
None
,
process_data
:
Optional
[
dict
]
=
None
)
->
None
:
"""
Workflow node execute failed
"""
...
...
api/core/workflow/workflow_engine_manager.py
View file @
737d0436
...
...
@@ -420,7 +420,9 @@ class WorkflowEngineManager:
node_id
=
node
.
node_id
,
node_type
=
node
.
node_type
,
node_data
=
node
.
node_data
,
error
=
node_run_result
.
error
error
=
node_run_result
.
error
,
inputs
=
node_run_result
.
inputs
,
process_data
=
node_run_result
.
process_data
,
)
raise
ValueError
(
f
"Node {node.node_data.title} run failed: {node_run_result.error}"
)
...
...
api/models/workflow.py
View file @
737d0436
...
...
@@ -123,11 +123,11 @@ class Workflow(db.Model):
@
property
def
graph_dict
(
self
):
return
self
.
graph
if
not
self
.
graph
else
json
.
loads
(
self
.
graph
)
return
json
.
loads
(
self
.
graph
)
if
self
.
graph
else
None
@
property
def
features_dict
(
self
):
return
self
.
features
if
not
self
.
features
else
json
.
loads
(
self
.
features
)
return
json
.
loads
(
self
.
features
)
if
self
.
features
else
None
def
user_input_form
(
self
)
->
list
:
# get start node from graph
...
...
@@ -270,15 +270,15 @@ class WorkflowRun(db.Model):
@
property
def
graph_dict
(
self
):
return
self
.
graph
if
not
self
.
graph
else
json
.
loads
(
self
.
graph
)
return
json
.
loads
(
self
.
graph
)
if
self
.
graph
else
None
@
property
def
inputs_dict
(
self
):
return
self
.
inputs
if
not
self
.
inputs
else
json
.
loads
(
self
.
inputs
)
return
json
.
loads
(
self
.
inputs
)
if
self
.
inputs
else
None
@
property
def
outputs_dict
(
self
):
return
self
.
outputs
if
not
self
.
outputs
else
json
.
loads
(
self
.
outputs
)
return
json
.
loads
(
self
.
outputs
)
if
self
.
outputs
else
None
class
WorkflowNodeExecutionTriggeredFrom
(
Enum
):
...
...
@@ -419,19 +419,19 @@ class WorkflowNodeExecution(db.Model):
@
property
def
inputs_dict
(
self
):
return
self
.
inputs
if
not
self
.
inputs
else
json
.
loads
(
self
.
inputs
)
return
json
.
loads
(
self
.
inputs
)
if
self
.
inputs
else
None
@
property
def
outputs_dict
(
self
):
return
self
.
outputs
if
not
self
.
outputs
else
json
.
loads
(
self
.
outputs
)
return
json
.
loads
(
self
.
outputs
)
if
self
.
outputs
else
None
@
property
def
process_data_dict
(
self
):
return
self
.
process_data
if
not
self
.
process_data
else
json
.
loads
(
self
.
process_data
)
return
json
.
loads
(
self
.
process_data
)
if
self
.
process_data
else
None
@
property
def
execution_metadata_dict
(
self
):
return
self
.
execution_metadata
if
not
self
.
execution_metadata
else
json
.
loads
(
self
.
execution_metadata
)
return
json
.
loads
(
self
.
execution_metadata
)
if
self
.
execution_metadata
else
None
class
WorkflowAppLogCreatedFrom
(
Enum
):
...
...
api/tests/integration_tests/workflow/nodes/test_llm.py
View file @
737d0436
...
...
@@ -36,7 +36,7 @@ def test_execute_llm(setup_openai_mock):
'type'
:
'llm'
,
'model'
:
{
'provider'
:
'openai'
,
'name'
:
'gpt-3.5
.
turbo'
,
'name'
:
'gpt-3.5
-
turbo'
,
'mode'
:
'chat'
,
'completion_params'
:
{}
},
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment