“It is often said that if something can be described, then it can be automated.
The problem is that describing something is a very complex matter.”
Rhetor is an Integrated Modelling Environment for modelling and solving mixed-integer linear programming problems. Rhetor supports a subset of the Optimisation Programming Language (OPL) syntax and it is built on pyopl, a Python library for parsing and solving OPL-like mathematical programming models using Gurobi or Scipy (Highs). Rhetor integrates GenAI features to support and automate the modelling process.
Install:
pip install rhetor
Start Rhetor:
pyopl
To enable GenAI features, set at least one of the following environment variables before starting Rhetor:
OPENAI_API_KEY — for OpenAI modelsGEMINI_API_KEY — for Google Geminiollama locally.
Example (macOS / bash):
export OPENAI_API_KEY="sk-..."
Alternatively, you can use rhetor in Jupyter notebook
or you can use the Rhetor Skills and PyOPL MCP to integrate Rhetor with your favorite agentic workflow (e.g. Github Copilot).
Rhetor embeds GenAI features that support the modelling process: features can be explored within the system in a conversational fashion. A complete user guide and examples for PyOPL are available at:
A selection of LinkedIn posts about Rhetor is available below.
Rhetor is released under the MIT License.
@misc{rossi2026grammarawareliterategenerativemathematical,
title={Grammar-Aware Literate Generative Mathematical Programming with Compiler-in-the-Loop},
author={Roberto Rossi and Steven D. Prestwich},
year={2026},
eprint={2601.17670},
archivePrefix={arXiv},
primaryClass={cs.PL},
url={https://arxiv.org/abs/2601.17670},
}