+
+
+ );
+}
diff --git a/web/src/pages/profile-setting/model/model-card.tsx b/web/src/pages/profile-setting/model/model-card.tsx
new file mode 100644
index 0000000000..23c8006fc1
--- /dev/null
+++ b/web/src/pages/profile-setting/model/model-card.tsx
@@ -0,0 +1,136 @@
+import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar';
+import { Button } from '@/components/ui/button';
+import { Card, CardContent } from '@/components/ui/card';
+import {
+ Select,
+ SelectContent,
+ SelectItem,
+ SelectTrigger,
+ SelectValue,
+} from '@/components/ui/select';
+import { Key, MoreVertical, Plus, Trash2 } from 'lucide-react';
+import { PropsWithChildren } from 'react';
+
+const settings = [
+ {
+ title: 'GPT Model',
+ description:
+ 'The default chat LLM all the newly created knowledgebase will use.',
+ model: 'DeepseekChat',
+ },
+ {
+ title: 'Embedding Model',
+ description:
+ 'The default embedding model all the newly created knowledgebase will use.',
+ model: 'DeepseekChat',
+ },
+ {
+ title: 'Image Model',
+ description:
+ 'The default multi-capable model all the newly created knowledgebase will use. It can generate a picture or video.',
+ model: 'DeepseekChat',
+ },
+ {
+ title: 'Speech2TXT Model',
+ description:
+ 'The default ASR model all the newly created knowledgebase will use. Use this model to translate voices to text something text.',
+ model: 'DeepseekChat',
+ },
+ {
+ title: 'TTS Model',
+ description:
+ 'The default text to speech model all the newly created knowledgebase will use.',
+ model: 'DeepseekChat',
+ },
+];
+
+function Title({ children }: PropsWithChildren) {
+ return {children};
+}
+
+export function SystemModelSetting() {
+ return (
+
+
+ {settings.map((x, idx) => (
+