FullStackDev f516ca4be6 fix: multi-model routing — each adapter uses own dspy.LM instance
- 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>
2026-03-29 12:31:48 +00:00

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 optimize command

Testing

uv run pytest
uv run ruff check .
uv run mypy src/
Description
No description provided
Readme 351 KiB
Languages
Python 99.9%
Shell 0.1%