← Blog

Best Function Calling Local LLM: What Actually Works

2026-09-16 · 5 min read · SubToAPI Team

If you're searching for the best function calling local LLM, you're probably trying to build an agent or tool-using assistant without sending data to a third-party API. The short answer: Qwen2.5 (7B–72B), Llama 3.1/3.3 (8B–70B), Mistral's Nemo/Small models, and Hermes-3 (fine-tuned on Llama) currently have the most reliable function calling support you can run locally, with Qwen2.5-Coder and Llama 3.3 70B being the strongest for structured, multi-step tool use.

The catch is that "best" depends heavily on your hardware and how strict your tool-call formatting needs to be. A 7B model on a laptop GPU will call functions less reliably than a 70B model on a workstation with 48GB+ of VRAM, and both will lag behind hosted frontier models like Claude or GPT-4 on complex, multi-tool reasoning chains. This article breaks down what actually matters when picking a local model for function calling, how to test it yourself, and when it makes more sense to skip local hosting entirely and call a hosted model through a standard API instead.

What "function calling" means for local models

Function calling (also called tool use) is the model's ability to output a structured request — usually JSON — that matches a schema you provide, so your application code can execute a real function and feed the result back. For local models, this support comes in two flavors:

If you're running locally, you want native tool-calling support because it dramatically reduces parsing failures and hallucinated arguments.

The strongest local options right now

Qwen2.5 and Qwen2.5-Coder

Alibaba's Qwen2.5 family has some of the best out-of-the-box function calling of any open-weight model. It supports structured tool definitions, parallel tool calls, and handles multi-turn tool loops without losing track of state. The 32B and 72B variants are particularly strong; the 7B variant is usable for simple, single-tool tasks but starts to miss arguments on complex schemas.

Llama 3.1 / 3.3

Meta built native tool-calling into the Llama 3.1+ instruct models, including support for a built-in "brave_search" / "wolfram_alpha" style tool format as well as custom JSON schemas. Llama 3.3 70B is a solid middle ground — smaller footprint than 3.1 405B, comparable tool-calling accuracy for most everyday use cases.

Mistral Small / Nemo

Mistral's function-calling fine-tunes are competitive and tend to be more concise in their outputs, which helps if you're chaining several tool calls per turn. Nemo (12B) is a good fit if you're VRAM-constrained but still want native tool support.

Hermes-3 (Nous Research)

Built on Llama 3.1, Hermes-3 adds stronger instruction-following and tool-use fine-tuning on top of the base model. It's a popular pick in the open-source agent community specifically because it handles longer tool-use chains with fewer dropped calls.

How to actually run one and test tool calling

Most people run these through Ollama or llama.cpp with a GGUF quantization. A quick smoke test with Ollama:

ollama pull qwen2.5:7b

curl http://localhost:11434/api/chat -d '{
  "model": "qwen2.5:7b",
  "messages": [{"role": "user", "content": "What is the weather in Paris?"}],
  "tools": [{
    "type": "function",
    "function": {
      "name": "get_weather",
      "description": "Get current weather for a city",
      "parameters": {
        "type": "object",
        "properties": { "city": { "type": "string" } },
        "required": ["city"]
      }
    }
  }]
}'

Check the response for a tool_calls field with correctly filled arguments. Run this test with several tools and a few tricky prompts (ambiguous city names, multi-step requests, missing required fields) before trusting a model in production. Quantization matters too — a heavily quantized (Q3/Q4) 7B model will make more argument-formatting mistakes than the same model at Q6/Q8 or full precision.

Where local models fall short

Even the best local function-calling model will struggle with:

If your product needs reliability at that level, it's worth benchmarking a local model against a hosted one on your actual prompts before committing to local-only infrastructure. Claude in particular handles multi-step tool loops and structured output very well, and if you already have Claude access, you don't need to stand up new infrastructure to use it via API. SubToAPI turns your existing Claude access into a standard HTTPS API with application API keys, streaming, and full tool-use support — useful if you want to compare local model output against Claude's tool calling without building a separate integration. See the tool use docs for the request format.

Local vs. hosted: a quick decision guide

questions

Which local LLM has the most reliable function calling in 2025? Qwen2.5 (32B/72B) and Llama 3.3 70B currently offer the most consistent native tool-calling behavior among open-weight models, especially for multi-tool and multi-turn scenarios.

Can a 7B model handle function calling well? Yes, for simple single-tool tasks with clear schemas. Accuracy drops noticeably with multiple simultaneous tools, ambiguous parameters, or long conversational context.

Do I need a GPU to run these models for function calling? Not strictly — CPU inference works via llama.cpp — but response latency for tool-calling loops becomes impractical for interactive use without at least a mid-range GPU or Apple Silicon with sufficient unified memory.

Turn your Claude access into an HTTPS API

SubToAPI gives you application API keys, streaming, tool use and usage insights on top of your existing Claude access — set up in minutes.

Start free  Read the quickstart →