MORENA tools (GGUF)

Two small MORENA models fine-tuned to turn Pidgin, Yoruba, Igbo, Hausa and English into API calls, quantised to run on a laptop CPU.

Live demo: https://vambo--morena-pay-pay-web.modal.run Code: thisisisheanesu/morena-tools Data: thisisisheanesu/morena-tools-nigerian-fintech

file params size
mini-tools-Q4_K_M.gguf 503M 311 MB
nano-tools-Q4_K_M.gguf 209M 136 MB

Use mini unless you need the smaller one. It matches nano on tool selection and beats it on every behaviour that involves deciding what to do.

Results

Two held-out benchmarks. Neither model wins outright, so both files are here.

Tool calling, held-out Paystack menu

base nano-tools mini-tools
Picks the right tool 0 to 9% 90.9% 100%
Decides to call unprompted 18 to 27% 90.9% 100%
Uses only declared arguments 0% 100% 100%
Edits one field, not all 0% 100% 100%
Stays quiet when no tool fits 0 to 13% 75% 25%
Follows a mid-conversation language switch 0% 100% 100%
Carries a thread across six turns 0% 100% 100%
Answers in the user's language 0 to 50% 75% 100%

Seedance 2.5, 120 held-out briefs

An African-language video brief in, an instruction postable to Seedance unedited out. Scored structurally, never against a reference wording, because a shot has no single right answer.

nano-tools mini-tools
Chose seedance_generate over four other endpoints 100% 100%
Prompt carries the camera clause 100% 100%
Camera terms Seedance understands 100% 100%
Aspect ratio matches the purpose 99.2% 100%
Duration inside 4 to 30 seconds 100% 100%
Replied in the user's language 96.7% 99.2%
Every check passing on one brief 87.5% 90.0%

Use mini unless you need small talk handled. It leads on every axis except one: it over-calls, answering "Good morning, how are you today?" with a balance lookup, where nano abstains correctly three times as often. Quantisation costs nothing measurable on either.

The camera vocabulary these models use was mined from 400 screenplays, 520,378 scene sentences reduced to 34 canonical terms and their real co-occurrence frequencies. The screenplays themselves are not redistributed: their camera grammar is functional vocabulary, and only that was kept.

Prompt format

The chat markers are single reserved tokens, not text:

tool call   <eos><reserved_0>\n<reserved_2>{menu_json}\n{question}\n<reserved_1><reserved_3>
prose       <eos><reserved_0>\n<reserved_2>{menu_json}\n{question}\n<reserved_1>\n

The token after <reserved_1> is the decision: <reserved_3> opens a call, a newline opens prose. {menu_json} is a JSON array of {"name", "description", "arguments"}.

A multi-turn edit replays the pending call and appends the correction:

<reserved_0>\n<reserved_2>{menu}\n<reserved_1><reserved_3>{pending_call}<reserved_0>\n{correction}\n<reserved_1>

The reply is a patch, {"op":"patch","set":{...}}, carrying only what changed.

Running it

llama-server -m mini-tools-Q4_K_M.gguf --no-jinja -c 4096

--no-jinja matters. The chat-template parser rejects an otherwise valid response when the model trails a stray byte, and returns a 500 for a completion that was correct.

Do not set a repetition penalty. It penalises repeated braces and quotes, which is what JSON is made of, and pushes the model into an invalid token right after a correct call.

Training

One A100 each, 25 and 33 minutes, resumed from the released checkpoints with a WSD decay to zero. 21,407 records over 24,000 distinct tool menus. The write-up, including three mistakes that each cost a run, is in the code repository.

Downloads last month
52
GGUF
Model size
0.5B params
Architecture
llama
Hardware compatibility
Log In to add your hardware

4-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for thisisisheanesu/morena-tools-gguf

Quantized
(2)
this model