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
Hide 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):
...
@@ -96,7 +96,9 @@ class WorkflowEventTriggerCallback(BaseWorkflowCallback):
def
on_workflow_node_execute_failed
(
self
,
node_id
:
str
,
def
on_workflow_node_execute_failed
(
self
,
node_id
:
str
,
node_type
:
NodeType
,
node_type
:
NodeType
,
node_data
:
BaseNodeData
,
node_data
:
BaseNodeData
,
error
:
str
)
->
None
:
error
:
str
,
inputs
:
Optional
[
dict
]
=
None
,
process_data
:
Optional
[
dict
]
=
None
)
->
None
:
"""
"""
Workflow node execute failed
Workflow node execute failed
"""
"""
...
@@ -105,6 +107,8 @@ class WorkflowEventTriggerCallback(BaseWorkflowCallback):
...
@@ -105,6 +107,8 @@ class WorkflowEventTriggerCallback(BaseWorkflowCallback):
node_id
=
node_id
,
node_id
=
node_id
,
node_type
=
node_type
,
node_type
=
node_type
,
node_data
=
node_data
,
node_data
=
node_data
,
inputs
=
inputs
,
process_data
=
process_data
,
error
=
error
error
=
error
),
),
PublishFrom
.
APPLICATION_MANAGER
PublishFrom
.
APPLICATION_MANAGER
...
...
api/core/app/apps/workflow/workflow_event_trigger_callback.py
View file @
737d0436
...
@@ -96,7 +96,9 @@ class WorkflowEventTriggerCallback(BaseWorkflowCallback):
...
@@ -96,7 +96,9 @@ class WorkflowEventTriggerCallback(BaseWorkflowCallback):
def
on_workflow_node_execute_failed
(
self
,
node_id
:
str
,
def
on_workflow_node_execute_failed
(
self
,
node_id
:
str
,
node_type
:
NodeType
,
node_type
:
NodeType
,
node_data
:
BaseNodeData
,
node_data
:
BaseNodeData
,
error
:
str
)
->
None
:
error
:
str
,
inputs
:
Optional
[
dict
]
=
None
,
process_data
:
Optional
[
dict
]
=
None
)
->
None
:
"""
"""
Workflow node execute failed
Workflow node execute failed
"""
"""
...
@@ -105,6 +107,8 @@ class WorkflowEventTriggerCallback(BaseWorkflowCallback):
...
@@ -105,6 +107,8 @@ class WorkflowEventTriggerCallback(BaseWorkflowCallback):
node_id
=
node_id
,
node_id
=
node_id
,
node_type
=
node_type
,
node_type
=
node_type
,
node_data
=
node_data
,
node_data
=
node_data
,
inputs
=
inputs
,
process_data
=
process_data
,
error
=
error
error
=
error
),
),
PublishFrom
.
APPLICATION_MANAGER
PublishFrom
.
APPLICATION_MANAGER
...
...
api/core/app/entities/queue_entities.py
View file @
737d0436
...
@@ -158,6 +158,9 @@ class QueueNodeFailedEvent(AppQueueEvent):
...
@@ -158,6 +158,9 @@ class QueueNodeFailedEvent(AppQueueEvent):
node_type
:
NodeType
node_type
:
NodeType
node_data
:
BaseNodeData
node_data
:
BaseNodeData
inputs
:
Optional
[
dict
]
=
None
process_data
:
Optional
[
dict
]
=
None
error
:
str
error
:
str
...
...
api/core/workflow/callbacks/base_workflow_callback.py
View file @
737d0436
...
@@ -55,7 +55,9 @@ class BaseWorkflowCallback(ABC):
...
@@ -55,7 +55,9 @@ class BaseWorkflowCallback(ABC):
def
on_workflow_node_execute_failed
(
self
,
node_id
:
str
,
def
on_workflow_node_execute_failed
(
self
,
node_id
:
str
,
node_type
:
NodeType
,
node_type
:
NodeType
,
node_data
:
BaseNodeData
,
node_data
:
BaseNodeData
,
error
:
str
)
->
None
:
error
:
str
,
inputs
:
Optional
[
dict
]
=
None
,
process_data
:
Optional
[
dict
]
=
None
)
->
None
:
"""
"""
Workflow node execute failed
Workflow node execute failed
"""
"""
...
...
api/core/workflow/workflow_engine_manager.py
View file @
737d0436
...
@@ -420,7 +420,9 @@ class WorkflowEngineManager:
...
@@ -420,7 +420,9 @@ class WorkflowEngineManager:
node_id
=
node
.
node_id
,
node_id
=
node
.
node_id
,
node_type
=
node
.
node_type
,
node_type
=
node
.
node_type
,
node_data
=
node
.
node_data
,
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}"
)
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):
...
@@ -123,11 +123,11 @@ class Workflow(db.Model):
@
property
@
property
def
graph_dict
(
self
):
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
@
property
def
features_dict
(
self
):
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
:
def
user_input_form
(
self
)
->
list
:
# get start node from graph
# get start node from graph
...
@@ -270,15 +270,15 @@ class WorkflowRun(db.Model):
...
@@ -270,15 +270,15 @@ class WorkflowRun(db.Model):
@
property
@
property
def
graph_dict
(
self
):
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
@
property
def
inputs_dict
(
self
):
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
@
property
def
outputs_dict
(
self
):
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
):
class
WorkflowNodeExecutionTriggeredFrom
(
Enum
):
...
@@ -419,19 +419,19 @@ class WorkflowNodeExecution(db.Model):
...
@@ -419,19 +419,19 @@ class WorkflowNodeExecution(db.Model):
@
property
@
property
def
inputs_dict
(
self
):
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
@
property
def
outputs_dict
(
self
):
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
@
property
def
process_data_dict
(
self
):
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
@
property
def
execution_metadata_dict
(
self
):
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
):
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):
...
@@ -36,7 +36,7 @@ def test_execute_llm(setup_openai_mock):
'type'
:
'llm'
,
'type'
:
'llm'
,
'model'
:
{
'model'
:
{
'provider'
:
'openai'
,
'provider'
:
'openai'
,
'name'
:
'gpt-3.5
.
turbo'
,
'name'
:
'gpt-3.5
-
turbo'
,
'mode'
:
'chat'
,
'mode'
:
'chat'
,
'completion_params'
:
{}
'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