Use a plain script when the inputs are structured and the branching is finite; reach for an LLM agent only when the input is messy text or the decision tree is too wide to code. The vLLM 0.31 release changes that trade-off for self-hosted agents by shipping constrained decoding as a server-side flag.
Ubicloud engineers measured Kimi K2.6 on vLLM 0.28 and found the model emitted the expected tool-call schema only 92% of the time - 2 out of every 25 calls were malformed JSON that then poisoned the agent's context. With constrained decoding enabled, Ubicloud reports Kimi and DeepSeek models reach 100% schema adherence.
What this means for a small business
If you run an open-weight model behind your CRM, invoicing, or warehouse tools, update to vLLM 0.31 and switch the flag on before you add more agent steps. Deterministic subtasks - look up SKU by barcode, parse this XML - still belong in a plain function; the LLM should only handle the parts a script cannot describe, as in the warehouse bot that locates items by photo and SKU. Without schema guarantees, every tool call is a small lottery, and multi-turn agents compound those odds badly.
Why it matters: Silent 8% failure rates on tool calls destroy agent reliability faster than any prompt tuning can repair, so pin the inference engine version and verify schema accuracy before you ship anything multi-step.
Source: Hacker News