Instructions to use hyperquader/ministral-3-3b-amberlin-tools with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use hyperquader/ministral-3-3b-amberlin-tools with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="hyperquader/ministral-3-3b-amberlin-tools") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# pip install -U transformers accelerate # Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("hyperquader/ministral-3-3b-amberlin-tools") model = AutoModelForMultimodalLM.from_pretrained("hyperquader/ministral-3-3b-amberlin-tools", device_map="auto") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] inputs = processor.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=256) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use hyperquader/ministral-3-3b-amberlin-tools with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "hyperquader/ministral-3-3b-amberlin-tools" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "hyperquader/ministral-3-3b-amberlin-tools", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker
docker model run hf.co/hyperquader/ministral-3-3b-amberlin-tools
- SGLang
How to use hyperquader/ministral-3-3b-amberlin-tools with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "hyperquader/ministral-3-3b-amberlin-tools" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "hyperquader/ministral-3-3b-amberlin-tools", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "hyperquader/ministral-3-3b-amberlin-tools" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "hyperquader/ministral-3-3b-amberlin-tools", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }' - Docker Model Runner
How to use hyperquader/ministral-3-3b-amberlin-tools with Docker Model Runner:
docker model run hf.co/hyperquader/ministral-3-3b-amberlin-tools
Ministral 3 3B โ amberlin-tools
A fine-tune. mistralai/Ministral-3-3B-Instruct-2512-BF16 with a LoRA
adapter merged in, trained to make Amber Linux's
tool calls and to answer from what they return. It is the CPU tier: the model
a machine without a GPU runs. These are the merged bf16 weights. The adapter
alone is
-adapter,
and the builds the desktop loads are
-onnx.
Its larger sibling is
ministral-3-8b-amberlin-tools.
Amberlin is Amber Linux's speech-first assistant. Its tools come from a local
tool server, amberlin-tools; the 3B is offered the eight that read: the
clock, date arithmetic, time zones, this machine's readings, a search over
notes, clipboard and terminal history, and reading, listing and searching
files. A turn is one tool round, then an answer written as one JSON object,
{"summary", "answer"}. The summary is spoken and the answer is drawn.
What it fixes
The untuned 3B called some tool for almost anything: on 29 of 31 requests for a tool it is not offered (write a note, run git, draw a picture) and on 3 of 16 that needed none, a greeting answered with the clock. With its one round spent it sometimes wrote another call into the answer, which reaches the user as an empty reply.
Measured
119 held-out turns, run whole as the broker runs the 3B: one tool round on
the answer branch, each call executed against the live tool server, then the
answer under the answer grammar with no tools offered. Generation is the
int4 CPU build in -onnx; the untuned row is
the conversion,
same split, same server.
| untuned | this model | |
|---|---|---|
| right tool on the first call | 64 / 72 | 70 / 72 |
| every gold argument | 48 / 72 | 66 / 72 |
| no call when none was needed | 13 / 16 | 16 / 16 |
| asked for a tool it is not offered, declined | 3 / 31 | 28 / 31 |
| broken answers, all turns | 9 / 119 | 0 / 119 |
| the 119 turns, on an i7-13700K | 59 min | 47 min |
A broken answer does not parse, ran to the 1,024-token budget, or carries a
stray }, an open fence, a ```json or nothing. The turns run faster
because it makes fewer calls.
The same split spoken by Amber Linux's own text-to-speech and transcribed by its speech recognition, on the CUDA build: the right tool on 56 of 72 against 55, a request for an unoffered tool declined 30 times in 31 against 2, no broken answer against 9. Every routing miss there is a file path said aloud.
What it does not fix. It reads a result wrong now and then: asked for 3:30pm London in Tokyo it called the tool correctly, got 23:30 back and answered 9:30pm. Nothing in these numbers scores whether an answer carries the result it was given. The held-out prompts are written like the training prompts, so every rate here is in-distribution, not a production expectation. Loss on the held-out split rose from 0.83 to 1.02 over training while the turn scores improved; that split's targets are hand-written gold calls, so the turns are what count, and they picked the first epoch.
How it was trained
The data is distilled, for this model's turn. 1,091 whole turns written
by a teacher,
RadixArk/Qwen3.8-27B-NVFP4
(Apache 2.0), given the request the broker sends the 3B โ one tool round โ
and calling the same live tool server. Every call was executed; a turn was
kept only if its calls passed the schemas and its answer passed mechanical
checks (parses, no narration, no claimed action, no leaked call syntax). By
kind: 386 answered from a tool result, 310 recovered from a failed call, 178
answered with no tool, 124 calls to a private read trained without its
result, 93 declined a tool not offered. The held-out prompts are excluded.
A turn is trained in the context it is served in. The system prompt is the broker's for the 3B, the tools are the offered eight, the answer after the round is trained with no tools offered, and every call's arguments are in the schema's property order, which the grammar enforces one way. Tool results and prompts are masked; only the calls and the answers are trained.
| setting | value |
|---|---|
| base | mistralai/Ministral-3-3B-Instruct-2512-BF16 |
| LoRA | r 16, alpha 32, dropout 0.05 |
| target | q, k, v, o, gate, up and down projections of every language layer; the vision tower is untouched |
| epochs | 3 trained, the first published (112 steps, effective batch 16) |
| learning rate | 2e-4, cosine, 3 % warm-up |
| sequence | 4,096 tokens, over-length turns dropped, never truncated |
| precision | bf16 |
| hardware | one DGX Spark, 4 h 3 min for the three epochs |
The pipeline is amberlin-trainstation.
Using it
The checkpoint is the base's image-text-to-text model with the language tower
changed. Load it as the base loads, AutoModelForImageTextToText, and render
prompts with its chat template. A call is [TOOL_CALLS]name[ARGS]{โฆ}, both
markers single special tokens. It was trained on Amberlin's system prompt and
answer object; without them it is a Ministral 3 that calls tools somewhat
more carefully.
Licence and attribution
Apache 2.0, inherited from the base model. The base weights are Mistral AI's work and the training turns were written by Qwen3.8-27B; this repository contributes the training and the measurements.
- Downloads last month
- 20
Model tree for hyperquader/ministral-3-3b-amberlin-tools
Base model
mistralai/Ministral-3-3B-Base-2512