Skip to main content

LLM-powered AutoML — model selection, tuning, and training via any LLM

Project description

ModelGPT

LLM-powered AutoML. Describe your dataset, pick a task — ModelGPT asks an LLM to design, tune, and fit the best model for you. Works with OpenAI, Anthropic, Groq, Ollama, and any other LiteLLM-supported provider.

from modelgpt import ModelGPT

mg = ModelGPT(model="gpt-4o-mini", api_key="sk-...")
model = mg.fit(X_train, y_train, task="regression")
predictions = model.predict(X_test)

How it works

Your data  ──▶  Dataset summary  ──▶  LLM prompt
                                          │
                                          ▼
                                 LLM generates Python
                                 (ensemble + CV tuning)
                                          │
                                          ▼
                                   exec() in sandbox
                                          │
                             ┌────────────┴────────────┐
                             ▼                         ▼
                       Fitted model           Error? retry (→ LLM
                       returned               sees error, self-corrects)
                                                       │
                                              Max retries hit?
                                                       ▼
                                              Safe fallback model

ModelGPT feeds the LLM a structured dataset summary (shape, dtypes, missing values, target statistics, class distribution). The LLM returns raw Python that uses cross-validated hyperparameter search and an ensemble method. That code runs in a controlled namespace with X and y already bound. If it fails, the error is sent back to the LLM for self-correction — up to max_retries times. If every retry fails, ModelGPT falls back to a safe, well-tuned GradientBoosting model so .fit() never crashes your pipeline.


Installation

Install the base package plus whichever backend you want to use:

pip install modelgpt[openai]      # OpenAI (gpt-4o, gpt-4o-mini, …)
pip install modelgpt[anthropic]   # Anthropic (claude-haiku-4-5, claude-opus-4-5, …)
pip install modelgpt[groq]        # Groq (fast + free tier)
pip install modelgpt[ollama]      # Ollama (local, no API key needed)
pip install modelgpt[all]         # everything including xgboost, lightgbm, catboost

Quickstart

OpenAI

from modelgpt import ModelGPT

mg = ModelGPT(model="gpt-4o-mini", api_key="sk-...")
model = mg.fit(X_train, y_train, task="regression", metric="RMSE")
predictions = model.predict(X_test)

Anthropic

mg = ModelGPT(model="claude-haiku-4-5", api_key="sk-ant-...")
model = mg.fit(X_train, y_train, task="classification", metric="AUC")

Groq

mg = ModelGPT(model="groq/llama3-70b-8192", api_key="gsk_...")
model = mg.fit(X_train, y_train, task="classification")

Ollama (local, no API key)

# First: install Ollama (https://ollama.com/download), then:
ollama pull qwen2.5-coder:7b
ollama serve
mg = ModelGPT(model="ollama/qwen2.5-coder:7b")
model = mg.fit(X_train, y_train, task="regression")

Using environment variables instead of passing api_key

export OPENAI_API_KEY="sk-..."
export ANTHROPIC_API_KEY="sk-ant-..."
export GROQ_API_KEY="gsk_..."
mg = ModelGPT(model="gpt-4o-mini")   # picks up key from env automatically

API Reference

ModelGPT(model, api_key, max_retries, verbose)

Parameter Type Default Description
model str "gpt-4o-mini" Any LiteLLM model string (see examples above)
api_key str | None None API key for the backend. If None, reads from environment variable
max_retries int 3 How many times to retry + self-correct on code execution failure
verbose bool True Print generated code and progress to stdout

.fit(X, y, task, metric)

Parameter Type Default Description
X pd.DataFrame Feature matrix
y pd.Series Target vector
task str "regression" "regression" or "classification"
metric str | None None Metric hint passed to the LLM (e.g. "RMSE", "AUC", "F1")

Returns a fitted sklearn-compatible model with a .predict() method.


Choosing a model

Larger and more capable models tend to generate better, more reliable code. Here are some good options ranked by capability:

Provider Model string Notes
OpenAI "gpt-4o" Best results
OpenAI "gpt-4o-mini" Fast, cheap, good default
Anthropic "claude-opus-4-5" Excellent code generation
Anthropic "claude-haiku-4-5" Fast and affordable
Groq "groq/llama3-70b-8192" Very fast, free tier available
Ollama "ollama/qwen2.5-coder:7b" Local, fully private
Ollama "ollama/qwen2.5-coder:32b" Local, best quality

Tips for better results

Tell the LLM which metric matters. The metric argument is forwarded directly into the prompt:

model = mg.fit(X_train, y_train, task="regression", metric="RMSE")
model = mg.fit(X_train, y_train, task="classification", metric="AUC")

Increase retries for hard tasks. If the LLM frequently generates broken code, raise max_retries:

mg = ModelGPT(model="gpt-4o-mini", max_retries=5)

Inspect what was generated. With verbose=True (the default) the full generated code is printed. You can copy it, tweak it, and re-run it manually.

Fallback is always safe. If every retry fails, ModelGPT automatically falls back to a well-tuned GradientBoostingRegressor / GradientBoostingClassifier, so .fit() never crashes your pipeline.

Install the boosting extras for the best LLM-generated models:

pip install modelgpt[boosting]   # adds xgboost, lightgbm, catboost

Project structure

modelGPT/
├── modelgpt/
│   ├── __init__.py          # Public API
│   └── modelgpt.py          # Core ModelGPT class
├── tests/
│   └── test_modelgpt.py     # Test suite
├── example/
│   └── example_usage.py     # Quickstart demo (diabetes dataset)
├── pyproject.toml
└── README.md

Requirements

  • Python ≥ 3.10
  • litellm, pandas, scikit-learn, numpy (installed automatically)
  • An API key for your chosen backend or Ollama running locally

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

modelgpt-0.2.1.tar.gz (8.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

modelgpt-0.2.1-py3-none-any.whl (8.0 kB view details)

Uploaded Python 3

File details

Details for the file modelgpt-0.2.1.tar.gz.

File metadata

  • Download URL: modelgpt-0.2.1.tar.gz
  • Upload date:
  • Size: 8.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.0

File hashes

Hashes for modelgpt-0.2.1.tar.gz
Algorithm Hash digest
SHA256 7c761aa9c2673952f0c59fc3397971b51e351ce0582f3ea222aa4c388b007fe0
MD5 a343d26b2745765cbe980f8cb055821f
BLAKE2b-256 13c582f361383d2576c1f8e50b9b6273a98f9346fe20b323f2751c8e04c7f445

See more details on using hashes here.

File details

Details for the file modelgpt-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: modelgpt-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 8.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.0

File hashes

Hashes for modelgpt-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d8e4b64d22cb776662b48812eb8004297b11115bad8f97c5c889fc7dde08985d
MD5 1ba89617451cd7be87d469d61b149fb5
BLAKE2b-256 2f80d74c98916fb52d410e1a9fde4f868fced743891ee029a3c519ea0fa93897

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page