Introduce GBNF grammar parameter: run flags, REPL and API #2754
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This patch adds full support for the llama.cpp "grammar" option, which defaults to "" i.e. no grammar constraint.
For backwards compatability, the existing
format
parameter remains available in flags, the REPL and the API. Only one ofgrammar
orformat
at a time is legal, sinceformat: json
is just a shortcut for the hard-coded JSON grammar.Tested locally:
This more or less conflicts with #2404 which instead decided to go with an
Options
, which AFAICT is more geared towards creating derived models with an embedded grammar, whereas this patch is more about runtime override. It would be nice to eventually converge on something that does both, but today the concept of "format", which is very limiting (list of well-known formats and only JSON today), is not anOptions
but a top-level parameter and I wasn't sure how to make this play nice with #2404 without too many changes.