|
@@ -17,7 +17,11 @@
|
|
|
<a-form :model="form" :layout="layout">
|
|
<a-form :model="form" :layout="layout">
|
|
|
<a-form-item field="chatModal" label="聊天模型">
|
|
<a-form-item field="chatModal" label="聊天模型">
|
|
|
<a-select v-model="form.llm_id" allow-clear>
|
|
<a-select v-model="form.llm_id" allow-clear>
|
|
|
- <a-option></a-option>
|
|
|
|
|
|
|
+ <a-optgroup :label="index" v-for="(item, index) in chatModelList" :key="index">
|
|
|
|
|
+ <a-option v-for="obj in item" :key="obj.fid" :disabled="!obj.available" :value="obj.llm_name">
|
|
|
|
|
+ {{ obj.llm_name }}
|
|
|
|
|
+ </a-option>
|
|
|
|
|
+ </a-optgroup>
|
|
|
</a-select>
|
|
</a-select>
|
|
|
</a-form-item>
|
|
</a-form-item>
|
|
|
<a-form-item field="innerModal" label="嵌入模型">
|
|
<a-form-item field="innerModal" label="嵌入模型">
|
|
@@ -31,12 +35,20 @@
|
|
|
</a-form-item>
|
|
</a-form-item>
|
|
|
<a-form-item field="img2txt" label="Img2txt模型">
|
|
<a-form-item field="img2txt" label="Img2txt模型">
|
|
|
<a-select v-model="form.img2txt_id" allow-clear>
|
|
<a-select v-model="form.img2txt_id" allow-clear>
|
|
|
- <a-option></a-option>
|
|
|
|
|
|
|
+ <a-optgroup :label="index" v-for="(item, index) in img2txtModelList" :key="index">
|
|
|
|
|
+ <a-option v-for="obj in item" :key="obj.fid" :disabled="!obj.available" :value="obj.llm_name">
|
|
|
|
|
+ {{ obj.llm_name }}
|
|
|
|
|
+ </a-option>
|
|
|
|
|
+ </a-optgroup>
|
|
|
</a-select>
|
|
</a-select>
|
|
|
</a-form-item>
|
|
</a-form-item>
|
|
|
<a-form-item field="sequence2txt" label="Sequence2txt模型">
|
|
<a-form-item field="sequence2txt" label="Sequence2txt模型">
|
|
|
<a-select v-model="form.asr_id" allow-clear>
|
|
<a-select v-model="form.asr_id" allow-clear>
|
|
|
- <a-option></a-option>
|
|
|
|
|
|
|
+ <a-optgroup :label="index" v-for="(item, index) in speech2txtModelList" :key="index">
|
|
|
|
|
+ <a-option v-for="obj in item" :key="obj.fid" :disabled="!obj.available" :value="obj.llm_name">
|
|
|
|
|
+ {{ obj.llm_name }}
|
|
|
|
|
+ </a-option>
|
|
|
|
|
+ </a-optgroup>
|
|
|
</a-select>
|
|
</a-select>
|
|
|
</a-form-item>
|
|
</a-form-item>
|
|
|
<a-form-item field="rerank" label="Rerank模型">
|
|
<a-form-item field="rerank" label="Rerank模型">
|
|
@@ -50,7 +62,11 @@
|
|
|
</a-form-item>
|
|
</a-form-item>
|
|
|
<a-form-item field="tts" label="TTS模型">
|
|
<a-form-item field="tts" label="TTS模型">
|
|
|
<a-select v-model="form.tts_id" allow-clear>
|
|
<a-select v-model="form.tts_id" allow-clear>
|
|
|
- <a-option></a-option>
|
|
|
|
|
|
|
+ <a-optgroup :label="index" v-for="(item, index) in ttsModelList" :key="index">
|
|
|
|
|
+ <a-option v-for="obj in item" :key="obj.fid" :disabled="!obj.available" :value="obj.llm_name">
|
|
|
|
|
+ {{ obj.llm_name }}
|
|
|
|
|
+ </a-option>
|
|
|
|
|
+ </a-optgroup>
|
|
|
</a-select>
|
|
</a-select>
|
|
|
</a-form-item>
|
|
</a-form-item>
|
|
|
</a-form>
|
|
</a-form>
|
|
@@ -84,6 +100,10 @@ const form = ref({
|
|
|
const modelList = ref();
|
|
const modelList = ref();
|
|
|
const innerModelList = ref();
|
|
const innerModelList = ref();
|
|
|
const rankModelList = ref();
|
|
const rankModelList = ref();
|
|
|
|
|
+const chatModelList = ref();
|
|
|
|
|
+const ttsModelList = ref();
|
|
|
|
|
+const img2txtModelList = ref();
|
|
|
|
|
+const speech2txtModelList = ref();
|
|
|
const loading = ref(false);
|
|
const loading = ref(false);
|
|
|
|
|
|
|
|
const getSystemModelSettingRGFun = async () => {
|
|
const getSystemModelSettingRGFun = async () => {
|
|
@@ -110,22 +130,43 @@ const queryModel = async () => {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
modelList.value = arrObj;
|
|
modelList.value = arrObj;
|
|
|
- innerModelList.value = {
|
|
|
|
|
- BAAI: [data.data.BAAI[1]],
|
|
|
|
|
- FastEmbed: data.data.FastEmbed,
|
|
|
|
|
- Xinference: data.data.Xinference,
|
|
|
|
|
- youdao: data.data.Youdao
|
|
|
|
|
- };
|
|
|
|
|
- rankModelList.value = {
|
|
|
|
|
- BAAI: [data.data.BAAI[1]],
|
|
|
|
|
- youdao: data.data.Youdao
|
|
|
|
|
- };
|
|
|
|
|
- } catch (err) {
|
|
|
|
|
|
|
+ // innerModelList.value = {
|
|
|
|
|
+ // BAAI: [data.data.BAAI[1]],
|
|
|
|
|
+ // FastEmbed: data.data.FastEmbed,
|
|
|
|
|
+ // Xinference: data.data.Xinference,
|
|
|
|
|
+ // youdao: data.data.Youdao
|
|
|
|
|
+ // };
|
|
|
|
|
+ // rankModelList.value = {
|
|
|
|
|
+ // BAAI: [data.data.BAAI[1]],
|
|
|
|
|
+ // youdao: data.data.Youdao
|
|
|
|
|
+ // };
|
|
|
|
|
+ chatModelList.value = filterDataByModelType(data.data, 'chat');
|
|
|
|
|
+ innerModelList.value = filterDataByModelType(data.data, 'embedding');
|
|
|
|
|
+ rankModelList.value = filterDataByModelType(data.data, 'rerank');
|
|
|
|
|
+ ttsModelList.value = filterDataByModelType(data.data, 'tts');
|
|
|
|
|
+ img2txtModelList.value = filterDataByModelType(data.data, 'image2text');
|
|
|
|
|
+ speech2txtModelList.value = filterDataByModelType(data.data, 'speech2text');
|
|
|
// you can report use errorHandler or other
|
|
// you can report use errorHandler or other
|
|
|
} finally {
|
|
} finally {
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
+function filterDataByModelType(data, modelType) {
|
|
|
|
|
+ const result = {};
|
|
|
|
|
+
|
|
|
|
|
+ for (const key in data) {
|
|
|
|
|
+ if (data.hasOwnProperty(key)) {
|
|
|
|
|
+ result[key] = data[key].filter((item) => item.model_type === modelType && item.available);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ for (const key in result) {
|
|
|
|
|
+ if (!result[key].length) {
|
|
|
|
|
+ delete result[key];
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return result;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
const updateSystemModelSettingRGFun = async () => {
|
|
const updateSystemModelSettingRGFun = async () => {
|
|
|
try {
|
|
try {
|
|
|
loading.value = true;
|
|
loading.value = true;
|