c92ca4a2b8b4bcc33ed32a6623f1ee94b422d9d0
Parallelize LLM calls across minibatches to reduce wall-clock time. All domain ports (LLMPort, JudgePort, ProposerPort) are now async. Adapter implementations wrap synchronous DSPy calls with asyncio.to_thread. Judge calls run in parallel within a batch using asyncio.gather + semaphore. Evaluator parallelizes minibatch execution with configurable concurrency. Evolution loop and use case are fully async. Proposer stays sequential. Added --max-concurrency CLI flag and max_concurrency YAML config field. Added async_retry_with_backoff for async error handling. All 139 unit tests pass. Co-Authored-By: Paperclip <noreply@paperclip.ing>
Prometheus
Prompt evolution without reference data.
Quick Start
uv sync
uv run prometheus optimize -i examples/sample_config.yaml -o result.yaml -v
Architecture
Clean hexagonal architecture with four layers:
- Domain — entities, ports, scoring (zero external dependencies)
- Application — use cases, bootstrap, evaluator, evolution loop
- Infrastructure — DSPy signatures, modules, adapters, file I/O
- CLI — Typer app with
optimizecommand
Testing
uv run pytest
uv run ruff check .
uv run mypy src/
Description
Languages
Python
99.9%
Shell
0.1%