修改模型管理类型选择数据,修改通用交互会话名称全部显示
This commit is contained in:
parent
64daeaeb56
commit
bc80406651
|
|
@ -7,11 +7,13 @@
|
||||||
</div>
|
</div>
|
||||||
<el-card class="session-card">
|
<el-card class="session-card">
|
||||||
<template #header>
|
<template #header>
|
||||||
<h3>当前会话</h3>
|
<h3>当前会话</h3>
|
||||||
</template>
|
</template>
|
||||||
<ul>
|
<el-tooltip :content=sessionName placement="top">
|
||||||
<li>{{ getShortenedName(sessionName) }}</li>
|
<ul>
|
||||||
</ul>
|
<li>{{ getShortenedName(sessionName) }}</li>
|
||||||
|
</ul>
|
||||||
|
</el-tooltip>
|
||||||
</el-card>
|
</el-card>
|
||||||
<el-card class="session-card2">
|
<el-card class="session-card2">
|
||||||
<template #header>
|
<template #header>
|
||||||
|
|
@ -24,7 +26,9 @@
|
||||||
:key="index"
|
:key="index"
|
||||||
@click="loadSession(session.ID)"
|
@click="loadSession(session.ID)"
|
||||||
>
|
>
|
||||||
{{ getShortenedName(session.Name) }}
|
<el-tooltip :content="session.Name" placement="top">
|
||||||
|
<span>{{ getShortenedName(session.Name) }}</span>
|
||||||
|
</el-tooltip>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</el-scrollbar>
|
</el-scrollbar>
|
||||||
|
|
@ -634,66 +638,6 @@ const doReceiveMessage = (event) => {
|
||||||
const sendMessage = () => {
|
const sendMessage = () => {
|
||||||
sendMessageWithFile()
|
sendMessageWithFile()
|
||||||
return;
|
return;
|
||||||
if (inputMessage.value.trim() === "") {
|
|
||||||
ElMessage.warning("消息不能为空");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
let msg = {
|
|
||||||
msg: inputMessage.value,
|
|
||||||
type: "ollama",
|
|
||||||
function: "gen-ai-chat",
|
|
||||||
session_id: sessionID.value,
|
|
||||||
model_id: selectModel.value,
|
|
||||||
temperature: temperature.value,
|
|
||||||
top_p: topP.value,
|
|
||||||
};
|
|
||||||
if (selectedFiles.value.length > 0) {
|
|
||||||
// 处理选中的文件
|
|
||||||
console.log("选中的文件:", selectedFiles.value);
|
|
||||||
let img_file: File = selectedFiles.value[0];
|
|
||||||
let img_content = []
|
|
||||||
for (let i = 0; i < selectedFiles.value.length; i++) {
|
|
||||||
img_content.push({"img_name": selectedFiles.value[i].UserFileName, "img_url": fileUrl + selectedFiles.value[i].file_store_name});
|
|
||||||
}
|
|
||||||
let img_msg: ImageMessage = {
|
|
||||||
image_content: img_content,
|
|
||||||
text: inputMessage.value,
|
|
||||||
};
|
|
||||||
let img_msg_str = JSON.stringify(img_msg);
|
|
||||||
msg["msg"] = img_msg_str;
|
|
||||||
msg["is_image"] = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
socket.value.send(JSON.stringify(msg));
|
|
||||||
} catch (e) {
|
|
||||||
ElMessage.error("发送失败!连接已断开!");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (sessionID.value == 0) {
|
|
||||||
sessionName.value = inputMessage.value;
|
|
||||||
}
|
|
||||||
let pMsgContent ="";
|
|
||||||
if (msg["is_image"]) {
|
|
||||||
let img_msg: ImageMessage = JSON.parse(msg["msg"]);
|
|
||||||
//解析成md格式
|
|
||||||
let img_content= img_msg.image_content
|
|
||||||
for (let i = 0; i < img_content.length; i++) {
|
|
||||||
pMsgContent += `![${img_content[i].img_name}](${img_content[i].img_url})` + "\n";
|
|
||||||
}
|
|
||||||
pMsgContent = pMsgContent + img_msg.text;
|
|
||||||
} else {
|
|
||||||
pMsgContent = msg.msg;
|
|
||||||
}
|
|
||||||
messages.push({ role: "user", content: pMsgContent, finished: true });
|
|
||||||
inputMessage.value = "";
|
|
||||||
nextTick(() => {
|
|
||||||
scrollToBottom(); // 新增滚动调用
|
|
||||||
});
|
|
||||||
loading.value = true;
|
|
||||||
if (sessionID.value == 0) {
|
|
||||||
sessionName.value = msg.msg;
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -704,7 +648,7 @@ const sendMessageWithFile = () => {
|
||||||
}
|
}
|
||||||
let end_msg = {
|
let end_msg = {
|
||||||
msg: inputMessage.value,
|
msg: inputMessage.value,
|
||||||
type: "ollama",
|
type: "null",
|
||||||
function: "gen-ai-chat",
|
function: "gen-ai-chat",
|
||||||
session_id: sessionID.value,
|
session_id: sessionID.value,
|
||||||
model_id: selectModel.value,
|
model_id: selectModel.value,
|
||||||
|
|
|
||||||
|
|
@ -112,6 +112,7 @@ const getData = async () => {
|
||||||
let result = await FindModelService(req);
|
let result = await FindModelService(req);
|
||||||
page.total = result.data.length;
|
page.total = result.data.length;
|
||||||
page.index = 1;
|
page.index = 1;
|
||||||
|
page.currentPage = 1;
|
||||||
allData.value = result.data;
|
allData.value = result.data;
|
||||||
// 分页
|
// 分页
|
||||||
let start = (page.index - 1) * page.size;
|
let start = (page.index - 1) * page.size;
|
||||||
|
|
@ -123,7 +124,7 @@ const getData = async () => {
|
||||||
start = page.total;
|
start = page.total;
|
||||||
}
|
}
|
||||||
tableData.value = result.data.slice(start, end);
|
tableData.value = result.data.slice(start, end);
|
||||||
|
await getModelTTypeOptions();
|
||||||
};
|
};
|
||||||
getData();
|
getData();
|
||||||
|
|
||||||
|
|
@ -149,12 +150,38 @@ const changePage2 = async (val: number) => {
|
||||||
page.currentPage = val;
|
page.currentPage = val;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const modelTypeOptions = ref([
|
||||||
|
{ label: '本地部署模型', value: 'ollama' },
|
||||||
|
{ label: '星火', value: 'spark' },
|
||||||
|
{ label: '豆包', value: 'doubao' }
|
||||||
|
]);
|
||||||
|
let opts = ref([]);
|
||||||
|
const getModelTTypeOptions =()=>{
|
||||||
|
opts.value = [];
|
||||||
|
let modelTypeMap = new Map();
|
||||||
|
//遍历所有数据
|
||||||
|
for(let i=0;i<allData.value.length;i++){
|
||||||
|
let modelType = allData.value[i].Type;
|
||||||
|
if(!modelTypeMap.has(modelType)){
|
||||||
|
modelTypeMap.set(modelType,modelType);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//console.log("modelTypeMap:", modelTypeMap);
|
||||||
|
//遍历map
|
||||||
|
for(let [key,value] of modelTypeMap){
|
||||||
|
opts.value.push({label:key,value:value});
|
||||||
|
}
|
||||||
|
//console.log("opts:", opts);
|
||||||
|
options.value.list[0].opts = opts.value;
|
||||||
|
options_edit.value.list[0].opts = opts.value;
|
||||||
|
}
|
||||||
|
|
||||||
// 新增弹窗
|
// 新增弹窗
|
||||||
let options = ref<FormOption>({
|
let options = ref<FormOption>({
|
||||||
labelWidth: '100px',
|
labelWidth: '100px',
|
||||||
span: 12,
|
span: 12,
|
||||||
list: [
|
list: [
|
||||||
{ type: 'select', label: '类型', prop: 'Type', required: true, allowcreate:true, opts:[{label: '本地部署模型', value: 'ollama'},{label: '星火', value: 'spark'},{label: '豆包', value: 'doubao'}]},
|
{ type: 'select', label: '类型', prop: 'Type', required: true, allowcreate:true, opts: opts.value },
|
||||||
{ type: 'input', label: 'URL', prop: 'Url', required: true },
|
{ type: 'input', label: 'URL', prop: 'Url', required: true },
|
||||||
{ type: 'input', label: '参数', prop: 'Parameter', required: true },
|
{ type: 'input', label: '参数', prop: 'Parameter', required: true },
|
||||||
{ type: 'input', label: '描述', prop: 'Description', required: true },
|
{ type: 'input', label: '描述', prop: 'Description', required: true },
|
||||||
|
|
@ -166,7 +193,7 @@ let options_edit = ref<FormOption>({
|
||||||
labelWidth: '100px',
|
labelWidth: '100px',
|
||||||
span: 12,
|
span: 12,
|
||||||
list: [
|
list: [
|
||||||
{ type: 'select', label: '类型', prop: 'Type', required: true,opts:[{label: '本地部署模型', value: 'ollama'},{label: '星火', value: 'spark'},{label: '豆包', value: 'doubao'}]},
|
{ type: 'select', label: '类型', prop: 'Type', required: true, allowcreate:true,opts:opts.value},
|
||||||
{ type: 'input', label: 'URL', prop: 'Url', required: true },
|
{ type: 'input', label: 'URL', prop: 'Url', required: true },
|
||||||
{ type: 'input', label: '参数', prop: 'Parameter', required: true, rows: 4 },
|
{ type: 'input', label: '参数', prop: 'Parameter', required: true, rows: 4 },
|
||||||
{ type: 'input', label: '描述', prop: 'Description', required: true },
|
{ type: 'input', label: '描述', prop: 'Description', required: true },
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue