Skip to content

feat: add Helix integration for optimize_anything#332

Open
LakshyAAAgrawal wants to merge 2 commits into
mainfrom
feat/helix-integration
Open

feat: add Helix integration for optimize_anything#332
LakshyAAAgrawal wants to merge 2 commits into
mainfrom
feat/helix-integration

Conversation

@LakshyAAAgrawal

Copy link
Copy Markdown
Contributor

Summary

  • Add gepa.adapters.helix module with two helpers:
    • make_helix_evaluator(config, target_file, ...) — wraps Helix's run_evaluator as an optimize_anything-compatible evaluator
    • make_helix_batch_evaluator(config, target_file, ...) — wraps Helix's run_evaluators_parallel as a batch_evaluator
  • Add helix-evo>=0.1.0 as optional dependency under gepa[helix] (Python >= 3.11)

Usage

from gepa.adapters.helix import make_helix_evaluator
from gepa.optimize_anything import optimize_anything

evaluator = make_helix_evaluator(
    config="helix.toml",
    target_file="src/solver.py",
)

result = optimize_anything(
    seed_candidate=open("src/solver.py").read(),
    evaluator=evaluator,
    objective="Maximize accuracy on the test suite.",
)

cc @KE7

Test plan

  • Existing test suite passes (446 passed, 2 skipped)
  • ruff check passes
  • Manual integration test with a Helix-configured repo

🤖 Generated with Claude Code

Add `gepa.adapters.helix` module with `make_helix_evaluator()` and
`make_helix_batch_evaluator()` helpers that bridge Helix's evaluation
infrastructure (run_evaluator, run_evaluators_parallel) to
optimize_anything's evaluator/batch_evaluator interfaces.

Add `helix-evo` as an optional dependency under `gepa[helix]`
(requires Python >= 3.11).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@semanticdiff-com

semanticdiff-com Bot commented Apr 13, 2026

Copy link
Copy Markdown

Review changes with  SemanticDiff

Changed Files
File Status
  pyproject.toml Unsupported file format
  pyrightconfig.json  0% smaller
  src/gepa/adapters/helix.py  0% smaller

@KE7

KE7 commented Apr 13, 2026

Copy link
Copy Markdown
Contributor

This seems reasonable to me. shutil.copytree works especially since the text artifact will be a single file. git worktrees would have been overkill

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants