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

4.6 KiB

MultiPL-E MBPP

Overview

MultiPL-E MBPP is a multilingual code generation benchmark derived from MBPP (Mostly Basic Python Programming). It extends the original MBPP to 18 programming languages, enabling cross-lingual evaluation of code generation capabilities.

Task Description

  • Task Type: Multilingual Code Generation
  • Input: Programming problem prompt with docstring
  • Output: Complete code solution that passes test cases
  • Languages: 18 languages (C++, TypeScript, Shell, C#, Go, Java, Lua, JavaScript, PHP, Perl, Racket, R, Rust, Scala, Swift, Ruby, D, Julia)

Key Features

  • Multilingual evaluation across 18 programming languages
  • Execution-based evaluation with test cases
  • Supports pass@k metric for code generation
  • Docker sandbox environment for safe code execution
  • Derived from MBPP with consistent problem difficulty

Evaluation Notes

  • Sandbox Required: Requires sandbox environment for safe code execution
  • Default evaluation uses test split
  • Primary metric: Accuracy with pass@k aggregation
  • Timeout: 30 seconds per test case
  • See sandbox documentation for setup

Properties

Property Value
Benchmark Name multiple_mbpp
Dataset ID evalscope/MultiPL-E
Paper N/A
Tags Coding
Metrics acc
Default Shots 0-shot
Evaluation Split test
Aggregation mean_and_pass_at_k

Data Statistics

Metric Value
Total Samples 6,987
Prompt Length (Mean) 379.32 chars
Prompt Length (Min/Max) 266 / 1002 chars

Per-Subset Statistics:

Subset Samples Prompt Mean Prompt Min Prompt Max
mbpp-cpp 397 407.55 317 1002
mbpp-ts 390 359.57 295 674
mbpp-sh 382 362.53 296 696
mbpp-cs 386 549.09 481 867
mbpp-go 374 402.21 332 723
mbpp-java 386 553 474 889
mbpp-lua 397 332.52 277 651
mbpp-js 397 325.48 270 645
mbpp-php 397 336.17 280 655
mbpp-pl 396 337.87 282 657
mbpp-rkt 397 342.25 287 660
mbpp-r 397 326.42 271 644
mbpp-rs 354 351.9 285 669
mbpp-scala 396 434.01 364 750
mbpp-swift 396 352.64 285 667
mbpp-rb 397 321.34 266 641
mbpp-d 358 376.49 308 693
mbpp-jl 390 363.01 292 686

Sample Example

Subset: mbpp-cpp

{
  "input": [
    {
      "id": "209e8d38",
      "content": "```cpp\n#include<assert.h>\n#include<bits/stdc++.h>\n// Write a cppthon function to identify non-prime numbers.\nbool is_not_prime(long n) {\n\n```\n\nPlease complete the above code according to the requirements in the docstring. Write the complete code and wrap it in markdown fenced code. The code should not contain `Main` function."
    }
  ],
  "target": "",
  "id": 0,
  "group_id": 0,
  "metadata": {
    "tests": "}\nint main() {\n    auto candidate = is_not_prime;\n    assert(candidate((2)) == (false));\n    assert(candidate((10)) == (true));\n    assert(candidate((35)) == (true));\n    assert(candidate((37)) == (false));\n}\n",
    "stop_tokens": [
      "\n}"
    ],
    "task_id": "mbpp_3_is_not_prime",
    "language": "cpp",
    "doctests": "transform"
  }
}

Prompt Template

Prompt Template:

{prompt}

Sandbox Configuration

This benchmark requires a sandbox environment for code execution.

{
  "image": "volcengine/sandbox-fusion:server-20250609",
  "tools_config": {
    "shell_executor": {},
    "python_executor": {},
    "multi_code_executor": {}
  },
  "memory_limit": "2g",
  "cpu_limit": "2.0"
}

Usage

Using CLI

evalscope eval \
    --model YOUR_MODEL \
    --api-url OPENAI_API_COMPAT_URL \
    --api-key EMPTY_TOKEN \
    --datasets multiple_mbpp \
    --sandbox '{"enabled": true}' \
    --limit 10  # Remove this line for formal evaluation

Using 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=['multiple_mbpp'],
    sandbox={'enabled': True},
    dataset_args={
        'multiple_mbpp': {
            # subset_list: ['mbpp-cpp', 'mbpp-ts', 'mbpp-sh']  # optional, evaluate specific subsets
        }
    },
    limit=10,  # Remove this line for formal evaluation
)

run_task(task_cfg=task_cfg)