Spaces:
Sleeping
Sleeping
code
Browse files
src/lib/components/Playground/Playground.svelte
CHANGED
|
@@ -2,6 +2,7 @@
|
|
| 2 |
import { HfInference } from '@huggingface/inference';
|
| 3 |
import { queryParam, ssp } from 'sveltekit-search-params';
|
| 4 |
|
|
|
|
| 5 |
import PlaygroundMessage from '$lib/components/Playground/PlaygroundMessage.svelte';
|
| 6 |
import PlaygroundOptions from '$lib/components/Playground/PlaygroundOptions.svelte';
|
| 7 |
|
|
@@ -28,7 +29,6 @@
|
|
| 28 |
'mistralai/Mistral-7B-Instruct-v0.3'
|
| 29 |
];
|
| 30 |
|
| 31 |
-
let hfToken: string | null = '';
|
| 32 |
const currentModel = queryParam('model', ssp.string(compatibleModels[0]));
|
| 33 |
const temperature = queryParam('temperature', ssp.number(0.5));
|
| 34 |
const maxTokens = queryParam('max_tokens', ssp.number(2048));
|
|
@@ -36,11 +36,13 @@
|
|
| 36 |
const jsonMode = queryParam('json_mode', ssp.boolean(false));
|
| 37 |
$: systemMessage = { role: 'system', content: $systemMessageParam };
|
| 38 |
$: messages = $messagesParam;
|
| 39 |
-
let messageContainer: HTMLDivElement | null = null;
|
| 40 |
|
|
|
|
|
|
|
| 41 |
let loading = false;
|
| 42 |
let streamingMessage: Message | null = null;
|
| 43 |
let latency = 0;
|
|
|
|
| 44 |
|
| 45 |
function addMessage() {
|
| 46 |
$messagesParam = [
|
|
@@ -145,7 +147,7 @@
|
|
| 145 |
<svelte:window on:keydown={onKeydown} />
|
| 146 |
|
| 147 |
<div
|
| 148 |
-
class="
|
| 149 |
>
|
| 150 |
<div class="relative flex flex-col overflow-y-auto px-5 pb-24 pt-7">
|
| 151 |
<div class="pb-2 text-sm font-semibold">SYSTEM</div>
|
|
@@ -159,19 +161,23 @@
|
|
| 159 |
</div>
|
| 160 |
<div class="relative divide-y divide-gray-200 dark:divide-gray-800">
|
| 161 |
<div
|
| 162 |
-
class="flex max-h-[calc(100dvh-5rem)] flex-col divide-y divide-gray-200 overflow-y-auto dark:divide-gray-800"
|
| 163 |
bind:this={messageContainer}
|
| 164 |
>
|
| 165 |
-
{#
|
| 166 |
-
|
| 167 |
-
|
| 168 |
-
|
| 169 |
-
|
| 170 |
-
|
| 171 |
-
|
| 172 |
-
|
| 173 |
-
|
| 174 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 175 |
</div>
|
| 176 |
|
| 177 |
<div
|
|
@@ -194,8 +200,9 @@
|
|
| 194 |
</div>
|
| 195 |
<button
|
| 196 |
type="button"
|
|
|
|
| 197 |
class="rounded-lg border border-gray-200 bg-white px-5 py-2.5 text-sm font-medium text-gray-900 hover:bg-gray-100 hover:text-blue-700 focus:z-10 focus:outline-none focus:ring-4 focus:ring-gray-100 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white dark:focus:ring-gray-700"
|
| 198 |
-
>View Code</button
|
| 199 |
>
|
| 200 |
<button
|
| 201 |
on:click={submit}
|
|
|
|
| 2 |
import { HfInference } from '@huggingface/inference';
|
| 3 |
import { queryParam, ssp } from 'sveltekit-search-params';
|
| 4 |
|
| 5 |
+
import PlaygroundCode from './PlaygroundCode.svelte';
|
| 6 |
import PlaygroundMessage from '$lib/components/Playground/PlaygroundMessage.svelte';
|
| 7 |
import PlaygroundOptions from '$lib/components/Playground/PlaygroundOptions.svelte';
|
| 8 |
|
|
|
|
| 29 |
'mistralai/Mistral-7B-Instruct-v0.3'
|
| 30 |
];
|
| 31 |
|
|
|
|
| 32 |
const currentModel = queryParam('model', ssp.string(compatibleModels[0]));
|
| 33 |
const temperature = queryParam('temperature', ssp.number(0.5));
|
| 34 |
const maxTokens = queryParam('max_tokens', ssp.number(2048));
|
|
|
|
| 36 |
const jsonMode = queryParam('json_mode', ssp.boolean(false));
|
| 37 |
$: systemMessage = { role: 'system', content: $systemMessageParam };
|
| 38 |
$: messages = $messagesParam;
|
|
|
|
| 39 |
|
| 40 |
+
let hfToken: string | null = '';
|
| 41 |
+
let viewCode = false;
|
| 42 |
let loading = false;
|
| 43 |
let streamingMessage: Message | null = null;
|
| 44 |
let latency = 0;
|
| 45 |
+
let messageContainer: HTMLDivElement | null = null;
|
| 46 |
|
| 47 |
function addMessage() {
|
| 48 |
$messagesParam = [
|
|
|
|
| 147 |
<svelte:window on:keydown={onKeydown} />
|
| 148 |
|
| 149 |
<div
|
| 150 |
+
class="w-dvh maxdivide-gray-200 grid h-dvh overflow-hidden max-md:grid-cols-1 max-md:divide-y md:grid-cols-[260px,minmax(0,1fr),260px] md:divide-x dark:divide-gray-800 dark:bg-gray-900 dark:text-gray-300"
|
| 151 |
>
|
| 152 |
<div class="relative flex flex-col overflow-y-auto px-5 pb-24 pt-7">
|
| 153 |
<div class="pb-2 text-sm font-semibold">SYSTEM</div>
|
|
|
|
| 161 |
</div>
|
| 162 |
<div class="relative divide-y divide-gray-200 dark:divide-gray-800">
|
| 163 |
<div
|
| 164 |
+
class="flex max-h-[calc(100dvh-5rem)] flex-col divide-y divide-gray-200 overflow-y-auto overflow-x-hidden dark:divide-gray-800"
|
| 165 |
bind:this={messageContainer}
|
| 166 |
>
|
| 167 |
+
{#if !viewCode}
|
| 168 |
+
{#each messages as message, i}
|
| 169 |
+
<PlaygroundMessage {message} on:delete={() => deleteMessage(i)} />
|
| 170 |
+
{/each}
|
| 171 |
+
|
| 172 |
+
<button
|
| 173 |
+
class="flex px-6 py-6 hover:bg-gray-50 dark:hover:bg-gray-800/50"
|
| 174 |
+
on:click={addMessage}
|
| 175 |
+
>
|
| 176 |
+
<div class="!p-0 text-sm font-semibold">Add message</div>
|
| 177 |
+
</button>
|
| 178 |
+
{:else}
|
| 179 |
+
<PlaygroundCode />
|
| 180 |
+
{/if}
|
| 181 |
</div>
|
| 182 |
|
| 183 |
<div
|
|
|
|
| 200 |
</div>
|
| 201 |
<button
|
| 202 |
type="button"
|
| 203 |
+
on:click={() => (viewCode = !viewCode)}
|
| 204 |
class="rounded-lg border border-gray-200 bg-white px-5 py-2.5 text-sm font-medium text-gray-900 hover:bg-gray-100 hover:text-blue-700 focus:z-10 focus:outline-none focus:ring-4 focus:ring-gray-100 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white dark:focus:ring-gray-700"
|
| 205 |
+
>{!viewCode ? 'View Code' : 'Hide Code'}</button
|
| 206 |
>
|
| 207 |
<button
|
| 208 |
on:click={submit}
|
src/lib/components/Playground/PlaygroundCode.svelte
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<script>
|
| 2 |
+
const nonStreaming = `await hf.chatCompletion({
|
| 3 |
+
model: "mistrali/Mistral-7B-Instruct-v0.2",
|
| 4 |
+
messages: [{ role: "user", content: "Complete the this sentence with words one plus one is equal " }],
|
| 5 |
+
max_tokens: 500,
|
| 6 |
+
temperature: 0.1,
|
| 7 |
+
seed: 0,
|
| 8 |
+
});`;
|
| 9 |
+
|
| 10 |
+
const streaming = `let out = "";
|
| 11 |
+
|
| 12 |
+
for await (const chunk of hf.chatCompletionStream({
|
| 13 |
+
model: "mistrali/Mistral-7B-Instruct-v0.2",
|
| 14 |
+
messages: [
|
| 15 |
+
{ role: "user", content: "Complete the equation 1+1= ,just the answer" },
|
| 16 |
+
],
|
| 17 |
+
max_tokens: 500,
|
| 18 |
+
temperature: 0.1,
|
| 19 |
+
seed: 0,
|
| 20 |
+
})) {
|
| 21 |
+
if (chunk.choices && chunk.choices.length > 0) {
|
| 22 |
+
out += chunk.choices[0].delta.content;
|
| 23 |
+
}
|
| 24 |
+
}`;
|
| 25 |
+
</script>
|
| 26 |
+
|
| 27 |
+
<div class="overflow-hidden p-8">
|
| 28 |
+
<h2 class="mb-4 font-bold">Non-streaming API</h2>
|
| 29 |
+
<pre
|
| 30 |
+
class="overflow-x-auto rounded-md bg-gray-800 p-4 text-sm text-white">{@html nonStreaming}</pre>
|
| 31 |
+
|
| 32 |
+
<h2 class="my-4 font-bold">Streaming API</h2>
|
| 33 |
+
<pre class="overflow-x-auto rounded-md bg-gray-800 p-4 text-sm text-white">{streaming}</pre>
|
| 34 |
+
</div>
|
src/lib/components/Playground/PlaygroundOptions.svelte
CHANGED
|
@@ -7,7 +7,7 @@
|
|
| 7 |
</script>
|
| 8 |
|
| 9 |
<div>
|
| 10 |
-
<
|
| 11 |
<label for="countries" class="mb-2 block text-sm font-medium text-gray-900 dark:text-white"
|
| 12 |
>Model</label
|
| 13 |
>
|
|
@@ -19,7 +19,7 @@
|
|
| 19 |
<option value={model}>{model}</option>
|
| 20 |
{/each}
|
| 21 |
</select>
|
| 22 |
-
</
|
| 23 |
</div>
|
| 24 |
<div>
|
| 25 |
<div class="flex items-center justify-between">
|
|
|
|
| 7 |
</script>
|
| 8 |
|
| 9 |
<div>
|
| 10 |
+
<div>
|
| 11 |
<label for="countries" class="mb-2 block text-sm font-medium text-gray-900 dark:text-white"
|
| 12 |
>Model</label
|
| 13 |
>
|
|
|
|
| 19 |
<option value={model}>{model}</option>
|
| 20 |
{/each}
|
| 21 |
</select>
|
| 22 |
+
</div>
|
| 23 |
</div>
|
| 24 |
<div>
|
| 25 |
<div class="flex items-center justify-between">
|