Skip to content

Commit 055a47b

Browse files
Merge remote-tracking branch 'upstream/v2' into feat/intent-node/config-output-reason
2 parents 6e45759 + b3282bf commit 055a47b

File tree

20 files changed

+299
-103
lines changed

20 files changed

+299
-103
lines changed

apps/application/flow/step_node/image_generate_step_node/i_image_generate_node.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@
1010

1111

1212
class ImageGenerateNodeSerializer(serializers.Serializer):
13-
model_id = serializers.CharField(required=True, label=_("Model id"))
14-
13+
model_id = serializers.CharField(required=False, allow_blank=True, allow_null=True, label=_("Model id"))
14+
model_id_type = serializers.CharField(required=False, default='custom', label=_("Model id type"))
15+
model_id_reference = serializers.ListField(required=False, child=serializers.CharField(), allow_empty=True,
16+
label=_("Reference Field"))
1517
prompt = serializers.CharField(required=True, label=_("Prompt word (positive)"))
1618

1719
negative_prompt = serializers.CharField(required=False, label=_("Prompt word (negative)"),
@@ -49,6 +51,6 @@ def _run(self):
4951

5052
def execute(self, model_id, prompt, negative_prompt, dialogue_number, dialogue_type, history_chat_record,
5153
model_params_setting,
52-
chat_record_id,
54+
chat_record_id, model_id_type=None, model_id_reference=None,
5355
**kwargs) -> NodeResult:
5456
pass

apps/application/flow/step_node/image_generate_step_node/impl/base_image_generate_node.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,21 @@ def save_context(self, details, workflow_manage):
2525
def execute(self, model_id, prompt, negative_prompt, dialogue_number, dialogue_type, history_chat_record,
2626
model_params_setting,
2727
chat_record_id,
28+
model_id_type=None, model_id_reference=None,
2829
**kwargs) -> NodeResult:
30+
# 处理引用类型
31+
if model_id_type == 'reference' and model_id_reference:
32+
reference_data = self.workflow_manage.get_reference_field(
33+
model_id_reference[0],
34+
model_id_reference[1:],
35+
)
36+
if reference_data and isinstance(reference_data, dict):
37+
model_id = reference_data.get('model_id', model_id)
38+
model_params_setting = reference_data.get('model_params_setting')
39+
2940
workspace_id = self.workflow_manage.get_body().get('workspace_id')
3041
tti_model = get_model_instance_by_model_workspace_id(model_id, workspace_id,
31-
**model_params_setting)
42+
**(model_params_setting or {}))
3243
history_message = self.get_history_message(history_chat_record, dialogue_number)
3344
self.context['history_message'] = history_message
3445
question = self.generate_prompt_question(prompt)

apps/application/flow/step_node/image_understand_step_node/i_image_understand_node.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,10 @@
1111

1212

1313
class ImageUnderstandNodeSerializer(serializers.Serializer):
14-
model_id = serializers.CharField(required=True, label=_("Model id"))
14+
model_id = serializers.CharField(required=False, allow_blank=True, allow_null=True, label=_("Model id"))
15+
model_id_type = serializers.CharField(required=False, default='custom', label=_("Model id type"))
16+
model_id_reference = serializers.ListField(required=False, child=serializers.CharField(), allow_empty=True,
17+
label=_("Reference Field"))
1518
system = serializers.CharField(required=False, allow_blank=True, allow_null=True,
1619
label=_("Role Setting"))
1720
prompt = serializers.CharField(required=True, label=_("Prompt word"))
@@ -52,5 +55,6 @@ def execute(self, model_id, system, prompt, dialogue_number, dialogue_type, hist
5255
model_params_setting,
5356
chat_record_id,
5457
image,
58+
model_id_type=None, model_id_reference=None,
5559
**kwargs) -> NodeResult:
5660
pass

apps/application/flow/step_node/image_understand_step_node/impl/base_image_understand_node.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,11 +83,22 @@ def execute(self, model_id, system, prompt, dialogue_number, dialogue_type, hist
8383
model_params_setting,
8484
chat_record_id,
8585
image,
86+
model_id_type=None, model_id_reference=None,
8687
**kwargs) -> NodeResult:
88+
# 处理引用类型
89+
if model_id_type == 'reference' and model_id_reference:
90+
reference_data = self.workflow_manage.get_reference_field(
91+
model_id_reference[0],
92+
model_id_reference[1:],
93+
)
94+
if reference_data and isinstance(reference_data, dict):
95+
model_id = reference_data.get('model_id', model_id)
96+
model_params_setting = reference_data.get('model_params_setting')
97+
8798
# 处理不正确的参数
8899
workspace_id = self.workflow_manage.get_body().get('workspace_id')
89100
image_model = get_model_instance_by_model_workspace_id(model_id, workspace_id,
90-
**model_params_setting)
101+
**(model_params_setting or {}))
91102
# 执行详情中的历史消息不需要图片内容
92103
history_message = self.get_history_message_for_details(history_chat_record, dialogue_number)
93104
self.context['history_message'] = history_message

apps/application/flow/step_node/text_to_video_step_node/i_text_to_video_node.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@
1010

1111

1212
class TextToVideoNodeSerializer(serializers.Serializer):
13-
model_id = serializers.CharField(required=True, label=_("Model id"))
14-
13+
model_id = serializers.CharField(required=False, allow_blank=True, allow_null=True, label=_("Model id"))
14+
model_id_type = serializers.CharField(required=False, default='custom', label=_("Model id type"))
15+
model_id_reference = serializers.ListField(required=False, child=serializers.CharField(), allow_empty=True,
16+
label=_("Reference Field"))
1517
prompt = serializers.CharField(required=True, label=_("Prompt word (positive)"))
1618

1719
negative_prompt = serializers.CharField(required=False, label=_("Prompt word (negative)"),
@@ -50,5 +52,6 @@ def _run(self):
5052
def execute(self, model_id, prompt, negative_prompt, dialogue_number, dialogue_type, history_chat_record,
5153
model_params_setting,
5254
chat_record_id,
55+
model_id_type=None, model_id_reference=None,
5356
**kwargs) -> NodeResult:
5457
pass

apps/application/flow/step_node/text_to_video_step_node/impl/base_text_to_video_node.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,21 @@ def save_context(self, details, workflow_manage):
2626
def execute(self, model_id, prompt, negative_prompt, dialogue_number, dialogue_type, history_chat_record,
2727
model_params_setting,
2828
chat_record_id,
29+
model_id_type=None, model_id_reference=None,
2930
**kwargs) -> NodeResult:
31+
# 处理引用类型
32+
if model_id_type == 'reference' and model_id_reference:
33+
reference_data = self.workflow_manage.get_reference_field(
34+
model_id_reference[0],
35+
model_id_reference[1:],
36+
)
37+
if reference_data and isinstance(reference_data, dict):
38+
model_id = reference_data.get('model_id', model_id)
39+
model_params_setting = reference_data.get('model_params_setting')
40+
3041
workspace_id = self.workflow_manage.get_body().get('workspace_id')
3142
ttv_model = get_model_instance_by_model_workspace_id(model_id, workspace_id,
32-
**model_params_setting)
43+
**(model_params_setting or {}))
3344
history_message = self.get_history_message(history_chat_record, dialogue_number)
3445
self.context['history_message'] = history_message
3546
question = self.generate_prompt_question(prompt)

ui/src/assets/tool/icon_tool_workflow.svg

Lines changed: 0 additions & 15 deletions
This file was deleted.

ui/src/components/execution-detail-card/index.vue

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1274,6 +1274,54 @@
12741274
</div>
12751275
</div>
12761276
</template>
1277+
1278+
<!-- 工作流开始 节点-->
1279+
<template v-if="data.type === WorkflowType.ToolStartNode">
1280+
<div class="card-never border-r-6">
1281+
<h5 class="p-8-12">
1282+
{{ $t('common.param.inputParam') }}
1283+
</h5>
1284+
1285+
<div class="p-8-12 border-t-dashed lighter">
1286+
<div v-for="(f, i) in data.global_fields" :key="i" class="mb-8">
1287+
<span class="color-secondary">{{ f.label }}:</span> {{ f.value }}
1288+
</div>
1289+
</div>
1290+
</div>
1291+
</template>
1292+
<!-- 工作流 节点 -->
1293+
<div class="card-never border-r-6" v-if="data.type === WorkflowType.ToolWorkflowLib">
1294+
<div class="card-never border-r-6">
1295+
<h5 class="p-8-12">
1296+
{{ $t('common.param.inputParam') }}
1297+
</h5>
1298+
<div class="p-8-12 border-t-dashed lighter pre-wrap">
1299+
<div v-for="(f, i) in data.input" :key="i" class="mb-8">
1300+
<span class="color-secondary">{{ i }}:</span> {{ f }}
1301+
</div>
1302+
</div>
1303+
</div>
1304+
<div class="card-never border-r-6 mt-8">
1305+
<h5 class="p-8-12">
1306+
{{ $t('common.param.outputParam') }}
1307+
</h5>
1308+
<div class="p-8-12 border-t-dashed lighter">
1309+
<div v-for="(f, i) in data.output" :key="i" class="mb-8">
1310+
<span class="color-secondary">{{ i }}:</span> {{ f }}
1311+
</div>
1312+
</div>
1313+
</div>
1314+
<div class="card-never border-r-6 mt-8">
1315+
<h5 class="p-8-12">
1316+
{{ $t('chat.executionDetails.title') }}
1317+
</h5>
1318+
<div class="p-8-12 border-t-dashed lighter">
1319+
<template v-for="(cLoop, cIndex) in data.details" :key="cIndex">
1320+
<ExecutionDetailCard :data="cLoop" :type="type"></ExecutionDetailCard>
1321+
</template>
1322+
</div>
1323+
</div>
1324+
</div>
12771325
<slot></slot>
12781326
</template>
12791327
<template v-else>

ui/src/views/tool/execution-record/ExecutionDetailDrawer.vue renamed to ui/src/views/tool-workflow/execution-record/ExecutionDetailDrawer.vue

Lines changed: 30 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
<el-col :span="6" v-if="apiType === 'systemShare'">
5555
<p class="color-secondary mb-4">{{ $t('views.workspace.title') }}</p>
5656
<p class="flex align-center">
57-
{{props.currentContent?.workspace_name}}
57+
{{ props.currentContent?.workspace_name }}
5858
</p>
5959
</el-col>
6060
<el-col :span="6">
@@ -120,15 +120,15 @@
120120
<CaretRight />
121121
</el-icon>
122122
<el-avatar
123-
v-if="detail?.tool_icon"
123+
v-if="props.currentContent?.tool_icon"
124124
shape="square"
125125
:size="24"
126126
style="background: none"
127127
>
128-
<img :src="resetUrl(detail?.tool_icon)" alt="" />
128+
<img :src="resetUrl(props.currentContent?.tool_icon)" alt="" />
129129
</el-avatar>
130-
<ToolIcon v-else :size="24" :type="detail?.tool_type" />
131-
<h4 class="ml-8">{{ detail?.tool_name }}</h4>
130+
<ToolIcon v-else :size="24" type="WORKFLOW" />
131+
<h4 class="ml-8">{{ props.currentContent?.tool_name }}</h4>
132132
</div>
133133
<div class="flex align-center">
134134
<span class="mr-16 color-secondary" v-if="detail?.state !== 'STARTED'"
@@ -147,17 +147,34 @@
147147
</div>
148148
<el-collapse-transition>
149149
<div class="mt-12" v-if="showDetail">
150-
<!-- 工具库 -->
150+
<div class="card-never border-r-6">
151+
<h5 class="p-8-12">
152+
{{ $t('common.param.inputParam') }}
153+
</h5>
154+
<div class="p-8-12 border-t-dashed lighter pre-wrap">
155+
<div v-for="(f, i) in detail?.meta?.input" :key="i" class="mb-8">
156+
<span class="color-secondary">{{ i }}:</span> {{ f }}
157+
</div>
158+
</div>
159+
</div>
151160
<div class="card-never border-r-6 mt-8">
152-
<h5 class="p-8-12">{{ $t('chat.executionDetails.input') }}</h5>
153-
<div class="p-8-12 border-t-dashed lighter break-all">
154-
{{ detail?.meta.input || '-' }}
161+
<h5 class="p-8-12">
162+
{{ $t('common.param.outputParam') }}
163+
</h5>
164+
<div class="p-8-12 border-t-dashed lighter">
165+
<div v-for="(f, i) in detail?.meta?.output" :key="i" class="mb-8">
166+
<span class="color-secondary">{{ i }}:</span> {{ f }}
167+
</div>
155168
</div>
156169
</div>
157170
<div class="card-never border-r-6 mt-8">
158-
<h5 class="p-8-12">{{ $t('chat.executionDetails.output') }}</h5>
159-
<div class="p-8-12 border-t-dashed lighter break-all">
160-
{{ detail?.meta.output || '-' }}
171+
<h5 class="p-8-12">
172+
{{ $t('chat.executionDetails.title') }}
173+
</h5>
174+
<div class="p-8-12 border-t-dashed lighter">
175+
<template v-for="(cLoop, cIndex) in detail?.meta?.details" :key="cIndex">
176+
<ExecutionDetailCard :data="cLoop"></ExecutionDetailCard>
177+
</template>
161178
</div>
162179
</div>
163180
</div>
@@ -184,6 +201,7 @@ import { useRoute } from 'vue-router'
184201
import { isAppIcon, resetUrl } from '@/utils/common'
185202
import { datetimeFormat } from '@/utils/time'
186203
import { loadSharedApi } from '@/utils/dynamics-api/shared-api.ts'
204+
import ExecutionDetailCard from '@/components/execution-detail-card/index.vue'
187205
const props = withDefaults(
188206
defineProps<{
189207
/**

ui/src/views/tool/execution-record/TriggerRecordDrawer.vue renamed to ui/src/views/tool-workflow/execution-record/ExecutionRecordDrawer.vue

File renamed without changes.

0 commit comments

Comments
 (0)