提交 3cc4303d authored 作者: 王鹏飞's avatar 王鹏飞

chore: 移除天工AI

上级 0e5e2976
...@@ -11,7 +11,7 @@ export function useAI(config) { ...@@ -11,7 +11,7 @@ export function useAI(config) {
{ label: '文心一言', value: 'yiyan' }, { label: '文心一言', value: 'yiyan' },
{ label: 'DeepSeek', value: 'deepseek' }, { label: 'DeepSeek', value: 'deepseek' },
{ label: '通义千问', value: 'qwen' }, { label: '通义千问', value: 'qwen' },
{ label: '天工', value: 'tiangong' }, // { label: '天工', value: 'tiangong' },
] ]
const ai = useStorage('ai', 'tiangong') const ai = useStorage('ai', 'tiangong')
...@@ -184,74 +184,105 @@ export function useAI(config) { ...@@ -184,74 +184,105 @@ export function useAI(config) {
async function generateText(data) { async function generateText(data) {
isLoading.value = true isLoading.value = true
const docAction = { // const docAction = {
2: 'write', // 2: 'write',
3: 'rewrite', // 3: 'rewrite',
4: 'expand', // 4: 'expand',
5: 'rewrite', // 5: 'rewrite',
7: 'abbreviate', // 7: 'abbreviate',
8: 'summary', // 8: 'summary',
} // }
const params = { // const params = {
content: data.content, // content: data.content,
doc_action: docAction[data.type], // doc_action: docAction[data.type],
full_text: !!(data.type === 2), // full_text: !!(data.type === 2),
} // }
await fetchEventSource('/api/lab/v1/experiment/marketing-ai/sky-agent3-chat', { await fetchEventSource('/api/qwen/compatible-mode/v1/chat/completions', {
method: 'POST', method: 'POST',
headers: { headers: { 'Content-Type': 'application/json', Authorization: `Bearer sk-afd0fcdb53bf4058b2068b8548820150` },
'Content-Type': 'application/json', body: JSON.stringify({ stream: true, model: 'qwen-max', messages: [{ role: 'user', content: data.content }] }),
},
body: JSON.stringify({
...config,
...data,
api_type: parseInt(data.type) === 1 ? 1 : 2,
context: data.content,
params: params,
}),
async onopen(response) { async onopen(response) {
if (response.ok) { if (response.ok) {
return return response
} else { } else {
isLoading.value = false
// reject(response)
throw response throw response
} }
}, },
onmessage(res) { onmessage(res) {
const message = JSON.parse(res.data) console.log(res.data)
// 聊天返回内容 if (res.data === '[DONE]') {
if (data.type === '1') { isLoading.value = false
if (message.code === 0) { // resolve(messages.value.at(-1))
ElMessage.error(message.message)
return return
} }
const conversationId = message.conversation_id try {
const messageIndex = messages.value.findIndex((session) => session.conversationId === conversationId) const message = JSON.parse(res.data)
const content = message?.arguments?.reduce((a, b) => { if (message.error) {
a = b?.messages[0]?.text || '' ElMessage.error(message.error.message)
return a return
}, '')
if (messageIndex === -1) {
messages.value.push({ conversationId, role: 'assistant', content, input: data.context })
} else {
if (content) {
messages.value[messageIndex].content = content
}
} }
} else { const id = message.id
// 按钮功能返回内容 const messageIndex = messages.value.findIndex((session) => session.id === id)
const requestId = message.request_id let content = message?.choices[0]?.delta.content || ''
const messageIndex = messages.value.findIndex((session) => session.conversationId === requestId) // if (isReplace) {
// content = content.replaceAll('\n', '<br/>')
// }
if (messageIndex === -1) { if (messageIndex === -1) {
messages.value.push({ messages.value.push({
conversationId: requestId, conversationId: id,
id,
role: 'assistant', role: 'assistant',
content: message.data?.text || '', content: content.replace(/<think>[\s\S]*?<\/think>/g, '').replace(/^((<br\s*\/?>)|\s|\\n|\\r)+/g, ''),
input: data.context, input: data.context,
}) })
} else { } else {
messages.value[messageIndex].content = message.data?.text messages.value[messageIndex].content = (messages.value[messageIndex].content + content)
.replace(/<think>[\s\S]*?<\/think>/g, '')
.replace(/^((<br\s*\/?>)|\s|\\n|\\r)+/g, '')
} }
} catch (error) {
console.log(error)
isLoading.value = false
// reject(error)
} }
// const message = JSON.parse(res.data)
// // 聊天返回内容
// if (data.type === '1') {
// if (message.code === 0) {
// ElMessage.error(message.message)
// return
// }
// const conversationId = message.conversation_id
// const messageIndex = messages.value.findIndex((session) => session.conversationId === conversationId)
// const content = message?.arguments?.reduce((a, b) => {
// a = b?.messages[0]?.text || ''
// return a
// }, '')
// if (messageIndex === -1) {
// messages.value.push({ conversationId, role: 'assistant', content, input: data.context })
// } else {
// if (content) {
// messages.value[messageIndex].content = content
// }
// }
// } else {
// // 按钮功能返回内容
// const requestId = message.request_id
// const messageIndex = messages.value.findIndex((session) => session.conversationId === requestId)
// if (messageIndex === -1) {
// messages.value.push({
// conversationId: requestId,
// role: 'assistant',
// content: message.data?.text || '',
// input: data.context,
// })
// } else {
// messages.value[messageIndex].content = message.data?.text
// }
// }
isLoading.value = false isLoading.value = false
}, },
onclose() { onclose() {
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
import { useClipboard } from '@vueuse/core' import { useClipboard } from '@vueuse/core'
import { useAI } from '@/composables/useAI' import { useAI } from '@/composables/useAI'
import { useMapStore } from '@/stores/map' import { useMapStore } from '@/stores/map'
import { useUserStore } from '@/stores/user' // import { useUserStore } from '@/stores/user'
import { useConnection } from '../composables/useConnection' import { useConnection } from '../composables/useConnection'
import { useIndustry } from '../composables/useIndustry' import { useIndustry } from '../composables/useIndustry'
import { import {
...@@ -94,7 +94,7 @@ async function handleSend(event) { ...@@ -94,7 +94,7 @@ async function handleSend(event) {
} }
async function handleSendType(type, content) { async function handleSendType(type, content) {
const userName = useUserStore().user.name // const userName = useUserStore().user.name
content = xss(content, { content = xss(content, {
whiteList: {}, // 白名单为空,表示过滤所有标签 whiteList: {}, // 白名单为空,表示过滤所有标签
stripIgnoreTag: true, // 过滤所有非白名单标签的HTML stripIgnoreTag: true, // 过滤所有非白名单标签的HTML
...@@ -102,19 +102,20 @@ async function handleSendType(type, content) { ...@@ -102,19 +102,20 @@ async function handleSendType(type, content) {
}) })
switch (type) { switch (type) {
case 2: case 2:
content = `${content}` // content = `${content}`
content = `请帮我创作以下内容:${content.replace('请帮我创作一个', '')}`
break break
case 3: case 3:
content = `我是${userName},请帮我改写以下内容:${content.replace('请帮我创作一个', '')}` content = `请帮我改写以下内容:${content.replace('请帮我创作一个', '')}`
break break
case 4: case 4:
content = `我是${userName},请帮我扩写以下内容:${content.replace('请帮我创作一个', '')}` content = `请帮我扩写以下内容:${content.replace('请帮我创作一个', '')}`
break break
case 7: case 7:
content = `我是${userName},请帮我缩写以下内容:${content.replace('请帮我创作一个', '')}` content = `请帮我缩写以下内容:${content.replace('请帮我创作一个', '')}`
break break
case 8: case 8:
content = `我是${userName},请帮我总结以下内容:${content.replace('请帮我创作一个', '')}` content = `请帮我总结以下内容:${content.replace('请帮我创作一个', '')}`
break break
} }
if (type == 99) { if (type == 99) {
...@@ -178,23 +179,29 @@ async function handleSave(message) { ...@@ -178,23 +179,29 @@ async function handleSave(message) {
type="primary" type="primary"
@click="handleSendType(5, item.input || item.content)" @click="handleSendType(5, item.input || item.content)"
v-if="item.role == 'assistant'" v-if="item.role == 'assistant'"
>刷新({{ usages.ai_refresh_count }}/{{ usages.ai_refresh_max_count }})</el-button >刷新
> <!-- ({{ usages.ai_refresh_count }}/{{ usages.ai_refresh_max_count }}) -->
</el-button>
<el-button size="small" type="primary" @click="handleSendType(2, item.content)" <el-button size="small" type="primary" @click="handleSendType(2, item.content)"
>AI创作({{ usages.ai_creation_count }}/{{ usages.ai_creation_max_count }})</el-button >AI创作
> <!-- ({{ usages.ai_creation_count }}/{{ usages.ai_creation_max_count }}) -->
</el-button>
<el-button size="small" type="primary" @click="handleSendType(3, item.content)" <el-button size="small" type="primary" @click="handleSendType(3, item.content)"
>AI改写({{ usages.ai_polish_count }}/{{ usages.ai_polish_max_count }})</el-button >AI改写
> <!-- ({{ usages.ai_polish_count }}/{{ usages.ai_polish_max_count }}) -->
</el-button>
<el-button size="small" type="primary" @click="handleSendType(4, item.content)" <el-button size="small" type="primary" @click="handleSendType(4, item.content)"
>AI扩写({{ usages.ai_expand_count }}/{{ usages.ai_expand_max_count }})</el-button >AI扩写
> <!-- ({{ usages.ai_expand_count }}/{{ usages.ai_expand_max_count }}) -->
</el-button>
<el-button size="small" type="primary" @click="handleSendType(7, item.content)" <el-button size="small" type="primary" @click="handleSendType(7, item.content)"
>AI缩写({{ usages.ai_abbr_count }}/{{ usages.ai_abbr_max_count }})</el-button >AI缩写
> <!-- ({{ usages.ai_abbr_count }}/{{ usages.ai_abbr_max_count }}) -->
</el-button>
<el-button size="small" type="primary" @click="handleSendType(8, item.content)" <el-button size="small" type="primary" @click="handleSendType(8, item.content)"
>AI总结({{ usages.ai_summary_count }}/{{ usages.ai_summary_max_count }})</el-button >AI总结
> <!-- ({{ usages.ai_summary_count }}/{{ usages.ai_summary_max_count }}) -->
</el-button>
</template> </template>
<!-- 图片 --> <!-- 图片 -->
<template v-if="form.type == 2"> <template v-if="form.type == 2">
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论