Skip to content

AaLexUser/Fedot-assistant

Repository files navigation

FEDOT.ASSISTANT logo

Acknowledgement ITMO Python Ask DeepWiki

LLM-based multi-AutoML Orchestrator.

FEDOT.ASSISTANT is an LLM-based prototype for next-generation AutoML. It combines the power of Large Language Models with automated machine learning techniques to enhance data analysis and pipeline building processes.

📁 Workspace Layout

fedot-assistant/
├── packages/
│   ├── fedotllm/           # Core package library
│   └── shared/             # Shared
│
├── apps/
│   ├── frontend/           # Streamlit UI application
│   └── server/            # FastAPI backend server
├── examples/              # Example tasks and datasets
└── docs/                  # Documentation

🆕 What's New

  • CAAFE integration: LLM-driven feature engineering for tabular classification tasks. Enabled by default via feature_transformers.enabled_models: [CAAFE]. Requires installing the optional dependency group and setting an API key (see below).

💾 Installation

  1. Install uv (A fast Python package installer and resolver):
curl -LsSf https://astral.sh/uv/install.sh | sh
  1. Clone the repository:
git clone https://github.com/AaLexUser/Fedot-assistant.git
cd Fedot-assistant
  1. Create a virtual environment:
uv venv --python 3.10
source .venv/bin/activate  # On Unix/macOS
# Or on Windows:
# .venv\Scripts\activate
  1. Install all dependencies:
# Install all workspace packages
uv sync --all-packages

🔧 Configuration

Environment Setup

Set your OpenAI API key:

export FEDOTLLM_LLM_API_KEY="your-api-key-here"

Optional (CAAFE feature generation uses its own LLM settings; you can also put these into a .env file):

export CAAFE_LLM_API_KEY="your-api-key-here"
# Optional overrides (defaults work with the example config)
export CAAFE_LLM_MODEL="openai/gemini-2.0-flash"
export CAAFE_LLM_BASE_URL="https://generativelanguage.googleapis.com/v1beta/openai/"

Configuration Options

The system uses YAML configuration files you can customize. The default configuration is located at packages/fedotllm/src/fedotllm/configs/default.yaml. You can create your own configuration file and specify it using the --config-path option.

🚀 Quick Start

Running the Applications

Frontend (Streamlit UI)

fedotllm-ui

Backend (FastAPI Server)

fedotllm-server

CLI Usage

fedotllm run /path/to/your/task/directory

# Use specific presets
fedotllm run /path/to/your/task/directory --presets best_quality

# Custom configuration
fedotllm run /path/to/your/task/directory --config-path config.yaml

# Override specific settings
fedotllm run /path/to/your/task/directory -o automl.enabled=fedot,time_limit=7200

Enable or configure CAAFE (optional)

CAAFE performs LLM-driven feature engineering and currently supports classification tasks only.

# Ensure optional deps are installed
uv sync --group caafe

# Run with CAAFE enabled (default), customizing parameters on the fly
fedotllm run /path/to/task \
  -o "feature_transformers.enabled_models=[CAAFE]" \
  -o "feature_transformers.models.CAAFE.num_iterations=5" \
  -o "feature_transformers.models.CAAFE.optimization_metric=roc" \
  -o "feature_transformers.models.CAAFE.eval_model=lightgdm"  # or tab_pfn

Task Directory Structure

Your task directory should contain:

  • Training data file (e.g., train.csv)
  • Test data file (e.g., test.csv)
  • Sample submission file (e.g., sample_submission.csv)
  • Task description file (e.g., descriptions.txt)

Quality Presets

  • medium_quality: Fast execution with good performance
  • best_quality: Maximum accuracy (default)

📦 Package Usage

You can also use the FedotLLM package directly in your Python code:

from fedotllm import run_assistant

# Run a task programmatically
task, assistant = run_assistant(
    task_path="/path/to/task",
    config_overrides=["time_limit=600"],
    presets="best_quality",
)

🙌 Acknowledgement

Our implementation adapts code from AutoGluon Assistant. We thank authors of this project for providing high quality open source code!

About

LLM-based multi-AutoML Orchestrator

Resources

License

Stars

Watchers

Forks

Contributors

Languages