Paste parallel outputs. Find where they agree. Find where they split. The split IS the information.
pip install begump
from gump.diverge import analyze
responses = [
"The answer is 42.",
"The answer is 42.",
"The answer is 37.",
]
result = analyze(responses)
print(result['divergence_score']) # 0.33
print(result['unique_content_ratio']) # 0.67
print(result['consensus']) # "The answer is 42."
print(result['splits']) # [{'group': [0,1], 'content': '42'}, ...]
print(result['diagnosis']) # "low divergence, 1 outlier"
divergence_score — 0 = perfect agreement, 1 = total disagreement. Based on pairwise similarity of all responses.
unique_content_ratio — What fraction of content is NOT shared across all responses. High = lots of novel material per response.
consensus — The response (or fragment) that most others agree with. The center of mass.
splits — Groups of responses that agree with each other but disagree with other groups. Where the fork happens.
When you run the same prompt 5 times and 4 agree but 1 says something different — that one is either wrong or seeing something the others missed. The split tells you where the model is uncertain. Uncertainty IS information.