diff --git a/backend/open_webui/main.py b/backend/open_webui/main.py index 0740482263..b14c18947c 100644 --- a/backend/open_webui/main.py +++ b/backend/open_webui/main.py @@ -1454,6 +1454,10 @@ async def get_models( if "pipeline" in model and model["pipeline"].get("type", None) == "filter": continue + # Remove profile image URL to reduce payload size + if model.get("info", {}).get("meta", {}).get("profile_image_url"): + model["info"]["meta"].pop("profile_image_url", None) + try: model_tags = [ tag.get("name") diff --git a/backend/open_webui/routers/models.py b/backend/open_webui/routers/models.py index eabfbd56eb..dae3634ff8 100644 --- a/backend/open_webui/routers/models.py +++ b/backend/open_webui/routers/models.py @@ -253,6 +253,7 @@ async def get_model_profile_image(id: str, user=Depends(get_verified_user)): ) except Exception as e: pass + return FileResponse(f"{STATIC_DIR}/favicon.png") else: return FileResponse(f"{STATIC_DIR}/favicon.png") diff --git a/src/lib/components/admin/Evaluations/Leaderboard.svelte b/src/lib/components/admin/Evaluations/Leaderboard.svelte index fbc92c2447..948551cde2 100644 --- a/src/lib/components/admin/Evaluations/Leaderboard.svelte +++ b/src/lib/components/admin/Evaluations/Leaderboard.svelte @@ -10,7 +10,7 @@ import ChevronUp from '$lib/components/icons/ChevronUp.svelte'; import ChevronDown from '$lib/components/icons/ChevronDown.svelte'; - import { WEBUI_BASE_URL } from '$lib/constants'; + import { WEBUI_API_BASE_URL, WEBUI_BASE_URL } from '$lib/constants'; const i18n = getContext('i18n'); @@ -515,7 +515,7 @@
{model.name} diff --git a/src/lib/components/admin/Settings/Evaluations/Model.svelte b/src/lib/components/admin/Settings/Evaluations/Model.svelte index 6de56a3ff6..3eaaa7e4fc 100644 --- a/src/lib/components/admin/Settings/Evaluations/Model.svelte +++ b/src/lib/components/admin/Settings/Evaluations/Model.svelte @@ -5,6 +5,7 @@ import Cog6 from '$lib/components/icons/Cog6.svelte'; import ArenaModelModal from './ArenaModelModal.svelte'; + import { WEBUI_API_BASE_URL } from '$lib/constants'; export let model; let showModel = false; @@ -27,7 +28,7 @@
{model.name} diff --git a/src/lib/components/admin/Settings/Models.svelte b/src/lib/components/admin/Settings/Models.svelte index 2f559905fc..500788c4e8 100644 --- a/src/lib/components/admin/Settings/Models.svelte +++ b/src/lib/components/admin/Settings/Models.svelte @@ -37,7 +37,7 @@ import EllipsisHorizontal from '$lib/components/icons/EllipsisHorizontal.svelte'; import EyeSlash from '$lib/components/icons/EyeSlash.svelte'; import Eye from '$lib/components/icons/Eye.svelte'; - import { WEBUI_BASE_URL } from '$lib/constants'; + import { WEBUI_API_BASE_URL, WEBUI_BASE_URL } from '$lib/constants'; let shiftKey = false; @@ -334,7 +334,7 @@ : 'opacity-50 dark:opacity-50'} " > modelfile profile diff --git a/src/lib/components/admin/Users/UserList.svelte b/src/lib/components/admin/Users/UserList.svelte index e3959d7472..181e5c6a9d 100644 --- a/src/lib/components/admin/Users/UserList.svelte +++ b/src/lib/components/admin/Users/UserList.svelte @@ -1,5 +1,5 @@ @@ -11,8 +11,7 @@
profile diff --git a/src/lib/components/channel/Navbar.svelte b/src/lib/components/channel/Navbar.svelte index 358e87c290..92693b4de2 100644 --- a/src/lib/components/channel/Navbar.svelte +++ b/src/lib/components/channel/Navbar.svelte @@ -11,6 +11,7 @@ import PencilSquare from '../icons/PencilSquare.svelte'; import Tooltip from '../common/Tooltip.svelte'; import Sidebar from '../icons/Sidebar.svelte'; + import { WEBUI_API_BASE_URL } from '$lib/constants'; const i18n = getContext('i18n'); @@ -80,7 +81,7 @@ >
User profile - import { WEBUI_BASE_URL } from '$lib/constants'; + import { WEBUI_API_BASE_URL, WEBUI_BASE_URL } from '$lib/constants'; import { marked } from 'marked'; import { config, user, models as _models, temporaryChatEnabled } from '$lib/stores'; @@ -53,11 +53,7 @@ placement="right" > logo
model profile model.id === atSelectedModel.id)?.info?.meta - ?.profile_image_url ?? - ($i18n.language === 'dg-DG' - ? `${WEBUI_BASE_URL}/doge.png` - : `${WEBUI_BASE_URL}/static/favicon.png`)} + src={`${WEBUI_API_BASE_URL}/models/model/profile/image?id=${$models.find((model) => model.id === atSelectedModel.id).id}&lang=${$i18n.language}`} />
{atSelectedModel.name} diff --git a/src/lib/components/chat/MessageInput/CallOverlay.svelte b/src/lib/components/chat/MessageInput/CallOverlay.svelte index 41cc066243..5a360c4665 100644 --- a/src/lib/components/chat/MessageInput/CallOverlay.svelte +++ b/src/lib/components/chat/MessageInput/CallOverlay.svelte @@ -13,6 +13,7 @@ import Tooltip from '$lib/components/common/Tooltip.svelte'; import VideoInputMenu from './CallOverlay/VideoInputMenu.svelte'; import { KokoroWorker } from '$lib/workers/KokoroWorker'; + import { WEBUI_API_BASE_URL } from '$lib/constants'; const i18n = getContext('i18n'); @@ -759,14 +760,8 @@ ? ' size-16' : rmsLevel * 100 > 1 ? 'size-14' - : 'size-12'} transition-all rounded-full {(model?.info?.meta - ?.profile_image_url ?? '/static/favicon.png') !== '/static/favicon.png' - ? ' bg-cover bg-center bg-no-repeat' - : 'bg-black dark:bg-white'} bg-black dark:bg-white" - style={(model?.info?.meta?.profile_image_url ?? '/static/favicon.png') !== - '/static/favicon.png' - ? `background-image: url('${model?.info?.meta?.profile_image_url}');` - : ''} + : 'size-12'} transition-all rounded-full bg-cover bg-center bg-no-repeat" + style={`background-image: url('${WEBUI_API_BASE_URL}/models/model/profile/image?id=${model?.id}&lang=${$i18n.language}&voice=true');`} /> {/if} @@ -841,14 +836,8 @@ ? 'size-48' : rmsLevel * 100 > 1 ? 'size-44' - : 'size-40'} transition-all rounded-full {(model?.info?.meta - ?.profile_image_url ?? '/static/favicon.png') !== '/static/favicon.png' - ? ' bg-cover bg-center bg-no-repeat' - : 'bg-black dark:bg-white'} " - style={(model?.info?.meta?.profile_image_url ?? '/static/favicon.png') !== - '/static/favicon.png' - ? `background-image: url('${model?.info?.meta?.profile_image_url}');` - : ''} + : 'size-40'} transition-all rounded-full bg-cover bg-center bg-no-repeat" + style={`background-image: url('${WEBUI_API_BASE_URL}/models/model/profile/image?id=${model?.id}&lang=${$i18n.language}&voice=true');`} /> {/if} diff --git a/src/lib/components/chat/MessageInput/Commands/Models.svelte b/src/lib/components/chat/MessageInput/Commands/Models.svelte index 0177e6fdf3..452e27c1fa 100644 --- a/src/lib/components/chat/MessageInput/Commands/Models.svelte +++ b/src/lib/components/chat/MessageInput/Commands/Models.svelte @@ -5,7 +5,7 @@ import { tick, getContext } from 'svelte'; import { models } from '$lib/stores'; - import { WEBUI_BASE_URL } from '$lib/constants'; + import { WEBUI_API_BASE_URL, WEBUI_BASE_URL } from '$lib/constants'; import Tooltip from '$lib/components/common/Tooltip.svelte'; const i18n = getContext('i18n'); @@ -83,7 +83,7 @@ >
{model?.name diff --git a/src/lib/components/chat/Messages/MultiResponseMessages.svelte b/src/lib/components/chat/Messages/MultiResponseMessages.svelte index 0e7b108961..bb7e0ccdb6 100644 --- a/src/lib/components/chat/Messages/MultiResponseMessages.svelte +++ b/src/lib/components/chat/Messages/MultiResponseMessages.svelte @@ -272,14 +272,6 @@ }} >
- -
{model ? `${model.name}` : history.messages[_messageId]?.model}
diff --git a/src/lib/components/chat/Messages/ProfileImage.svelte b/src/lib/components/chat/Messages/ProfileImage.svelte index 63736a11d7..d837ab05ab 100644 --- a/src/lib/components/chat/Messages/ProfileImage.svelte +++ b/src/lib/components/chat/Messages/ProfileImage.svelte @@ -6,7 +6,6 @@ diff --git a/src/lib/components/chat/Messages/UserMessage.svelte b/src/lib/components/chat/Messages/UserMessage.svelte index d58b9da56b..694fcaddeb 100644 --- a/src/lib/components/chat/Messages/UserMessage.svelte +++ b/src/lib/components/chat/Messages/UserMessage.svelte @@ -124,10 +124,7 @@ {#if !($settings?.chatBubble ?? true)}
m.id === message.user)?.info?.meta?.profile_image_url ?? - `${WEBUI_BASE_URL}/user.png`) - : (user?.profile_image_url ?? `${WEBUI_BASE_URL}/user.png`)} + src={`${WEBUI_API_BASE_URL}/users/${user.id}/profile/image`} className={'size-8 user-message-profile-image'} />
diff --git a/src/lib/components/chat/ModelSelector/ModelItem.svelte b/src/lib/components/chat/ModelSelector/ModelItem.svelte index b9c16db9d2..3306f16057 100644 --- a/src/lib/components/chat/ModelSelector/ModelItem.svelte +++ b/src/lib/components/chat/ModelSelector/ModelItem.svelte @@ -5,7 +5,7 @@ import dayjs from '$lib/dayjs'; import { mobile, settings, user } from '$lib/stores'; - import { WEBUI_BASE_URL } from '$lib/constants'; + import { WEBUI_API_BASE_URL, WEBUI_BASE_URL } from '$lib/constants'; import Tooltip from '$lib/components/common/Tooltip.svelte'; import { copyToClipboard, sanitizeResponseContent } from '$lib/utils'; @@ -77,8 +77,7 @@
Model diff --git a/src/lib/components/chat/Navbar.svelte b/src/lib/components/chat/Navbar.svelte index 745eb0c96d..b3171d2859 100644 --- a/src/lib/components/chat/Navbar.svelte +++ b/src/lib/components/chat/Navbar.svelte @@ -38,6 +38,7 @@ import ChatPlus from '../icons/ChatPlus.svelte'; import ChatCheck from '../icons/ChatCheck.svelte'; import Knobs from '../icons/Knobs.svelte'; + import { WEBUI_API_BASE_URL } from '$lib/constants'; const i18n = getContext('i18n'); @@ -242,7 +243,7 @@
{$i18n.t('User menu')} - import { WEBUI_BASE_URL } from '$lib/constants'; + import { WEBUI_API_BASE_URL, WEBUI_BASE_URL } from '$lib/constants'; import { Handle, Position, type NodeProps } from '@xyflow/svelte'; import ProfileImage from '../Messages/ProfileImage.svelte'; @@ -21,7 +21,7 @@ {#if data.message.role === 'user'}
@@ -41,7 +41,7 @@ {:else}
diff --git a/src/lib/components/chat/Placeholder.svelte b/src/lib/components/chat/Placeholder.svelte index 509ef9f2ba..d0b3a19a72 100644 --- a/src/lib/components/chat/Placeholder.svelte +++ b/src/lib/components/chat/Placeholder.svelte @@ -20,7 +20,7 @@ currentChatPage } from '$lib/stores'; import { sanitizeResponseContent, extractCurlyBraceWords } from '$lib/utils'; - import { WEBUI_BASE_URL } from '$lib/constants'; + import { WEBUI_API_BASE_URL, WEBUI_BASE_URL } from '$lib/constants'; import Suggestions from './Suggestions.svelte'; import Tooltip from '$lib/components/common/Tooltip.svelte'; @@ -121,11 +121,7 @@ }} >
{$i18n.t('Open
{$i18n.t('Open
logo diff --git a/src/lib/components/workspace/Models.svelte b/src/lib/components/workspace/Models.svelte index cb50dafcb6..0343b7a5bb 100644 --- a/src/lib/components/workspace/Models.svelte +++ b/src/lib/components/workspace/Models.svelte @@ -12,7 +12,7 @@ const i18n = getContext('i18n'); import { WEBUI_NAME, config, mobile, models as _models, settings, user } from '$lib/stores'; - import { WEBUI_BASE_URL } from '$lib/constants'; + import { WEBUI_API_BASE_URL, WEBUI_BASE_URL } from '$lib/constants'; import { createNewModel, deleteModelById, @@ -435,13 +435,12 @@
modelfile profile diff --git a/src/routes/(app)/notes/+page.svelte b/src/routes/(app)/notes/+page.svelte index f23ba5e6da..b453a332d2 100644 --- a/src/routes/(app)/notes/+page.svelte +++ b/src/routes/(app)/notes/+page.svelte @@ -14,6 +14,7 @@ import Notes from '$lib/components/notes/Notes.svelte'; import Tooltip from '$lib/components/common/Tooltip.svelte'; import Sidebar from '$lib/components/icons/Sidebar.svelte'; + import { WEBUI_API_BASE_URL } from '$lib/constants'; let loaded = false; @@ -95,7 +96,7 @@ >