模型训练与调优工具

TuiML是一个机器学习服务,允许AI代理通过自然语言训练、调优、比较和部署模型,无需编写代码。

  • by tuiml
  • HTML
  • 本地部署
  • 13 星标
  • 更新于
在 GitHub 查看 TechyNilesh/tuiml

使用说明

TuiML - Machine Learning for AI Agents.

Ask your agent to train a model, tune it, compare it to the last run, or find an algorithm that fits your data. It just does it. No code. No guesswork. No forgotten context.

Quickstart  •  Python API  •  MCP Tools  •  Benchmarks  •  Docs


Agents can call it — Every algorithm, dataset, and metric ships with a JSON schema. Agents read the schema, call the tool, get structured results. No hallucinated parameters, no wrapper glue.

Agents can discover it — A queryable registry tagged by task, data shape, and benchmarks. Agents browse and pick instead of memorising class names.

Agents can trust it — Deterministic, typed, reproducible outputs. Every call is a loggable, replayable tool invocation you can audit, diff, and trust in production.


Get running in 3 steps

1. Install — one command, installs uv and tuiml globally:

curl -fsSL https://tuiml.ai/install.sh | bash

Already have Python? pip install tuiml works too.

2. Connect your agent — auto-detects Claude Desktop, Cursor, Claude Code, and more:

tuiml setup

3. Ask your agent — in any connected client:

"Train a random forest on my sales data and report the accuracy."

Your agent discovers algorithms, sets parameters from the schema, trains, evaluates, and returns structured results. No glue code.


Use it from Python

The same runtime agents call is a first-class Python library. Every component — the model, each preprocessing step, the feature selector — is described the same way: a spec of the form {"name": ..., **params}. The data is its own spec, {"source": ..., "target": ...}.

import tuiml

# One call trains, evaluates, and returns metrics.
model = tuiml.train({
    "model": {"name": "RandomForestClassifier", "params": {"n_estimators": 100}},
    "data": {"source": "iris", "target": "class"},
    "pipeline": [{"name": "MinMaxScaler"}],
    "evaluation": {"cv": 10, "metrics": ["accuracy_score", "f1_score"]},
})
print(model.metrics_)
# {'cv_accuracy_score_mean': 0.96, 'cv_accuracy_score_std': 0.053,
#  'cv_f1_score_mean': 0.96, 'cv_f1_score_std': 0.057}
preds = model.predict([[5.1, 3.5, 1.4, 0.2]])

Benchmark many algorithms across many datasets with tuiml.experiment(...), and browse the same registry agents use with tuiml.list_algorithms() / tuiml.search_algorithms(...) / tuiml.describe_algorithm(...). See the tutorials for the full tour.


MCP Tools

Everything TuiML can do, your agent can do — the MCP server exposes 30 typed MCP tools with JSON schemas the agent reads directly, addressing a registry of 300+ components — algorithms, preprocessors, metrics and datasets — by name.

Train · Tune · Compare — fit a model, sweep hyperparameters, and rank runs in one conversation. No notebook, no glue code.

Algorithm Discovery — the agent searches the catalog by task, data shape, or constraint and gets ranked recommendations with rationale, not a flat list of names.

Persistent Experiments — every run is logged with lineage and metrics, so today's model can be compared against last week's without re-running anything.

One-Call Serving — deploy a trained model to a local HTTP endpoint with a single tool call. Stop it the same way.

100% Local & Private — your data, your machine. No cloud, no API keys, no telemetry.

Key workflow tools: tuiml_train, tuiml_predict, tuiml_evaluate, tuiml_benchmark, tuiml_tune, tuiml_plot, tuiml_list, tuiml_describe.

Works with anything that speaks MCP — tuiml setup auto-detects Claude Desktop, Claude Code, Cursor, ChatGPT Desktop, Codex CLI, Zed, Continue, Windsurf, VS Code Copilot, Perplexity, Goose, and OpenClaw / NemoClaw. For manual setup, add this to your client's MCP config:

{
    "mcpServers": {
        "tuiml": { "command": "tuiml-mcp" }
    }
}

Benchmarks

Every framework on its own library defaults, across 13 algorithms × 51 real-world TabArena datasets, 10-fold cross-validation, same data and folds for all three:

The harness also runs a matched arm, where hyperparameters are forced to agree across frameworks rather than each library using its own defaults. TuiML matches scikit-learn exactly on SVM, naive Bayes and k-NN there, and leads on Random Forest.

Logistic regression appeared to trail by 2.6 points in that arm. It does not: the three libraries normalise the objective differently, and the harness converted scikit-learn's C=1.0 into a fixed ridge=0.5 for TuiML as well as Weka. That is correct for Weka, which sums the loss, but TuiML averages it — making the penalty a factor of n too strong, 75× on a 150-row dataset. With the equivalence corrected (ridge = 1/(C·n), which is what TuiML's default ridge="auto" already computes) the two agree to four decimal places on iris, and TuiML is ahead on wine and breast cancer. tests/test_reference_parity.py pins this against scikit-learn directly. The matched-arm figures above predate the correction and will change on the next benchmark run. The MLP gap is unexplained and still open.

Weka memory includes its in-process JVM baseline. Every number above is recomputed from benchmarks/summary_cv10.csv by benchmarks/tools/headline.py, and the figure is regenerated by benchmarks/tools/figure.py. Full per-algorithm and per-dataset results: tuiml.ai/benchmarks.


Documentation

Full documentation is available at tuiml.ai/docs, including getting started guides, API reference, and tutorials. Want to contribute? See CONTRIBUTING.md, then pick something from the Build Board — algorithms, integrations, and good first issues. Found a security issue? Please report it privately: see SECURITY.md.


License

BSD 3-Clause License. See LICENSE for details.

Citation

@software{tuiml2026,
    title={TuiML: Machine Learning that agents can actually call},
    author={Verma, Nilesh and Bifet, Albert and Pfahringer, Bernhard and Lim, Nick},
    year={2026},
    url={https://tuiml.ai}
}

Links

🌐 Website 📚 Documentation 🔧 API Reference
💻 GitHub 📦 PyPI 📝 Changelog

Built by the TuiML team — tuiml.ai
If TuiML is useful to you, consider leaving a ⭐ — it helps others find the project.