Skip to main content

AutoHD: Automated Heuristics Discovery for LLM Planning

PyPI Python License Documentation


What is AutoHD?

AutoHD (Automated Heuristics Discovery) is a Python package that enables LLMs to generate and evolve heuristic functions for guiding inference-time search in complex planning tasks.

Based on the research paper: "Complex LLM Planning via Automated Heuristics Discovery" (arXiv:2502.19295v1, Feb 2025, Texas A&M University).

Two names, one project: this code is published on PyPI as both autohd and certushd with identical versions. pip install autohd gives import autohd; pip install certushd gives import certushd. Everything below applies to both — substitute the name you installed.

Key Features

  • LLM-Generated Heuristics: LLMs automatically generate heuristic functions as Python code
  • Heuristic Evolution: Iterative refinement through exploration and modification strategies
  • Multiple Search Algorithms: Support for Greedy BFS and A* search
  • Multiple Planning Tasks: Blocksworld, Game of 24, and Rubik's Cube
  • LLM-Agnostic: Works with OpenAI, Anthropic, and other providers via litellm
  • LangChain Integration: Plug into LangChain agents and chains

Quick Start

pip install autohd

Basic Usage

import asyncio
from autohd import AutoHD
from autohd.core.config import AutoHDConfig, LLMConfig

async def main():
    # Configure AutoHD
    config = AutoHDConfig(
        task_name="blocksworld",
        llm=LLMConfig(model="gpt-4o", provider="openai"),
    )
    
    # Initialize AutoHD
    autohd = AutoHD(config=config)
    
    # Real benchmark instances per the AutoHD paper (arXiv:2502.19295)
    from autohd.benchmarks import get_dataset
    train_data = get_dataset("blocksworld", 10, seed=0)
    test_data = get_dataset("blocksworld", 10, seed=1)

    # Run the pipeline
    results = await autohd.run(
        train_data=train_data,
        test_data=test_data,
    )
    
    print(f"Best heuristic accuracy: {results['test_results']['accuracy']:.1%}")

asyncio.run(main())

CLI Usage

# Run on Blocksworld
autohd run --task blocksworld --model gpt-4o

# Run on Game of 24
autohd run --task game24 --model gpt-4o

# Run on Rubik's Cube
autohd run --task rubiks_cube --model gpt-4o

# Custom configuration
autohd run --task blocksworld --generations 5 --population 10 --search-algorithm astar

Architecture

autohd/
├── core/           # Core framework
│   ├── autohd.py   # Main AutoHD class
│   ├── config.py   # Configuration classes
│   └── llm_client.py # LLM API abstraction
├── search/         # Search algorithms
│   ├── greedy_bfs.py # Greedy BFS solver
│   └── astar.py     # A* solver
├── benchmarks/     # Planning task implementations
│   ├── base.py     # Base benchmark class
│   ├── blocksworld.py # Blocksworld task
│   ├── game24.py   # Game of 24 task
│   └── rubiks_cube.py # Rubik's Cube task
├── integrations/   # Framework integrations
│   └── langchain.py # LangChain integration
└── cli/            # Command-line interface
    └── main.py     # CLI entry point

How It Works

AutoHD follows a 5-step pipeline:

  1. Generate Initial Heuristics: LLMs are prompted to create heuristic functions as Python code
  2. Evaluate Heuristics: Each heuristic is tested on validation data using heuristic-guided search
  3. Evolve Heuristics: Iterative refinement through exploration (new ideas) and modification (tweaking existing)
  4. Select Best: The best heuristic from all generations is chosen
  5. Test: The selected heuristic is evaluated on test data

Performance

Based on the research paper:

Task GPT-4o-mini GPT-4o Llama 3.1 70B Best Baseline
Blocksworld 42.4% 75.1% 59.1% ~2× improvement
Game of 24 54% 70% 69% vs ToT 42/62/59
Rubik's Cube (2×2) 82.5% 83.1% 84.7% vs XoT 67/80/78

Requirements

  • Python 3.10+
  • OpenAI API key (or other LLM provider)
  • Optional: litellm for multi-provider support

License

MIT License

Citation

If you use AutoHD in your research, please cite:

@article{ling2025autohd,
  title={Complex LLM Planning via Automated Heuristics Discovery},
  author={Ling, Hongyi and Parashar, Shubham and Khurana, Sambhav and Olson, Blake and Basu, Anwesha and Sinha, Gaurangi and Tu, Zhengzhong and Caverlee, James and Ji, Shuiwang},
  journal={arXiv preprint arXiv:2502.19295},
  year={2025}
}

Metadata

Release files for autohd 0.1.17

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for autohd 0.1.17
File Size Uploaded Provenance
autohd-0.1.17.tar.gz 40.1 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for autohd 0.1.17
File Interpreter ABI Platform
autohd-0.1.17-py3-none-any.whl Python 3 none any Details

Total release size: 81.6 kB

Release files / autohd-0.1.17.tar.gz

Download URL autohd-0.1.17.tar.gz
Size 40.1 kB
Tags Source
SHA-256 checksum
How to use checksums
0fe736f88cdc73b4226919bc8d77c17bac58958fb6b1fbda81cd8615d39c47af
BLAKE2b-256 checksum
How to use checksums
9ffaeb73283b9fd3c324497051dfe67334cccba4a76ce30b7e335f8cdab3fda1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.10

Release files / autohd-0.1.17-py3-none-any.whl

Download URL autohd-0.1.17-py3-none-any.whl
Size 41.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6e0ecca75f8db88530cebbfa9d70ee64ee505f6a72a17efae353549efd87bbb0
BLAKE2b-256 checksum
How to use checksums
ed5c8495ac69f7511f1ca2d1728c8b9331c6c8b45f44957066d008fad248056a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.10

Security for autohd 0.1.17

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page