Skip to main content

Enhanced Per-Feature Labeling

Bulk auto-labeling is fast and covers all your features in one job. Enhanced labeling goes deeper — for features you most want to understand, it runs a structured two-pass analysis that mirrors how a human researcher would interpret the feature, then captures the reasoning in detail.

When to Use Enhanced Labeling

Use enhanced labeling when:

  • A bulk label feels too vague (e.g., "semantic: general topic")
  • A feature is theoretically interesting and deserves careful interpretation
  • You want a full written explanation of why the feature fires, not just what it fires on
  • You're preparing features for export to Neuronpedia

The Enhanced Label Button

In the Feature Detail Modal, click the Enhanced Label button next to Edit Details:

Feature Detail Modal — the Enhanced Label button with tooltip explaining two-pass LLM labeling

Click it to start enhanced labeling for that feature. The job is queued immediately and runs in the background.

Two-Pass Strategy

Enhanced labeling runs two LLM passes before producing a label:

Pass 1 — Per-Example Summarization (Parallel)

For each of your top activation examples, the LLM is asked:

"What is this token doing in THIS specific context? One sentence."

Up to 20 examples are processed in parallel (configurable in Settings → Labeling → Max Parallel Workers). Each produces a one-sentence observation.

Example observations:

Example 4 (act: 5.2):  "The word 'from' introduces the source or origin of a legal precedent."
Example 7 (act: 4.9): "Here 'from' specifies the jurisdiction a case was appealed from."
Example 12 (act: 4.3): "'From' marks the provenance of an expert witness's credentials."

Pass 2 — Synthesis

All per-example observations are collected and fed back to the LLM with the token frequency distribution. The synthesis question is:

"What is the single unifying concept across all these examples?"

The LLM produces a structured JSON response with:

  • Name: a snake_case slug (max 5 words)
  • Category: broad type (semantic, syntactic, positional, discourse, entity, mixed)
  • Description: one precise sentence grounding the pattern
  • Notes: a reasoning paragraph + a markdown table of the per-example summaries

Feature Detail Modal during Pass 1 — "Queued..." status while waiting for a worker slot

Progress Tracking

While enhanced labeling runs, the Feature Detail modal shows live progress:

  • Queued: waiting for a Celery worker
  • Pass 1: Summarizing example N / 20… — updates in real-time
  • Pass 2: Synthesizing label… — brief, usually 5–15 seconds

The feature row in the panel behind the modal updates simultaneously — you don't need to keep the modal open.

The Star Color System

The star on each feature card tracks the labeling lifecycle:

StarMeaning
☆ (no star)Unstarred
⭐ YellowManually starred by you
🟣 PurpleEnhanced labeling is in-flight
🔵 AquaEnhanced labeling completed — permanent

Feature list showing yellow, purple (in-flight), and aqua (completed) star colors

Aqua is permanent. It signals that a human-quality interpretation has been applied. Bulk auto-labeling jobs will automatically skip aqua-starred features, so a subsequent bulk job won't overwrite your carefully enhanced labels.

Completed Label

When synthesis completes, the Feature Detail modal auto-populates the Edit form with the new name, category, description, and notes. Review them, make any edits, and click Save.

Feature Detail Modal after completion — Notes section expanded showing the markdown synthesis paragraph and per-example summary table

The Notes section renders as markdown:

  • The synthesis reasoning paragraph at the top
  • A | Activation | Token | Observation | table of all per-example summaries

This gives you a full audit trail of how the label was derived.

Configuration

Configure enhanced labeling in Settings → Labeling → Enhanced Labeling:

Settings → Labeling tab — Enhanced Labeling section with OpenAI method selected, model dropdown with Fetch Models, and Max Parallel Workers

The Method dropdown lets you switch between OpenAI and any local OpenAI-compatible endpoint:

Method dropdown showing OpenAI and OpenAI-Compatible options

After clicking Fetch Models, a scrollable dropdown lists all models available in your account:

Model dropdown populated with 134 GPT-5 models from Fetch Models

SettingDescription
MethodOpenAI — calls api.openai.com with your stored API key. OpenAI-Compatible — calls any endpoint you've saved in the Endpoints tab (miLLM, Ollama, etc.)
OpenAI ModelThe model to use (e.g. gpt-4o-mini, gpt-5.5). Click Fetch Models to populate from your account.
Max Parallel WorkersHow many Pass-1 examples run concurrently. Default 8. Reduce if your inference server returns errors.
Choosing a Model
  • gpt-4o-mini: Fast, cheap, good quality. Best default for bulk enhanced labeling sessions.
  • gpt-4o: Higher quality, 5× more expensive.
  • gpt-5.5: Best quality for genuinely ambiguous features. Uses more tokens (reasoning models).
  • Local models (miLLM/Ollama): Free, slower, quality varies. Use OpenAI-Compatible method with your miLLM endpoint.
Reasoning Models

Models like gpt-5.5 or o3-mini internally "think" before responding. miStudio automatically allocates a larger token budget (16,000 tokens for synthesis) for these models so the reasoning trace doesn't crowd out the actual answer.

API Key Setup

The OpenAI method requires your OpenAI API key. Set it once in Settings → API Keys:

  1. Navigate to SettingsAPI Keys tab
  2. Click Edit next to OpenAI API Key
  3. Paste your sk-proj-... key and click Save

Settings API Keys tab with OpenAI key in edit mode and HuggingFace token already saved

The key is stored encrypted at rest (AES-256-GCM). After saving it is only shown in masked form (sk-...XXXX) — never in full:

Settings API Keys tab after saving — both keys masked, with Edit/Delete actions

After saving, the Labeling tab will show ✓ "134 model(s) available from OpenAI" once you click Fetch Models.

Enhanced vs. Bulk Labeling

Bulk Auto-LabelingEnhanced Labeling
TriggerLabeling panel → Start Labeling jobFeature Detail modal → ✨ button
ScopeHundreds to thousands of featuresOne feature at a time
LLM Passes1 (single call per feature)2 (per-example summaries → synthesis)
SpeedFast (1–3 sec per feature)Slower (20–90 sec per feature)
OutputName + categoryName + category + description + notes (with full reasoning)
Best forInitial survey of all featuresDeep analysis of interesting features