refac
Some checks failed
Deploy to HuggingFace Spaces / check-secret (push) Successful in 17s
Create and publish Docker images with specific build args / build-main-image (linux/amd64) (push) Failing after 3m5s
Create and publish Docker images with specific build args / build-main-image (linux/arm64) (push) Failing after 2m54s
Create and publish Docker images with specific build args / merge-main-images (push) Has been skipped
Create and publish Docker images with specific build args / build-cuda-image (linux/amd64) (push) Failing after 3m8s
Create and publish Docker images with specific build args / build-cuda-image (linux/arm64) (push) Failing after 3m25s
Create and publish Docker images with specific build args / merge-cuda-images (push) Has been skipped
Create and publish Docker images with specific build args / build-ollama-image (linux/amd64) (push) Failing after 4m18s
Create and publish Docker images with specific build args / build-ollama-image (linux/arm64) (push) Failing after 3m32s
Create and publish Docker images with specific build args / merge-ollama-images (push) Has been skipped
Python CI / Format Backend (3.11) (push) Failing after 1m31s
Frontend Build / Format & Build Frontend (push) Failing after 1m18s
Frontend Build / Frontend Unit Tests (push) Failing after 1m13s
Integration Test / Run Cypress Integration Tests (push) Failing after 2m36s
Integration Test / Run Migration Tests (push) Failing after 1m46s
Deploy to HuggingFace Spaces / deploy (push) Has been skipped

This commit is contained in:
Timothy Jaeryang Baek 2024-11-18 22:49:38 -08:00
parent 5ad64c7998
commit da8f7cff2f

View File

@ -75,7 +75,6 @@
await tick(); await tick();
}; };
let mounted = false;
let selectedModelIdx = 0; let selectedModelIdx = 0;
$: if (selectedModels.length > 0) { $: if (selectedModels.length > 0) {
@ -84,147 +83,143 @@
$: models = selectedModels.map((id) => $_models.find((m) => m.id === id)); $: models = selectedModels.map((id) => $_models.find((m) => m.id === id));
onMount(() => { onMount(() => {});
mounted = true;
});
</script> </script>
{#if mounted} <div class="m-auto w-full max-w-6xl px-2 xl:px-20 translate-y-6 py-24 text-center">
<div class="m-auto w-full max-w-6xl px-2 xl:px-20 translate-y-6 py-24 text-center"> {#if $temporaryChatEnabled}
{#if $temporaryChatEnabled} <Tooltip
<Tooltip content="This chat won't appear in history and your messages will not be saved."
content="This chat won't appear in history and your messages will not be saved." className="w-full flex justify-center mb-0.5"
className="w-full flex justify-center mb-0.5" placement="top"
placement="top"
>
<div class="flex items-center gap-2 text-gray-500 font-medium text-lg my-2 w-fit">
<EyeSlash strokeWidth="2.5" className="size-5" /> Temporary Chat
</div>
</Tooltip>
{/if}
<div
class="w-full text-3xl text-gray-800 dark:text-gray-100 font-medium text-center flex items-center gap-4 font-primary"
> >
<div class="w-full flex flex-col justify-center items-center"> <div class="flex items-center gap-2 text-gray-500 font-medium text-lg my-2 w-fit">
<div class="flex flex-row justify-center gap-3 sm:gap-3.5 w-fit px-5"> <EyeSlash strokeWidth="2.5" className="size-5" /> Temporary Chat
<div class="flex flex-shrink-0 justify-center"> </div>
<div class="flex -space-x-4 mb-0.5" in:fade={{ duration: 100 }}> </Tooltip>
{#each models as model, modelIdx} {/if}
<Tooltip
content={(models[modelIdx]?.info?.meta?.tags ?? [])
.map((tag) => tag.name.toUpperCase())
.join(', ')}
placement="top"
>
<button
on:click={() => {
selectedModelIdx = modelIdx;
}}
>
<img
crossorigin="anonymous"
src={model?.info?.meta?.profile_image_url ??
($i18n.language === 'dg-DG'
? `/doge.png`
: `${WEBUI_BASE_URL}/static/favicon.png`)}
class=" size-9 sm:size-10 rounded-full border-[1px] border-gray-200 dark:border-none"
alt="logo"
draggable="false"
/>
</button>
</Tooltip>
{/each}
</div>
</div>
<div class=" text-3xl sm:text-4xl line-clamp-1" in:fade={{ duration: 100 }}> <div
{#if models[selectedModelIdx]?.name} class="w-full text-3xl text-gray-800 dark:text-gray-100 font-medium text-center flex items-center gap-4 font-primary"
{models[selectedModelIdx]?.name} >
{:else} <div class="w-full flex flex-col justify-center items-center">
{$i18n.t('Hello, {{name}}', { name: $user.name })} <div class="flex flex-row justify-center gap-3 sm:gap-3.5 w-fit px-5">
{/if} <div class="flex flex-shrink-0 justify-center">
</div> <div class="flex -space-x-4 mb-0.5" in:fade={{ duration: 100 }}>
</div> {#each models as model, modelIdx}
<div class="flex mt-1 mb-2">
<div in:fade={{ duration: 100, delay: 50 }}>
{#if models[selectedModelIdx]?.info?.meta?.description ?? null}
<Tooltip <Tooltip
className=" w-fit" content={(models[modelIdx]?.info?.meta?.tags ?? [])
content={marked.parse( .map((tag) => tag.name.toUpperCase())
sanitizeResponseContent(models[selectedModelIdx]?.info?.meta?.description ?? '') .join(', ')}
)}
placement="top" placement="top"
> >
<div <button
class="mt-0.5 px-2 text-sm font-normal text-gray-500 dark:text-gray-400 line-clamp-2 max-w-xl markdown" on:click={() => {
selectedModelIdx = modelIdx;
}}
> >
{@html marked.parse( <img
sanitizeResponseContent(models[selectedModelIdx]?.info?.meta?.description) crossorigin="anonymous"
)} src={model?.info?.meta?.profile_image_url ??
</div> ($i18n.language === 'dg-DG'
? `/doge.png`
: `${WEBUI_BASE_URL}/static/favicon.png`)}
class=" size-9 sm:size-10 rounded-full border-[1px] border-gray-200 dark:border-none"
alt="logo"
draggable="false"
/>
</button>
</Tooltip> </Tooltip>
{/each}
{#if models[selectedModelIdx]?.info?.meta?.user}
<div class="mt-0.5 text-sm font-normal text-gray-400 dark:text-gray-500">
By
{#if models[selectedModelIdx]?.info?.meta?.user.community}
<a
href="https://openwebui.com/m/{models[selectedModelIdx]?.info?.meta?.user
.username}"
>{models[selectedModelIdx]?.info?.meta?.user.name
? models[selectedModelIdx]?.info?.meta?.user.name
: `@${models[selectedModelIdx]?.info?.meta?.user.username}`}</a
>
{:else}
{models[selectedModelIdx]?.info?.meta?.user.name}
{/if}
</div>
{/if}
{/if}
</div> </div>
</div> </div>
<div <div class=" text-3xl sm:text-4xl line-clamp-1" in:fade={{ duration: 100 }}>
class="text-base font-normal xl:translate-x-6 md:max-w-3xl w-full py-3 {atSelectedModel {#if models[selectedModelIdx]?.name}
? 'mt-2' {models[selectedModelIdx]?.name}
: ''}" {:else}
> {$i18n.t('Hello, {{name}}', { name: $user.name })}
<MessageInput {/if}
{history}
{selectedModels}
bind:files
bind:prompt
bind:autoScroll
bind:selectedToolIds
bind:webSearchEnabled
bind:atSelectedModel
{transparentBackground}
{stopResponse}
{createMessagePair}
placeholder={$i18n.t('How can I help you today?')}
on:upload={(e) => {
dispatch('upload', e.detail);
}}
on:submit={(e) => {
dispatch('submit', e.detail);
}}
/>
</div> </div>
</div> </div>
</div>
<div class="mx-auto max-w-2xl font-primary" in:fade={{ duration: 200, delay: 200 }}> <div class="flex mt-1 mb-2">
<div class="mx-5"> <div in:fade={{ duration: 100, delay: 50 }}>
<Suggestions {#if models[selectedModelIdx]?.info?.meta?.description ?? null}
suggestionPrompts={models[selectedModelIdx]?.info?.meta?.suggestion_prompts ?? <Tooltip
$config?.default_prompt_suggestions ?? className=" w-fit"
[]} content={marked.parse(
on:select={(e) => { sanitizeResponseContent(models[selectedModelIdx]?.info?.meta?.description ?? '')
selectSuggestionPrompt(e.detail); )}
placement="top"
>
<div
class="mt-0.5 px-2 text-sm font-normal text-gray-500 dark:text-gray-400 line-clamp-2 max-w-xl markdown"
>
{@html marked.parse(
sanitizeResponseContent(models[selectedModelIdx]?.info?.meta?.description)
)}
</div>
</Tooltip>
{#if models[selectedModelIdx]?.info?.meta?.user}
<div class="mt-0.5 text-sm font-normal text-gray-400 dark:text-gray-500">
By
{#if models[selectedModelIdx]?.info?.meta?.user.community}
<a
href="https://openwebui.com/m/{models[selectedModelIdx]?.info?.meta?.user
.username}"
>{models[selectedModelIdx]?.info?.meta?.user.name
? models[selectedModelIdx]?.info?.meta?.user.name
: `@${models[selectedModelIdx]?.info?.meta?.user.username}`}</a
>
{:else}
{models[selectedModelIdx]?.info?.meta?.user.name}
{/if}
</div>
{/if}
{/if}
</div>
</div>
<div
class="text-base font-normal xl:translate-x-6 md:max-w-3xl w-full py-3 {atSelectedModel
? 'mt-2'
: ''}"
>
<MessageInput
{history}
{selectedModels}
bind:files
bind:prompt
bind:autoScroll
bind:selectedToolIds
bind:webSearchEnabled
bind:atSelectedModel
{transparentBackground}
{stopResponse}
{createMessagePair}
placeholder={$i18n.t('How can I help you today?')}
on:upload={(e) => {
dispatch('upload', e.detail);
}}
on:submit={(e) => {
dispatch('submit', e.detail);
}} }}
/> />
</div> </div>
</div> </div>
</div> </div>
{/if} <div class="mx-auto max-w-2xl font-primary" in:fade={{ duration: 200, delay: 200 }}>
<div class="mx-5">
<Suggestions
suggestionPrompts={models[selectedModelIdx]?.info?.meta?.suggestion_prompts ??
$config?.default_prompt_suggestions ??
[]}
on:select={(e) => {
selectSuggestionPrompt(e.detail);
}}
/>
</div>
</div>
</div>