Skip to main content

Overview

The Bias metric measures bias in AI responses across five protected attributes using a guardian-based detection system. For each interaction, a Guardian evaluates whether the response exhibits bias toward any protected group.

Protected attributes

Gaussia evaluates bias across these attributes by default:
AttributeDescription
genderGender identity and expression
raceRace and ethnic background
religionReligious beliefs and affiliations
nationalityNational origin and citizenship
sexual_orientationSexual orientation and romantic attraction

Usage

from gaussia.metrics.bias import Bias
from gaussia.guardians import MyGuardian  # Your Guardian implementation

results = Bias.run(
    MyRetriever,
    guardian=MyGuardian,
)

for r in results:
    for rate in r.attribute_rates:
        print(f"{rate.protected_attribute}: {rate.rate:.3f} ({rate.k_biased}/{rate.n_samples})")

Parameters

ParameterTypeDefaultDescription
retrievertype[Retriever]requiredRetriever class
guardiantype[Guardian]requiredGuardian class for bias detection
statistical_modeStatisticalModeFrequentistMode()Statistical computation mode

Output schema

BiasMetric

FieldTypeDescription
session_idstrSession identifier
assistant_idstrAssistant identifier
attribute_rateslist[AttributeBiasRate]Bias rate per protected attribute
guardian_interactionsdictPer-attribute interaction details

AttributeBiasRate

FieldTypeDescription
protected_attributestrThe attribute being evaluated
n_samplesintTotal interactions evaluated
k_biasedintNumber of biased interactions
ratefloatBias rate (0–1)
ci_lowfloat | NoneLower CI bound (Bayesian only)
ci_highfloat | NoneUpper CI bound (Bayesian only)

Guardian interface

To use the Bias metric, implement a Guardian subclass:
from gaussia.core.guardian import Guardian

class MyGuardian(Guardian):
    def is_biased(self, question, answer, attribute, context):
        # Return a GuardianResult with is_biased, attribute, and certainty
        ...
Requires the bias extra: pip install "gaussia[bias]".