A benchmarking tool that sends pedagogical prompts to multiple LLM providers and collects their responses for comparison. The use case is generating Python programming exercises for beginner students.
- Loads a system prompt and a user prompt from the
prompts/directory - Sends both to each configured model across all providers
- Saves each response as a text file under
responses/ - Appends timing and word-count statistics to
statistics.txt
| Runner | Models |
|---|---|
| OpenAI | gpt-5.4, gpt-5.3-codex |
| Anthropic | claude-opus-4-7, claude-sonnet-4-6 |
| PublicAI (Swiss AI) | apertus-70b-instruct, apertus-8b-instruct |
| Infomaniak | mistral3 (Mistral-Small-3.2-24B) |
| Ollama (local) | mistral 7B |
prompts/
system_prompt.txt # Meta-prompt defining the exercise format
user_prompt_1.txt # User prompt variant 1
user_prompt_2.txt # User prompt variant 2
user_prompt_3.txt # User prompt variant 3
responses/
user_prompt_<id>/
<runner>/
<model>/
<model>_response_1.txt
...
statistics.txt # ElapsedTime and word count per run
config.py # API keys
mamba create -n didinfo python=3.11
mamba activate didinfoIf mamba is not installed, you can use conda instead (
conda create ...,conda activate ...), or a standard Python virtual environment:python -m venv .venv source .venv/bin/activate # macOS/Linux .venv\Scripts\activate # Windows
pip install -r requirements.txt- Download and install Ollama from ollama.com
- Start the Ollama service
- Pull the required models:
ollama pull mistralSet your API keys in config.py:
api_keys = {
'OPENAI_API_KEY': '...',
'ANTHROPIC_API_KEY': '...',
'INFOMANIAK_API_KEY': '...',
'PUBLICAI_API_KEY': '...',
}Run all providers with a given prompt index (default: 1):
python run.py -p 1Run a single provider:
python run_anthropic.py -p 2
python run_openai.py -p 3Each run appends a new numbered response file, preserving previous runs.
The system prompt defines a pedagogical framework for generating Python function exercises for beginners. It specifies fixed constraints (no loops, no conditions, no imports) and variation parameters (scaffolding level, pedagogical progression, context/theme).
Each exercise is structured in four sections: Consignes (instructions), Code de base (starter code), Solution, Explication.