Quellcode durchsuchen

feat(aiChat): 添加会话名称参数并支持多语言TTS转换

为chat_no_stream和chat_stream函数添加可选的session_name参数,默认使用uuidv4生成
新增getTtsLanguage函数处理语言代码到TTS语言的转换
在aiChat.vue组件中初始化会话名称并更新语言处理逻辑
lsc vor 2 Wochen
Ursprung
Commit
1e89ecc997
2 geänderte Dateien mit 34 neuen und 11 gelöschten Zeilen
  1. 19 5
      src/components/CollapsibleToolbar/componets/aiChat.vue
  2. 15 6
      src/tools/aiChat.ts

+ 19 - 5
src/components/CollapsibleToolbar/componets/aiChat.vue

@@ -51,6 +51,8 @@
 <script lang="ts" setup>
 <script lang="ts" setup>
 import { ref, onMounted, useTemplateRef, nextTick } from 'vue'
 import { ref, onMounted, useTemplateRef, nextTick } from 'vue'
 import { chat_no_stream, chat_stream, getAgentModel } from '@/tools/aiChat'
 import { chat_no_stream, chat_stream, getAgentModel } from '@/tools/aiChat'
+import { useSlidesStore } from '@/store'
+import { lang } from '@/main'
 import MarkdownIt from 'markdown-it'
 import MarkdownIt from 'markdown-it'
 
 
 interface ChatMessage {
 interface ChatMessage {
@@ -145,15 +147,26 @@ const sendQuickAction = (action: string) => {
   //   }, 500)
   //   }, 500)
   sendAction(action)
   sendAction(action)
 }
 }
+
+import { v4 as uuidv4 } from 'uuid'
+const session_name = ref('')
+const slidesStore = useSlidesStore()
+const gType = ref('chat')
+
 const sendAction = async (action: string) => {
 const sendAction = async (action: string) => {
-  const content = await chat_no_stream(action, agentid1.value, props.userid || '', 'zh-CN')
+  const content = await chat_no_stream(action, agentid1.value, props.userid || '', lang.lang)
   console.log(content)
   console.log(content)
   // 渲染 Markdown 格式
   // 渲染 Markdown 格式
   const md = new MarkdownIt()
   const md = new MarkdownIt()
   const html = md.render(content)
   const html = md.render(content)
   messages.value.at(-1).aiContent = html
   messages.value.at(-1).aiContent = html
 
 
-  chat_stream(action, agentid1.value, props.userid || '', 'zh-CN', (event) => {
+
+  const prompt = `
+  #当前页面内容 ${JSON.stringify(slidesStore.currentSlide || '')}
+  #query: ${action}
+  `
+  chat_stream(prompt, agentid2.value, props.userid || '', lang.lang, (event) => {
     if (event.type === 'message') {
     if (event.type === 'message') {
       messages.value.at(-1).aiContent = md.render(event.data)
       messages.value.at(-1).aiContent = md.render(event.data)
 
 
@@ -168,13 +181,14 @@ const sendAction = async (action: string) => {
   }).catch(err => {
   }).catch(err => {
     chatLoading.value = false
     chatLoading.value = false
     console.log('err', err)
     console.log('err', err)
-  })
+  }, session_name.value)
 }
 }
-const agentid1 = ref('4535eb8a-851b-4c47-a059-234f702d89c4')
-const agentid2 = ref('6c5b2386-f305-4062-bf53-125c0058fafa')
+const agentid1 = ref('cbb29b41-2a4a-4453-bf8d-357929ced4bd')// 判断意图
+const agentid2 = ref('f86aa63c-b7b7-4d03-9b37-b59f116d36f3')// 生成内容
 
 
 
 
 onMounted(() => {
 onMounted(() => {
+  session_name.value = uuidv4()
   getAgentModel(agentid1.value)
   getAgentModel(agentid1.value)
   getAgentModel(agentid2.value)
   getAgentModel(agentid2.value)
 })
 })

+ 15 - 6
src/tools/aiChat.ts

@@ -33,7 +33,7 @@ const DEFAULT_PARAMS: Omit<ChatParams, 'message' | 'uid' | 'stream'> = {
   tts_language: 'zh-CN'
   tts_language: 'zh-CN'
 }
 }
 
 
-export const chat_no_stream = async (msg: string, agentId: string, userId: string, language: string): Promise<string> => {
+export const chat_no_stream = async (msg: string, agentId: string, userId: string, language: string, session_name: string = uuidv4()): Promise<string> => {
   const agentData = await getAgentModel(agentId)
   const agentData = await getAgentModel(agentId)
   const params: ChatParams = {
   const params: ChatParams = {
     ...DEFAULT_PARAMS,
     ...DEFAULT_PARAMS,
@@ -43,8 +43,8 @@ export const chat_no_stream = async (msg: string, agentId: string, userId: strin
     stream: false,
     stream: false,
     model: agentData?.modelType || 'open-doubao',
     model: agentData?.modelType || 'open-doubao',
     userId: userId,
     userId: userId,
-    tts_language: language,
-    session_name: uuidv4()
+    tts_language: getTtsLanguage(language),
+    session_name: session_name
   }
   }
 
 
   const res = await axios.post('https://appapi.cocorobo.cn/api/agentchats/ai_agent_chat', params)
   const res = await axios.post('https://appapi.cocorobo.cn/api/agentchats/ai_agent_chat', params)
@@ -76,7 +76,8 @@ export const chat_stream = async (
   agentId: string,
   agentId: string,
   userId: string,
   userId: string,
   language: string,
   language: string,
-  onMessage: (event: { type: 'message' | 'close' | 'error' | 'messageEnd'; data: string }) => void
+  onMessage: (event: { type: 'message' | 'close' | 'error' | 'messageEnd'; data: string }) => void,
+  session_name: string = uuidv4()
 ): Promise<void> => {
 ): Promise<void> => {
   const agentData = await getAgentModel(agentId)
   const agentData = await getAgentModel(agentId)
   const params: ChatParams = {
   const params: ChatParams = {
@@ -87,8 +88,8 @@ export const chat_stream = async (
     stream: true,
     stream: true,
     model: agentData?.modelType || 'open-doubao',
     model: agentData?.modelType || 'open-doubao',
     userId: userId,
     userId: userId,
-    tts_language: language,
-    session_name: uuidv4()
+    tts_language: getTtsLanguage(language),
+    session_name: session_name
   }
   }
 
 
   const ctrl = new AbortController()
   const ctrl = new AbortController()
@@ -149,3 +150,11 @@ export const getAgentModel = async (agentId: string) => {
   model[agentId] = res
   model[agentId] = res
   return model[agentId]
   return model[agentId]
 }
 }
+
+export const getTtsLanguage = (langCode: string) => {
+  switch (langCode) {
+    case 'en':return 'en-US'
+    case 'hk':return 'yue-CN'
+    default :return 'zh-CN'
+  }
+}