ToolUse.1
Tool-calling leaderboard that scores abstention
None defined yet.
Models | Nova-1.1-0.8B | Nova-1-0.8B | Discussions
Hardcore AI is a non-profit research group building compact, openly licensed language models intended for deployment rather than demonstration. Our work concentrates on function calling: assistants that invoke tools in whichever protocol is declared at inference time, and that produce no call at all when no tool applies. We target bilingual English/Russian interaction and hardware that a single developer already owns.
Every release is a standalone BF16 checkpoint that loads in stock transformers, requires no adapter infrastructure, and is published under Apache-2.0.
| Model | Parameters | Base | Description |
|---|---|---|---|
| Nova-1.1-0.8B | 0.8B | Nova-1-0.8B | Current release. Pair-tuned against spurious tool calls on plain-answer prompts, with clean XML termination. |
| Nova-1-0.8B | 0.8B | Qwen3.5-0.8B | First open release. Function calling and everyday assistance in English and Russian. |
Both checkpoints are ~2 GB in BF16 and run on a single 6 GB consumer GPU or on CPU.
<tool_call> blocks, and a plain-text TOOL name | param=value form — selected by the system prompt rather than fixed at training time.transformers fork, no adapters to merge at load time; quantizes for llama.cpp and Ollama.Tool-use suite — 100 cases (EN+RU), identical prompts across checkpoints, greedy decoding:
| Metric | Qwen3.5-0.8B | Nova-1-0.8B | Nova-1.1-0.8B |
|---|---|---|---|
| Overall | 55.0% | 74.0% | 90.0% |
| Correct call when a tool applies (70) | 58.6% | 88.6% | 91.4% |
| No call when no tool applies (30) | 46.7% | 40.0% | 86.7% |
| Spurious-call rate (lower is better) | 53.3% | 60.0% | 13.3% |
Accuracy by calling protocol, Nova-1.1-0.8B: JSON 89.2%, XML 95.2%, plain-text 85.7%.
Knowledge spot-checks, identical 0-shot greedy protocol on both Nova checkpoints (internal A/B, subsampled public test sets): GSM8K 22.0% → 26.0% (n=100), ARC-Easy 77.3% (n=150). No regression against Nova-1.0.
from transformers import AutoModelForCausalLM, AutoProcessor
model_id = "HardcoreAI/Nova-1.1-0.8B"
model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype="bfloat16", trust_remote_code=True)
processor = AutoProcessor.from_pretrained(model_id, trust_remote_code=True)
SYSTEM = (
"You are a virtual assistant developed by Hardcore AI. You assist with day-to-day "
"tasks, are helpful, polite and concise, and respond in the same language as the user."
)
messages = [
{"role": "system", "content": SYSTEM},
{"role": "user", "content": "What is the capital of Australia?"},
]
text = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = processor(text=text, return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=128)
print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:], skip_special_tokens=True))
# The capital of Australia is Canberra.
Function calling, JSON protocol:
messages = [
{
"role": "system",
"content": SYSTEM + "\n\nYou have access to tools: calculator(expression), get_weather(city). "
'Reply with ONLY a JSON object: {"name": "tool_name", "arguments": {"param": "value"}}.',
},
{"role": "user", "content": "What is 45 plus 12?"},
]
# -> {"name": "calculator", "arguments": {"expression": "45+12"}}
Note: Nova inherits the Qwen3.5 reasoning backbone. Thinking mode should be disabled at inference (--reasoning off in llama.cpp, a pre-closed thinking block in Ollama, or a system prompt that forbids reasoning in transformers) — visible reasoning traces degrade both latency and tool-call correctness.
The Nova assistant line continues: additional sizes and capabilities are in development. Questions, bug reports and collaboration requests are handled through the discussion tab of the relevant model repository.
Models are released under Apache-2.0, consistent with their base model. See the LICENSE file in each repository for details.