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
9b81b2b8
Commit
9b81b2b8
authored
Mar 13, 2024
by
takatost
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feat/workflow-backend' into deploy/dev
parents
4e4b07ce
db299a87
Changes
9
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
31 additions
and
14 deletions
+31
-14
generate_task_pipeline.py
api/core/app/apps/advanced_chat/generate_task_pipeline.py
+1
-0
workflow_event_trigger_callback.py
...app/apps/advanced_chat/workflow_event_trigger_callback.py
+5
-1
generate_task_pipeline.py
api/core/app/apps/workflow/generate_task_pipeline.py
+1
-0
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/generate_task_pipeline.py
View file @
9b81b2b8
...
@@ -226,6 +226,7 @@ class AdvancedChatAppGenerateTaskPipeline(WorkflowBasedGenerateTaskPipeline):
...
@@ -226,6 +226,7 @@ class AdvancedChatAppGenerateTaskPipeline(WorkflowBasedGenerateTaskPipeline):
'data'
:
{
'data'
:
{
'id'
:
workflow_run
.
id
,
'id'
:
workflow_run
.
id
,
'workflow_id'
:
workflow_run
.
workflow_id
,
'workflow_id'
:
workflow_run
.
workflow_id
,
'sequence_number'
:
workflow_run
.
sequence_number
,
'created_at'
:
int
(
workflow_run
.
created_at
.
timestamp
())
'created_at'
:
int
(
workflow_run
.
created_at
.
timestamp
())
}
}
}
}
...
...
api/core/app/apps/advanced_chat/workflow_event_trigger_callback.py
View file @
9b81b2b8
...
@@ -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/generate_task_pipeline.py
View file @
9b81b2b8
...
@@ -195,6 +195,7 @@ class WorkflowAppGenerateTaskPipeline(WorkflowBasedGenerateTaskPipeline):
...
@@ -195,6 +195,7 @@ class WorkflowAppGenerateTaskPipeline(WorkflowBasedGenerateTaskPipeline):
'data'
:
{
'data'
:
{
'id'
:
workflow_run
.
id
,
'id'
:
workflow_run
.
id
,
'workflow_id'
:
workflow_run
.
workflow_id
,
'workflow_id'
:
workflow_run
.
workflow_id
,
'sequence_number'
:
workflow_run
.
sequence_number
,
'created_at'
:
int
(
workflow_run
.
created_at
.
timestamp
())
'created_at'
:
int
(
workflow_run
.
created_at
.
timestamp
())
}
}
}
}
...
...
api/core/app/apps/workflow/workflow_event_trigger_callback.py
View file @
9b81b2b8
...
@@ -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 @
9b81b2b8
...
@@ -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 @
9b81b2b8
...
@@ -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 @
9b81b2b8
...
@@ -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 @
9b81b2b8
...
@@ -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 @
9b81b2b8
...
@@ -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