diff --git a/src/views/ai/model/chatModel/edit.vue b/src/views/ai/model/chatModel/edit.vue
new file mode 100644
index 0000000..eb92e45
--- /dev/null
+++ b/src/views/ai/model/chatModel/edit.vue
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
diff --git a/src/views/ai/model/chatModel/index.vue b/src/views/ai/model/chatModel/index.vue
index 9ef6a32..541dcf3 100644
--- a/src/views/ai/model/chatModel/index.vue
+++ b/src/views/ai/model/chatModel/index.vue
@@ -1,17 +1,16 @@
-
-
-
+
+ formData.provider = provider"/>
+
-
+
+ 新增模型
+
+
-
+
diff --git a/src/views/ai/model/embedding/composables/index.ts b/src/views/ai/model/embedding/composables/index.ts
new file mode 100644
index 0000000..e7c73f5
--- /dev/null
+++ b/src/views/ai/model/embedding/composables/index.ts
@@ -0,0 +1,102 @@
+import {ElTag} from "element-plus";
+import {ref} from "vue";
+import {ProviderEnum} from "@/views/ai/model/chatModel/composables/provider";
+import {FormSchema} from "@/types/form";
+
+export default function () {
+ const LLMProviders: any[] = [
+ {
+ model: ProviderEnum.OPENAI,
+ name: 'OpenAI',
+ models: ['text-embedding-3-small', 'text-embedding-3-large', 'text-embedding-ada-002'],
+ },
+ {
+ model: ProviderEnum.Q_FAN,
+ name: '百度千帆',
+ models: ['bge-large-zh', 'bge-large-en', 'tao-8k'],
+ },
+ {
+ model: ProviderEnum.Q_WEN,
+ name: '阿里百炼',
+ models: ['text-embedding-v3'],
+ },
+ {
+ model: ProviderEnum.ZHIPU,
+ name: '智谱清言',
+ models: ['embedding-2', 'embedding-3'],
+ },
+ {
+ model: ProviderEnum.DOUYIN,
+ name: '抖音豆包',
+ models: ['text-240715', 'text-240515'],
+ },
+ {
+ model: ProviderEnum.OLLAMA,
+ name: 'Ollama',
+ models: ['text2vec-bge-large-chinese:latest'],
+ },
+ ];
+ const baseColumns = [
+ {
+ label: '模型别名',
+ field: 'name',
+ },
+ {
+ label: '模型版本',
+ field: 'model',
+ width: '160',
+ },
+ {
+ label: '向量纬度',
+ field: 'dimension',
+ align: 'center',
+ width: '100',
+ render(row) {
+ return h(
+ ElTag,
+ {
+ size: 'small',
+ },
+ {
+ default: () => row.dimension,
+ }
+ );
+ },
+ },
+ {
+ label: 'Api Key',
+ field: 'apiKey',
+ },
+ {
+ label: 'Base Url',
+ field: 'baseUrl',
+ },
+ ];
+ const tableData = ref([
+ ])
+ const shema = ref([
+ {
+ label: '模型名称',
+ field: 'name',
+ component: 'Select',
+ colProps: {
+ span: 6
+ },
+ componentProps: {
+ style: {
+ width: '150px',
+ },
+ options: LLMProviders.map((item) => ({
+ label: item.name,
+ value: item.model,
+ })),
+ },
+
+ }
+ ])
+ return {
+ baseColumns,
+ shema,
+ tableData
+ }
+}
diff --git a/src/views/ai/model/embedding/index.vue b/src/views/ai/model/embedding/index.vue
index 8a0e5f6..8f7ae8f 100644
--- a/src/views/ai/model/embedding/index.vue
+++ b/src/views/ai/model/embedding/index.vue
@@ -2,68 +2,25 @@
import {Plus} from "@element-plus/icons-vue";
import usePage from './composables/index'
-import Edit from "@/views/ai/model/embedding/edit.vue";
-import {LLMProviders} from "@/views/ai/model/embedding/composables/consts";
-import {Table} from "@/components/Table";
-const { baseColumns: columns, tableData, formData, editRef, open} = usePage()
+const {shema, baseColumns: columns, tableData} = usePage()
+
+
+
-
-
+
+ 新增向量模型
+
diff --git a/src/views/ai/model/image/composables/index.ts b/src/views/ai/model/image/composables/index.ts
new file mode 100644
index 0000000..063e97d
--- /dev/null
+++ b/src/views/ai/model/image/composables/index.ts
@@ -0,0 +1,110 @@
+export default function () {
+ enum ProviderEnum {
+ OPENAI = 'OPENAI',
+ AZURE_OPENAI = 'AZURE_OPENAI',
+ ZHIPU = 'ZHIPU',
+ }
+
+ const LLMProviders: any[] = [
+ {
+ model: ProviderEnum.OPENAI,
+ name: 'OpenAI',
+ models: ['dall-e-2', 'dall-e-3'],
+ },
+ {
+ model: ProviderEnum.AZURE_OPENAI,
+ name: 'Azure OpenAI',
+ models: ['dall-e-2', 'dall-e-3'],
+ },
+ {
+ model: ProviderEnum.ZHIPU,
+ name: '智谱清言',
+ models: ['cogview-3'],
+ },
+ ]
+ const formData = ref({
+ provider: ProviderEnum.OPENAI,
+ });
+ const tableData = ref([])
+ const shema = ref([
+ {
+ field: 'provider',
+ label: '模型别名',
+ component: 'Select',
+ required: true,
+ componentProps: {
+ placeholder: '请输入模型别名',
+ style: {
+ width: '180px',
+ },
+ options: LLMProviders.map((item) => ({
+ label: item.name,
+ value: item.model,
+ })),
+ },
+ },
+ ])
+
+ const baseColumns = [
+ {
+ label: '模型别名',
+ field: 'name',
+ },
+ {
+ label: '模型版本',
+ field: 'model',
+ },
+ ];
+
+ const openaiColumns = [
+ ...baseColumns,
+ {
+ label: 'Api Key',
+ field: 'apiKey',
+ },
+ ];
+
+ const azureOpenaiColumns = [
+ ...baseColumns,
+ {
+ label: 'Api Key',
+ field: 'apiKey',
+ },
+ {
+ label: 'Endpoint',
+ field: 'endpoint',
+ },
+ {
+ label: 'Deployment Name',
+ field: 'azureDeploymentName',
+ },
+ ];
+
+ const zhipuColumns = [...baseColumns];
+ function getColumns(provider: string) {
+ console.log(provider);
+ switch (provider) {
+ case ProviderEnum.OPENAI: {
+ return openaiColumns;
+ }
+ case ProviderEnum.AZURE_OPENAI: {
+ return azureOpenaiColumns;
+ }
+ case ProviderEnum.ZHIPU: {
+ return zhipuColumns;
+ }
+ }
+ return [];
+ }
+ const columns = computed(() => {
+ nextTick();
+ return getColumns(formData.value.provider)
+ });
+ return {
+ LLMProviders,
+ columns,
+ tableData,
+ shema,
+ formData
+ }
+}
diff --git a/src/views/ai/model/image/index.vue b/src/views/ai/model/image/index.vue
index 0c09ebb..2ee54bc 100644
--- a/src/views/ai/model/image/index.vue
+++ b/src/views/ai/model/image/index.vue
@@ -2,70 +2,25 @@
import {Plus} from "@element-plus/icons-vue";
import usePage from './composables/index'
-import {LLMProviders} from "@/views/ai/model/image/composables/consts";
-import Edit from './edit.vue'
-
-const {columns, tableData, formData, editRef, open} = usePage()
+const {shema, columns, tableData, formData} = usePage()
+
+ formData.provider = model.provider"/>
+
-
-
+
+ 新增向量模型
+