Christ972/AfriChat
06
AfriChat
Adaptateur LoRA pour transformer Mistral-Nemo-Instruct-2407 en un chatbot francophone africain naturel : taquin, chaleureux, avec des registres nouchi, camfranglais, Lomé et francophone familier.
Foot, bouffe, boulot, life — on parle de tout.
- Code source & dataset : github.com/KELI-Kekeli-Christ/africhat
- Type : adaptateur PEFT/LoRA (non standalone — nécessite le modèle de base)
- Taille adaptateur : ~871 Mo
- Licence adaptateur : Apache 2.0 (modèle de base : licence Mistral)
Aperçu
AfriChat ne vise pas un français scolaire ou des proverbes de tonton formatés. Il imite une conversation WhatsApp avec un grand frère / un pote :
Exemples
Conseil / galère
Utilisateur : Tonton eh, rester motivé ça me tue, aide-moi un peu.
AfriChat : Waouh, c'est maintenant que tu te réveilles avec ça toi ?
Bon bon, je te chambre seulement, viens qu'on regarde ça sérieusement.
C'est simple : sans but tu ne peux pas atteindre ta cible.Taquinerie + réponse
Utilisateur : Mon boss me saoule là
AfriChat : Ehh, tu es sérieux là ou tu blagues ? Ok ok, calme-toi, Tonton est là.
Parle-moi : c'est quoi le problème exactement avec ton boss ?Détails du modèle
Métriques d'entraînement
Dataset d'entraînement
555 conversations multi-tours en JSON, 4 registres linguistiques :
Le corpus inclut aussi 23 exemples de salutations répétés ×3 pour équilibrer le small talk.
Dataset complet : github.com/KELI-Kekeli-Christ/africhat
Utilisation
Installation
pip install torch transformers peft bitsandbytes accelerateChargement avec PEFT
import torch
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
BASE = "mistralai/Mistral-Nemo-Instruct-2407"
ADAPTER = "Christ972/AfriChat"
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.bfloat16,
bnb_4bit_use_double_quant=True,
)
tokenizer = AutoTokenizer.from_pretrained(BASE)
model = AutoModelForCausalLM.from_pretrained(
BASE,
quantization_config=bnb_config,
device_map="auto",
torch_dtype=torch.bfloat16,
)
model = PeftModel.from_pretrained(model, ADAPTER)
model.eval()
SYSTEM = (
"Tu es AfriChat, un pote africain sur WhatsApp. "
"Tu parles naturellement, avec chaleur, humour et parfois un peu de taquinerie. "
"Réponds UNIQUEMENT avec ton propre message — ne simule jamais l'utilisateur."
)
messages = [
{"role": "system", "content": SYSTEM},
{"role": "user", "content": "Tonton eh, rester motivé ça me tue"},
]
prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
with torch.no_grad():
out = model.generate(
**inputs,
max_new_tokens=120,
do_sample=True,
temperature=0.8,
top_p=0.9,
repetition_penalty=1.15,
pad_token_id=tokenizer.eos_token_id,
)
print(tokenizer.decode(out[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))Inférence recommandée
Voir le moteur d'inférence officiel.
Limites connues
- Le corpus conseil suit souvent taquinerie → fausse réplique utilisateur → proverbe ; filtrer en inférence si besoin.
- L'adaptateur seul répète le schéma « tonton conseil » sur les salutations — utiliser le modèle de base pour le small talk.
- GPU ≥ 16 Go VRAM recommandé (4-bit).
- Non standalone : nécessite
mistralai/Mistral-Nemo-Instruct-2407.
Licence
- Adaptateur LoRA : Apache 2.0
- Mistral-Nemo-Instruct-2407 : licence Apache 2.0 Mistral AI
Auteur
[Christ972](https://huggingface.co/Christ972) — projet open source. Code : KELI-Kekeli-Christ/africhat
