Docs
Browse documentation

Docs / Guides

Tool calling

Serve Neutrino-8B to an agent framework using OpenAI tool schemas and standard tool-call responses.

Send tools

json
{
  "model": "neutrino",
  "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"]
      }
    }
  }],
  "tool_choice": "auto"
}

Neutrino emits Hermes-format tool markers internally. The server parses them into OpenAI message.tool_calls entries and returns finish_reason: "tool_calls". Only Neutrino-8B reliably produces tool calls. The 0.6B models generally answer in prose.

Tool choice behavior

ValueBehavior
auto or omittedRender every declared tool and parse calls when the model emits them.
noneRender no tools and return a normal assistant response.
requiredBest effort. No grammar constraint forces a call.
named functionRender only that function. The model may still answer in prose.

Parser and name matching

The parser supports one or several calls, JSON arrays and wrapper objects, missing closing tags, trailing commas, single-quoted arguments, and balanced JSON inside surrounding reasoning. Arguments always leave the server as a strict JSON string.

When a model emits a short function name for a uniquely matching namespaced tool, the server rewrites the call to the registered name and logs the mapping. Ambiguous names are never guessed.

Loop protection and tool profiles

The serve-only stuck detector watches the conversation history supplied by the client. It can detect repeated identical calls, strict A-B alternation, and repeated identical tool errors. Polling tools are automatically exempt unless you disable that behavior.

ModeBehavior
enforceDefault. On a detected loop, produce a diagnosis and a final answer without exposing tools.
observeLog and count signals without changing output.
offDisable analysis.

Affected responses include a top-level fermion_stuck object. Counters and configuration are available on /health.

ProfileTemperatureTop pRepetition penalty
graded0.011.01.05 / 256
vendor0.70.81.10 / 256
vendor-thinking0.60.951.10 / 256
antiloop0.70.81.15 / 512