Explorar el Código

refactor(aiChat): 切换generate_interactive_web为无流调用并新增解析逻辑

将原stream方式调用chat_stream改为直接调用chat_no_stream获取结果,新增generate函数中针对generate_interactive_web类型的处理逻辑,解析prompt后更新会话消息
lsc hace 6 días
padre
commit
b9cafa47e7
Se han modificado 1 ficheros con 45 adiciones y 20 borrados
  1. 45 20
      src/components/CollapsibleToolbar/componets/aiChat.vue

+ 45 - 20
src/components/CollapsibleToolbar/componets/aiChat.vue

@@ -691,28 +691,34 @@ const sendAction = async (action: string) => {
   }
   else if (gType.value === 'generate_interactive_web') {
     agentid = agentid5.value
+    const result = chat_no_stream(prompt, agentid, props.userid || '', lang.lang)
+    streamController.value = result
+    console.log(result)
+    const content = await result.promise
+    messages.value.at(-1).jsonData.aiContent = content
+    console.log('event.data', content)
+    generate(messages.value.at(-1))
 
-
-    chat_stream(prompt, agentid, props.userid || '', lang.lang, async (event) => {
-      if (event.type === 'message') {
-        // messages.value.at(-1).jsonData.aiContent = md.render(event.data)
-        // messages.value.at(-1).loading = false
+    // chat_stream(prompt, agentid, props.userid || '', lang.lang, async (event) => {
+    //   if (event.type === 'message') {
+    //     // messages.value.at(-1).jsonData.aiContent = md.render(event.data)
+    //     // messages.value.at(-1).loading = false
         
-      }
-      else if (event.type === 'messageEnd') {
-        messages.value.at(-1).aiContent = lang.ssInteractiveWebWorkspaceDesc
-        messages.value.at(-1).jsonData.aiContent = event.data
-        messages.value.at(-1).loading = false
-        chatLoading.value = false
-        messages.value.at(-1).chatloading = false
-      }
-    }, session_name.value, messages.value.at(-1).sourceFiles?.map(file => file.id).filter(Boolean)).then(controller => {
-      streamController.value = controller
-    }).catch(err => {
-      chatLoading.value = false
-      console.log('err', err)
-      stopMessage()
-    })
+    //   }
+    //   else if (event.type === 'messageEnd') {
+    //     messages.value.at(-1).aiContent = lang.ssInteractiveWebWorkspaceDesc
+    //     messages.value.at(-1).jsonData.aiContent = event.data
+    //     messages.value.at(-1).loading = false
+    //     chatLoading.value = false
+    //     messages.value.at(-1).chatloading = false
+    //   }
+    // }, session_name.value, messages.value.at(-1).sourceFiles?.map(file => file.id).filter(Boolean)).then(controller => {
+    //   streamController.value = controller
+    // }).catch(err => {
+    //   chatLoading.value = false
+    //   console.log('err', err)
+    //   stopMessage()
+    // })
     return
   }
   
@@ -884,6 +890,25 @@ const generate = (message: ChatMessage) => {
       }
     })
   }
+  else if (message.jsonData?.gType === 'generate_interactive_web') {
+    console.log(message.jsonData?.gType)
+    const prompt = [
+      {
+        role: 'user',
+        content: `这是用户输入的内容:“${message.jsonData.aiContent}”,根据用户输入的内容,取出里面prompt的值。输出一个json格式的回复{"prompt":""}。`, // ,"imageList":[],"evaluationCriteria":"评价标准" 输出语言为${lang.lang === 'en' ? '英文' : lang.lang === 'hk' ? '繁体中文' : '简体中文'}
+      },
+    ]
+    chat_no_stream2(prompt, { type: 'json_object' }).then((res: any) => {
+      console.log('批量生成工具', JSON.parse(res))
+      gType.value = 'chat'
+      chatLoading.value = false
+      messages.value.at(-1).aiContent = lang.ssInteractiveWebWorkspaceDesc
+      messages.value.at(-1).jsonData.aiContent = JSON.parse(res).prompt
+      messages.value.at(-1).loading = false
+      chatLoading.value = false
+      messages.value.at(-1).chatloading = false
+    })
+  }
 }
 
 const setPageId = async (tool: any, json: any) => {