Skip to content

Commit b529db3

Browse files
perf: generate python
1 parent 881934a commit b529db3

File tree

7 files changed

+73
-50
lines changed

7 files changed

+73
-50
lines changed

ui/src/components/codemirror-editor/index.vue

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@
1818
</div>
1919
<!-- Codemirror 弹出层 -->
2020
<el-dialog v-model="dialogVisible" :title="title" append-to-body fullscreen>
21+
<template #title>
22+
<div class="flex-between">
23+
<h4>{{ title }}</h4>
24+
<slot name="header-extra"> </slot>
25+
</div>
26+
</template>
2127
<form @submit.prevent>
2228
<Codemirror
2329
v-model="cloneContent"
@@ -161,6 +167,13 @@ watch(dialogVisible, (bool) => {
161167
}
162168
})
163169
170+
watch(
171+
() => props.modelValue,
172+
(newValue) => {
173+
cloneContent.value = newValue
174+
},
175+
)
176+
164177
const openCodemirrorDialog = () => {
165178
cloneContent.value = props.modelValue
166179
dialogVisible.value = true

ui/src/locales/lang/en-US/views/tool.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@ export default {
77
importTool: 'Import Tool',
88
settingTool: 'Set Tool',
99
updatedVersion: 'Updated Version',
10+
generateCodeDialog: {
11+
generatePrompt: 'Generate Python Code',
12+
placeholder: 'Please enter the topic',
13+
title: 'Python code will be displayed here',
14+
},
1015
toolWorkflow: {
1116
creatToolWorkflow: 'Create Workflow',
1217
toActiveTip: 'Unable to enable. Please publish the workflow first.',

ui/src/locales/lang/zh-CN/views/application.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ export default {
130130
continue: '继续生成',
131131
replace: '替换',
132132
exit: '确认退出并舍弃 AI 生成的内容吗?',
133-
loading: '生成中...',
133+
loading: '生成中',
134134
},
135135
dialog: {
136136
addKnowledge: '添加关联知识库',

ui/src/locales/lang/zh-CN/views/tool.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,15 @@ export default {
66
importTool: '导入工具',
77
settingTool: '设置工具',
88
updatedVersion: '更新版本',
9+
generateCodeDialog: {
10+
generatePrompt: '生成 Python 代码',
11+
placeholder: '请输入主题',
12+
title: 'python 代码显示在这里',
13+
},
914
toolWorkflow: {
1015
creatToolWorkflow: '创建工作流',
1116
toActiveTip: '无法启用,请先发布工作流。',
12-
debugResult:'调试结果'
17+
debugResult: '调试结果',
1318
},
1419
dataSource: {
1520
title: '数据源',

ui/src/locales/lang/zh-Hant/views/tool.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@ export default {
66
importTool: '匯入工具',
77
settingTool: '設定工具',
88
updatedVersion: '更新版本',
9+
generateCodeDialog: {
10+
generatePrompt: '生成 Python 代码',
11+
placeholder: '請輸入主題',
12+
title: 'python 代码顯示在這裡',
13+
},
914
toolWorkflow: {
1015
creatToolWorkflow: '創建工作流',
1116
toActiveTip: '無法啓用,請先發布工作流。',

ui/src/views/tool/ToolFormDrawer.vue

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -170,19 +170,15 @@
170170
</el-table-column>
171171
</el-table>
172172

173-
<div class="flex-between">
174-
<h4 class="title-decoration-1 mb-16">
173+
<div class="flex-between mb-16">
174+
<h4 class="title-decoration-1">
175175
{{ $t('views.tool.form.param.code') }}
176176
<span class="color-danger" style="margin-left: -10px">*</span>
177177
<el-text type="info" class="color-secondary">
178178
{{ $t('views.tool.form.param.paramInfo2') }}
179179
</el-text>
180180
</h4>
181-
<el-button
182-
type="primary"
183-
@click="openGenerateCodeDialog"
184-
link
185-
>
181+
<el-button type="primary" @click="openGenerateCodeDialog" link>
186182
<AppIcon iconName="app-generate-star" class="mr-4"></AppIcon>
187183
{{ $t('views.application.generateDialog.label') }}
188184
</el-button>
@@ -193,7 +189,15 @@
193189
:title="$t('views.tool.form.param.code')"
194190
v-model="form.code"
195191
@submitDialog="submitCodemirrorEditor"
196-
/>
192+
:replaceCode="replaceCode"
193+
>
194+
<template #header-extra>
195+
<el-button type="primary" link @click="openGenerateCodeDialog">
196+
<AppIcon iconName="app-generate-star" class="mr-4"></AppIcon>
197+
{{ $t('views.application.generateDialog.label') }}
198+
</el-button>
199+
</template>
200+
</CodemirrorEditor>
197201
</div>
198202
<h4 class="title-decoration-1 mb-16 mt-16">
199203
{{ $t('common.param.outputParam') }}
@@ -227,7 +231,7 @@
227231
<FieldFormDialog ref="FieldFormDialogRef" @refresh="refreshFieldList" />
228232
<UserFieldFormDialog ref="UserFieldFormDialogRef" @refresh="refreshInitFieldList" />
229233
<EditAvatarDialog ref="EditAvatarDialogRef" @refresh="refreshTool" />
230-
<GenerateCodeDialog ref="GenerateCodeDialogRef" :toolData="form" @replace="replaceCode"/>
234+
<GenerateCodeDialog ref="GenerateCodeDialogRef" :toolData="form" @replace="replaceCode" />
231235
</el-drawer>
232236
</template>
233237

@@ -248,7 +252,7 @@ import { useRoute } from 'vue-router'
248252
import useStore from '@/stores'
249253
import permissionMap from '@/permission'
250254
import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
251-
import GenerateCodeDialog from "@/views/tool/component/GenerateCodeDialog.vue";
255+
import GenerateCodeDialog from '@/views/tool/component/GenerateCodeDialog.vue'
252256
const route = useRoute()
253257
254258
const props = defineProps({

ui/src/views/tool/component/GenerateCodeDialog.vue

Lines changed: 29 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@
22
<el-dialog
33
align-center
44
v-model="dialogVisible"
5-
style="width: 600px"
5+
style="width: 800px"
66
append-to-body
77
:close-on-click-modal="true"
88
:close-on-press-escape="true"
99
:before-close="handleDialogClose"
1010
>
1111
<template #title>
1212
<div class="flex-between">
13-
<div class="flex">生成Python代码</div>
14-
<div class="flex">
15-
<div>{{ $t('views.application.form.aiModel.label') }}</div>
13+
<h4>{{ $t('views.tool.generateCodeDialog.generatePrompt') }}</h4>
14+
<div class="flex align-center">
15+
<div class="mr-4 lighter">{{ $t('views.application.form.aiModel.label') }}</div>
1616
<ModelSelect
1717
v-model="model_id"
1818
:placeholder="$t('views.application.form.aiModel.placeholder')"
@@ -21,14 +21,10 @@
2121
@submitModel="getSelectModel"
2222
showFooter
2323
:model-type="'LLM'"
24-
style="width: 200px;"
24+
style="width: 200px"
2525
>
2626
</ModelSelect>
27-
<el-button
28-
class="ml-8"
29-
@click="openAIParamSettingDialog"
30-
:disabled="!model_id"
31-
>
27+
<el-button class="ml-8" @click="openAIParamSettingDialog" :disabled="!model_id">
3228
<el-icon>
3329
<Operation />
3430
</el-icon>
@@ -51,14 +47,14 @@
5147
</div>
5248
<p v-else-if="loading" shadow="always" style="margin: 0.5rem 0">
5349
<el-icon class="is-loading color-primary mr-4">
54-
<Loading/>
50+
<Loading />
5551
</el-icon>
5652
{{ $t('views.application.generateDialog.loading') }}
5753
<span class="dotting"></span>
5854
</p>
5955
<p v-else class="flex align-center">
6056
<AppIcon iconName="app-generate-star" class="color-primary mr-4"></AppIcon>
61-
{{ $t('生成python代码') }}
57+
{{ $t('views.tool.generateCodeDialog.title') }}
6258
</p>
6359
</el-scrollbar>
6460

@@ -93,7 +89,7 @@
9389
v-model="inputValue"
9490
:autosize="{ minRows: 1, maxRows: 10 }"
9591
type="textarea"
96-
:placeholder="$t('views.application.generateDialog.placeholder')"
92+
:placeholder="$t('views.tool.generateCodeDialog.placeholder')"
9793
:maxlength="100000"
9894
class="chat-operate-textarea"
9995
@keydown.enter="handleSubmit($event)"
@@ -120,7 +116,7 @@
120116
</div>
121117
</div>
122118
</div>
123-
<AIModeParamSettingDialog ref="AIModeParamSettingDialogRef" @refresh="refreshForm"/>
119+
<AIModeParamSettingDialog ref="AIModeParamSettingDialogRef" @refresh="refreshForm" />
124120
</el-dialog>
125121
</template>
126122

@@ -131,13 +127,13 @@ import { MsgConfirm } from '@/utils/message'
131127
import { t } from '@/locales'
132128
import useStore from '@/stores'
133129
import { copyClick } from '@/utils/clipboard'
134-
import { loadSharedApi } from "@/utils/dynamics-api/shared-api.ts";
135-
import { groupBy } from "lodash";
136-
import AIModeParamSettingDialog from "@/views/application/component/AIModeParamSettingDialog.vue";
137-
import SendIcon from "@/components/logo/SendIcon.vue";
130+
import { loadSharedApi } from '@/utils/dynamics-api/shared-api.ts'
131+
import { groupBy } from 'lodash'
132+
import AIModeParamSettingDialog from '@/views/application/component/AIModeParamSettingDialog.vue'
133+
import SendIcon from '@/components/logo/SendIcon.vue'
138134
139135
const emit = defineEmits(['replace'])
140-
const {user} = useStore()
136+
const { user } = useStore()
141137
const route = useRoute()
142138
143139
const chatMessages = ref<Array<any>>([])
@@ -261,7 +257,7 @@ const continueStreaming = () => {
261257
*/
262258
const getWrite = (reader: any) => {
263259
let tempResult = ''
264-
const middleAnswer = reactive({content: '', role: 'ai'})
260+
const middleAnswer = reactive({ content: '', role: 'ai' })
265261
chatMessages.value.push(middleAnswer)
266262
267263
// 初始化状态并
@@ -276,7 +272,7 @@ const getWrite = (reader: any) => {
276272
* @param done 是否结束
277273
* @param value
278274
*/
279-
const write_stream = ({done, value}: { done: boolean; value: any }) => {
275+
const write_stream = ({ done, value }: { done: boolean; value: any }) => {
280276
try {
281277
if (done) {
282278
// 流数据接收完成,但定时器继续运行直到显示完所有内容
@@ -285,7 +281,7 @@ const getWrite = (reader: any) => {
285281
return
286282
}
287283
const decoder = new TextDecoder('utf-8')
288-
let str = decoder.decode(value, {stream: true})
284+
let str = decoder.decode(value, { stream: true })
289285
// 这里解释一下 start 因为数据流返回流并不是按照后端chunk返回 我们希望得到的chunk是data:{xxx}\n\n 但是它获取到的可能是 data:{ -> xxx}\n\n 总而言之就是 fetch不能保证每个chunk都说以data:开始 \n\n结束
290286
tempResult += str
291287
const split = tempResult.match(/data:.*}\n\n/g)
@@ -351,7 +347,7 @@ function generatePrompt(inputValue: any) {
351347
isApiComplete.value = false
352348
loading.value = true
353349
const workspaceId = user.getWorkspaceId() || 'default'
354-
chatMessages.value.push({content: inputValue, role: 'user'})
350+
chatMessages.value.push({ content: inputValue, role: 'user' })
355351
const requestData = {
356352
messages: chatMessages.value,
357353
prompt: promptTemplates.INIT_TEMPLATE,
@@ -361,7 +357,7 @@ function generatePrompt(inputValue: any) {
361357
model_params_setting: model_params_setting.value,
362358
}
363359
364-
loadSharedApi({type: 'tool', systemType: apiType.value})
360+
loadSharedApi({ type: 'tool', systemType: apiType.value })
365361
.generateCode(requestData)
366362
.then((response: any) => {
367363
nextTick(() => {
@@ -423,21 +419,20 @@ const insertNewlineAtCursor = (event?: any) => {
423419
})
424420
}
425421
426-
427422
function getSelectModel() {
428423
loading.value = true
429424
430425
const obj =
431426
apiType.value === 'systemManage'
432427
? {
433-
model_type: 'LLM',
434-
// todo workspace_id
435-
workspace_id: ''
436-
}
428+
model_type: 'LLM',
429+
// todo workspace_id
430+
workspace_id: '',
431+
}
437432
: {
438-
model_type: 'LLM',
439-
}
440-
loadSharedApi({type: 'model', systemType: apiType.value})
433+
model_type: 'LLM',
434+
}
435+
loadSharedApi({ type: 'model', systemType: apiType.value })
441436
.getSelectModelList(obj)
442437
.then((res: any) => {
443438
modelOptions.value = groupBy(res?.data, 'provider')
@@ -459,11 +454,7 @@ const model_change = (modelId: string) => {
459454
460455
const openAIParamSettingDialog = () => {
461456
if (model_id.value) {
462-
AIModeParamSettingDialogRef.value?.open(
463-
model_id.value,
464-
'',
465-
model_params_setting.value,
466-
)
457+
AIModeParamSettingDialogRef.value?.open(model_id.value, '', model_params_setting.value)
467458
}
468459
}
469460
@@ -534,7 +525,7 @@ watch(
534525
() => {
535526
handleScroll()
536527
},
537-
{deep: true, immediate: true},
528+
{ deep: true, immediate: true },
538529
)
539530
540531
onMounted(() => {

0 commit comments

Comments
 (0)