-
Stefy Lanza (nextime / spora ) authored
A pod serving Qwen3.8-27B logged, on every single tool-using request, hermes_tool_parser ... json.decoder.JSONDecodeError: Expecting value on text that begins <tool_call> <function=agenda_udienze> <parameter=dal>2026-10-21</parameter> vLLM reads that with `qwen3_xml`; `hermes` expects JSON inside <tool_call> and cannot. Buffered, coderai's own parser rescued the call out of the text, which is why this stayed invisible. STREAMED, vLLM had already consumed those tokens into tool-call deltas it then failed to emit, so the call was simply gone and the stream ended at </think>. A name cannot separate the two syntaxes -- Qwen2.5 and the Hermes-style finetunes genuinely are hermes, and qwen3_xml does not read JSON at all -- so the mapping cannot just be changed. The model's TEMPLATE decides instead: it is the model's own statement of what it emits, and this one says "If you choose to call a function ONLY reply in the following format: <tool_call>\n<function=example_function_name>\n<parameter=...>" with no JSON form anywhere in its 8,952 bytes. Read, not guessed, and never fatal: a repo id is fetched rather than looked up in the cache (on a rented pod nothing is cached the first time), an unreadable template leaves the name table's answer alone, and every failure path returns "" -- a pod that will not launch is worse than one that reads tool calls with the wrong parser. An explicit tool_call_parser still wins, "off" included. Co-Authored-By:
Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01S8LAP3ueNzQJtwzhgVbq66
a9e7ed0e
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| admin | ||
| api | ||
| backends | ||
| broker | ||
| cluster | ||
| compose | ||
| frontproxy | ||
| models | ||
| ocr | ||
| openai | ||
| pydantic | ||
| queue | ||
| tasks | ||
| util | ||
| __init__.py | ||
| cli.py | ||
| config.py | ||
| main.py | ||
| ocr_fleet_workers.py | ||
| platform_paths.py | ||
| system_app.py |