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
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for Christ972/AfriChat