Docs / Guides
Tool calling
Serve Neutrino-8B to an agent framework using OpenAI tool schemas and standard tool-call responses.
Send tools
{
"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
| Value | Behavior |
|---|---|
| auto or omitted | Render every declared tool and parse calls when the model emits them. |
| none | Render no tools and return a normal assistant response. |
| required | Best effort. No grammar constraint forces a call. |
| named function | Render 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.
| Mode | Behavior |
|---|---|
| enforce | Default. On a detected loop, produce a diagnosis and a final answer without exposing tools. |
| observe | Log and count signals without changing output. |
| off | Disable analysis. |
Affected responses include a top-level fermion_stuck object. Counters and configuration are available on /health.
| Profile | Temperature | Top p | Repetition penalty |
|---|---|---|---|
| graded | 0.01 | 1.0 | 1.05 / 256 |
| vendor | 0.7 | 0.8 | 1.10 / 256 |
| vendor-thinking | 0.6 | 0.95 | 1.10 / 256 |
| antiloop | 0.7 | 0.8 | 1.15 / 512 |