AI-powered ML project generation with local LLMs - lightweight and modular
Project description
NoLess Library 🚀
NoLess is a Python library for building complete machine-learning projects with the help of cooperative AI agents and local LLMs. It exposes the same generators, planners, and feedback loops that power the original CLI so you can embed them inside notebooks, services, or custom tooling.
Why NoLess
- 🤖 Multi-agent automation – orchestrate dataset discovery, architecture design, and code generation with reusable agents.
- 🧱 LLM-powered builders – generate configs, models, training loops, and tests with a single call to
ModelGenerator. - 🔍 Unified dataset search – query OpenML, Hugging Face, Kaggle, and UCI from the
DatasetSearcherAPI. - 🛠️ Interactive refinement – use
InteractiveFeedbackLoopto iteratively review and improve generated code. - ✅ Production-ready outputs – every project ships with config, model, training, tests, requirements, and README files.
Installation
# Clone the repository
git clone https://github.com/your-org/noless.git
cd noless
# Install dependencies
pip install -r requirements.txt
# Install the library in editable mode
pip install -e .
Optional extras:
- Install Ollama and pull at least one model (e.g.
ollama pull deepseek-r1:1.5b). - Configure Kaggle or Hugging Face credentials if you plan to download datasets automatically.
Quick Start
from noless.generator import ModelGenerator
from noless.ollama_client import OllamaClient
client = OllamaClient()
generator = ModelGenerator(llm_model="deepseek-r1:1.5b", ollama_client=client)
project = generator.create_project(
task="image-classification",
framework="pytorch",
dataset="mnist",
output_dir="./mnist_classifier",
)
print(project["files"])
The output directory now contains config.yaml, model.py, train.py, test_model.py, requirements.txt, and a README ready for version control.
Key Modules
noless.generator.ModelGenerator
Builds end-to-end ML project skeletons. Supports PyTorch, TensorFlow, and scikit-learn targets, optional Ollama-powered authoring, and automatic AI reviews via CodeValidator.
noless.autopilot.AutopilotPlanner
Uses an LLM to interpret natural-language goals, ask clarifying questions, and produce structured blueprints (task, framework, dataset hints, architecture recommendations).
noless.search.DatasetSearcher
Aggregates dataset discovery across OpenML, Hugging Face, Kaggle, and UCI. Returns normalized metadata and can download ready-to-use files.
noless.feedback_loop.InteractiveFeedbackLoop
Provides a conversational refinement loop for any generated file. Supply code plus context and iteratively apply user or AI feedback.
noless.code_validator.CodeValidator
Runs AI reviews against generated code using a larger reviewer model when available, returning improved code plus issue/suggestion lists.
noless.agents.MultiAgentSystem
Optional cooperative layer that lets you run the six specialized agents (orchestrator, dataset, model, code, training, optimization) inside your own applications.
End-to-End Pipeline Example
from noless.autopilot import AutopilotPlanner
from noless.generator import ModelGenerator
from noless.search import DatasetSearcher
from noless.ollama_client import OllamaClient
client = OllamaClient()
planner = AutopilotPlanner(client, llm_model="deepseek-r1:1.5b")
analysis = planner.plan_project("detect defects in solar panel images")
searcher = DatasetSearcher()
datasets = searcher.search(analysis.dataset_query, limit=5)
project = ModelGenerator(
llm_model="deepseek-r1:1.5b",
reviewer_model="mixtral:8x7b",
ollama_client=client,
).create_project(
task=analysis.task,
framework=analysis.framework,
dataset=datasets[0].name if datasets else None,
output_dir="./solar_inspector",
dataset_metadata=datasets[0].__dict__ if datasets else None,
)
Testing
Run the unit test suite after making changes:
python -m unittest
License
NoLess is released under the MIT License. See LICENSE for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file noless-0.2.1a1.tar.gz.
File metadata
- Download URL: noless-0.2.1a1.tar.gz
- Upload date:
- Size: 104.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a0feba42998d4f5828218ae2bca97b3283463afaa48ecefc1053d80b19761f8f
|
|
| MD5 |
76434be053f87b069679bee0989eb983
|
|
| BLAKE2b-256 |
4ed581838b5b0a58902e1a4e1d91d5017946839fe54c131a5a7507f14c5984c7
|
File details
Details for the file noless-0.2.1a1-py3-none-any.whl.
File metadata
- Download URL: noless-0.2.1a1-py3-none-any.whl
- Upload date:
- Size: 118.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
859438701cb17c67e3a6a8fb451e4326e39877bcc36ba7bac78e4cee4f03dd1c
|
|
| MD5 |
a9dbba21aa7e3124fb3744fde69270f1
|
|
| BLAKE2b-256 |
6d63ac9d96b3b7c2f67aa78103d131abf77475e5538e48481a41d11dc1ae9544
|