1from transformers import AutoTokenizer, AutoModelForCausalLM
2from peft import PeftModel
3import torch
4
5base = AutoModelForCausalLM.from_pretrained(
6 "meta-llama/Llama-3.1-8B-Instruct",
7 torch_dtype=torch.bfloat16, device_map="auto",
8)
9model = PeftModel.from_pretrained(base, "BrainHealthAI/MedQA-Llama3.1-8B-SFT-Big")
10tok = AutoTokenizer.from_pretrained("BrainHealthAI/MedQA-Llama3.1-8B-SFT-Big")
11
12SYSTEM_FR = (
13 "Vous êtes un assistant médical rigoureux. Répondez TOUJOURS en français. "
14 "Raisonnez d'abord entre <think>...</think>, puis donnez la réponse finale "
15 "entre <answer>...</answer>."
16)
17
18msgs = [
19 {"role": "system", "content": SYSTEM_FR},
20 {"role": "user", "content": "Question : Quels sont les symptômes du diabète de type 2 ?"},
21]
22inputs = tok.apply_chat_template(msgs, return_tensors="pt", add_generation_prompt=True).to(model.device)
23out = model.generate(inputs, max_new_tokens=512, do_sample=False)
24print(tok.decode(out[0], skip_special_tokens=True))
For Darija (Arabic-script) questions, the model replies in Arabic-script Darija.
For English questions, in English. The system prompt MUST instruct the language
explicitly to avoid drift.
For comparison, see
Williamsanderson/MedQA-Llama3.1-8B-SFT-Small —
trained on a different (smaller, single-language) corpus without KG augmentation.
1@misc{medqa_sft_big_2026,
2 title = { MedQA-Llama3.1-8B-SFT-Big: Trilingual medical QA via QLoRA SFT on Llama-3.1-8B with Dorosz KG },
3 author = { BRAIN HEALTH project — Operation HELIX-FT },
4 year = { 2026 },
5 url = { https://huggingface.co/BrainHealthAI/MedQA-Llama3.1-8B-SFT-Big }
6}