rtr-bench 0.1.3 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +57 -34
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
# RTR-bench
|
|
2
2
|
|
|
3
|
-
**RTR-bench**
|
|
3
|
+
**RTR-bench** tests whether language models can predict how a crowd interprets an ambiguous prompt. It investigates one aspect of cultural fluency: anticipating how people assign meaning to words, people, institutions, and ideas. Its source is [Mixed Messages](https://mixedmessages.fyi), a generative art project where participants respond to a daily prompt by placing a coordinate on a 2×2 grid: Honest vs Performed on one axis, Uniting vs Dividing on the other. The dataset used here contains 39,828 submissions across 165 closed windows.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
These submissions were collected through participation in a generative art project. Participants were not trained to apply an annotation rubric or converge on a correct answer. Each placement recorded an interpretation, and together those placements formed a distribution. That distribution preserves both agreement and disagreement: how strongly one reading prevailed, which alternatives attracted people, and where the crowd split.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Commonly cited benchmarks such as [HLE](https://lastexam.ai/) and [SWE-bench](https://www.swebench.com/) evaluate expert answers or software changes against defined criteria for success. RTR-bench evaluates a model against an observed social response. A crowd’s interpretation can be contradictory, unfamiliar, or difficult to anticipate, and accurately predicting it requires distinguishing what a prompt means to that audience from the reading the model would otherwise produce.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
For each prompt, the model answers two separate questions: which of the four quadrants received the most human submissions, and which quadrant represents its own interpretation. Both responses are compared with the recorded crowd response. The headline score measures how often the model correctly predicts the crowd’s dominant quadrant. This gives a straightforward measure of agreement, although it captures only part of the underlying distribution.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
The score is one way to compare models; their patterns of agreement and error are another. Which interpretations do models consistently anticipate? Where do different models make the same mistake? How does asking a model to predict the crowd change its answer? RTR-bench uses these questions to examine what it means for a model to read the room - with the room here defined by the participants in Mixed Messages.
|
|
12
12
|
|
|
13
13
|
## How it works
|
|
14
14
|
|
|
@@ -29,48 +29,33 @@ Commonly-cited benchmarks, such as [SWE-bench](https://www.swebench.com/) and [H
|
|
|
29
29
|
|
|
30
30
|
## Quickstart
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
You need Node.js 18 or newer and an OpenRouter API key with available credits. The published package includes the benchmark dataset; no repository setup is required.
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
Node 18 or newer. No clone, no install.
|
|
34
|
+
Create a folder for your results, add your API key, and run a model:
|
|
37
35
|
|
|
38
36
|
```bash
|
|
39
37
|
mkdir rtr-run && cd rtr-run
|
|
40
38
|
echo 'OPENROUTER_API_KEY=sk-or-your-key' > .env
|
|
41
|
-
|
|
42
|
-
# see ids and prices. costs nothing
|
|
43
|
-
npx --yes rtr-bench catalog --limit 20
|
|
44
|
-
|
|
45
|
-
# run one model, then score it
|
|
46
|
-
npx --yes rtr-bench z-ai/glm-5.3-flash
|
|
39
|
+
npx --yes rtr-bench@latest z-ai/glm-5.3-flash
|
|
47
40
|
```
|
|
48
41
|
|
|
49
|
-
|
|
42
|
+
Replace `sk-or-your-key` with your OpenRouter API key. To evaluate another model, replace `z-ai/glm-5.3-flash` with its OpenRouter model ID. `npx` downloads and caches the package automatically; `--yes` skips its install prompt.
|
|
50
43
|
|
|
51
|
-
|
|
44
|
+
The command runs the benchmark, prints the score, and saves responses, scores, and a report in `results/`. A full run schedules 1,320 calls: two questions, each asked in four option orders, across 165 prompts. Retries can add calls. Time and cost depend on the model and provider.
|
|
45
|
+
|
|
46
|
+
To list available model IDs and token prices:
|
|
52
47
|
|
|
53
48
|
```bash
|
|
54
|
-
npx --yes rtr-bench
|
|
49
|
+
npx --yes rtr-bench@latest catalog --limit 20
|
|
55
50
|
```
|
|
56
51
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
### Work on the code
|
|
60
|
-
|
|
61
|
-
The repository runs the TypeScript sources directly, so this path needs Node 22.18 or newer.
|
|
52
|
+
To try the command on just five prompts before running the full benchmark:
|
|
62
53
|
|
|
63
54
|
```bash
|
|
64
|
-
|
|
65
|
-
cd RTR-bench
|
|
66
|
-
npm install
|
|
67
|
-
echo 'OPENROUTER_API_KEY=sk-or-your-key' > .env
|
|
68
|
-
node src/cli.ts catalog --limit 20
|
|
69
|
-
node src/cli.ts run --models z-ai/glm-5.3-flash --concurrency 8
|
|
70
|
-
node src/cli.ts report
|
|
55
|
+
npx --yes rtr-bench@latest z-ai/glm-5.3-flash --limit 5
|
|
71
56
|
```
|
|
72
57
|
|
|
73
|
-
|
|
58
|
+
This smaller run checks your setup; its score is not comparable with the full benchmark results. Rerunning without `--limit 5` reuses completed responses and runs the remaining prompts.
|
|
74
59
|
|
|
75
60
|
## Results
|
|
76
61
|
|
|
@@ -90,11 +75,49 @@ Rebuilding the dataset needs the project's database connection, so `npm run expo
|
|
|
90
75
|
|
|
91
76
|

|
|
92
77
|
|
|
93
|
-
Eleven models were
|
|
78
|
+
Eleven models were tested against the same 165 windows, representing 39,828 human submissions. Scores ranged from 32.1 to 46.1, compared with a 31.5 baseline for always choosing the most common quadrant and 33.9 for a simple lexical heuristic. Gemini scored highest, correctly predicting 76 of the 165 windows. Its bootstrapped 95% confidence interval was 38.2–53.3%, however, so small differences between models should be treated cautiously.
|
|
79
|
+
|
|
80
|
+
Perhaps the value of the benchmark lies more in exposing model behavior than in actually ranking models. As described above, benchmarks such as HLE and SWE-bench evaluate whether a model can answer an expert question or resolve a software issue against defined criteria. RTR-bench asks whether a model can anticipate how a particular crowd interpreted something ambiguous. An incorrect prediction does not establish that the model’s interpretation is unreasonable. It shows where that interpretation departs from the room.
|
|
81
|
+
|
|
82
|
+
The clearest shared departure was Honest × Dividing. This was the crowd’s dominant quadrant in 39 of 165 windows, or 23.6%. Across the models’ 1,591 final predictions without a tie between option orders, however, they selected it only 160 times, or 10.1%. Including tied predictions as misses, models correctly identified just 15.9% of the windows dominated by Honest × Dividing, compared with 60.7% for Honest × Uniting. The models were much better at anticipating authentic unity than anticipating division that participants interpreted as honest.
|
|
83
|
+
|
|
84
|
+
Donald Trump and Elon Musk illustrate both the pattern and the limits of the current score. None of the eleven models correctly predicted the dominant quadrant for either Trump’s window or either of Musk’s two windows. For Trump, 634 of 738 submissions—85.9%—landed in Honest × Dividing. In the first Musk window, the same quadrant won with only 278 of 720 submissions, or 38.6%, narrowly ahead of Performed × Dividing at 34.7%. Both count as an incorrect prediction, although one misses an overwhelming consensus and the other misses a closely divided crowd. At the other end, all eleven models correctly predicted Handwritten Notes, The CIA, and Altruism.
|
|
85
|
+
|
|
86
|
+
These results return to what makes the source data unusual: the crowd’s answer is a distribution. The current score reduces that distribution to its largest quadrant, making comparison straightforward while leaving much of the disagreement unmeasured. My main takeaway is that these models share a difficulty anticipating when this audience reads division as honest. Establishing how broadly that pattern holds will require more audiences, prompt variants, and future windows. Next, I would like to test more frontier models, report performance separately where the crowd was decisive, and evaluate predictions of the full distribution alongside the dominant-quadrant score. Conviction and polarization could then help describe the kinds of disagreement a model understands, and the kinds it consistently misreads.
|
|
87
|
+
|
|
88
|
+
## Optional usage
|
|
89
|
+
|
|
90
|
+
OpenRouter may route calls to different providers serving the same model. To list providers, token prices, and numerical precision:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
npx --yes rtr-bench@latest providers z-ai/glm-5.3-flash
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
To use a specific provider, add `--provider` with a name from that list:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
npx --yes rtr-bench@latest z-ai/glm-5.3-flash --provider Wafer
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
A pinned run refuses to fall back to another provider, and the summary names the providers that served the calls. Provider availability can change.
|
|
103
|
+
|
|
104
|
+
The default is six concurrent calls. To allow up to eight calls at once, add `--concurrency 8`. This may shorten the run if the provider's rate limits allow it.
|
|
105
|
+
|
|
106
|
+
## Development
|
|
107
|
+
|
|
108
|
+
To modify the benchmark or run the repository's source code, use the setup below. These commands run TypeScript directly and require Node.js 22.18 or newer.
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
git clone https://github.com/1999labs/RTR-bench
|
|
112
|
+
cd RTR-bench
|
|
113
|
+
npm install
|
|
114
|
+
echo 'OPENROUTER_API_KEY=sk-or-your-key' > .env
|
|
115
|
+
node src/cli.ts z-ai/glm-5.3-flash
|
|
116
|
+
```
|
|
94
117
|
|
|
95
|
-
|
|
118
|
+
Replace `sk-or-your-key` with your OpenRouter API key. The run automatically generates scores and a report in `results/`.
|
|
96
119
|
|
|
97
|
-
|
|
120
|
+
Rebuilding the dataset requires the project's database connection and the configuration in `scripts/export.mjs`. The exported dataset is already included, so running the benchmark does not require database access.
|
|
98
121
|
|
|
99
122
|
## License
|
|
100
123
|
|
package/package.json
CHANGED