server : return unparseable output as content instead of erroring
Follow-up to the lazy-grammar arming fix. Once the sampler correctly
declines to arm on a recited trigger marker, the recitation survives into
the final output - and the chat parser then throws on it, so the request
still fails with HTTP 500, just from one layer further down:
The model produced output that does not match the expected ... format
With constrained sampling this case is well defined: anything the grammar
let through as "not a tool call" is, by construction, plain prose. Add an
opt-in `common_chat_parser_params::fallback_to_content` (default false,
so tests and other callers keep the strict behaviour) that returns the
raw output as assistant content with a warning, and enable it in the
server.
On a 48-seed sweep that asks a model to quote its own tool-call syntax
(Llama-3.2-1B, template with an example block in the tools header), this
takes llama-server from 1 x HTTP 500 to 48 x HTTP 200, with recitations
returned as text and genuine tool calls still grammar-constrained.