Skip to content

Add utility functions for DSPy-based judge optimizers#1

Closed
alkispoly-db wants to merge 1 commit intomasterfrom
default_optimizer_utils
Closed

Add utility functions for DSPy-based judge optimizers#1
alkispoly-db wants to merge 1 commit intomasterfrom
default_optimizer_utils

Conversation

@alkispoly-db
Copy link
Owner

Summary

This PR adds utility functions needed for DSPy-based alignment optimizers.

Changes

  • Add judge_trace_utils.py for extracting data from MLflow traces
  • Add dspy_utils.py for DSPy conversion and metric functions
  • Create optimizers package structure

Description

These utilities provide common functionality for DSPy-based alignment optimizers to convert MLflow traces to DSPy examples and create optimization metrics.

This is the first PR in a stack of 3 PRs that refactor the optimizer code:

  1. [This PR] Utils files for traces and DSPy
  2. DSPy base class for optimizers
  3. SIMBA optimizer implementation

Test plan

  • Code passes linting with uv run ruff check
  • Code formatted with uv run ruff format
  • Manual testing of import functionality

Generated with Claude Code

- Add judge_trace_utils.py for extracting data from MLflow traces
- Add dspy_utils.py for DSPy conversion and metric functions
- Create optimizers package structure

These utilities provide common functionality for DSPy-based alignment
optimizers to convert MLflow traces to DSPy examples and create
optimization metrics.

Signed-off-by: Alkis Polyzotis <alkis.polyzotis@databricks.com>
@alkispoly-db
Copy link
Owner Author

Closing to recreate against correct base branch

alkispoly-db pushed a commit that referenced this pull request Oct 22, 2025
Signed-off-by: B-Step62 <yuki.watanabe@databricks.com>
alkispoly-db pushed a commit that referenced this pull request Oct 31, 2025
Signed-off-by: B-Step62 <yuki.watanabe@databricks.com>
alkispoly-db added a commit that referenced this pull request Dec 17, 2025
Implements 6 of 9 review comments from smoorjani:

**API Simplification (Comment #1):**
- Remove last_turn_scorer parameter from public API
- Simplify constructor to use default Pydantic initialization
- Parameter kept as internal field for composition pattern

**Code Quality (Comments #3, mlflow#6, mlflow#8):**
- Remove duplicated kwargs validation (already in base class)
- Remove unnecessary one-line docstring from _evaluate_turn
- Use CategoricalRating enum instead of string literals ("yes"/"no")

**Logic Improvements (Comments mlflow#7, mlflow#9):**
- Move empty results check from _compute_aggregate to __call__
- Add per-turn details for success case (symmetric with failure case)

**Code Reuse Analysis (Comments mlflow#4, mlflow#5):**
- Researched _validate_session: serves different purpose (session ID validation)
- Researched resolve_conversation_from_session: returns different type (list[dict])
- Keeping inline implementations as they serve different purposes

**Deferred (Comment #2):**
- _create_judge() architecture issue deferred per reviewer (non-blocking)

All 5 KnowledgeRetention tests passing.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Signed-off-by: Alkis Polyzotis <alkis.polyzotis@databricks.com>
alkispoly-db added a commit that referenced this pull request Feb 24, 2026
- Refactor _ToggleableSpanProcessor from inheritance to composition,
  wrapping MlflowV3SpanProcessor as inner processor (comment mlflow#5)
- Add Langfuse and Arize/Phoenix to integration tiles (comment #2)
- Simplify arize.mdx span type mapping to 1-to-1 note (comment #3)
- Remove standalone otel.mdx; existing OTel docs suffice (comment mlflow#4)
- Verified None preview works against Databricks backend (comment #1)

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Alkis Polyzotis <alkis.polyzotis@databricks.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.

1 participant