Browse Source

review:【AI 大模型】工作流的编辑功能

YunaiV 10 tháng trước cách đây
mục cha
commit
2b0a57f0c1

+ 5 - 3
src/views/ai/workflow/form/WorkflowDesign.vue

@@ -36,6 +36,7 @@
             <el-input class="w-200px!" v-model="param.value" placeholder="参数值" />
             <el-button type="danger" plain :icon="Delete" circle @click="removeParam(index)" />
           </div>
+          <!-- TODO @lesan:是不是不用添加和删除参数,直接把必填和选填列出来,然后加上参数校验? -->
           <el-button type="primary" plain @click="addParam">添加参数</el-button>
         </div>
       </fieldset>
@@ -52,9 +53,9 @@
           <div v-else> <el-text type="info">点击运行查看结果</el-text> </div>
         </div>
       </fieldset>
-      <el-button class="mt-20px w-100%" size="large" type="success" @click="goRun"
-        >运行流程</el-button
-      >
+      <el-button class="mt-20px w-100%" size="large" type="success" @click="goRun">
+        运行流程
+      </el-button>
     </el-drawer>
   </div>
 </template>
@@ -62,6 +63,7 @@
 <script setup lang="ts">
 import Tinyflow from '@/components/Tinyflow/Tinyflow.vue'
 import * as WorkflowApi from '@/api/ai/workflow'
+// TODO @lesan:要不使用 ICon 哪个组件哈
 import { Delete } from '@element-plus/icons-vue'
 
 defineProps<{

+ 15 - 10
src/views/ai/workflow/form/index.vue

@@ -59,7 +59,7 @@
         <WorkflowDesign
           v-if="currentStep === 1"
           v-model="formData"
-          :provider="provider"
+          :provider="llmProvider"
           ref="workflowDesignRef"
         />
       </div>
@@ -74,6 +74,7 @@ import * as WorkflowApi from '@/api/ai/workflow'
 import BasicInfo from './BasicInfo.vue'
 import WorkflowDesign from './WorkflowDesign.vue'
 import { ModelApi } from '@/api/ai/model/model'
+import { AiModelTypeEnum } from '@/views/ai/utils/constants'
 
 const router = useRouter()
 const { delView } = useTagsViewStore()
@@ -104,31 +105,35 @@ const formData: any = ref({
   graph: '',
   status: CommonStatusEnum.ENABLE
 })
-// TODO @lesan:待接入
-const provider = ref<any>()
+const llmProvider = ref<any>([])
 const workflowData = ref<any>({})
 provide('workflowData', workflowData)
 
 /** 初始化数据 */
 const actionType = route.params.type as string
 const initData = async () => {
+  // 编辑情况下,需要加载工作流配置
   if (actionType === 'update') {
     const workflowId = route.params.id as string
     formData.value = await WorkflowApi.getWorkflow(workflowId)
     workflowData.value = JSON.parse(formData.value.graph)
   }
 
-  const apiKeys = await ModelApi.getModelSimpleList(1)
-  provider.value = {
+  // 加载模型列表
+  const models = await ModelApi.getModelSimpleList(AiModelTypeEnum.CHAT)
+  llmProvider.value = {
     llm: () =>
-      apiKeys.map(({ id, name }) => ({
+      models.map(({ id, name }) => ({
         value: id,
         label: name
       })),
     knowledge: () => [],
     internal: () => []
   }
+  // TODO @lesan:知识库(可以看下 knowledge)
+  // TODO @lesan:搜索引擎(这个之前有个 pr 搞了,,,可能来接下)
 
+  // 设置当前步骤
   currentStep.value = 0
 }
 
@@ -164,17 +169,17 @@ const handleSave = async () => {
 
     // 更新表单数据
     const data = {
-      ...formData.value
+      ...formData.value,
+      graph: JSON.stringify(workflowData.value)
     }
-
-    data.graph = JSON.stringify(workflowData.value)
-
     if (actionType === 'update') {
       await WorkflowApi.updateWorkflow(data)
     } else {
       await WorkflowApi.createWorkflow(data)
     }
 
+    // 保存成功,提示并跳转到列表页
+    message.success('保存成功')
     delView(unref(router.currentRoute))
     await router.push({ name: 'AiWorkflow' })
   } catch (error: any) {