Teaching multilingual LLMs when to trust feedback — and when to abstain.
Overview of CausalAbstain for trustworthy abstention using native-language and multilingual feedback.
Large Language Models (LLMs) exhibit substantial knowledge disparities across languages. A model may confidently answer a question in one language while lacking sufficient knowledge to answer the same question reliably in another.
A natural way to reduce hallucinations is to let the model abstain when it is uncertain. Existing multilingual abstention methods often rely on self-reflection or feedback generated in different languages. However, generated feedback itself can be noisy, biased, or incorrect.
CausalAbstain addresses this problem from a causal perspective:
Instead of trusting generated feedback by default, CausalAbstain estimates whether the feedback actually contributes useful information to the final abstention decision.
The framework measures the effect of answering without feedback and compares it against the effect mediated through feedback. This allows the model to decide both:
CausalAbstain supports two settings:
Experiments on MMLU and HellaSwag show that CausalAbstain improves trustworthy abstention over strong baselines across multilingual knowledge and commonsense reasoning settings.
Clone the repository:
git clone https://github.com/peachch/CausalAbstain.git
cd CausalAbstain
Create the provided Conda environment:
conda env create -f causalabstain.yaml
conda activate causal
The released implementation supports local Llama and Phi inference through Ollama.
Install Ollama:
curl -fsSL https://ollama.com/install.sh | sh
Start the Ollama server:
export OLLAMA_HOST="127.0.0.1:8000"
ollama serve
Pull or run a model, for example:
ollama run llama3.2
For Phi:
ollama run phi4
Model-specific inference logic is implemented in:
lm_utils.py
For API-based models, configure the corresponding endpoint and credentials in the model backend before running the experiment.
If you add another LLM provider, the main interface to extend is:
llm_response(...)
in lm_utils.py.
A typical multilingual run using an API-based model:
python causalabstain.py \
-m gpt3.5 \
-d mmlu \
-s zh \
-l true \
-r three \
-n 3 \
-f True \
-t test \
-o 0.5
Using a local Llama model:
python causalabstain.py \
-m llama \
-d mmlu \
-s it \
-l true \
-r three \
-n 3 \
-f True \
-t test \
-o 0.5
| Argument | Description |
|---|---|
-m, --model | Language model used for inference |
-d, --dataset | Dataset, e.g. mmlu or hellaswag |
-s, --speak | Language of the evaluated dataset, e.g. zh, it, bn |
-r, --related | Related-language feedback configuration |
-n, --iter_number | Number of repeated evaluations used for causal estimation |
-o, --portion | Fraction of the dataset to evaluate, from 0 to 1 |
-l, --local | Whether experiment predictions/details are saved locally |
-f, --feedback | Whether generated feedback is saved |
-t, --test_or_evaluation | Selects the output group used for saving experiment results |
For example, to evaluate half of the Italian MMLU data with three related-language feedback sources:
python causalabstain.py \
--model llama \
--dataset mmlu \
--speak it \
--related three \
--iter_number 3 \
--portion 0.5
The released repository contains multilingual versions of two benchmarks:
| Dataset | Task | Description |
|---|---|---|
| MMLU | Knowledge QA | Multi-domain questions requiring broad factual and academic knowledge |
| HellaSwag | Commonsense Reasoning | Sentence-completion tasks requiring commonsense inference |
Dataset files follow the structure:
data/
├── mmlu/
│ ├── mmlu_<language>.json
│ └── ...
│
└── hellaswag/
├── hellaswag_<language>.json
└── ...
The --speak argument selects the corresponding language file.
Baseline implementations are provided under:
baselines/
The released repository includes:
baselines/
├── approach-askcalibrate.py
├── approach-conflict.py
├── approach-moreinfo.py
├── approach-multirelated.py
├── approach-reflect.py
└── baselines.md
These implementations follow the multilingual abstention comparison setup used in the paper.
A baseline can be run, for example, with:
cd baselines
python approach-conflict.py \
-m llama \
-d mmlu \
-s kn \
-l True \
-o 0.5
See baselines/baselines.md for additional details.
CausalAbstain/
├── README.md
├── causalabstain.py # Main CausalAbstain pipeline
├── causalabstain.yaml # Conda environment
├── lm_utils.py # LLM inference, distributions, and JSD
├── metrics.py # Abstention evaluation metrics
│
├── baselines/ # Baseline methods
│ ├── approach-askcalibrate.py
│ ├── approach-conflict.py
│ ├── approach-moreinfo.py
│ ├── approach-multirelated.py
│ ├── approach-reflect.py
│ └── baselines.md
│
├── data/ # Multilingual evaluation datasets
│ ├── mmlu/
│ └── hellaswag/
│
└── imgs/
└── multilingual_combine (1).png
causalabstain.py
Implements the main CausalAbstain workflow:
lm_utils.py
Provides:
metrics.py
Implements the evaluation metrics for trustworthy abstention.
CausalAbstain was published in Findings of ACL 2025.
If you find this work useful, please cite:
@inproceedings{sun-etal-2025-causalabstain,
title = "{C}ausal{A}bstain: Enhancing Multilingual {LLM}s with Causal Reasoning for Trustworthy Abstention",
author = "Sun, Yuxi and Zuo, Aoqi and Gao, Wei and Ma, Jing",
booktitle = "Findings of the Association for Computational Linguistics: ACL 2025",
month = jul,
year = "2025",
address = "Vienna, Austria",
publisher = "Association for Computational Linguistics",
url = "https://aclanthology.org/2025.findings-acl.723/",
doi = "10.18653/v1/2025.findings-acl.723",
pages = "14060--14076"
}
37 commits
Python
100.0%
Teaching multilingual LLMs when to trust feedback — and when to abstain.
Overview of CausalAbstain for trustworthy abstention using native-language and multilingual feedback.
Large Language Models (LLMs) exhibit substantial knowledge disparities across languages. A model may confidently answer a question in one language while lacking sufficient knowledge to answer the same question reliably in another.
A natural way to reduce hallucinations is to let the model abstain when it is uncertain. Existing multilingual abstention methods often rely on self-reflection or feedback generated in different languages. However, generated feedback itself can be noisy, biased, or incorrect.
CausalAbstain addresses this problem from a causal perspective:
Instead of trusting generated feedback by default, CausalAbstain estimates whether the feedback actually contributes useful information to the final abstention decision.
The framework measures the effect of answering without feedback and compares it against the effect mediated through feedback. This allows the model to decide both:
CausalAbstain supports two settings:
Experiments on MMLU and HellaSwag show that CausalAbstain improves trustworthy abstention over strong baselines across multilingual knowledge and commonsense reasoning settings.
Clone the repository:
git clone https://github.com/peachch/CausalAbstain.git
cd CausalAbstain
Create the provided Conda environment:
conda env create -f causalabstain.yaml
conda activate causal
The released implementation supports local Llama and Phi inference through Ollama.
Install Ollama:
curl -fsSL https://ollama.com/install.sh | sh
Start the Ollama server:
export OLLAMA_HOST="127.0.0.1:8000"
ollama serve
Pull or run a model, for example:
ollama run llama3.2
For Phi:
ollama run phi4
Model-specific inference logic is implemented in:
lm_utils.py
For API-based models, configure the corresponding endpoint and credentials in the model backend before running the experiment.
If you add another LLM provider, the main interface to extend is:
llm_response(...)
in lm_utils.py.
A typical multilingual run using an API-based model:
python causalabstain.py \
-m gpt3.5 \
-d mmlu \
-s zh \
-l true \
-r three \
-n 3 \
-f True \
-t test \
-o 0.5
Using a local Llama model:
python causalabstain.py \
-m llama \
-d mmlu \
-s it \
-l true \
-r three \
-n 3 \
-f True \
-t test \
-o 0.5
| Argument | Description |
|---|---|
-m, --model | Language model used for inference |
-d, --dataset | Dataset, e.g. mmlu or hellaswag |
-s, --speak | Language of the evaluated dataset, e.g. zh, it, bn |
-r, --related | Related-language feedback configuration |
-n, --iter_number | Number of repeated evaluations used for causal estimation |
-o, --portion | Fraction of the dataset to evaluate, from 0 to 1 |
-l, --local | Whether experiment predictions/details are saved locally |
-f, --feedback | Whether generated feedback is saved |
-t, --test_or_evaluation | Selects the output group used for saving experiment results |
For example, to evaluate half of the Italian MMLU data with three related-language feedback sources:
python causalabstain.py \
--model llama \
--dataset mmlu \
--speak it \
--related three \
--iter_number 3 \
--portion 0.5
The released repository contains multilingual versions of two benchmarks:
| Dataset | Task | Description |
|---|---|---|
| MMLU | Knowledge QA | Multi-domain questions requiring broad factual and academic knowledge |
| HellaSwag | Commonsense Reasoning | Sentence-completion tasks requiring commonsense inference |
Dataset files follow the structure:
data/
├── mmlu/
│ ├── mmlu_<language>.json
│ └── ...
│
└── hellaswag/
├── hellaswag_<language>.json
└── ...
The --speak argument selects the corresponding language file.
Baseline implementations are provided under:
baselines/
The released repository includes:
baselines/
├── approach-askcalibrate.py
├── approach-conflict.py
├── approach-moreinfo.py
├── approach-multirelated.py
├── approach-reflect.py
└── baselines.md
These implementations follow the multilingual abstention comparison setup used in the paper.
A baseline can be run, for example, with:
cd baselines
python approach-conflict.py \
-m llama \
-d mmlu \
-s kn \
-l True \
-o 0.5
See baselines/baselines.md for additional details.
CausalAbstain/
├── README.md
├── causalabstain.py # Main CausalAbstain pipeline
├── causalabstain.yaml # Conda environment
├── lm_utils.py # LLM inference, distributions, and JSD
├── metrics.py # Abstention evaluation metrics
│
├── baselines/ # Baseline methods
│ ├── approach-askcalibrate.py
│ ├── approach-conflict.py
│ ├── approach-moreinfo.py
│ ├── approach-multirelated.py
│ ├── approach-reflect.py
│ └── baselines.md
│
├── data/ # Multilingual evaluation datasets
│ ├── mmlu/
│ └── hellaswag/
│
└── imgs/
└── multilingual_combine (1).png
causalabstain.py
Implements the main CausalAbstain workflow:
lm_utils.py
Provides:
metrics.py
Implements the evaluation metrics for trustworthy abstention.
CausalAbstain was published in Findings of ACL 2025.
If you find this work useful, please cite:
@inproceedings{sun-etal-2025-causalabstain,
title = "{C}ausal{A}bstain: Enhancing Multilingual {LLM}s with Causal Reasoning for Trustworthy Abstention",
author = "Sun, Yuxi and Zuo, Aoqi and Gao, Wei and Ma, Jing",
booktitle = "Findings of the Association for Computational Linguistics: ACL 2025",
month = jul,
year = "2025",
address = "Vienna, Austria",
publisher = "Association for Computational Linguistics",
url = "https://aclanthology.org/2025.findings-acl.723/",
doi = "10.18653/v1/2025.findings-acl.723",
pages = "14060--14076"
}
37 commits
Python
100.0%