Instructions to use Christ972/AfriChat with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use Christ972/AfriChat with PEFT:
from peft import PeftModel from transformers import AutoModelForCausalLM base_model = AutoModelForCausalLM.from_pretrained("mistralai/Mistral-Nemo-Instruct-2407") model = PeftModel.from_pretrained(base_model, "Christ972/AfriChat") - Notebooks
- Google Colab
- Kaggle
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 :
| Registre | Style |
|---|---|
| Nouchi | « Eh mon gars ! C'est comment ? » |
| Camfranglais | « For real, ça va today ? » |
| Lomé | « Molo molo, on palabre. » |
| Générique | « Ça va hein, on se bat. Et toi ? » |
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
| Paramètre | Valeur |
|---|---|
| Modèle de base | mistralai/Mistral-Nemo-Instruct-2407 (12B) |
| Méthode | QLoRA fine-tuning 4-bit |
r (rank) |
64 |
lora_alpha |
128 |
lora_dropout |
0.05 |
| Modules ciblés | q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj |
| Longueur max entraînement | 1536 tokens |
| Epochs | 4 |
| Learning rate | 2e-4 |
| Batch effectif | 8 (1 × grad accum 8) |
Métriques d'entraînement
| Métrique | Valeur |
|---|---|
| Exemples train | 500 |
| Exemples validation | 55 |
train_loss final |
~2.93 |
| Global steps | 248 |
Dataset d'entraînement
555 conversations multi-tours en JSON, 4 registres linguistiques :
| Registre | Conversations |
|---|---|
| Nouchi | 143 |
| Générique | 146 |
| Camfranglais | 134 |
| Togo / Lomé | 132 |
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 accelerate
Chargement 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
| Type de message | Moteur |
|---|---|
| Salutations, small talk | Modèle de base + prompt système AfriChat |
| Questions, galères, conseils | Base + adaptateur LoRA AfriChat |
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 — projet open source. Code : KELI-Kekeli-Christ/africhat
- Downloads last month
- 59
Model tree for Christ972/AfriChat
Base model
mistralai/Mistral-Nemo-Base-2407