Ce que vous téléchargez
Un adaptateur LoRA, pas un modèle autonome et pas une application comptable complète. Il exige
les poids de base Qwen/Qwen3-8B. Le checkpoint 300 du run beta8 est sélectionné ; l'étape finale
350, qui a régressé dans les essais locaux, n'est pas publiée. Aucune fusion ou quantification
nouvelle de l'adaptateur n'est effectuée.
Cette publication est une bêta expérimentale pour exploration et recherche, pas une version
stable ni une garantie de conformité. Français uniquement. Les PDF, transcriptions, datasets,
contextes SYSCOHADA et états d'optimiseur ne sont pas distribués.
Base et entraînement
- Base :
Qwen/Qwen3-8B, révision e8bbd8252970581ea5b08b6a5b3e668adaf3161a.
- Méthode : QLoRA, socle chargé en NF4 4 bits ; adaptateur LoRA de rang 32, alpha 64, dropout 0,05.
- Modules : projections q/k/v/o et gate/up/down.
- Run :
seshat-ohada-8b-v0.2.0-beta8-run001, 350 étapes terminées, checkpoint 300 retenu.
- Dataset local provisoire :
provisional-accounting-v0.3.8, non distribué, revue encore ouverte.
- Empreintes :
PROVENANCE.json distingue la configuration originale et celle exportée avec
révision du socle épinglée. Les poids de l'adaptateur restent inchangés.
Évaluation : ne pas confondre poids et système
Les évaluations locales comprennent le modèle, le routage déterministe et les gardes. Certains
tableaux, salutations et réponses sourcées sont produits par le logiciel, pas par les poids seuls.
Ce runtime et ses sources ne font pas partie de ce dépôt. Télécharger l'adaptateur ne reproduit donc
pas toutes les protections ou tous les résultats du système local.
La passe v4 précédente obtenait 73/75, avec deux omissions de code pays ; un correctif a ensuite
réussi un rejeu ciblé de 10/10. La passe complète de publication, ses résultats exacts et son
empreinte sont consignés dans PROVENANCE.json. Ce jeu de 75 cas est déjà exposé : il ne constitue
pas un benchmark indépendant ou une validation comptable humaine. Un éventuel score de 100 % sur
ce jeu ne démontre pas la fiabilité en production.
Limites, usages et droits
- Les erreurs de corpus, la fiscalité nationale, les exceptions sectorielles et les faits ambigus
nécessitent des sources actuelles et une revue qualifiée.
- La devise de tenue dépend du pays : ne pas traiter tous les francs CFA comme interchangeables.
- Une facture peut nécessiter plusieurs écritures ; leur équilibre ne prouve pas leur exactitude.
- Aucun traitement natif des PDF, images, DOCX ou XLSX : extraction et contrôle sont externes.
- Aucun historique persistant intégré : l'appelant fournit et protège les messages de conversation.
- Aucune auto-approbation, écriture définitive, exécution de paiement ou garantie juridique/fiscale.
- N'envoyez pas de documents clients ou de données personnelles à un service non sécurisé.
Le propriétaire choisit Apache 2.0 pour les contributions distribuées ici. Les notices applicables
au socle sont conservées. Les droits des sources d'entraînement restent à clarifier dans le
registre du projet ; cette licence ne concède aucun droit sur les textes OHADA, les PDF ou les
datasets non inclus. La publication expérimentale ne signifie pas que les gates d'une version
stable, notamment revue indépendante et droits, ont été satisfaites.
Chargement minimal — sans les protections du produit
Environnement de référence : PyTorch 2.8.0, Transformers 4.57.1, PEFT 0.17.1, Accelerate 1.10.1,
bitsandbytes 0.49.2 et safetensors 0.6.2. Utilisez un GPU CUDA compatible ; aucun repli CPU n'est
promis. Les besoins matériels dépendent de la quantification et du contexte.
import torchfrom transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfigfrom peft import PeftModel base = "Qwen/Qwen3-8B"base_revision = "e8bbd8252970581ea5b08b6a5b3e668adaf3161a"adapter = "seshataitech/Seshat-ohada-8B-v0.2.0-beta8"adapter_revision = "v0.2.0-beta8-step300" tokenizer = AutoTokenizer.from_pretrained(base, revision=base_revision, trust_remote_code=False)model = AutoModelForCausalLM.from_pretrained( base, revision=base_revision, trust_remote_code=False, device_map="auto", dtype=torch.bfloat16, quantization_config=BitsAndBytesConfig( load_in_4bit=True, bnb_4bit_quant_type="nf4", bnb_4bit_use_double_quant=True, bnb_4bit_compute_dtype=torch.bfloat16, ),)model = PeftModel.from_pretrained(model, adapter, revision=adapter_revision, is_trainable=False)model.eval()messages = [ {"role": "system", "content": "Réponds en français. Ne présente jamais une proposition comme approuvée."}, {"role": "user", "content": "Explique la différence entre débit et crédit sans inventer de numéros de compte."},]text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True, enable_thinking=False)inputs = tokenizer(text, return_tensors="pt").to(model.device)with torch.inference_mode(): outputs = model.generate(**inputs, max_new_tokens=192, do_sample=False, pad_token_id=tokenizer.eos_token_id)print(tokenizer.decode(outputs[0][inputs.input_ids.shape[1]:], skip_special_tokens=True))
Signalements et versions
Signalez les erreurs reproductibles via les discussions du dépôt, avec prompt synthétique, version
et sortie, sans données personnelles. Toute modification des poids doit recevoir une nouvelle
version. Les versions antérieures ne sont pas remplacées silencieusement. Ce dépôt ne déploie ni
un Space de chat, ni un endpoint d'inférence payant.