2026-07-08 08:57:50 +00:00

198 lines
5.6 KiB
Markdown

# IFEval
## Overview
IFEval (Instruction-Following Eval) is a benchmark for evaluating how well language models follow explicit, verifiable instructions. It contains prompts with specific formatting, content, or structural requirements that can be objectively verified.
## Task Description
- **Task Type**: Instruction Following Evaluation
- **Input**: Prompts with explicit, verifiable constraints
- **Output**: Response that follows all specified instructions
- **Constraint Types**: Format, length, keywords, structure, etc.
## Key Features
- ~500 prompts with 25 types of verifiable instructions
- Instructions are objectively checkable (not subjective)
- Examples: "write exactly 3 paragraphs", "include the word X", "use bullet points"
- Tests instruction comprehension and compliance
- No ambiguity in evaluation criteria
## Evaluation Notes
- Default configuration uses **0-shot** evaluation
- Four metrics available:
- `prompt_level_strict`: All instructions in prompt must be followed
- `prompt_level_loose`: Some tolerance for minor deviations
- `inst_level_strict`: Per-instruction accuracy (strict)
- `inst_level_loose`: Per-instruction accuracy (loose)
- `prompt_level_strict` is the primary metric
- Automatic verification of instruction compliance
## Properties
| Property | Value |
|----------|-------|
| **Benchmark Name** | `ifeval` |
| **Dataset ID** | [opencompass/ifeval](https://modelscope.cn/datasets/opencompass/ifeval/summary) |
| **Paper** | N/A |
| **Tags** | `InstructionFollowing` |
| **Metrics** | `prompt_level_strict`, `inst_level_strict`, `prompt_level_loose`, `inst_level_loose` |
| **Default Shots** | 0-shot |
| **Evaluation Split** | `train` |
## Data Statistics
| Metric | Value |
|--------|-------|
| Total Samples | 541 |
| Prompt Length (Mean) | 210.75 chars |
| Prompt Length (Min/Max) | 53 / 1858 chars |
## Sample Example
**Subset**: `default`
```json
{
"input": [
{
"id": "cb71907f",
"content": "Write a 300+ word summary of the wikipedia page \"https://en.wikipedia.org/wiki/Raymond_III,_Count_of_Tripoli\". Do not use any commas and highlight at least 3 sections that has titles in markdown format, for example *highlighted section part 1*, *highlighted section part 2*, *highlighted section part 3*."
}
],
"target": "",
"id": 0,
"group_id": 0,
"metadata": {
"key": 1000,
"prompt": "Write a 300+ word summary of the wikipedia page \"https://en.wikipedia.org/wiki/Raymond_III,_Count_of_Tripoli\". Do not use any commas and highlight at least 3 sections that has titles in markdown format, for example *highlighted section part 1*, *highlighted section part 2*, *highlighted section part 3*.",
"instruction_id_list": [
"punctuation:no_comma",
"detectable_format:number_highlighted_sections",
"length_constraints:number_words"
],
"kwargs": [
{
"num_highlights": null,
"relation": null,
"num_words": null,
"num_placeholders": null,
"prompt_to_repeat": null,
"num_bullets": null,
"section_spliter": null,
"num_sections": null,
"capital_relation": null,
"capital_frequency": null,
"keywords": null,
"num_paragraphs": null,
"language": null,
"let_relation": null,
"letter": null,
"let_frequency": null,
"end_phrase": null,
"forbidden_words": null,
"keyword": null,
"frequency": null,
"num_sentences": null,
"postscript_marker": null,
"first_word": null,
"nth_paragraph": null
},
{
"num_highlights": 3,
"relation": null,
"num_words": null,
"num_placeholders": null,
"prompt_to_repeat": null,
"num_bullets": null,
"section_spliter": null,
"num_sections": null,
"capital_relation": null,
"capital_frequency": null,
"keywords": null,
"num_paragraphs": null,
"language": null,
"let_relation": null,
"letter": null,
"let_frequency": null,
"end_phrase": null,
"forbidden_words": null,
"keyword": null,
"frequency": null,
"num_sentences": null,
"postscript_marker": null,
"first_word": null,
"nth_paragraph": null
},
{
"num_highlights": null,
"relation": "at least",
"num_words": 300,
"num_placeholders": null,
"prompt_to_repeat": null,
"num_bullets": null,
"section_spliter": null,
"num_sections": null,
"capital_relation": null,
"capital_frequency": null,
"keywords": null,
"num_paragraphs": null,
"language": null,
"let_relation": null,
"letter": null,
"let_frequency": null,
"end_phrase": null,
"forbidden_words": null,
"keyword": null,
"frequency": null,
"num_sentences": null,
"postscript_marker": null,
"first_word": null,
"nth_paragraph": null
}
]
}
}
```
## Prompt Template
*No prompt template defined.*
## Usage
### Using CLI
```bash
evalscope eval \
--model YOUR_MODEL \
--api-url OPENAI_API_COMPAT_URL \
--api-key EMPTY_TOKEN \
--datasets ifeval \
--limit 10 # Remove this line for formal evaluation
```
### Using Python
```python
from evalscope import run_task
from evalscope.config import TaskConfig
task_cfg = TaskConfig(
model='YOUR_MODEL',
api_url='OPENAI_API_COMPAT_URL',
api_key='EMPTY_TOKEN',
datasets=['ifeval'],
limit=10, # Remove this line for formal evaluation
)
run_task(task_cfg=task_cfg)
```