f516ca4be651231182f2191557e1cb21ddcafd6e
- DSPyLLMAdapter now accepts dspy.LM instead of model string, uses dspy.context(lm=...) - DSPyJudgeAdapter, DSPyProposerAdapter, DSPySyntheticAdapter each accept and use own LM - OptimizationConfig gains per-model api_base/api_key_env override fields - cli/app.py creates separate dspy.LM per adapter with per-model overrides - New unit tests verify each adapter isolates its LM from global config Fixes Bug #1 (multi-model config not wired) and Bug #2 (DSPyLLMAdapter ignores model param). 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%