Commit c6b1b4e
authored
[Grammar] Integrate with XGrammar (#635)
This PR integrates with XGrammar: https://github.com/mlc-ai/xgrammar.
Prior to this PR, grammar is supported by the grammar portion of MLC-LLM
compiled into the model WASM. That portion is now a standalone project
XGrammar. Therefore, this PR adds `mlc-ai/web-xgrammar` as part of the
dependency and remove `src/grammar.ts`. We update `llm_chat.ts`
accordingly for xgrammar's APIs.
In addition, besides `json_schema`, we now also support requests with
EBNF-formatted strings by using the following in the chat completion
request. See `examples/json-schema`'s `ebnfGrammarExample()` for a full
example.
```typescript
response_format: {
type: "grammar",
grammar: jsonGrammarStr,
} as webllm.ResponseFormat,
```
We also add the following performance info:
- Add `grammar_init_ms` and `grammar_per_token_ms` to
`CompletionUsage.extra` when using grammar
- Add `time_to_first_token_s` (TTFT) and `time_per_output_token_s`
(TPOT), `e2e_latency_s` to `CompletionUsage.extra`
We also add `ignore_eos` to `Completion` and `ChatCompletion` requests,
which can be useful for benchmarking purposes.1 parent 6504047 commit c6b1b4e
File tree
13 files changed
+467
-301
lines changed- examples
- json-mode/src
- json-schema/src
- src
- openai_api_protocols
- tests
13 files changed
+467
-301
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
15 | | - | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
16 | 19 | | |
17 | 20 | | |
18 | 21 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
37 | 37 | | |
38 | 38 | | |
39 | 39 | | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
40 | 45 | | |
41 | | - | |
42 | | - | |
| 46 | + | |
| 47 | + | |
43 | 48 | | |
44 | 49 | | |
45 | 50 | | |
| |||
106 | 111 | | |
107 | 112 | | |
108 | 113 | | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
109 | 119 | | |
110 | | - | |
111 | | - | |
| 120 | + | |
| 121 | + | |
112 | 122 | | |
113 | 123 | | |
114 | 124 | | |
| |||
134 | 144 | | |
135 | 145 | | |
136 | 146 | | |
| 147 | + | |
137 | 148 | | |
138 | 149 | | |
139 | 150 | | |
| |||
214 | 225 | | |
215 | 226 | | |
216 | 227 | | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
217 | 281 | | |
218 | 282 | | |
219 | | - | |
220 | | - | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
221 | 286 | | |
222 | 287 | | |
223 | 288 | | |
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
51 | 51 | | |
52 | 52 | | |
53 | 53 | | |
| 54 | + | |
54 | 55 | | |
55 | 56 | | |
56 | 57 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
127 | 127 | | |
128 | 128 | | |
129 | 129 | | |
| 130 | + | |
130 | 131 | | |
131 | 132 | | |
132 | 133 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
257 | 257 | | |
258 | 258 | | |
259 | 259 | | |
260 | | - | |
261 | | - | |
262 | | - | |
263 | | - | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
264 | 266 | | |
265 | 267 | | |
266 | 268 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
465 | 465 | | |
466 | 466 | | |
467 | 467 | | |
| 468 | + | |
468 | 469 | | |
469 | 470 | | |
470 | 471 | | |
471 | 472 | | |
472 | 473 | | |
473 | 474 | | |
474 | 475 | | |
| 476 | + | |
475 | 477 | | |
476 | 478 | | |
477 | 479 | | |
478 | 480 | | |
479 | 481 | | |
480 | 482 | | |
481 | 483 | | |
| 484 | + | |
482 | 485 | | |
483 | 486 | | |
484 | 487 | | |
| |||
678 | 681 | | |
679 | 682 | | |
680 | 683 | | |
| 684 | + | |
| 685 | + | |
| 686 | + | |
| 687 | + | |
681 | 688 | | |
682 | 689 | | |
683 | 690 | | |
684 | 691 | | |
| 692 | + | |
| 693 | + | |
| 694 | + | |
| 695 | + | |
| 696 | + | |
| 697 | + | |
| 698 | + | |
| 699 | + | |
| 700 | + | |
| 701 | + | |
| 702 | + | |
| 703 | + | |
685 | 704 | | |
686 | 705 | | |
687 | 706 | | |
688 | 707 | | |
689 | | - | |
690 | | - | |
691 | | - | |
692 | | - | |
| 708 | + | |
| 709 | + | |
| 710 | + | |
| 711 | + | |
| 712 | + | |
| 713 | + | |
| 714 | + | |
| 715 | + | |
| 716 | + | |
693 | 717 | | |
694 | 718 | | |
695 | 719 | | |
| |||
745 | 769 | | |
746 | 770 | | |
747 | 771 | | |
| 772 | + | |
748 | 773 | | |
749 | 774 | | |
750 | 775 | | |
| |||
766 | 791 | | |
767 | 792 | | |
768 | 793 | | |
| 794 | + | |
769 | 795 | | |
770 | 796 | | |
771 | 797 | | |
| |||
780 | 806 | | |
781 | 807 | | |
782 | 808 | | |
| 809 | + | |
783 | 810 | | |
784 | 811 | | |
785 | 812 | | |
| |||
796 | 823 | | |
797 | 824 | | |
798 | 825 | | |
| 826 | + | |
| 827 | + | |
799 | 828 | | |
800 | 829 | | |
801 | 830 | | |
| |||
852 | 881 | | |
853 | 882 | | |
854 | 883 | | |
| 884 | + | |
| 885 | + | |
| 886 | + | |
855 | 887 | | |
856 | | - | |
| 888 | + | |
| 889 | + | |
| 890 | + | |
| 891 | + | |
| 892 | + | |
| 893 | + | |
| 894 | + | |
| 895 | + | |
| 896 | + | |
| 897 | + | |
| 898 | + | |
857 | 899 | | |
858 | 900 | | |
859 | 901 | | |
| |||
864 | 906 | | |
865 | 907 | | |
866 | 908 | | |
867 | | - | |
868 | | - | |
869 | | - | |
870 | | - | |
| 909 | + | |
| 910 | + | |
| 911 | + | |
| 912 | + | |
| 913 | + | |
| 914 | + | |
| 915 | + | |
| 916 | + | |
| 917 | + | |
871 | 918 | | |
872 | 919 | | |
873 | 920 | | |
| |||
901 | 948 | | |
902 | 949 | | |
903 | 950 | | |
| 951 | + | |
| 952 | + | |
904 | 953 | | |
905 | 954 | | |
906 | 955 | | |
| |||
915 | 964 | | |
916 | 965 | | |
917 | 966 | | |
| 967 | + | |
918 | 968 | | |
919 | 969 | | |
920 | 970 | | |
| |||
929 | 979 | | |
930 | 980 | | |
931 | 981 | | |
| 982 | + | |
932 | 983 | | |
933 | 984 | | |
934 | 985 | | |
| |||
989 | 1040 | | |
990 | 1041 | | |
991 | 1042 | | |
| 1043 | + | |
992 | 1044 | | |
993 | 1045 | | |
| 1046 | + | |
| 1047 | + | |
994 | 1048 | | |
995 | 1049 | | |
996 | 1050 | | |
| |||
0 commit comments