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 certushd 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 certushd 0.1.17
File Size Uploaded Provenance
certushd-0.1.17.tar.gz 39.9 kB Without provenance Details

Built distribution (wheel)

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

Total release size: 81.5 kB

Release files / certushd-0.1.17.tar.gz

Download URL certushd-0.1.17.tar.gz
Size 39.9 kB
Tags Source
SHA-256 checksum
How to use checksums
a482113532f124e3a010199dcc006edbae7c08ad01926865a34b4cf6214930d8
BLAKE2b-256 checksum
How to use checksums
3ac15f67ae0b2252bca7645134cdcc176a9f87d1dd9f6730827770e3ca2b0bc7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.10

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

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

Security for certushd 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.

Release history Release notifications | RSS feed

This release

0.1.17 This release

2 release files No provenance

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