Text Generation
Transformers
Safetensors
English
Chinese
Malay
qwen2
medical
red-flag
extraction
qwen2.5
multi-lingual
brunei-english
conversational
text-generation-inference
Instructions to use ningpy/redflag-context-3b with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use ningpy/redflag-context-3b with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="ningpy/redflag-context-3b") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# pip install -U transformers accelerate # Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("ningpy/redflag-context-3b") model = AutoModelForCausalLM.from_pretrained("ningpy/redflag-context-3b", device_map="auto") messages = [ {"role": "user", "content": "Who are you?"}, ] inputs = tokenizer.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=256) print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use ningpy/redflag-context-3b with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "ningpy/redflag-context-3b" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "ningpy/redflag-context-3b", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/ningpy/redflag-context-3b
- SGLang
How to use ningpy/redflag-context-3b with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "ningpy/redflag-context-3b" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "ningpy/redflag-context-3b", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "ningpy/redflag-context-3b" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "ningpy/redflag-context-3b", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use ningpy/redflag-context-3b with Docker Model Runner:
docker model run hf.co/ningpy/redflag-context-3b
File size: 5,175 Bytes
8f4f058 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 | ---
license: apache-2.0
base_model: Qwen/Qwen2.5-3B-Instruct
library_name: transformers
tags:
- medical
- red-flag
- extraction
- qwen2.5
- multi-lingual
- brunei-english
language:
- en
- zh
- ms
---
# Red Flag Detection: `context` module (Qwen2.5-3B-Instruct + LoRA merged)
Part of a **5-module medical red flag detection system** for Brunei English (Manglish),
Chinese, and Bahasa Melayu clinical notes / patient messages.
This model is the **`context` extraction module** โ one of 5 specialized modules used
together with a Python rule engine (V20 spec, 59 rules).
## Sister modules
- `peiyan-ning/redflag-symptom-3b` โ 83-symptom multi-label extraction
- `peiyan-ning/redflag-context-3b` โ 12 context flags (post_trauma, drowning, etc.)
- `peiyan-ning/redflag-modifier-3b` โ onset / fever_celsius / consciousness / etc.
- `peiyan-ning/redflag-denied-3b` โ denied symptoms (multi-turn negation)
- `peiyan-ning/redflag-gate-3b` โ 8 population gates (is_pregnant, is_child, ...)
## Performance (2246-case independent test set)
Full 5-module pipeline + rule engine V46:
| Metric | P | R | F1 | Acc |
|---|---|---|---|---|
| PRIMARY (any_matched ร labeled_matched) | **0.902** | **0.911** | **0.906** | 91.9% |
| STRICT matched-only | 0.893 | 0.828 | 0.859 | 91.8% |
| STRICT m+s | 0.844 | 0.905 | 0.873 | 92.1% |
## System prompt used at inference
```
Extract environmental context / mechanism from the user's message.
===== EXTRACT WHEN text mentions =====
- Trauma / fall / accident / crash โ post_trauma
- Recent surgery / procedure โ post_surgery
- Long sitting / long flight / long trip โ post_flight
- Heat / sun exposure / hot day / outdoor 30ยฐC+ โ outdoor_heat
- Pills / medication / chemicals / poison ingested โ substance_ingestion
- Fire / smoke inhaled โ smoke_inhalation
- Chemical fumes / bleach / gas leak โ chemical_exposure
- Cold outdoors / freezing / hypothermia โ cold_exposure
- Water incident / drowning / near-drown โ drowning
- Electric shock / lightning โ electrical_injury
- Snake / spider / scorpion / jellyfish bite/sting โ venomous_bite
- Physical attack / beaten / assault โ serious_assault
===== EXAMPLES =====
"Fell off bike hit head" โ {"context_flags": ["post_trauma"]}
"10-hour flight, chest hurts" โ {"context_flags": ["post_flight"]}
"Been outdoor all day 40 degrees" โ {"context_flags": ["outdoor_heat"]}
"Took double dose of pills" โ {"context_flags": ["substance_ingestion"]}
"Chemical fumes at work" โ {"context_flags": ["chemical_exposure"]}
"Kena patuk ular" โ {"context_flags": ["venomous_bite"]}
"How is asthma treated?" โ {"context_flags": []}
Look for context described DIRECTLY or through natural descriptors.
Output: {"context_flags": [...]}
===== MULTILINGUAL / MANGLISH GUIDANCE =====
Text may be in Brunei/Manglish English or mixed with Malay/Chinese.
Ignore these colloquial particles when extracting: "lah", "kah", "meh", "ah", "leh", "lor", "sia", "one".
Common Manglish/Malay/Chinese mappings:
- "kena panic attack" / "feel like dying" / "jantung deg-deg" โ severe_panic
- "sesak nafas" (Malay) / "ๅไธ่ฟๆฐ" โ breathlessness
- "sakit dada" (Malay) / "่ธๅฃ็ผ" โ chest_pain
- "sakit kepala teruk" / "ๅง็ๅคด็" / "worst headache" โ thunderclap_headache
- "pengsan" (Malay) / "ๆๅ" โ fainting
- "sawan" (Malay) / "ๆฝๆ" โ seizure
- "anak saya" (Malay: my child) โ is_child
- "bayi saya" (Malay: my baby) โ is_baby
- "warga emas" / "่ไบบๅฎถ" โ is_elderly
- "hamil" / "ๆๅญ" โ is_pregnant
- "kencing manis" (Malay: diabetes) โ has_diabetes
- "asma" (Malay: asthma) โ has_asthma
- "kena patuk ular" (Malay: snake bit) โ context_flags: venomous_bite
Auntie/uncle in Manglish family reference: usually elderly family member โ is_elderly.
```
## Usage
```python
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch, json
tok = AutoTokenizer.from_pretrained('peiyan-ning/redflag-context-3b')
model = AutoModelForCausalLM.from_pretrained(
'peiyan-ning/redflag-context-3b',
torch_dtype=torch.float16,
device_map='auto'
)
SYSTEM_PROMPT = tok.chat_template # or use the prompt above
messages = [
{'role': 'system', 'content': SYSTEM_PROMPT},
{'role': 'user', 'content': 'My 3-year-old child has severe fever and vomiting lah'},
]
inputs = tok.apply_chat_template(messages, tokenize=True, add_generation_prompt=True, return_tensors='pt').to(model.device)
out = model.generate(inputs, max_new_tokens=200, do_sample=False)
text = tok.decode(out[0][inputs.shape[1]:], skip_special_tokens=True)
result = json.loads(text)
print(result)
```
## Full pipeline
See [git.evyd.tech/ai/redflag-detection-2.0](https://git.evyd.tech/ai/redflag-detection-2.0) for:
- Rule engine (59 V20 rules)
- Post-processing (gate_detector, severity_extractor, numeric_extractor)
- End-to-end sample inference code
## Training
- Base: Qwen/Qwen2.5-3B-Instruct
- LoRA: r=32, ฮฑ=64, dropout=0.05
- Target modules: q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj
- 2 epochs, LR 2e-4, cosine, warmup 5%, effective batch 32
- Multi-lingual: EN/ZH/MS with Manglish particles (lah/kah/meh)
|