<!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://github.com/mlc-ai/web-llm" target="_blank" >WebLLM</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 EBNF 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> <textarea id="ebnf-grammar" dir="ltr" placeholder="Type your custom EBNF grammar..." rows="1" ></textarea> </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>