| <!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> |
|
|