提交 541c105d authored 作者: 王鹏飞's avatar 王鹏飞

chore: update

上级 8ce62951
VITE_LOGIN_URL=https://login.zijing.chat/auth/login/index
# VITE_LAB_URL=https://digitalmarketinglab.zijing.chat
VITE_LAB_URL=https://bi.zijing.chat/bi/?proc=0&action=index
VITE_LOGIN_URL=http://172.16.3.203:1001/auth/login/index
VITE_LAB_URL=http://172.16.3.203:1012/bi/?proc=0&action=index
VITE_SURVEYKING_URL=http://172.16.3.203:1011
VITE_STATIC_URL=https://saas-lab-api
# 直播语音识别
VITE_ACCESS_KEY_ID=LTAI5t7YUVzDVSFLYvnuWGuq
VITE_ACCESS_KEY_SECRET=GBsohg5hSUP99dzIuRuCQilUXTSiYe
VITE_APP_KEY=W7Yqc8L49MEnnLsE
......@@ -8,13 +8,14 @@ import { ElMessage } from 'element-plus'
export function useAI(config) {
// AI 配置列表
const options = [
{ label: '文心一言', value: 'yiyan' },
{ label: 'DeepSeek', value: 'deepseek' },
{ label: '通义千问', value: 'qwen' },
{ label: '天工', value: 'tiangong' },
// { label: '文心一言', value: 'yiyan' },
// { label: 'DeepSeek', value: 'deepseek' },
// { label: '通义千问', value: 'qwen' },
{ label: '通义千问', value: 'qwenLocal' },
// { label: '天工', value: 'tiangong' },
]
const ai = useStorage('ai', 'tiangong')
const ai = useStorage('ai', 'qwen')
const messages = ref([])
const isLoading = ref(false)
......@@ -31,6 +32,9 @@ export function useAI(config) {
case 'qwen':
await qwen(data)
break
case 'qwenLocal':
await qwenLocal(data)
break
case 'tiangong':
await tiangong(data)
break
......@@ -101,6 +105,70 @@ export function useAI(config) {
messages.value.push({ role: 'assistant', content: choice.message.content.replaceAll('\n', '<br/>') })
}
}
// 通义千问
async function qwenLocal(data, isReplace = true) {
console.log('qwenLocal', data)
isLoading.value = true
return new Promise((resolve, reject) => {
fetchEventSource('/api/lab/v1/experiment/qwen/chat', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ model: 'qwen-long', messages: [{ role: 'user', content: data.content }] }),
async onopen(response) {
if (response.ok) {
return response
} else {
isLoading.value = false
reject(response)
throw response
}
},
onmessage(res) {
console.log(res.data)
if (res.data === '[DONE]') {
isLoading.value = false
resolve(messages.value.at(-1))
return
}
try {
const message = JSON.parse(res.data)
if (message.error) {
ElMessage.error(message.error.message)
return
}
const id = message.id
const messageIndex = messages.value.findIndex((session) => session.id === id)
let content = message?.choices[0]?.delta.content || ''
if (isReplace) {
content = content.replaceAll('\n', '<br/>')
}
if (messageIndex === -1) {
messages.value.push({
id,
role: 'assistant',
content: content.replace(/<think>[\s\S]*?<\/think>/g, '').replace(/^((<br\s*\/?>)|\s|\\n|\\r)+/g, ''),
})
} else {
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)
}
},
onerror(err) {
isLoading.value = false
reject(err)
throw err
},
})
})
}
// 通义千问
async function qwen(data) {
const apiKey = 'sk-afd0fcdb53bf4058b2068b8548820150'
......@@ -184,74 +252,105 @@ export function useAI(config) {
async function generateText(data) {
isLoading.value = true
const docAction = {
2: 'write',
3: 'rewrite',
4: 'expand',
5: 'rewrite',
7: 'abbreviate',
8: 'summary',
}
const params = {
content: data.content,
doc_action: docAction[data.type],
full_text: !!(data.type === 2),
}
await fetchEventSource('/api/lab/v1/experiment/marketing-ai/sky-agent3-chat', {
// const docAction = {
// 2: 'write',
// 3: 'rewrite',
// 4: 'expand',
// 5: 'rewrite',
// 7: 'abbreviate',
// 8: 'summary',
// }
// const params = {
// content: data.content,
// doc_action: docAction[data.type],
// full_text: !!(data.type === 2),
// }
await fetchEventSource('/api/lab/v1/experiment/qwen/chat', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
...config,
...data,
api_type: parseInt(data.type) === 1 ? 1 : 2,
context: data.content,
params: params,
}),
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ model: 'qwen-long', messages: [{ role: 'user', content: data.content }] }),
async onopen(response) {
if (response.ok) {
return
return response
} else {
isLoading.value = false
// reject(response)
throw response
}
},
onmessage(res) {
const message = JSON.parse(res.data)
// 聊天返回内容
if (data.type === '1') {
if (message.code === 0) {
ElMessage.error(message.message)
console.log(res.data)
if (res.data === '[DONE]') {
isLoading.value = false
// resolve(messages.value.at(-1))
return
}
try {
const message = JSON.parse(res.data)
if (message.error) {
ElMessage.error(message.error.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)
const id = message.id
const messageIndex = messages.value.findIndex((session) => session.id === id)
let content = message?.choices[0]?.delta.content || ''
// if (isReplace) {
// content = content.replaceAll('\n', '<br/>')
// }
if (messageIndex === -1) {
messages.value.push({
conversationId: requestId,
conversationId: id,
id,
role: 'assistant',
content: message.data?.text || '',
content: content.replace(/<think>[\s\S]*?<\/think>/g, '').replace(/^((<br\s*\/?>)|\s|\\n|\\r)+/g, ''),
input: data.context,
})
} 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
},
onclose() {
......
......@@ -101,9 +101,11 @@ async function handleSendType(type, content) {
})
switch (type) {
case 2:
content = `${content}`
// content = `${content}`
content = `我是${userName},请帮我创作以下内容:${content.replace('请帮我创作一个', '')}`
break
case 3:
case 5:
content = `我是${userName},请帮我改写以下内容:${content.replace('请帮我创作一个', '')}`
break
case 4:
......
......@@ -16,7 +16,7 @@ const formRef = ref()
const rules = ref({
type: [{ required: true, message: '请选择营销内容类型' }],
name: [{ required: true, message: '请输入内容名称' }],
teacher_id:[{ required: true, message: '请选择老师标签' }],
teacher_id: [{ required: true, message: '请选择老师标签' }],
})
async function handleValidate() {
......@@ -30,8 +30,8 @@ async function handleNext() {
function wayDisabled(item, type) {
if (item.value == 1) {
// return !['1', '2'].includes(type)
return !['1'].includes(type)
// return !['1'].includes(type)
return !['1', '2'].includes(type)
}
if (item.value == 3) {
return !['2', '8'].includes(type)
......
......@@ -297,13 +297,13 @@ const adminMenus: IMenuItem[] = [
icon: markRaw(IconAudio),
// tag: 'v1-experiment-marketing-material-list',
},
// {
// id: 14,
// name: '数字人管理',
// path: '/material/digital-human',
// icon: markRaw(IconVideo),
// // tag: 'v1-experiment-marketing-material-list',
// },
{
id: 14,
name: '数字人管理',
path: '/material/digital-human',
icon: markRaw(IconVideo),
// tag: 'v1-experiment-marketing-material-list',
},
{
id: 14,
name: '视频资料管理',
......
......@@ -115,7 +115,7 @@ export const wayList = [
export const materialMethodList = [
{ label: '离线上传 ', value: '2' },
{ label: '在线AI', value: '1' },
{ label: '在线设计', value: '3' },
// { label: '在线设计', value: '3' },
]
// 使用场景
......
......@@ -60,7 +60,8 @@ export default defineConfig(() => ({
// changeOrigin: true,
// rewrite: (path) => path.replace(/^\/api\/lab/, ''),
// },
'/api': 'https://saas-dml.ezijing.com',
// '/api': 'https://saas-dml.ezijing.com',
'/api': 'http://172.16.30.33:1007',
},
},
resolve: {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论