From 587101da88fe59039882ff10835e6aa2fd2cb9f2 Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Sun, 3 Dec 2023 11:54:11 -0800 Subject: [PATCH] feat: modelfile content linked to chat page --- src/lib/components/chat/MessageInput.svelte | 6 +- .../chat/MessageInput/Suggestions.svelte | 149 ++++-------------- src/lib/components/chat/Messages.svelte | 27 +++- src/routes/(app)/+page.svelte | 50 +++++- src/routes/(app)/c/[id]/+page.svelte | 44 +++++- 5 files changed, 148 insertions(+), 128 deletions(-) diff --git a/src/lib/components/chat/MessageInput.svelte b/src/lib/components/chat/MessageInput.svelte index 9a2e0f69..015e6e3a 100644 --- a/src/lib/components/chat/MessageInput.svelte +++ b/src/lib/components/chat/MessageInput.svelte @@ -6,7 +6,7 @@ export let submitPrompt: Function; export let stopResponse: Function; - export let suggestions = 'true'; + export let suggestionPrompts = []; export let autoScroll = true; let filesInputElement; @@ -87,8 +87,8 @@
- {#if messages.length == 0 && suggestions !== 'false'} - + {#if messages.length == 0 && suggestionPrompts.length !== 0} + {/if} {#if autoScroll === false && messages.length > 0} diff --git a/src/lib/components/chat/MessageInput/Suggestions.svelte b/src/lib/components/chat/MessageInput/Suggestions.svelte index 20ffb211..6bd1876b 100644 --- a/src/lib/components/chat/MessageInput/Suggestions.svelte +++ b/src/lib/components/chat/MessageInput/Suggestions.svelte @@ -1,122 +1,43 @@ -
-
- +
+ {#if prompt.title} +
{prompt.title[0]}
+
{prompt.title[1]}
+ {:else} +
{prompt.content}
+ {/if} +
-
-
- - - -
- - - - - + {/each}
diff --git a/src/lib/components/chat/Messages.svelte b/src/lib/components/chat/Messages.svelte index cc27bdee..e6856144 100644 --- a/src/lib/components/chat/Messages.svelte +++ b/src/lib/components/chat/Messages.svelte @@ -7,7 +7,7 @@ import auto_render from 'katex/dist/contrib/auto-render.mjs'; import 'katex/dist/katex.min.css'; - import { config, db, settings, user } from '$lib/stores'; + import { config, db, modelfiles, settings, user } from '$lib/stores'; import { tick } from 'svelte'; import toast from 'svelte-french-toast'; @@ -16,9 +16,12 @@ export let regenerateResponse: Function; export let autoScroll; + export let selectedModels; export let history = {}; export let messages = []; + export let selectedModelfile = null; + $: if (messages && messages.length > 0 && (messages.at(-1).done ?? false)) { (async () => { await tick(); @@ -306,10 +309,18 @@ {#if messages.length == 0}
- + {#if selectedModelfile && selectedModelfile.imageUrl} + + {:else} + + {/if}
-
- How can I help you today? +
+ {#if selectedModelfile} + {selectedModelfile.desc} + {:else} + How can I help you today? + {/if}
{:else} @@ -332,6 +343,12 @@ alt="User profile" /> {/if} + {:else if selectedModelfile} + Ollama profile {:else} {#if message.role === 'user'} You + {:else if selectedModelfile} + {selectedModelfile.title} {:else} Ollama {message.model ? ` ${message.model}` : ''} modelfile.tagName === selectedModels[0]).length > 0 + ? $modelfiles.filter((modelfile) => modelfile.tagName === selectedModels[0])[0] + : null; let title = ''; let prompt = ''; @@ -64,7 +71,9 @@ messages: {}, currentId: null }; - selectedModels = $settings.models ?? ['']; + selectedModels = $page.url.searchParams.get('models') + ? $page.url.searchParams.get('models')?.split(',') + : $settings.models ?? ['']; }; ////////////////////////// @@ -487,9 +496,42 @@
- +
- + diff --git a/src/routes/(app)/c/[id]/+page.svelte b/src/routes/(app)/c/[id]/+page.svelte index 1554679c..c8ab7882 100644 --- a/src/routes/(app)/c/[id]/+page.svelte +++ b/src/routes/(app)/c/[id]/+page.svelte @@ -6,7 +6,7 @@ import { onMount, tick } from 'svelte'; import { convertMessagesToHistory, splitStream } from '$lib/utils'; import { goto } from '$app/navigation'; - import { config, user, settings, db, chats, chatId } from '$lib/stores'; + import { config, modelfiles, user, settings, db, chats, chatId } from '$lib/stores'; import MessageInput from '$lib/components/chat/MessageInput.svelte'; import Messages from '$lib/components/chat/Messages.svelte'; @@ -20,6 +20,12 @@ // let chatId = $page.params.id; let selectedModels = ['']; + let selectedModelfile = null; + $: selectedModelfile = + selectedModels.length === 1 && + $modelfiles.filter((modelfile) => modelfile.tagName === selectedModels[0]).length > 0 + ? $modelfiles.filter((modelfile) => modelfile.tagName === selectedModels[0])[0] + : null; let title = ''; let prompt = ''; @@ -521,10 +527,42 @@
- +
- + {/if}