File size: 3,301 Bytes
4879fd8
4090009
4879fd8
 
 
 
 
 
 
 
 
 
 
 
 
b8cb406
 
 
 
 
 
 
 
 
 
4879fd8
b8cb406
 
 
 
5189f41
b8cb406
 
 
 
5254a31
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cc1f2fe
b8cb406
 
5189f41
 
 
 
 
 
 
 
 
cc1f2fe
5189f41
b8cb406
 
 
 
4879fd8
b8cb406
66f35c4
 
 
 
 
 
 
 
 
 
 
 
 
b8cb406
 
 
 
5189f41
19eaf6a
b8cb406
 
 
 
4879fd8
 
ab229ee
4879fd8
4090009
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width" />
    <title>WebLLM JSON 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 JSON Playground</h1>
    <h4>
      Generate JSON 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 (Default)</option>
                <option value="custom">Custom EBNF 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>
              <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>
              <p class="info hidden" id="stats"></p>
              <div id="output"></div>
            </label>
          </form>
        </div>
      </div>
    </main>
    <script src="./dist/index.js" type="module"></script>
  </body>
</html>