Instructions to use andreagemelli/LFM2.5-350M-IT-Extract-GGUF with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use andreagemelli/LFM2.5-350M-IT-Extract-GGUF with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf andreagemelli/LFM2.5-350M-IT-Extract-GGUF:Q4_K_M # Run inference directly in the terminal: llama cli -hf andreagemelli/LFM2.5-350M-IT-Extract-GGUF:Q4_K_M
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf andreagemelli/LFM2.5-350M-IT-Extract-GGUF:Q4_K_M # Run inference directly in the terminal: llama cli -hf andreagemelli/LFM2.5-350M-IT-Extract-GGUF:Q4_K_M
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf andreagemelli/LFM2.5-350M-IT-Extract-GGUF:Q4_K_M # Run inference directly in the terminal: ./llama-cli -hf andreagemelli/LFM2.5-350M-IT-Extract-GGUF:Q4_K_M
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf andreagemelli/LFM2.5-350M-IT-Extract-GGUF:Q4_K_M # Run inference directly in the terminal: ./build/bin/llama-cli -hf andreagemelli/LFM2.5-350M-IT-Extract-GGUF:Q4_K_M
Use Docker
docker model run hf.co/andreagemelli/LFM2.5-350M-IT-Extract-GGUF:Q4_K_M
- LM Studio
- Jan
- vLLM
How to use andreagemelli/LFM2.5-350M-IT-Extract-GGUF with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "andreagemelli/LFM2.5-350M-IT-Extract-GGUF" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "andreagemelli/LFM2.5-350M-IT-Extract-GGUF", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/andreagemelli/LFM2.5-350M-IT-Extract-GGUF:Q4_K_M
- Ollama
How to use andreagemelli/LFM2.5-350M-IT-Extract-GGUF with Ollama:
ollama run hf.co/andreagemelli/LFM2.5-350M-IT-Extract-GGUF:Q4_K_M
- Unsloth Desktop
- Pi
How to use andreagemelli/LFM2.5-350M-IT-Extract-GGUF with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf andreagemelli/LFM2.5-350M-IT-Extract-GGUF:Q4_K_M
Configure the model in Pi
# Install Pi: npm install -g @earendil-works/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "andreagemelli/LFM2.5-350M-IT-Extract-GGUF:Q4_K_M" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use andreagemelli/LFM2.5-350M-IT-Extract-GGUF with Docker Model Runner:
docker model run hf.co/andreagemelli/LFM2.5-350M-IT-Extract-GGUF:Q4_K_M
- Lemonade
How to use andreagemelli/LFM2.5-350M-IT-Extract-GGUF with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull andreagemelli/LFM2.5-350M-IT-Extract-GGUF:Q4_K_M
Run and chat with the model
lemonade run user.LFM2.5-350M-IT-Extract-GGUF-Q4_K_M
List all available models
lemonade list
- Hermes Agent
How to use andreagemelli/LFM2.5-350M-IT-Extract-GGUF with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf andreagemelli/LFM2.5-350M-IT-Extract-GGUF:Q4_K_M
Configure Hermes
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default andreagemelli/LFM2.5-350M-IT-Extract-GGUF:Q4_K_M
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use andreagemelli/LFM2.5-350M-IT-Extract-GGUF with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf andreagemelli/LFM2.5-350M-IT-Extract-GGUF:Q4_K_M
Configure OpenClaw
# Install OpenClaw: npm install -g openclaw@latest # Register the local server and set it as the default model: openclaw onboard --non-interactive --mode local \ --auth-choice custom-api-key \ --custom-base-url http://127.0.0.1:8080/v1 \ --custom-model-id "andreagemelli/LFM2.5-350M-IT-Extract-GGUF:Q4_K_M" \ --custom-provider-id llama-cpp \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
LFM2.5-350M-IT-Extract-GGUF
GGUF build of andreagemelli/LFM2.5-350M-IT-Extract,
a 350M model fine-tuned for key information extraction (KIE) from Italian forms: give it a
document's text plus a field schema, get a JSON object back.
This is the file that ships inside Scrivano — a fully offline desktop app that reads Italian forms on a laptop CPU, no API key and no network. The whole point of the quantised build is that it's small enough to bundle and run locally.
| Quantisation | Q4_K_M |
| Size | 219 MiB |
| Base (fine-tuned) model | andreagemelli/LFM2.5-350M-IT-Extract |
| Original base | LiquidAI/LFM2.5-350M |
| Dataset | andreagemelli/xfund-kie-it |
| Language | Italian |
What it does
The model takes a system prompt describing the fields to extract (each a key + a
natural-language description) and a user message containing the document text, and returns a
JSON object with the requested keys, omitting any field it can't find.
It was fine-tuned on prompts averaging seven fields, so it works best with a tight schema. It learned the shape of the task — find the value, put it under the right key, close the brace — not Italian knowledge. This is a 350M model: read the output, don't trust it.
Usage
llama.cpp
# server
llama-server -hf andreagemelli/LFM2.5-350M-IT-Extract-GGUF -c 4096
# one-shot
llama-cli -hf andreagemelli/LFM2.5-350M-IT-Extract-GGUF -p "..."
llama-cpp-python
from llama_cpp import Llama
llm = Llama.from_pretrained(
repo_id="andreagemelli/LFM2.5-350M-IT-Extract-GGUF",
filename="*Q4_K_M.gguf",
n_ctx=4096,
)
system = (
"Extract the following fields from the document and return a JSON object. "
"Omit any field not present.\n"
"- nome-completo: the person's full name\n"
"- codice-fiscale: the Italian tax code\n"
"- data-nascita: the date of birth\n"
"- indirizzo: the residential address"
)
document = "…text of the Italian form…"
out = llm.create_chat_completion(
messages=[
{"role": "system", "content": system},
{"role": "user", "content": document},
],
temperature=0.0,
)
print(out["choices"][0]["message"]["content"])
The chat template is embedded in the GGUF. Greedy decoding (temperature = 0) is recommended for
deterministic extraction — that's what Scrivano ships.
Evaluation
Measured on the 50-document Italian validation split of
xfund-kie-it, greedy decoding.
| Model | Avg F1 | JSON parse failures |
|---|---|---|
LiquidAI/LFM2-350M-Extract (reference) |
0.2532 | 6 / 50 |
LiquidAI/LFM2.5-350M (base) |
0.2138 | 0 / 50 |
andreagemelli/LFM2.5-350M-IT-Extract |
0.5311 | 10 / 50 |
| same, Q4_K_M GGUF | 0.5307 | 10 / 50 |
| same, Q4_K_M on the app's own OCR text | 0.4362 | 10 / 50 |
Quantising to Q4_K_M is essentially free (0.5311 → 0.5307): the thing you ship is the thing you measured. End-to-end, OCR costs about 0.10 F1.
These are upper bounds: the schema is oracle-filtered (the model is told which fields the document
contains), parse failures are excluded rather than scored zero, and the metric double-counts a wrong
value. Reproduce with uv run main.py from the repo.
Limitations
- Beta; first fine-tune on 149 training documents, so it's very sensitive to the schema descriptions — edit those before blaming the document, and prefer a tight schema.
- Only single-page Italian extraction is tested.
- Valid JSON is not guaranteed (10/50 validation outputs didn't parse strictly).
- A right-looking value placed under the wrong key is not flagged.
Links
- App & code: https://github.com/andreagemelli/scrivano
- Blogpost: https://www.andreagemelli.me/posts/scrivano/
- Downloads last month
- -
4-bit
Model tree for andreagemelli/LFM2.5-350M-IT-Extract-GGUF
Base model
LiquidAI/LFM2.5-350M-Base