|
@@ -17,31 +17,47 @@
|
|
|
<a-form :model="form" :layout="layout">
|
|
<a-form :model="form" :layout="layout">
|
|
|
<a-form-item field="" label="系统推理模型">
|
|
<a-form-item field="" label="系统推理模型">
|
|
|
<a-select v-model="form.llm.model">
|
|
<a-select v-model="form.llm.model">
|
|
|
- <a-option v-for="item in llm_options" :key="item.model" :Value="item.model">{{ item.model }}</a-option>
|
|
|
|
|
|
|
+ <a-optgroup :label="index" v-for="(item, index) in llm_options" :key="index">
|
|
|
|
|
+ <a-option v-for="obj in item" :key="obj.model" :value="obj.model">
|
|
|
|
|
+ {{ obj.model }}
|
|
|
|
|
+ </a-option>
|
|
|
|
|
+ </a-optgroup>
|
|
|
</a-select>
|
|
</a-select>
|
|
|
</a-form-item>
|
|
</a-form-item>
|
|
|
<a-form-item field="" label="Embedding 模型">
|
|
<a-form-item field="" label="Embedding 模型">
|
|
|
<a-select v-model="form.embd.model">
|
|
<a-select v-model="form.embd.model">
|
|
|
- <a-option v-for="item in Embedding_options" :key="item.model" :Value="item.model">{{
|
|
|
|
|
- item.model
|
|
|
|
|
- }}</a-option>
|
|
|
|
|
|
|
+ <a-optgroup :label="index" v-for="(item, index) in Embedding_options" :key="index">
|
|
|
|
|
+ <a-option v-for="obj in item" :key="obj.model" :value="obj.model">
|
|
|
|
|
+ {{ obj.model }}
|
|
|
|
|
+ </a-option>
|
|
|
|
|
+ </a-optgroup>
|
|
|
</a-select>
|
|
</a-select>
|
|
|
</a-form-item>
|
|
</a-form-item>
|
|
|
<a-form-item field="" label="Rerank 模型">
|
|
<a-form-item field="" label="Rerank 模型">
|
|
|
<a-select v-model="form.rerank.model">
|
|
<a-select v-model="form.rerank.model">
|
|
|
- <a-option v-for="item in rarank_options" :key="item.model" :Value="item.model">{{ item.model }}</a-option>
|
|
|
|
|
|
|
+ <a-optgroup :label="index" v-for="(item, index) in rarank_options" :key="index">
|
|
|
|
|
+ <a-option v-for="obj in item" :key="obj.model" :value="obj.model">
|
|
|
|
|
+ {{ obj.model }}
|
|
|
|
|
+ </a-option>
|
|
|
|
|
+ </a-optgroup>
|
|
|
</a-select>
|
|
</a-select>
|
|
|
</a-form-item>
|
|
</a-form-item>
|
|
|
<a-form-item field="" label="语音转文本模型">
|
|
<a-form-item field="" label="语音转文本模型">
|
|
|
<a-select v-model="form.speech2txt.model">
|
|
<a-select v-model="form.speech2txt.model">
|
|
|
- <a-option v-for="item in speech2text_options" :key="item.model" :Value="item.model">{{
|
|
|
|
|
- item.model
|
|
|
|
|
- }}</a-option>
|
|
|
|
|
|
|
+ <a-optgroup :label="index" v-for="(item, index) in speech2text_options" :key="index">
|
|
|
|
|
+ <a-option v-for="obj in item" :key="obj.model" :value="obj.model">
|
|
|
|
|
+ {{ obj.model }}
|
|
|
|
|
+ </a-option>
|
|
|
|
|
+ </a-optgroup>
|
|
|
</a-select>
|
|
</a-select>
|
|
|
</a-form-item>
|
|
</a-form-item>
|
|
|
<a-form-item field="" label="文本转语音模型">
|
|
<a-form-item field="" label="文本转语音模型">
|
|
|
<a-select v-model="form.tts.model">
|
|
<a-select v-model="form.tts.model">
|
|
|
- <a-option v-for="item in tts_options" :key="item.model" :Value="item.model">{{ item.model }}</a-option>
|
|
|
|
|
|
|
+ <a-optgroup :label="index" v-for="(item, index) in tts_options" :key="index">
|
|
|
|
|
+ <a-option v-for="obj in item" :key="obj.model" :value="obj.model">
|
|
|
|
|
+ {{ obj.model }}
|
|
|
|
|
+ </a-option>
|
|
|
|
|
+ </a-optgroup>
|
|
|
</a-select>
|
|
</a-select>
|
|
|
</a-form-item>
|
|
</a-form-item>
|
|
|
</a-form>
|
|
</a-form>
|
|
@@ -57,7 +73,8 @@ import {
|
|
|
getRarankModel,
|
|
getRarankModel,
|
|
|
getSpeech2TextModel,
|
|
getSpeech2TextModel,
|
|
|
getTtsModel,
|
|
getTtsModel,
|
|
|
- updateSystemModelSettingDIFY
|
|
|
|
|
|
|
+ updateSystemModelSettingDIFY,
|
|
|
|
|
+ getSystemModelItem
|
|
|
} from '../../../apis/rgflow-dify';
|
|
} from '../../../apis/rgflow-dify';
|
|
|
import { Message } from '@arco-design/web-vue';
|
|
import { Message } from '@arco-design/web-vue';
|
|
|
const props = defineProps({
|
|
const props = defineProps({
|
|
@@ -114,6 +131,13 @@ const rarank_options = ref([]);
|
|
|
const speech2text_options = ref([]);
|
|
const speech2text_options = ref([]);
|
|
|
const tts_options = ref([]);
|
|
const tts_options = ref([]);
|
|
|
|
|
|
|
|
|
|
+function filterDataByModelType(data, modelType) {
|
|
|
|
|
+ const result = {};
|
|
|
|
|
+ data.forEach((item) => {
|
|
|
|
|
+ result[item.provider] = item.models;
|
|
|
|
|
+ });
|
|
|
|
|
+ return result;
|
|
|
|
|
+}
|
|
|
const updateSystemModelSettingDIFYFun = async (data) => {
|
|
const updateSystemModelSettingDIFYFun = async (data) => {
|
|
|
loading.value = true;
|
|
loading.value = true;
|
|
|
try {
|
|
try {
|
|
@@ -131,14 +155,8 @@ const updateSystemModelSettingDIFYFun = async (data) => {
|
|
|
const getSystemModelFun = async () => {
|
|
const getSystemModelFun = async () => {
|
|
|
try {
|
|
try {
|
|
|
const res = await getSystemModel();
|
|
const res = await getSystemModel();
|
|
|
-
|
|
|
|
|
if (res.data) {
|
|
if (res.data) {
|
|
|
- llm_options.value = res.data[0]?.models || [];
|
|
|
|
|
- form.value.llm.provider = res.data.provider;
|
|
|
|
|
- if (llm_options.value.length) {
|
|
|
|
|
- form.value.llm.model = llm_options.value[0].model;
|
|
|
|
|
- form.value.llm.model_type = llm_options.value[0].model_type;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ llm_options.value = filterDataByModelType(res.data) || {};
|
|
|
}
|
|
}
|
|
|
} catch (e) {
|
|
} catch (e) {
|
|
|
console.log(e);
|
|
console.log(e);
|
|
@@ -148,12 +166,7 @@ const getEmbeddingModelFun = async () => {
|
|
|
try {
|
|
try {
|
|
|
const res = await getEmbeddingModel();
|
|
const res = await getEmbeddingModel();
|
|
|
if (res.data) {
|
|
if (res.data) {
|
|
|
- form.value.embd.provider = res.data.provider;
|
|
|
|
|
- Embedding_options.value = res.data[0]?.models || [];
|
|
|
|
|
- if (Embedding_options.value.length) {
|
|
|
|
|
- form.value.embd.model = Embedding_options.value[0].model;
|
|
|
|
|
- form.value.embd.model_type = Embedding_options.value[0].model_type;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ Embedding_options.value = filterDataByModelType(res.data) || {};
|
|
|
}
|
|
}
|
|
|
} catch (e) {
|
|
} catch (e) {
|
|
|
console.log(e);
|
|
console.log(e);
|
|
@@ -163,12 +176,7 @@ const getRarankModelFun = async () => {
|
|
|
try {
|
|
try {
|
|
|
const res = await getRarankModel();
|
|
const res = await getRarankModel();
|
|
|
if (res.data) {
|
|
if (res.data) {
|
|
|
- rarank_options.value = res.data[0]?.models || [];
|
|
|
|
|
- form.value.rerank.provider = res.data.provider;
|
|
|
|
|
- if (rarank_options.value.length) {
|
|
|
|
|
- form.value.rerank.model = rarank_options.value[0].model;
|
|
|
|
|
- form.value.rerank.model_type = rarank_options.value[0].model_type;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ rarank_options.value = filterDataByModelType(res.data) || {};
|
|
|
}
|
|
}
|
|
|
} catch (e) {
|
|
} catch (e) {
|
|
|
console.log(e);
|
|
console.log(e);
|
|
@@ -178,12 +186,7 @@ const getSpeech2TextModelFun = async () => {
|
|
|
try {
|
|
try {
|
|
|
const res = await getSpeech2TextModel();
|
|
const res = await getSpeech2TextModel();
|
|
|
if (res.data) {
|
|
if (res.data) {
|
|
|
- form.value.speech2txt.provider = res.data.provider;
|
|
|
|
|
- speech2text_options.value = res.data[0]?.models || [];
|
|
|
|
|
- if (speech2text_options.value.length) {
|
|
|
|
|
- form.value.speech2txt.model = speech2text_options.value[0].model;
|
|
|
|
|
- form.value.speech2txt.model_type = speech2text_options.value[0].model_type;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ speech2text_options.value = filterDataByModelType(res.data) || {};
|
|
|
}
|
|
}
|
|
|
} catch (e) {
|
|
} catch (e) {
|
|
|
console.log(e);
|
|
console.log(e);
|
|
@@ -193,24 +196,37 @@ const getTtsModelFun = async () => {
|
|
|
try {
|
|
try {
|
|
|
const res = await getTtsModel();
|
|
const res = await getTtsModel();
|
|
|
if (res.data) {
|
|
if (res.data) {
|
|
|
- form.value.tts.provider = res.data.provider;
|
|
|
|
|
- tts_options.value = res.data[0]?.models || [];
|
|
|
|
|
- if (tts_options.value.length) {
|
|
|
|
|
- form.value.tts.model = tts_options.value[0].model;
|
|
|
|
|
- form.value.tts.model_type = tts_options.value[0].model_type;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ tts_options.value = filterDataByModelType(res.data) || {};
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (e) {
|
|
|
|
|
+ console.log(e);
|
|
|
|
|
+ }
|
|
|
|
|
+};
|
|
|
|
|
+const getSystemModelItemFun = async (type, form_type) => {
|
|
|
|
|
+ try {
|
|
|
|
|
+ const res = await getSystemModelItem(type, form_type);
|
|
|
|
|
+ if (res.data) {
|
|
|
|
|
+ form.value[form_type].provider = res.data.provider.provider;
|
|
|
|
|
+ form.value[form_type].model = res.data.model;
|
|
|
|
|
+ form.value[form_type].model_type = res.data.model_type;
|
|
|
}
|
|
}
|
|
|
} catch (e) {
|
|
} catch (e) {
|
|
|
console.log(e);
|
|
console.log(e);
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
-
|
|
|
|
|
onMounted(async () => {
|
|
onMounted(async () => {
|
|
|
|
|
+ loading.value = true;
|
|
|
await getSystemModelFun();
|
|
await getSystemModelFun();
|
|
|
await getEmbeddingModelFun();
|
|
await getEmbeddingModelFun();
|
|
|
await getRarankModelFun();
|
|
await getRarankModelFun();
|
|
|
await getSpeech2TextModelFun();
|
|
await getSpeech2TextModelFun();
|
|
|
await getTtsModelFun();
|
|
await getTtsModelFun();
|
|
|
|
|
+ await getSystemModelItemFun('llm', 'llm');
|
|
|
|
|
+ await getSystemModelItemFun('text-embedding', 'embd');
|
|
|
|
|
+ await getSystemModelItemFun('speech2text', 'speech2text');
|
|
|
|
|
+ await getSystemModelItemFun('rerank', 'rerank');
|
|
|
|
|
+ await getSystemModelItemFun('tts', 'tts');
|
|
|
|
|
+ loading.value = false;
|
|
|
});
|
|
});
|
|
|
</script>
|
|
</script>
|
|
|
<style scoped lang="css"></style>
|
|
<style scoped lang="css"></style>
|