860 lines
36 KiB
JavaScript
860 lines
36 KiB
JavaScript
import { a6 as ElTabPane, h as ElButton, aj as refresh_default, ak as plus_default, aa as delete_default, al as ElTable, am as ElTableColumn, q as ElTag, an as edit_default, ao as vLoading, ap as ElPagination, a5 as ElTabs, w as ElForm, x as ElFormItem, y as ElInput, aq as ElSelect, ar as ElOption, M as ElSwitch, v as ElDialog, P as ElRadioGroup, Q as ElRadio, E as ElMessage, D as ElMessageBox } from "./element-plus.CkEW9frc.js";
|
|
import { A as AIProviderAPI, E as EmbeddingConfigAPI } from "./ai_config.BnEV7HHL.js";
|
|
import { J as defineComponent, t as onMounted, S as openBlock, _ as createElementBlock, $ as createVNode, a0 as withCtx, a1 as createBaseVNode, o as unref, a9 as createTextVNode, a6 as withDirectives, T as createBlock, aa as toDisplayString, H as Fragment, a8 as createCommentVNode, r as ref, ak as reactive } from "./.pnpm.BW3P1y8f.js";
|
|
import { _ as _export_sfc } from "./_plugin-vue_export-helper.1tPrXgE0.js";
|
|
import "./index.CMd5bD1r.js";
|
|
import "./codemirror.CvJAcn2d.js";
|
|
const _hoisted_1 = { class: "app-container" };
|
|
const _hoisted_2 = { class: "tab-content" };
|
|
const _hoisted_3 = { class: "table-toolbar" };
|
|
const _hoisted_4 = { class: "tab-content" };
|
|
const _hoisted_5 = { class: "table-toolbar" };
|
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
...{
|
|
name: "AIConfig",
|
|
inheritAttrs: false
|
|
},
|
|
__name: "index",
|
|
setup(__props) {
|
|
const activeTab = ref("provider");
|
|
const providerLoading = ref(false);
|
|
const providerList = ref([]);
|
|
const providerTotal = ref(0);
|
|
const providerSelection = ref([]);
|
|
const providerQuery = reactive({
|
|
page_no: 1,
|
|
page_size: 10,
|
|
name: void 0,
|
|
provider_type: void 0
|
|
});
|
|
const providerDialogVisible = ref(false);
|
|
const providerDialogTitle = ref("新增供应商");
|
|
const providerFormRef = ref();
|
|
const providerForm = reactive({
|
|
id: void 0,
|
|
name: void 0,
|
|
provider_type: void 0,
|
|
base_url: void 0,
|
|
api_key: void 0,
|
|
is_default: 0,
|
|
description: void 0
|
|
});
|
|
const providerRules = {
|
|
name: [{ required: true, message: "请输入供应商名称", trigger: "blur" }],
|
|
provider_type: [{ required: true, message: "请选择供应商类型", trigger: "change" }],
|
|
base_url: [{ required: true, message: "请输入接口地址", trigger: "blur" }],
|
|
api_key: [{ required: true, message: "请输入API Key", trigger: "blur" }]
|
|
};
|
|
async function loadProviderList() {
|
|
providerLoading.value = true;
|
|
try {
|
|
const res = await AIProviderAPI.list(providerQuery);
|
|
providerList.value = res.data.data.items;
|
|
providerTotal.value = res.data.data.total;
|
|
} finally {
|
|
providerLoading.value = false;
|
|
}
|
|
}
|
|
function handleProviderSelectionChange(selection) {
|
|
providerSelection.value = selection;
|
|
}
|
|
function handleProviderAdd() {
|
|
providerDialogTitle.value = "新增供应商";
|
|
Object.assign(providerForm, {
|
|
id: void 0,
|
|
name: void 0,
|
|
provider_type: void 0,
|
|
base_url: void 0,
|
|
api_key: void 0,
|
|
is_default: 0,
|
|
description: void 0
|
|
});
|
|
providerDialogVisible.value = true;
|
|
}
|
|
function handleProviderEdit(row) {
|
|
providerDialogTitle.value = "编辑供应商";
|
|
Object.assign(providerForm, row);
|
|
providerDialogVisible.value = true;
|
|
}
|
|
async function handleProviderSubmit() {
|
|
var _a;
|
|
await ((_a = providerFormRef.value) == null ? void 0 : _a.validate());
|
|
if (providerForm.id) {
|
|
await AIProviderAPI.update(providerForm.id, providerForm);
|
|
ElMessage.success("更新成功");
|
|
} else {
|
|
await AIProviderAPI.create(providerForm);
|
|
ElMessage.success("创建成功");
|
|
}
|
|
providerDialogVisible.value = false;
|
|
loadProviderList();
|
|
}
|
|
async function handleProviderDelete(row) {
|
|
await ElMessageBox.confirm("确定删除该供应商吗?", "提示", { type: "warning" });
|
|
await AIProviderAPI.delete([row.id]);
|
|
ElMessage.success("删除成功");
|
|
loadProviderList();
|
|
}
|
|
async function handleProviderBatchDelete() {
|
|
await ElMessageBox.confirm(`确定删除选中的${providerSelection.value.length}条记录吗?`, "提示", { type: "warning" });
|
|
const ids = providerSelection.value.map((item) => item.id);
|
|
await AIProviderAPI.delete(ids);
|
|
ElMessage.success("删除成功");
|
|
loadProviderList();
|
|
}
|
|
const embeddingLoading = ref(false);
|
|
const embeddingList = ref([]);
|
|
const embeddingTotal = ref(0);
|
|
const embeddingSelection = ref([]);
|
|
const embeddingQuery = reactive({
|
|
page_no: 1,
|
|
page_size: 10,
|
|
name: void 0,
|
|
embedding_type: void 0
|
|
});
|
|
const embeddingDialogVisible = ref(false);
|
|
const embeddingDialogTitle = ref("新增向量化配置");
|
|
const embeddingFormRef = ref();
|
|
const embeddingForm = reactive({
|
|
id: void 0,
|
|
name: void 0,
|
|
embedding_type: 0,
|
|
model_name: void 0,
|
|
base_url: void 0,
|
|
api_key: void 0,
|
|
is_default: 0,
|
|
description: void 0
|
|
});
|
|
const embeddingRules = {
|
|
name: [{ required: true, message: "请输入配置名称", trigger: "blur" }],
|
|
embedding_type: [{ required: true, message: "请选择向量化类型", trigger: "change" }],
|
|
model_name: [{ required: true, message: "请输入模型名称", trigger: "blur" }]
|
|
};
|
|
async function loadEmbeddingList() {
|
|
embeddingLoading.value = true;
|
|
try {
|
|
const res = await EmbeddingConfigAPI.list(embeddingQuery);
|
|
embeddingList.value = res.data.data.items;
|
|
embeddingTotal.value = res.data.data.total;
|
|
} finally {
|
|
embeddingLoading.value = false;
|
|
}
|
|
}
|
|
function handleEmbeddingSelectionChange(selection) {
|
|
embeddingSelection.value = selection;
|
|
}
|
|
function handleEmbeddingAdd() {
|
|
embeddingDialogTitle.value = "新增向量化配置";
|
|
Object.assign(embeddingForm, {
|
|
id: void 0,
|
|
name: void 0,
|
|
embedding_type: 0,
|
|
model_name: void 0,
|
|
base_url: void 0,
|
|
api_key: void 0,
|
|
is_default: 0,
|
|
description: void 0
|
|
});
|
|
embeddingDialogVisible.value = true;
|
|
}
|
|
function handleEmbeddingEdit(row) {
|
|
embeddingDialogTitle.value = "编辑向量化配置";
|
|
Object.assign(embeddingForm, row);
|
|
embeddingDialogVisible.value = true;
|
|
}
|
|
async function handleEmbeddingSubmit() {
|
|
var _a;
|
|
await ((_a = embeddingFormRef.value) == null ? void 0 : _a.validate());
|
|
if (embeddingForm.id) {
|
|
await EmbeddingConfigAPI.update(embeddingForm.id, embeddingForm);
|
|
ElMessage.success("更新成功");
|
|
} else {
|
|
await EmbeddingConfigAPI.create(embeddingForm);
|
|
ElMessage.success("创建成功");
|
|
}
|
|
embeddingDialogVisible.value = false;
|
|
loadEmbeddingList();
|
|
}
|
|
async function handleEmbeddingDelete(row) {
|
|
await ElMessageBox.confirm("确定删除该配置吗?", "提示", { type: "warning" });
|
|
await EmbeddingConfigAPI.delete([row.id]);
|
|
ElMessage.success("删除成功");
|
|
loadEmbeddingList();
|
|
}
|
|
async function handleEmbeddingBatchDelete() {
|
|
await ElMessageBox.confirm(`确定删除选中的${embeddingSelection.value.length}条记录吗?`, "提示", { type: "warning" });
|
|
const ids = embeddingSelection.value.map((item) => item.id);
|
|
await EmbeddingConfigAPI.delete(ids);
|
|
ElMessage.success("删除成功");
|
|
loadEmbeddingList();
|
|
}
|
|
function maskApiKey(key) {
|
|
if (!key || key.length <= 8) return "****";
|
|
return key.substring(0, 4) + "****" + key.substring(key.length - 4);
|
|
}
|
|
onMounted(() => {
|
|
loadProviderList();
|
|
loadEmbeddingList();
|
|
});
|
|
return (_ctx, _cache) => {
|
|
const _component_el_button = ElButton;
|
|
const _component_el_table_column = ElTableColumn;
|
|
const _component_el_tag = ElTag;
|
|
const _component_el_table = ElTable;
|
|
const _component_el_pagination = ElPagination;
|
|
const _component_el_tab_pane = ElTabPane;
|
|
const _component_el_tabs = ElTabs;
|
|
const _component_el_input = ElInput;
|
|
const _component_el_form_item = ElFormItem;
|
|
const _component_el_option = ElOption;
|
|
const _component_el_select = ElSelect;
|
|
const _component_el_switch = ElSwitch;
|
|
const _component_el_form = ElForm;
|
|
const _component_el_dialog = ElDialog;
|
|
const _component_el_radio = ElRadio;
|
|
const _component_el_radio_group = ElRadioGroup;
|
|
const _directive_loading = vLoading;
|
|
return openBlock(), createElementBlock("div", _hoisted_1, [
|
|
createVNode(_component_el_tabs, {
|
|
modelValue: activeTab.value,
|
|
"onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => activeTab.value = $event),
|
|
type: "border-card"
|
|
}, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_el_tab_pane, {
|
|
label: "AI供应商",
|
|
name: "provider"
|
|
}, {
|
|
default: withCtx(() => [
|
|
createBaseVNode("div", _hoisted_2, [
|
|
createBaseVNode("div", _hoisted_3, [
|
|
createVNode(_component_el_button, {
|
|
icon: unref(refresh_default),
|
|
onClick: loadProviderList
|
|
}, {
|
|
default: withCtx(() => [..._cache[22] || (_cache[22] = [
|
|
createTextVNode("刷新", -1)
|
|
])]),
|
|
_: 1
|
|
}, 8, ["icon"]),
|
|
createVNode(_component_el_button, {
|
|
type: "primary",
|
|
icon: unref(plus_default),
|
|
onClick: handleProviderAdd
|
|
}, {
|
|
default: withCtx(() => [..._cache[23] || (_cache[23] = [
|
|
createTextVNode("新增", -1)
|
|
])]),
|
|
_: 1
|
|
}, 8, ["icon"]),
|
|
createVNode(_component_el_button, {
|
|
type: "danger",
|
|
icon: unref(delete_default),
|
|
disabled: providerSelection.value.length === 0,
|
|
onClick: handleProviderBatchDelete
|
|
}, {
|
|
default: withCtx(() => [..._cache[24] || (_cache[24] = [
|
|
createTextVNode("批量删除", -1)
|
|
])]),
|
|
_: 1
|
|
}, 8, ["icon", "disabled"])
|
|
]),
|
|
withDirectives((openBlock(), createBlock(_component_el_table, {
|
|
data: providerList.value,
|
|
onSelectionChange: handleProviderSelectionChange
|
|
}, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_el_table_column, {
|
|
type: "selection",
|
|
width: "50"
|
|
}),
|
|
createVNode(_component_el_table_column, {
|
|
prop: "name",
|
|
label: "供应商名称",
|
|
"min-width": "120"
|
|
}),
|
|
createVNode(_component_el_table_column, {
|
|
prop: "provider_type",
|
|
label: "类型",
|
|
width: "100"
|
|
}, {
|
|
default: withCtx(({ row }) => [
|
|
createVNode(_component_el_tag, null, {
|
|
default: withCtx(() => [
|
|
createTextVNode(toDisplayString(row.provider_type), 1)
|
|
]),
|
|
_: 2
|
|
}, 1024)
|
|
]),
|
|
_: 1
|
|
}),
|
|
createVNode(_component_el_table_column, {
|
|
prop: "base_url",
|
|
label: "接口地址",
|
|
"min-width": "200",
|
|
"show-overflow-tooltip": ""
|
|
}),
|
|
createVNode(_component_el_table_column, {
|
|
prop: "api_key",
|
|
label: "API Key",
|
|
"min-width": "150"
|
|
}, {
|
|
default: withCtx(({ row }) => [
|
|
createBaseVNode("span", null, toDisplayString(maskApiKey(row.api_key)), 1)
|
|
]),
|
|
_: 1
|
|
}),
|
|
createVNode(_component_el_table_column, {
|
|
prop: "is_default",
|
|
label: "默认",
|
|
width: "80",
|
|
align: "center"
|
|
}, {
|
|
default: withCtx(({ row }) => [
|
|
createVNode(_component_el_tag, {
|
|
type: row.is_default === 1 ? "success" : "info"
|
|
}, {
|
|
default: withCtx(() => [
|
|
createTextVNode(toDisplayString(row.is_default === 1 ? "是" : "否"), 1)
|
|
]),
|
|
_: 2
|
|
}, 1032, ["type"])
|
|
]),
|
|
_: 1
|
|
}),
|
|
createVNode(_component_el_table_column, {
|
|
prop: "description",
|
|
label: "备注",
|
|
"min-width": "150",
|
|
"show-overflow-tooltip": ""
|
|
}),
|
|
createVNode(_component_el_table_column, {
|
|
label: "操作",
|
|
width: "150",
|
|
fixed: "right"
|
|
}, {
|
|
default: withCtx(({ row }) => [
|
|
createVNode(_component_el_button, {
|
|
type: "primary",
|
|
link: "",
|
|
icon: unref(edit_default),
|
|
onClick: ($event) => handleProviderEdit(row)
|
|
}, {
|
|
default: withCtx(() => [..._cache[25] || (_cache[25] = [
|
|
createTextVNode("编辑", -1)
|
|
])]),
|
|
_: 1
|
|
}, 8, ["icon", "onClick"]),
|
|
createVNode(_component_el_button, {
|
|
type: "danger",
|
|
link: "",
|
|
icon: unref(delete_default),
|
|
onClick: ($event) => handleProviderDelete(row)
|
|
}, {
|
|
default: withCtx(() => [..._cache[26] || (_cache[26] = [
|
|
createTextVNode("删除", -1)
|
|
])]),
|
|
_: 1
|
|
}, 8, ["icon", "onClick"])
|
|
]),
|
|
_: 1
|
|
})
|
|
]),
|
|
_: 1
|
|
}, 8, ["data"])), [
|
|
[_directive_loading, providerLoading.value]
|
|
]),
|
|
createVNode(_component_el_pagination, {
|
|
"current-page": providerQuery.page_no,
|
|
"onUpdate:currentPage": _cache[0] || (_cache[0] = ($event) => providerQuery.page_no = $event),
|
|
"page-size": providerQuery.page_size,
|
|
"onUpdate:pageSize": _cache[1] || (_cache[1] = ($event) => providerQuery.page_size = $event),
|
|
total: providerTotal.value,
|
|
"page-sizes": [10, 20, 50, 100],
|
|
layout: "total, sizes, prev, pager, next, jumper",
|
|
onSizeChange: loadProviderList,
|
|
onCurrentChange: loadProviderList
|
|
}, null, 8, ["current-page", "page-size", "total"])
|
|
])
|
|
]),
|
|
_: 1
|
|
}),
|
|
createVNode(_component_el_tab_pane, {
|
|
label: "向量化配置",
|
|
name: "embedding"
|
|
}, {
|
|
default: withCtx(() => [
|
|
createBaseVNode("div", _hoisted_4, [
|
|
createBaseVNode("div", _hoisted_5, [
|
|
createVNode(_component_el_button, {
|
|
icon: unref(refresh_default),
|
|
onClick: loadEmbeddingList
|
|
}, {
|
|
default: withCtx(() => [..._cache[27] || (_cache[27] = [
|
|
createTextVNode("刷新", -1)
|
|
])]),
|
|
_: 1
|
|
}, 8, ["icon"]),
|
|
createVNode(_component_el_button, {
|
|
type: "primary",
|
|
icon: unref(plus_default),
|
|
onClick: handleEmbeddingAdd
|
|
}, {
|
|
default: withCtx(() => [..._cache[28] || (_cache[28] = [
|
|
createTextVNode("新增", -1)
|
|
])]),
|
|
_: 1
|
|
}, 8, ["icon"]),
|
|
createVNode(_component_el_button, {
|
|
type: "danger",
|
|
icon: unref(delete_default),
|
|
disabled: embeddingSelection.value.length === 0,
|
|
onClick: handleEmbeddingBatchDelete
|
|
}, {
|
|
default: withCtx(() => [..._cache[29] || (_cache[29] = [
|
|
createTextVNode("批量删除", -1)
|
|
])]),
|
|
_: 1
|
|
}, 8, ["icon", "disabled"])
|
|
]),
|
|
withDirectives((openBlock(), createBlock(_component_el_table, {
|
|
data: embeddingList.value,
|
|
onSelectionChange: handleEmbeddingSelectionChange
|
|
}, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_el_table_column, {
|
|
type: "selection",
|
|
width: "50"
|
|
}),
|
|
createVNode(_component_el_table_column, {
|
|
prop: "name",
|
|
label: "配置名称",
|
|
"min-width": "120"
|
|
}),
|
|
createVNode(_component_el_table_column, {
|
|
prop: "embedding_type",
|
|
label: "类型",
|
|
width: "100"
|
|
}, {
|
|
default: withCtx(({ row }) => [
|
|
createVNode(_component_el_tag, {
|
|
type: row.embedding_type === 0 ? "primary" : "success"
|
|
}, {
|
|
default: withCtx(() => [
|
|
createTextVNode(toDisplayString(row.embedding_type === 0 ? "本地" : "远程"), 1)
|
|
]),
|
|
_: 2
|
|
}, 1032, ["type"])
|
|
]),
|
|
_: 1
|
|
}),
|
|
createVNode(_component_el_table_column, {
|
|
prop: "model_name",
|
|
label: "模型名称",
|
|
"min-width": "150"
|
|
}),
|
|
createVNode(_component_el_table_column, {
|
|
prop: "base_url",
|
|
label: "接口地址",
|
|
"min-width": "200",
|
|
"show-overflow-tooltip": ""
|
|
}, {
|
|
default: withCtx(({ row }) => [
|
|
createTextVNode(toDisplayString(row.base_url || "-"), 1)
|
|
]),
|
|
_: 1
|
|
}),
|
|
createVNode(_component_el_table_column, {
|
|
prop: "is_default",
|
|
label: "默认",
|
|
width: "80",
|
|
align: "center"
|
|
}, {
|
|
default: withCtx(({ row }) => [
|
|
createVNode(_component_el_tag, {
|
|
type: row.is_default === 1 ? "success" : "info"
|
|
}, {
|
|
default: withCtx(() => [
|
|
createTextVNode(toDisplayString(row.is_default === 1 ? "是" : "否"), 1)
|
|
]),
|
|
_: 2
|
|
}, 1032, ["type"])
|
|
]),
|
|
_: 1
|
|
}),
|
|
createVNode(_component_el_table_column, {
|
|
prop: "description",
|
|
label: "备注",
|
|
"min-width": "150",
|
|
"show-overflow-tooltip": ""
|
|
}),
|
|
createVNode(_component_el_table_column, {
|
|
label: "操作",
|
|
width: "150",
|
|
fixed: "right"
|
|
}, {
|
|
default: withCtx(({ row }) => [
|
|
createVNode(_component_el_button, {
|
|
type: "primary",
|
|
link: "",
|
|
icon: unref(edit_default),
|
|
onClick: ($event) => handleEmbeddingEdit(row)
|
|
}, {
|
|
default: withCtx(() => [..._cache[30] || (_cache[30] = [
|
|
createTextVNode("编辑", -1)
|
|
])]),
|
|
_: 1
|
|
}, 8, ["icon", "onClick"]),
|
|
createVNode(_component_el_button, {
|
|
type: "danger",
|
|
link: "",
|
|
icon: unref(delete_default),
|
|
onClick: ($event) => handleEmbeddingDelete(row)
|
|
}, {
|
|
default: withCtx(() => [..._cache[31] || (_cache[31] = [
|
|
createTextVNode("删除", -1)
|
|
])]),
|
|
_: 1
|
|
}, 8, ["icon", "onClick"])
|
|
]),
|
|
_: 1
|
|
})
|
|
]),
|
|
_: 1
|
|
}, 8, ["data"])), [
|
|
[_directive_loading, embeddingLoading.value]
|
|
]),
|
|
createVNode(_component_el_pagination, {
|
|
"current-page": embeddingQuery.page_no,
|
|
"onUpdate:currentPage": _cache[2] || (_cache[2] = ($event) => embeddingQuery.page_no = $event),
|
|
"page-size": embeddingQuery.page_size,
|
|
"onUpdate:pageSize": _cache[3] || (_cache[3] = ($event) => embeddingQuery.page_size = $event),
|
|
total: embeddingTotal.value,
|
|
"page-sizes": [10, 20, 50, 100],
|
|
layout: "total, sizes, prev, pager, next, jumper",
|
|
onSizeChange: loadEmbeddingList,
|
|
onCurrentChange: loadEmbeddingList
|
|
}, null, 8, ["current-page", "page-size", "total"])
|
|
])
|
|
]),
|
|
_: 1
|
|
})
|
|
]),
|
|
_: 1
|
|
}, 8, ["modelValue"]),
|
|
createVNode(_component_el_dialog, {
|
|
modelValue: providerDialogVisible.value,
|
|
"onUpdate:modelValue": _cache[12] || (_cache[12] = ($event) => providerDialogVisible.value = $event),
|
|
title: providerDialogTitle.value,
|
|
width: "600px",
|
|
"destroy-on-close": ""
|
|
}, {
|
|
footer: withCtx(() => [
|
|
createVNode(_component_el_button, {
|
|
onClick: _cache[11] || (_cache[11] = ($event) => providerDialogVisible.value = false)
|
|
}, {
|
|
default: withCtx(() => [..._cache[32] || (_cache[32] = [
|
|
createTextVNode("取消", -1)
|
|
])]),
|
|
_: 1
|
|
}),
|
|
createVNode(_component_el_button, {
|
|
type: "primary",
|
|
onClick: handleProviderSubmit
|
|
}, {
|
|
default: withCtx(() => [..._cache[33] || (_cache[33] = [
|
|
createTextVNode("确定", -1)
|
|
])]),
|
|
_: 1
|
|
})
|
|
]),
|
|
default: withCtx(() => [
|
|
createVNode(_component_el_form, {
|
|
ref_key: "providerFormRef",
|
|
ref: providerFormRef,
|
|
model: providerForm,
|
|
rules: providerRules,
|
|
"label-width": "100px"
|
|
}, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_el_form_item, {
|
|
label: "供应商名称",
|
|
prop: "name"
|
|
}, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_el_input, {
|
|
modelValue: providerForm.name,
|
|
"onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => providerForm.name = $event),
|
|
placeholder: "请输入供应商名称"
|
|
}, null, 8, ["modelValue"])
|
|
]),
|
|
_: 1
|
|
}),
|
|
createVNode(_component_el_form_item, {
|
|
label: "供应商类型",
|
|
prop: "provider_type"
|
|
}, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_el_select, {
|
|
modelValue: providerForm.provider_type,
|
|
"onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => providerForm.provider_type = $event),
|
|
placeholder: "请选择供应商类型",
|
|
style: { "width": "100%" }
|
|
}, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_el_option, {
|
|
label: "OpenAI",
|
|
value: "openai"
|
|
}),
|
|
createVNode(_component_el_option, {
|
|
label: "DeepSeek",
|
|
value: "deepseek"
|
|
}),
|
|
createVNode(_component_el_option, {
|
|
label: "Anthropic",
|
|
value: "anthropic"
|
|
}),
|
|
createVNode(_component_el_option, {
|
|
label: "Gemini",
|
|
value: "gemini"
|
|
}),
|
|
createVNode(_component_el_option, {
|
|
label: "Qwen",
|
|
value: "qwen"
|
|
}),
|
|
createVNode(_component_el_option, {
|
|
label: "其他",
|
|
value: "other"
|
|
})
|
|
]),
|
|
_: 1
|
|
}, 8, ["modelValue"])
|
|
]),
|
|
_: 1
|
|
}),
|
|
createVNode(_component_el_form_item, {
|
|
label: "接口地址",
|
|
prop: "base_url"
|
|
}, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_el_input, {
|
|
modelValue: providerForm.base_url,
|
|
"onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => providerForm.base_url = $event),
|
|
placeholder: "请输入接口地址(BaseURL)"
|
|
}, null, 8, ["modelValue"])
|
|
]),
|
|
_: 1
|
|
}),
|
|
createVNode(_component_el_form_item, {
|
|
label: "API Key",
|
|
prop: "api_key"
|
|
}, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_el_input, {
|
|
modelValue: providerForm.api_key,
|
|
"onUpdate:modelValue": _cache[8] || (_cache[8] = ($event) => providerForm.api_key = $event),
|
|
placeholder: "请输入API Key",
|
|
type: "password",
|
|
"show-password": ""
|
|
}, null, 8, ["modelValue"])
|
|
]),
|
|
_: 1
|
|
}),
|
|
createVNode(_component_el_form_item, {
|
|
label: "设为默认",
|
|
prop: "is_default"
|
|
}, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_el_switch, {
|
|
modelValue: providerForm.is_default,
|
|
"onUpdate:modelValue": _cache[9] || (_cache[9] = ($event) => providerForm.is_default = $event),
|
|
"active-value": 1,
|
|
"inactive-value": 0
|
|
}, null, 8, ["modelValue"])
|
|
]),
|
|
_: 1
|
|
}),
|
|
createVNode(_component_el_form_item, {
|
|
label: "备注",
|
|
prop: "description"
|
|
}, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_el_input, {
|
|
modelValue: providerForm.description,
|
|
"onUpdate:modelValue": _cache[10] || (_cache[10] = ($event) => providerForm.description = $event),
|
|
type: "textarea",
|
|
rows: 3,
|
|
placeholder: "请输入备注"
|
|
}, null, 8, ["modelValue"])
|
|
]),
|
|
_: 1
|
|
})
|
|
]),
|
|
_: 1
|
|
}, 8, ["model"])
|
|
]),
|
|
_: 1
|
|
}, 8, ["modelValue", "title"]),
|
|
createVNode(_component_el_dialog, {
|
|
modelValue: embeddingDialogVisible.value,
|
|
"onUpdate:modelValue": _cache[21] || (_cache[21] = ($event) => embeddingDialogVisible.value = $event),
|
|
title: embeddingDialogTitle.value,
|
|
width: "600px",
|
|
"destroy-on-close": ""
|
|
}, {
|
|
footer: withCtx(() => [
|
|
createVNode(_component_el_button, {
|
|
onClick: _cache[20] || (_cache[20] = ($event) => embeddingDialogVisible.value = false)
|
|
}, {
|
|
default: withCtx(() => [..._cache[36] || (_cache[36] = [
|
|
createTextVNode("取消", -1)
|
|
])]),
|
|
_: 1
|
|
}),
|
|
createVNode(_component_el_button, {
|
|
type: "primary",
|
|
onClick: handleEmbeddingSubmit
|
|
}, {
|
|
default: withCtx(() => [..._cache[37] || (_cache[37] = [
|
|
createTextVNode("确定", -1)
|
|
])]),
|
|
_: 1
|
|
})
|
|
]),
|
|
default: withCtx(() => [
|
|
createVNode(_component_el_form, {
|
|
ref_key: "embeddingFormRef",
|
|
ref: embeddingFormRef,
|
|
model: embeddingForm,
|
|
rules: embeddingRules,
|
|
"label-width": "100px"
|
|
}, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_el_form_item, {
|
|
label: "配置名称",
|
|
prop: "name"
|
|
}, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_el_input, {
|
|
modelValue: embeddingForm.name,
|
|
"onUpdate:modelValue": _cache[13] || (_cache[13] = ($event) => embeddingForm.name = $event),
|
|
placeholder: "请输入配置名称"
|
|
}, null, 8, ["modelValue"])
|
|
]),
|
|
_: 1
|
|
}),
|
|
createVNode(_component_el_form_item, {
|
|
label: "向量化类型",
|
|
prop: "embedding_type"
|
|
}, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_el_radio_group, {
|
|
modelValue: embeddingForm.embedding_type,
|
|
"onUpdate:modelValue": _cache[14] || (_cache[14] = ($event) => embeddingForm.embedding_type = $event)
|
|
}, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_el_radio, { value: 0 }, {
|
|
default: withCtx(() => [..._cache[34] || (_cache[34] = [
|
|
createTextVNode("本地", -1)
|
|
])]),
|
|
_: 1
|
|
}),
|
|
createVNode(_component_el_radio, { value: 1 }, {
|
|
default: withCtx(() => [..._cache[35] || (_cache[35] = [
|
|
createTextVNode("远程", -1)
|
|
])]),
|
|
_: 1
|
|
})
|
|
]),
|
|
_: 1
|
|
}, 8, ["modelValue"])
|
|
]),
|
|
_: 1
|
|
}),
|
|
createVNode(_component_el_form_item, {
|
|
label: "模型名称",
|
|
prop: "model_name"
|
|
}, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_el_input, {
|
|
modelValue: embeddingForm.model_name,
|
|
"onUpdate:modelValue": _cache[15] || (_cache[15] = ($event) => embeddingForm.model_name = $event),
|
|
placeholder: "请输入Embedding模型名称"
|
|
}, null, 8, ["modelValue"])
|
|
]),
|
|
_: 1
|
|
}),
|
|
embeddingForm.embedding_type === 1 ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
|
|
createVNode(_component_el_form_item, {
|
|
label: "接口地址",
|
|
prop: "base_url"
|
|
}, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_el_input, {
|
|
modelValue: embeddingForm.base_url,
|
|
"onUpdate:modelValue": _cache[16] || (_cache[16] = ($event) => embeddingForm.base_url = $event),
|
|
placeholder: "请输入远程接口地址"
|
|
}, null, 8, ["modelValue"])
|
|
]),
|
|
_: 1
|
|
}),
|
|
createVNode(_component_el_form_item, {
|
|
label: "API Key",
|
|
prop: "api_key"
|
|
}, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_el_input, {
|
|
modelValue: embeddingForm.api_key,
|
|
"onUpdate:modelValue": _cache[17] || (_cache[17] = ($event) => embeddingForm.api_key = $event),
|
|
placeholder: "请输入API Key",
|
|
type: "password",
|
|
"show-password": ""
|
|
}, null, 8, ["modelValue"])
|
|
]),
|
|
_: 1
|
|
})
|
|
], 64)) : createCommentVNode("", true),
|
|
createVNode(_component_el_form_item, {
|
|
label: "设为默认",
|
|
prop: "is_default"
|
|
}, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_el_switch, {
|
|
modelValue: embeddingForm.is_default,
|
|
"onUpdate:modelValue": _cache[18] || (_cache[18] = ($event) => embeddingForm.is_default = $event),
|
|
"active-value": 1,
|
|
"inactive-value": 0
|
|
}, null, 8, ["modelValue"])
|
|
]),
|
|
_: 1
|
|
}),
|
|
createVNode(_component_el_form_item, {
|
|
label: "备注",
|
|
prop: "description"
|
|
}, {
|
|
default: withCtx(() => [
|
|
createVNode(_component_el_input, {
|
|
modelValue: embeddingForm.description,
|
|
"onUpdate:modelValue": _cache[19] || (_cache[19] = ($event) => embeddingForm.description = $event),
|
|
type: "textarea",
|
|
rows: 3,
|
|
placeholder: "请输入备注"
|
|
}, null, 8, ["modelValue"])
|
|
]),
|
|
_: 1
|
|
})
|
|
]),
|
|
_: 1
|
|
}, 8, ["model"])
|
|
]),
|
|
_: 1
|
|
}, 8, ["modelValue", "title"])
|
|
]);
|
|
};
|
|
}
|
|
});
|
|
const index = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-8e6fe729"]]);
|
|
export {
|
|
index as default
|
|
};
|