Skip to content
Back to skills

Carl Gt Eval

ASecurity

Evaluates large language models' causal reasoning capabilities across three task categories: causal graph reasoning (adjacency matrix, d-separation, causal direction), knowledge discovery from tabular data, and decision-making under interventions and counterfactuals. Use when the user wants to benchmark on CARL-GT, or asks about evaluating this task. Reports F1 score.

  • 3 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 11, 2026
researchpythongonodegitperformance

Security analysis

A100/100

Scanned September 11, 2026

npx -y skills add qhjqhj00/research-skills-pool --skill carl-gt-eval --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Carl Gt Eval?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Carl Gt Eval
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/qhjqhj00-carl-gt-eval/badge)](https://www.skillsdirectory.com/skills/qhjqhj00-carl-gt-eval)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: carl-gt-eval
description: Evaluates large language models' causal reasoning capabilities across three task categories: causal graph reasoning (adjacency matrix, d-separation, causal direction), knowledge discovery from tabular data, and decision-making under interventions and counterfactuals. Use when the user wants to benchmark on CARL-GT, or asks about evaluating this task. Reports F1 score.
metadata:
  skill_kind: dataset_eval
  source_arxiv: 2412.17970
  bibtex_key: tu2024carlgt
  confidence: high
---

# carl-gt-eval

> CARL-GT: Evaluating Causal Reasoning Capabilities of Large Language Models — Tu et al. (2024) (arXiv:2412.17970, 2024)

## What this evaluates

Evaluates large language models' causal reasoning capabilities across three task categories: causal graph reasoning (adjacency matrix, d-separation, causal direction), knowledge discovery from tabular data, and decision-making under interventions and counterfactuals.

## Datasets

- **CARL-GT** — total ?; splits: test (-1); repo https://github.com/TURuibo/CauTabBench

## Metrics

- `F1 score` **(primary)** — range: [0, 1]
  - Harmonic mean of precision and recall: 2 * (precision * recall) / (precision + recall). Used for adjacency matrix and causal direction estimation.
- `AUC` — range: [0, 1]
  - Area under the Receiver Operating Characteristic curve. Used for d-separation estimation (binary classification of d-separated vs d-connected).
- `Accuracy` — range: [0, 1]
  - Proportion of correctly predicted causal directions in knowledge discovery tasks.
- `MAE` — range: [0, ∞)
  - Mean Absolute Error between predicted float values and ground-truth expectations for intervention and counterfactual inference.

## Input / output format

**Input**: Text prompts containing serialized causal graphs (node/edge lists) and/or tabular data (Markdown format, 20/50/100 rows), followed by task-specific questions (e.g., d-separation queries, causal direction questions, or intervention/counterfactual value requests).

**Output**: Free-form natural language responses from the LLM, which are subsequently processed by a second LLM prompt to extract structured answers (e.g., neighbor lists, yes/no, or float numbers).

## Scoring recipe

```python
def score(predictions, gold, task):
    if task in ['adjacency', 'direction']:
        pred_set = extract_neighbors(predictions)
        gold_set = gold['edges']
        tp = len(pred_set & gold_set)
        fp = len(pred_set - gold_set)
        fn = len(gold_set - pred_set)
        prec = tp / (tp + fp) if (tp + fp) > 0 else 0
        rec = tp / (tp + fn) if (tp + fn) > 0 else 0
        f1 = 2 * prec * rec / (prec + rec) if (prec + rec) > 0 else 0
        return {'precision': prec, 'recall': rec, 'f1': f1}
    elif task == 'd-separation':
        labels = [1 if d_sep else 0 for d_sep in gold['is_d_sep']]
        scores = [float(p) for p in predictions]
        return compute_auc(labels, scores)
    elif task in ['intervention', 'counterfactual']:
        preds = [float(p) for p in predictions]
        golds = [float(g) for g in gold['true_expectation']]
        return mean_absolute_error(preds, golds)
```

## Common pitfalls

- LLMs frequently fail to answer knowledge discovery questions, requiring fallback to random yes/no or skipping the instance, which can bias metrics.
- Hardware constraints force different input row limits per model (e.g., Gemma2 restricted to 20 rows, Mixtral excluded), complicating direct performance comparison.
- The two-step evaluation (generation then extraction) can propagate errors if the extraction prompt misinterprets the model's free-form output.

## Evidence (verbatim from paper)

> As for adjacency matrix and causal direction estimation, LLMs are required to recover 10 causal graphs. The metrics are F1 scores, recall, and precision. As for d-separation estimation, LLMs classify d-separated and d-connected relationships chosen from 10 causal graphs. And the metric is the AUC of ROC curves.

## Citation

```bibtex
@misc{tu2024carlgt,
  title={CARL-GT: Evaluating Causal Reasoning Capabilities of Large Language Models},
  author={Tu et al. (2024)},
  year={2024},
  note={arXiv:2412.17970}
}
```

- arXiv: 2412.17970

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.