|
<!DOCTYPE html> |
|
<html> |
|
<head> |
|
<meta charset="utf-8" /> |
|
<meta name="viewport" content="width=device-width" /> |
|
<title>WebLLM Structured Generation Playground</title> |
|
<link |
|
rel="stylesheet" |
|
href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/default.min.css" |
|
/> |
|
<link rel="stylesheet" href="./style/style.css" /> |
|
<link rel="stylesheet" href="./style/ace.css" /> |
|
<link rel="stylesheet" href="./style/hljs.css" /> |
|
</head> |
|
<body> |
|
<h1>WebLLM Structured Generation Playground</h1> |
|
<h4> |
|
Generate structured output from LLMs using |
|
<a |
|
referrerpolicy="no-referrer" |
|
href="https://webllm.mlc.ai/" |
|
target="_blank" |
|
>WebLLM</a |
|
> and <a |
|
referrerpolicy="no-referrer" |
|
href="https://xgrammar.mlc.ai/" |
|
target="_blank" |
|
>XGrammar</a>. |
|
</h4> |
|
<main> |
|
<div id="left-col" class="container"> |
|
<div class="card"> |
|
<form> |
|
<label for="model-selection" class="container" |
|
><span><b>Model</b></span> |
|
<select id="model-selection"></select |
|
></label> |
|
</form> |
|
</div> |
|
<div class="card"> |
|
<form> |
|
<label for="grammar-selection" class="container" |
|
><span><b>Grammar</b></span> |
|
<select id="grammar-selection" value="json"> |
|
<option value="json">JSON Schema (Default)</option> |
|
<option value="custom">Custom Grammar</option> |
|
</select></label |
|
> |
|
</form> |
|
</div> |
|
<div id="ebnf-grammar-container" class="card hidden"> |
|
<form> |
|
<label for="ebnf-grammar" class="container" |
|
><span><b>Custom Grammar</b></span> |
|
<span> |
|
The custom grammar is described in the |
|
<a |
|
href="https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form" |
|
referrerpolicy="no-referrer" |
|
target="_blank" |
|
>extended Backus-Naur form (EBNF)</a |
|
>. Below is an example of JSON grammar in EBNF. Please follow |
|
this example when writing new grammars. |
|
</span> |
|
<div id="ebnf-grammar"></div> |
|
</label> |
|
</form> |
|
</div> |
|
<div id="schema-container" class="card"> |
|
<form> |
|
<label class="container" |
|
><span><b>Schema</b></span> |
|
<span |
|
>Check |
|
<a |
|
href="https://github.com/sinclairzx81/typebox" |
|
referrerpolicy="no-referrer" |
|
target="_blank" |
|
>TypeBox</a |
|
> |
|
for JSON schema type syntax and documentation.</span |
|
> |
|
<div id="schema"></div> |
|
</label> |
|
</form> |
|
</div> |
|
</div> |
|
<div id="right-col" class="container"> |
|
<div class="card"> |
|
<form> |
|
<label for="prompt" class="container" |
|
><span><b>Prompt</b></span> |
|
<textarea |
|
id="prompt" |
|
dir="ltr" |
|
placeholder="" |
|
rows="1" |
|
></textarea> |
|
</label> |
|
</form> |
|
</div> |
|
<button id="generate">Generate</button> |
|
<div class="card"> |
|
<form> |
|
<label class="output" |
|
><span><b>Output</b></span> |
|
<div id="output"></div> |
|
</label> |
|
<p class="info hidden" id="stats"></p> |
|
</form> |
|
</div> |
|
</div> |
|
</main> |
|
<script src="./dist/index.js" type="module"></script> |
|
</body> |
|
</html> |
|
|