julienawonga/gemma-4-ivorian-labor-law-merged
014
Gemma 4 Ivorian Labor Law (Merged)
Ce modèle est une version fusionnée (merged) de Gemma 4, spécialement entraînée sur le Code du Travail de la République de Côte d'Ivoire (RCI).
🛠 Historique du Modèle
- Modèle de base :
unsloth/gemma-4-E4B-it-unsloth-bnb-4bit - Adaptateur LoRA utilisé :
solojunior22/gemma4-droit-ivoirien-lora - Méthode : Le fine-tuning a été réalisé avec Unsloth, puis les poids ont été fusionnés en 16-bit (bfloat16) pour permettre une utilisation native avec vLLM et Transformers, sans avoir besoin de l'adaptateur séparé.
⚖️ Expertise Juridique
Le modèle a été entraîné pour répondre aux questions relatives à la législation du travail en Côte d'Ivoire, notamment :
- Les types de contrats (CDD, CDI, contrat d'apprentissage).
- Les procédures de licenciement et le calcul des indemnités.
- La durée du travail, les congés payés et les obligations sociales.
- Le rôle des syndicats et de l'inspection du travail.
🚀 Utilisation avec vLLM
Pour servir ce modèle avec vLLM (OpenAI-compatible API) :
vllm serve julienawonga/gemma-4-ivorian-labor-law-merged --dtype bfloat16 --trust-remote-code🛠 Utilisation avec Transformers (Python)
Idéal pour tester dans Google Colab :
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
model_id = "julienawonga/gemma-4-ivorian-labor-law-merged"
# Configuration pour optimiser l'usage de la VRAM (Quantization 4-bit)
quantization_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_compute_dtype=torch.bfloat16,
bnb_4bit_quant_type="nf4",
bnb_4bit_use_double_quant=True,
)
print("Chargement du tokenizer et du modèle...")
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
device_map="auto",
quantization_config=quantization_config,
trust_remote_code=True
)
# 3. Fonction d'Inférence
def ask_labor_law(question):
instruction = "Réponds de manière détaillée en citant si possible les articles du Code du Travail ivoirien."
chat_prompt = f"<start_of_turn>user\n{instruction}\n{question}<end_of_turn>\n<start_of_turn>model\n"
inputs = tokenizer(chat_prompt, return_tensors="pt").to("cuda")
outputs = model.generate(
**inputs,
max_new_tokens=1024,
temperature=0.4,
do_sample=True,
repetition_penalty=1.1,
top_p=0.9,
pad_token_id=tokenizer.eos_token_id
)
generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
response = generated_text.split("model")[-1].strip() if "model" in generated_text else generated_text
return response
# Exemple d'utilisation
question_test = "Quelles sont les conditions de forme et de fond pour la validité d'un CDD ?"
print(f"Question: {question_test}\n")
print(ask_labor_law(question_test))
)⚠️ Avertissement Légal
Ce modèle fournit des informations basées sur le Code du Travail ivoirien mais ne remplace en aucun cas les conseils d'un avocat qualifié. L'auteur ne saurait être tenu responsable des décisions prises sur la base des réponses du modèle.
