Evaluator Management UI#
The evaluator management UI is centered on the EvaluatorsModal β a three-step wizard modal that handles browsing, creating, and configuring evaluator configurations in the auto-evaluation flow. It is surfaced via the SelectEvaluatorSection component inside the New Evaluation page.
The modal manages all state internally (evaluators, configs, testsets, selected variant, view mode) and dispatches between three steps driven by a current index :
| Step | Component | Purpose |
|---|---|---|
| 0 | Evaluators | Browse and manage existing evaluator configs |
| 1 | NewEvaluator | Select an evaluator template ("Step 1/2") |
| 2 | ConfigureEvaluator | Configure the selected template ("Step 2/2") |
Step 2 is conditionally appended to the steps array only when a template is selected . The modal width adapts dynamically β 600px at step 2 without debug panel, 90vw otherwise, with a min-w-[800px] and max-w-[1800px] clamp .
Component Architecture#
All components live under web/oss/src/components/pages/evaluations/autoEvaluation/EvaluatorsModal/.
Step 0 β Evaluators : Displays existing evaluator configurations in either a list table (EvaluatorList) or card grid (EvaluatorCard), toggled by a Radio.Group icon-button pair. View preference is persisted to localStorage under the key "evaluator_view" . Each config supports edit, clone, and delete actions; deletion is guarded by a DeleteModal that validates whether the resource is still in use.
Step 1 β NewEvaluator : A template browser displaying all registered evaluator types. Renders only the list view (NewEvaluatorList); a card variant (NewEvaluatorCard) also exists. Selecting a template sets selectedEvaluator and advances to step 2 .
Step 2 β ConfigureEvaluator : A dynamic form for the chosen template. Uses DynamicFormField (supports Monaco editor for JSON/code inputs), AdvancedSettings for collapsible advanced options, and Messages for chat-based role configuration (system/user/assistant). Supports create, edit, and clone modes via editMode and cloneConfig flags .
After a successful save, if openedFromNewEvaluation is true the modal closes; otherwise it returns to step 0 .
Tag-Based Filtering#
Both the Evaluators step and the NewEvaluator step use getEvaluatorTags() from web/oss/src/lib/helpers/evaluate.ts to populate their filter tab bars.
The four base categories are Classifiers, Similarity, AI / LLM, and Functional. In demo mode, a RAG category is prepended .
Each step renders a Radio.Group of tab buttons. A "View all" default shows every item; selecting a tag filters by item.tags.includes(selectedEvaluatorCategory) . An Input.Search further narrows results by name . The two filters are composed via useMemo.
UI Pattern Evolution#
The evaluator selector UI has gone through several iterations:
PR #3256 β Dropdown β Popover (Dec 2025)
Fixed layout issues with the evaluator template selector by converting EvaluatorTemplateDropdown from an AntD Dropdown to a Popover, giving finer control over dimensions. Also introduced responsive drawer sizing with CSS clamp() and a togglable test panel.
PR #3257 β Inline creation drawers (Dec 2025)
The biggest UX inflection point. Users previously had to navigate away to create evaluators during the new-evaluation flow. This PR introduced CreateEvaluatorDrawer and CreateHumanEvaluatorDrawer for inline creation without context-switching, shared filtering utilities (evaluatorFiltering.ts with an ENABLED_EVALUATORS whitelist), and category tabs on the EvaluatorTemplateDropdown.
PR #4151 β Adapter-driven tabs (Apr 2026)
Extended the selection adapter system with a buildTabs?: (items: T[]) => TabDefinition[] hook for dynamic tab generation. Added controlled open/onOpenChange props to EvaluatorTemplateDropdown so parent components can manage open state. Expanded PopoverCascaderVariant significantly for this capability.
PR #4630 β Cascade selector polish (Jun 2026)
Introduced rich metadata in the cascading selector: version count and date subtitles via evaluatorWorkflowMetaDescription.ts, parent/child checkbox multi-select, bulk clear actions, and auto-opening of the child panel on popover open. These enhancements were localized to the playground evaluator selector.
Key Files Reference#
| File | Purpose |
|---|---|
EvaluatorsModal.tsx | Root modal, step orchestration, data fetching |
Evaluators/index.tsx | Step 0: existing config list/card view |
NewEvaluator/index.tsx | Step 1: template picker |
ConfigureEvaluator/index.tsx | Step 2: dynamic config form |
Evaluators/EvaluatorList.tsx | Table view for existing configs |
Evaluators/EvaluatorCard.tsx | Card view for existing configs |
Evaluators/DeleteModal.tsx | Delete confirmation with resource validation |
NewEvaluator/NewEvaluatorList.tsx | Template list view |
NewEvaluator/NewEvaluatorCard.tsx | Template card view |
ConfigureEvaluator/DynamicFormField.tsx | Dynamic form fields incl. Monaco editor |
ConfigureEvaluator/Messages.tsx | Chat message role configuration |
lib/helpers/evaluate.ts | getEvaluatorTags(), evaluation utilities |