AutoHD: Automated Heuristics Discovery for LLM Planning
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
autohdandcertushdwith identical versions.pip install autohdgivesimport autohd;pip install certushdgivesimport 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:
- Generate Initial Heuristics: LLMs are prompted to create heuristic functions as Python code
- Evaluate Heuristics: Each heuristic is tested on validation data using heuristic-guided search
- Evolve Heuristics: Iterative refinement through exploration (new ideas) and modification (tweaking existing)
- Select Best: The best heuristic from all generations is chosen
- 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:
litellmfor 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)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| autohd-0.1.17.tar.gz | 40.1 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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.