mirror of
https://github.com/mudler/LocalAI.git
synced 2026-11-07 04:53:24 -05:00
A system prompt that tells a model to look things up first does not stop it from answering from its own knowledge, for example when the question comes with a picture. profile.require_tool makes the first model call of a chat request that offers the profile's server-side MCP tools use tool_choice "required". Every follow-up call of the server-side tool loop is made with the client's tool_choice again: a "required" that stayed in place would make the model call a tool after every tool result and never answer until the iteration limit. With a tokenizer template the backend enforces "required" with a grammar built from the chat template's tool-call format. Where LocalAI builds the tool-call grammar itself, the first call's grammar leaves out the no-action function instead. The first call is not forced when no server-side tool was offered, when the client set tool_choice or function_call itself, or when the request does not end with a user message, so a request returning a client tool's result cannot bounce tool calls between client and server. Assisted-by: Claude Code:claude-opus-5-5 Signed-off-by: Stefan Walcz <stefan.walcz@walcz.de>