diff --git a/examples/server/public/index.html b/examples/server/public/index.html index 5432e2311..fa5d3632a 100644 --- a/examples/server/public/index.html +++ b/examples/server/public/index.html @@ -206,7 +206,7 @@ history: session.value.transcript.flatMap(([name, message]) => template(session.value.historyTemplate, {name, message})).join("\n"), }); - let currentMessage = ''; + const currentMessages = []; const history = session.value.transcript const llamaParams = { @@ -216,15 +216,12 @@ for await (const chunk of llama(prompt, llamaParams, { controller: controller.value })) { const data = chunk.data; - currentMessage += data.content; + currentMessages.push(data); - // remove leading whitespace - currentMessage = currentMessage.replace(/^\s+/, "") - - transcriptUpdate([...history, ["{{char}}", currentMessage]]) + transcriptUpdate([...history, ["{{char}}", currentMessages]]) if (data.stop) { - console.log("Completion finished: '", currentMessage, "', summary: ", data); + console.log("Completion finished: '", currentMessages.map(msg => msg.content).join(''), "', summary: ", data); } if (data.timings) { @@ -288,8 +285,18 @@ } }, [messages]) - const chatLine = ([user, msg]) => { - return html`

${template(user)}: <${Markdownish} text=${template(msg)} />

` + const chatLine = ([user, data], index) => { + let message + const isArrayMessage = Array.isArray(data) + if (isArrayMessage && data.every(msg => msg.completion_probabilities.length > 0)) { + message = html`<${Probabilites} data=${data} />` + } else { + const text = isArrayMessage ? + data.map(msg => msg.content).join('').replace(/^\s+/, '') : + data; + message = html`<${Markdownish} text=${template(text)} />` + } + return html`

${template(user)}: ${message}

` }; return html` @@ -390,6 +397,9 @@ ` } + + const Probabilites = (params) => { /* Not implemented yet */ } + // poor mans markdown replacement const Markdownish = (params) => { const md = params.text