gergelyvagujhelyi's picture
Remove penalty_last_n note (the key was stripped from the GGUFs instead)
9439d0f verified
|
Raw
History Blame Contribute Delete
4.57 kB
---
license: other
license_name: lfm1.0
license_link: LICENSE
base_model: LiquidAI/LFM2.5-1.2B-Instruct
tags:
- gguf
- tool-calling
- liquid
- lfm2.5
---
# LFM2.5-1.2B-Instruct GGUF β€” with tool_calls chat-template fix
GGUF builds of [LiquidAI/LFM2.5-1.2B-Instruct](https://huggingface.co/LiquidAI/LFM2.5-1.2B-Instruct-GGUF)
prepared for tool calling. Every file is the corresponding upstream quant with
**bit-identical weight tensors**; the embedded chat template
(`tokenizer.chat_template`) is extended to render the `tool_calls` field of
assistant messages, and the files marked in the table additionally embed
LiquidAI's recommended sampling as `general.sampling.*` metadata.
## Model Capabilities
- **Text generation** β€” instruction-following chat model
- **Tool calling** β€” native LFM2 function-calling format; multi-turn tool use works thanks to the template fix in this repo
- **Long context** β€” 128k tokens
## Getting Started
Install [NobodyWho](https://docs.nobodywho.ooo/):
```bash
pip install nobodywho
```
Run β€” the model is downloaded and cached automatically on first use:
```python
from nobodywho import Chat
chat = Chat("huggingface:NobodyWho/LFM2.5-1.2B-Instruct-GGUF/LFM2.5-1.2B-Instruct-Q8_0-vendor-sampling.gguf")
response = chat.ask("What is the capital of Denmark?").completed()
print(response) # Copenhagen!
```
### Tool calling
```python
from nobodywho import Chat, tool
@tool(description="Gets the current weather for a city")
def get_weather(city: str) -> str:
return f"It is sunny and 22Β°C in {city}."
chat = Chat(
"huggingface:NobodyWho/LFM2.5-1.2B-Instruct-GGUF/LFM2.5-1.2B-Instruct-Q8_0-vendor-sampling.gguf",
tools=[get_weather],
)
print(chat.ask("What is the weather in Paris?").completed())
```
> [!NOTE]
> Tool calling with LFM models ships in the upcoming `nobodywho` release
> ([PR #564](https://github.com/nobodywho-ooo/nobodywho/pull/564)). These files also work in any other
> llama.cpp-based runtime; the original unmodified GGUFs live in the upstream
> [LiquidAI/LFM2.5-1.2B-Instruct-GGUF](https://huggingface.co/LiquidAI/LFM2.5-1.2B-Instruct-GGUF) repo.
## Why
The upstream template renders only `message.content`. Runtimes that store tool
calls in the structured `tool_calls` field (the HF "unified tool use"
convention, used by NobodyWho and OpenAI-style APIs) re-render assistant
tool-call turns as **empty turns**, so the model never sees its own previous
calls β€” causing re-issued tool calls and degraded multi-turn tool use.
The fixed template renders them in the model's native markup:
```
<|tool_call_start|>[get_weather(city="Paris")]<|tool_call_end|>
```
## Files
| File | Fix recipe | NobodyWho tool-suite score |
|---|---|---|
| `LFM2.5-1.2B-Instruct-Q8_0-vendor-sampling.gguf` | template + vendor sampling | 14/14 |
| `LFM2.5-1.2B-Instruct-F16.gguf` | template only | 14/14 |
| `LFM2.5-1.2B-Instruct-Q4_0-vendor-sampling.gguf` | template + vendor sampling | 12/14 (double-calls two tests) |
## Sampling notes
The Q4_0 and Q8_0 files embed LiquidAI's recommended sampling as
`general.sampling.*` metadata, taken from the vendor's LEAP deployment config:
`temperature 0.3`, `min_p 0.15`, `repetition_penalty 1.05`. The F16
deliberately ships **without** sampling metadata: at full precision, embedding
those values drops the bash-writing test (13/14 vs 14/14 with default
sampling), so runtimes fall back to their own defaults.
> The embedded values were previously `temp 0.1, top_k 50` (the vendor's
> *model-card* prose, which conflicts with its LEAP config) and have been
> corrected to the LEAP values above. All scores re-verified against these
> files with the corrected sampler: Q8_0 **14/14**, F16 **14/14**
> (sampling-free), F16 + vendor sampling 13/14, Q4_0 **12/14** (double-calls
> two tests).
## Use
Verified against [NobodyWho](https://github.com/nobodywho-ooo/nobodywho)'s
14-test tool-calling suite (single and multi-call, nested arguments,
multi-turn) β€” see PR [#564](https://github.com/nobodywho-ooo/nobodywho/pull/564).
Works as a drop-in replacement for the upstream Q8_0 file in any
llama.cpp-based runtime.
## Model Details
| Property | Value |
|---|---|
| Parameters | 1.2B |
| Context length | 128,000 tokens |
| License | [LFM Open License v1.0](LICENSE) |
| Base model | [LiquidAI/LFM2.5-1.2B-Instruct](https://huggingface.co/LiquidAI/LFM2.5-1.2B-Instruct) |
## License
LFM Open License v1.0, unchanged from upstream β€” see [LICENSE](LICENSE).
All credit for the model goes to [Liquid AI](https://huggingface.co/LiquidAI).