Open benchmark: how well can LLMs predict knife-steel properties (edge retention, toughness) from chemical composition, scored against CATRA/Charpy lab measurements.
0
stars
2
commits
Python
primary language
Aug 31, 2026
updated
How well can large language models predict knife-steel properties from chemical composition alone?
An open, reproducible benchmark that gives an LLM only a steel's composition (e.g. C=1.45%, Cr=20%, V=4%, Mo=1%, powder-metallurgy: yes) and asks it to rate two properties on a 1–10 scale, then scores those ratings against objective laboratory measurements:
Scoring is scale-free (rank correlation + pairwise ranking accuracy), so a model is judged purely on whether it orders steels correctly, not on how it calibrates the 1–10 scale.
📊 Site with charts & analysis: https://steel-predictor-project.github.io/steel-llm-eval/ · Docs: methodology · results & analysis
Ranked by mean Spearman rank correlation (ρ) vs. the measurements. Higher is better; 1.0 = perfect ordering, 0.0 = random.
| Model | Edge ρ (n) | Edge pairwise | Tough ρ (n) | Tough pairwise | Mean ρ |
|---|---|---|---|---|---|
| steel-predictor (reference ML) † | 0.992 (48) | 0.98 | 0.946 (12) | 0.938 | 0.969 |
| anthropic/claude-sonnet-5 | 0.894 (48) | 0.918 | 0.844 (12) | 0.881 | 0.869 |
| google/gemini-3.6-flash | 0.918 (48) | 0.913 | 0.698 (12) | 0.797 | 0.808 |
| openai/gpt-4o | 0.868 (48) | 0.907 | 0.600 (12) | 0.746 | 0.734 |
| meta-llama/llama-3.3-70b-instruct | 0.864 (47) | 0.964 | 0.514 (12) | 0.780 | 0.689 |
| deepseek/deepseek-chat-v3.1 | 0.869 (48) | 0.910 | 0.380 (12) | 0.661 | 0.625 |
| openai/gpt-4o-mini | 0.850 (48) | 0.984 | 0.385 (12) | 0.689 | 0.617 |
Edge retention n=48 (CATRA), toughness n=12 (Charpy). Zero-shot, temperature 0, one sample per steel.
† Important fairness caveat: the reference ML model (Steel-predictor) was trained on these same CATRA/Charpy measurements, so its scores here are largely in-sample and are shown as an upper-reference bar, not as a fair head-to-head with the zero-shot LLMs. The model's honest out-of-sample performance is its LOOCV MAE (0.391), reported in that repo. The LLMs, by contrast, have never seen this labeled set.
git clone https://github.com/Steel-predictor-project/steel-llm-eval.git
cd steel-llm-eval
export OPENROUTER_API_KEY=sk-or-... # one key → OpenAI, Anthropic, Google, Meta, DeepSeek, ...
./run_benchmark.sh # runs every model and rebuilds the leaderboard
Run a single model, or a quick offline sanity check with no API key:
python harness/run_eval.py --model anthropic/claude-sonnet-5
python harness/run_eval.py --provider mock # deterministic heuristic, no key needed
python harness/score.py
Raw per-steel responses are written to results/raw_<model>.csv; scores to results/scores.csv and results/leaderboard.md.
harness/prompts.py) — a fixed system + user prompt gives the model the composition, PM flag, and test hardness (when known) and asks for JSON: {"edge_retention": n, "toughness": n}. Identical for every model.harness/run_eval.py) — queries a model for all 51 steels via OpenRouter and parses the JSON.harness/score.py) — vs. the measurements:
scores.csv).The benchmark (data/benchmark.csv) is derived from the processed dataset of the Steel-predictor project. The two ground-truth measurements come from:
Every individual source is enumerated with links in the Steel-predictor repo's DATA_SOURCES.md. Underlying factual measurements remain the property of their original publishers; this repo redistributes only its own normalized compilation and derived features.
Code: Apache-2.0 (LICENSE). Curated benchmark data + reference model outputs: CC BY 4.0 (data/LICENSE), covering only this project's compilation/derived features. Attribution requested: "Steel Property Predictor Project" with a link to this repo.
PRs welcome to add models (extend the list in run_benchmark.sh), prompt variants (few-shot, chain-of-thought, self-consistency), or additional measured steels (with cited public sources). Please don't add subjective-rating datasets as ground truth.
2 commits
Python
97.0%
Shell
3.0%
Open benchmark: how well can LLMs predict knife-steel properties (edge retention, toughness) from chemical composition, scored against CATRA/Charpy lab measurements.
0
stars
2
commits
Python
primary language
Aug 31, 2026
updated
How well can large language models predict knife-steel properties from chemical composition alone?
An open, reproducible benchmark that gives an LLM only a steel's composition (e.g. C=1.45%, Cr=20%, V=4%, Mo=1%, powder-metallurgy: yes) and asks it to rate two properties on a 1–10 scale, then scores those ratings against objective laboratory measurements:
Scoring is scale-free (rank correlation + pairwise ranking accuracy), so a model is judged purely on whether it orders steels correctly, not on how it calibrates the 1–10 scale.
📊 Site with charts & analysis: https://steel-predictor-project.github.io/steel-llm-eval/ · Docs: methodology · results & analysis
Ranked by mean Spearman rank correlation (ρ) vs. the measurements. Higher is better; 1.0 = perfect ordering, 0.0 = random.
| Model | Edge ρ (n) | Edge pairwise | Tough ρ (n) | Tough pairwise | Mean ρ |
|---|---|---|---|---|---|
| steel-predictor (reference ML) † | 0.992 (48) | 0.98 | 0.946 (12) | 0.938 | 0.969 |
| anthropic/claude-sonnet-5 | 0.894 (48) | 0.918 | 0.844 (12) | 0.881 | 0.869 |
| google/gemini-3.6-flash | 0.918 (48) | 0.913 | 0.698 (12) | 0.797 | 0.808 |
| openai/gpt-4o | 0.868 (48) | 0.907 | 0.600 (12) | 0.746 | 0.734 |
| meta-llama/llama-3.3-70b-instruct | 0.864 (47) | 0.964 | 0.514 (12) | 0.780 | 0.689 |
| deepseek/deepseek-chat-v3.1 | 0.869 (48) | 0.910 | 0.380 (12) | 0.661 | 0.625 |
| openai/gpt-4o-mini | 0.850 (48) | 0.984 | 0.385 (12) | 0.689 | 0.617 |
Edge retention n=48 (CATRA), toughness n=12 (Charpy). Zero-shot, temperature 0, one sample per steel.
† Important fairness caveat: the reference ML model (Steel-predictor) was trained on these same CATRA/Charpy measurements, so its scores here are largely in-sample and are shown as an upper-reference bar, not as a fair head-to-head with the zero-shot LLMs. The model's honest out-of-sample performance is its LOOCV MAE (0.391), reported in that repo. The LLMs, by contrast, have never seen this labeled set.
git clone https://github.com/Steel-predictor-project/steel-llm-eval.git
cd steel-llm-eval
export OPENROUTER_API_KEY=sk-or-... # one key → OpenAI, Anthropic, Google, Meta, DeepSeek, ...
./run_benchmark.sh # runs every model and rebuilds the leaderboard
Run a single model, or a quick offline sanity check with no API key:
python harness/run_eval.py --model anthropic/claude-sonnet-5
python harness/run_eval.py --provider mock # deterministic heuristic, no key needed
python harness/score.py
Raw per-steel responses are written to results/raw_<model>.csv; scores to results/scores.csv and results/leaderboard.md.
harness/prompts.py) — a fixed system + user prompt gives the model the composition, PM flag, and test hardness (when known) and asks for JSON: {"edge_retention": n, "toughness": n}. Identical for every model.harness/run_eval.py) — queries a model for all 51 steels via OpenRouter and parses the JSON.harness/score.py) — vs. the measurements:
scores.csv).The benchmark (data/benchmark.csv) is derived from the processed dataset of the Steel-predictor project. The two ground-truth measurements come from:
Every individual source is enumerated with links in the Steel-predictor repo's DATA_SOURCES.md. Underlying factual measurements remain the property of their original publishers; this repo redistributes only its own normalized compilation and derived features.
Code: Apache-2.0 (LICENSE). Curated benchmark data + reference model outputs: CC BY 4.0 (data/LICENSE), covering only this project's compilation/derived features. Attribution requested: "Steel Property Predictor Project" with a link to this repo.
PRs welcome to add models (extend the list in run_benchmark.sh), prompt variants (few-shot, chain-of-thought, self-consistency), or additional measured steels (with cited public sources). Please don't add subjective-rating datasets as ground truth.
2 commits
Python
97.0%
Shell
3.0%