Tɛkyerɛma-1 tool adapter (arm 1)

Author: Prince Nasamu Alhassan

Overview

Qwen3-4B + LoRA. Picks one of 21 phone tools from an utterance. Trained on router_input — the text AFTER an eng→X→eng round trip — so it learns to recover intent from translation damage.

Arm ① against arm ②, measured 2026-08-31. 60 commands whose text appears nowhere in training (139 candidates skipped for repeating it), each arm reading the input it was trained for:

language arm ① (translate, then route) arm ② (native)
Kusaal 6/12 9/12
Ewe 13/13 12/13
Dagbani 8/8 8/8
Ghanaian English 10/10 10/10
Hausa 7/7 7/7
Twi 10/10 10/10
total 54/60 · 90.0% 56/60 · 93.3%

Removing the translator costs nothing in five languages and gains three points in Kusaal — the language whose translation is weakest, which is exactly where the argument for arm ② predicted it would matter.

The comparison is text-only, and both sides read machine-translated corpus text, so it measures ROUTING rather than the spoken pipeline. On this evidence arm ② is the one to serve.

Use it

A LoRA adapter: load the base, then apply it. Take the tokenizer from the base, not from this repo — the adapter's saved tokenizer carries a chat template that silently ignores enable_thinking, and without that flag Qwen3 opens a reasoning block and never reaches the JSON.

import torch
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer

BASE = "Qwen/Qwen3-4B"
tok  = AutoTokenizer.from_pretrained(BASE)         # the BASE, deliberately
model = PeftModel.from_pretrained(
    AutoModelForCausalLM.from_pretrained(
        BASE, dtype=torch.bfloat16, device_map="auto"),
    "PrinceAlhassanNasamu/tekyerema-1-tool").eval()

prompt = tok.apply_chat_template(
    [{"role": "user", "content": TOOL_PROMPT}],    # schema + user command
    add_generation_prompt=True, tokenize=False,
    enable_thinking=False)                         # not optional
enc = tok(prompt, return_tensors="pt").to(model.device)
out = model.generate(**enc, max_new_tokens=96, do_sample=False)
print(tok.decode(out[0][enc["input_ids"].shape[1]:],
                 skip_special_tokens=True))

TOOL_PROMPT must carry the full 21-tool schema exactly as training did — see H200/sessions/s3_train_tekyerema1.py. Asked without it, the model has no tool names to choose from and scores zero.

Training data

Trained on the Ghana Speech dataset and related Ghanaian corpora, licensed CC BY-NC 4.0.

Intended use & license

Non-commercial use only (CC BY-NC 4.0). This is inherited from the training data and required by the terms under which the compute was granted: models trained in that window are non-commercial by condition of access, not by inference.

Limitations, stated plainly

  • Dagbani had no recogniser of its own for this whole project, and the reason given for that was wrong. Every card here said "one fine-tuning session on 74 validation rows would not change that". Those 74 rows are the eng-dag machine-translation validation split. The Dagbani speech data in this same account is waxal_dag: 13,228 training rows, 1,750 validation rows, ~71 hours, 1,041 speakers with the largest at 1% — more data and better speaker diversity than Ewe, which produced a working 42.19 WER recogniser. A number was carried across from a translation table into a speech claim, and then repeated on every model card on the account. It is training now, on 2026-08-31. Until it is scored, the honest statement is that Dagbani's best available recogniser scores 86.6 WER and nobody had tried fine-tuning on the data already in hand.
  • Evaluation is on read and machine-translated text. No recordings of people speaking agent commands in these languages exist. Numbers measured this way are optimistic about phrasing and pessimistic about code-switching, and should not be read as field performance.
  • Research work from a hackathon entry, not a supported product.

The rest of the family

Recognisers

Voices

Agent models

Translation

Routing

Acknowledgements

Compute resources provided by AI Skills and Compute Africa (AISCA). Trained on the Ghana NLP H200 GPU. Please keep derivatives non-commercial and share improvements back with the Ghana NLP community (ghananlpcommunity).

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for PrinceAlhassanNasamu/tekyerema-1-tool

Finetuned
Qwen/Qwen3-4B
Finetuned
(1006)
this model