Spaces:
Runtime error
Runtime error
File size: 18,091 Bytes
bd4a96a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 | # LLM Prompts Report
All LLM prompts used by mindVisualizer, with exact templates, parameters, code locations, and triggers.
**To see prompts live at runtime**, pass `--debug` to any script:
```bash
python -m src.main --no-rag --debug
python examples/rdcim_propagation.py --debug
python examples/roi_flow_mode.py --debug
```
---
## 1. Initialize Region States from Global State
**File:** `src/brain_state.py` β method `BrainStateDB.initialize_from_global()`
**Trigger:** Press `S` key (both flow mode and rDCIM mode)
**Model params:** temperature=0.4, max_tokens=4000
**Template:**
```
You are a neuroscience expert. The brain is currently in this overall state:
"{global_state}"
For each brain region below, write a SHORT (1-2 sentences) specific description of
what this region is likely doing right now given the overall brain state.
IMPORTANT RULES:
- Be SPECIFIC about the actual cognitive content, not generic function descriptions
- Don't force every region to match the global state -- some regions may be doing
their own thing (e.g., sensory processing, homeostasis) independent of the global state
- First consider what the region generally does, then derive what it's specifically
doing in this context
- Focus on CURRENT ACTIVITY, not general capabilities
Regions:
{regions}
Reply as JSON object mapping region name to state description. Example:
{"Amygdala (AMY)": "Low-level monitoring for threats; no active fear processing", ...}
Only output valid JSON, nothing else.
```
**Parameters:**
- `{global_state}` β user-provided description (e.g., "someone feeling anxious") or default "a resting state with spontaneous mind-wandering"
- `{regions}` β newline-separated list of region names (batched in groups of ~30)
**Output:** JSON object mapping region name to state description string.
---
## 2. Validate Perturbation
**File:** `src/brain_state.py` β method `BrainStateDB.validate_perturbation()`
**Trigger:** Called internally before applying a perturbation
**Model params:** temperature=0.2, max_tokens=300
**Template:**
```
You are a neuroscience expert. Evaluate whether this perturbation makes sense
for the specified brain region.
Region: {region}
Current state: {current}
Requested perturbation: "{perturbation}"
Consider:
1. What does this brain region actually do? (its primary functions)
2. Is the requested perturbation something this region CAN process?
3. If not, what WOULD be an appropriate perturbation for this region?
Reply as JSON:
{
"valid": true/false,
"region_function": "brief description of what this region does",
"warning": "warning if questionable (empty string if fine)",
"suggestion": "suggested alternative perturbation if invalid (empty string if valid)"
}
Only output valid JSON.
```
**Parameters:**
- `{region}` β region name
- `{current}` β current state description
- `{perturbation}` β the requested perturbation text
**Output:** JSON object with `valid`, `region_function`, `warning`, `suggestion`.
---
## 3. Propose Perturbations
**File:** `src/brain_state.py` β method `BrainStateDB.propose_perturbations()`
**Trigger:** Press `P` key in rDCIM mode
**Model params:** temperature=0.5, max_completion_tokens=400
**Note:** Uses OpenAI SDK directly (not LangChain) for reliability in background threads.
**Template:**
```
You are a neuroscience expert. A user wants to perturb a brain region
in a resting-state simulation.
Region: {short_name}
Current state: "{current}"
Based on the region's known functions and its current state, propose
exactly 4 different plausible ways this region's state could change.
Each should be specific to this region's actual function, a realistic
state change, described in 1 short sentence, and diverse from each other.
Reply as a JSON array of exactly 4 strings:
["perturbation 1", "perturbation 2", "perturbation 3", "perturbation 4"]
Only output valid JSON.
```
**Parameters:**
- `{short_name}` β region name (abbreviated if >80 chars)
- `{current}` β current state description
**Output:** JSON array of 4 perturbation strings. Falls back to defaults if API fails.
---
## 4. Alter Region State
**File:** `src/brain_state.py` β method `BrainStateDB.alter_region_state()`
**Trigger:** After user selects a perturbation (keys 1-5 in rDCIM mode)
**Model params:** temperature=0.3, max_tokens=200
**Template:**
```
You are a neuroscience expert. A brain region's state needs to be modified.
Region: {region}
Current state: {current}
Modification requested: {modification}
Write a new SHORT (1-2 sentences) specific state description that incorporates
the requested modification while staying neuroscientifically plausible.
Only output the new state description, nothing else.
```
**Parameters:**
- `{region}` β region name
- `{current}` β current state
- `{modification}` β the selected perturbation
**Output:** Plain text β the new state description (1-2 sentences).
---
## 5. Propagate Through Graph (rDCIM Mode)
**File:** `src/brain_state.py` β method `BrainStateDB.propagate_through_graph()`
**Trigger:** Press `Shift+P` in rDCIM mode
**Model params:** temperature=0.3, max_tokens=300
**Called once per affected region (depth-by-depth).**
**Template:**
```
You are a computational neuroscientist analyzing intrinsic information flow in a resting-state brain network (rs-fMRI effective connectivity).
TARGET REGION: {target}
TARGET PREVIOUS STATE: {target_state}
INCOMING SIGNAL FROM: {source}
INCOMING SIGNAL STRENGTH: {strength} (connection weight: {weight:.4f})
CONNECTION TYPE: {sign}
SOURCE REGION'S CURRENT STATE: "{source_state}"
{context}
CRITICAL INSTRUCTIONS:
1. NO SEMANTIC ECHOING: Do not simply copy the semantic concept of the source region. You must TRANSLATE the incoming signal into the strict anatomical and functional domain of the TARGET REGION. If the source is about "visual beauty", the motor cortex should NOT start "appreciating beauty" -- it should show changes in motor readiness or postural tone.
2. RESTING-STATE CONTEXT: The connectivity data reflects intrinsic resting-state dynamics. Information flow here represents spontaneous internal cognition or modulation of the target region's resting equilibrium.
3. INHIBITORY vs EXCITATORY: If the connection is INHIBITORY, the incoming signal SUPPRESSES or DAMPENS the target region's activity. If EXCITATORY, it AMPLIFIES or FACILITATES the target's function. This fundamentally changes the nature of the state change.
4. INTRINSIC DYNAMICS: Focus on how the target region's OWN function shifts, not on relaying the source's content.
5. Output ONLY the precise description of the target region's new state (1-2 sentences). No conversational filler.
```
**Parameters:**
- `{target}` β target region name
- `{target_state}` β target's previous state
- `{source}` β source region name
- `{source_state}` β source region's current state
- `{strength}` β "STRONG (well above average)", "moderate", or "weak (below average)"
- `{sign}` β "EXCITATORY (positive connection weight)" or "INHIBITORY (negative connection weight)"
- `{weight}` β absolute connection weight (float)
- `{context}` β additional context showing 1-3 other strong un-perturbed connections
**Output:** Plain text β new state description (1-2 sentences).
---
## 6. Propagate Through Regions (Flow Mode)
**File:** `src/brain_state.py` β method `BrainStateDB.propagate_through_regions()`
**Trigger:** Press `Shift+S` in flow mode with active probe
**Model params:** temperature=0.3, max_tokens=300
**Template:**
```
You are a computational neuroscientist analyzing intrinsic information flow in a resting-state brain network.
TARGET REGION: {target}
TARGET PREVIOUS STATE: {target_state}
INCOMING SIGNAL FROM: {source}
INCOMING SIGNAL STRENGTH: {strength}
SOURCE REGION'S CURRENT STATE: "{source_state}"
CRITICAL INSTRUCTIONS:
1. NO SEMANTIC ECHOING: Do not simply copy the semantic concept of the source region. You must TRANSLATE the incoming signal into the strict anatomical and functional domain of the TARGET REGION ({target}). For example, if the source is a visual area processing "edge detection" and the target is a motor area, do NOT say the motor area is doing "edge detection" -- describe how the motor area's OWN function shifts in response.
2. RESTING-STATE CONTEXT: This is intrinsic resting-state dynamics, not task-driven activity. Describe subtle modulations, not dramatic activations.
3. INTRINSIC DYNAMICS: Focus on how {target}'s OWN function shifts given the incoming signal. The target region does what IT does, influenced by the source -- not what the source does.
Output ONLY the precise description of {target}'s new state (1-2 sentences). No labels, no prefixes.
```
**Parameters:**
- `{target}` β target region name
- `{target_state}` β target's previous state
- `{source}` β source region name
- `{source_state}` β source's current state
- `{strength}` β "STRONG", "moderate", or "weak"
**Output:** Plain text β new state description (1-2 sentences).
---
## 7. Summarize Changes (Network-Level Overview)
**File:** `src/brain_state.py` β method `BrainStateDB.summarize_changes()`
**Trigger:** Called automatically after propagation completes
**Model params:** temperature=0.3, max_tokens=800
**Template:**
```
You are a network neuroscientist analyzing a macroscopic shift in resting-state brain activity based on effective connectivity changes.
INITIAL BRAIN STATE MAP:
{comparisons_before}
POST-PROPAGATION BRAIN STATE MAP:
{comparisons_after}
CRITICAL INSTRUCTIONS:
1. DO NOT list the regions or compare them one by one.
2. This is a resting-state brain network -- interpret changes as shifts in intrinsic functional organization, not external stimulus-response narratives.
3. FOCUS ON INTRINSIC STATES: Synthesize this data into ONE coherent paragraph explaining the overall shift in the subject's internal cognitive, emotional, or physiological baseline.
4. NETWORK LEVEL INTEGRATION: Identify the broad functional domains driving the new equilibrium and describe the holistic network-level transition based purely on the provided state changes.
Provide your coherent resting-state network insight below:
```
**Parameters:**
- `{comparisons_before}` β newline-separated before states: `- Region: "state"`
- `{comparisons_after}` β newline-separated after states: `- Region: "state"`
**Output:** One coherent paragraph describing the network-level shift.
---
## 8. Generate Information Flow Story
**File:** `src/brain_state.py` β method `BrainStateDB.generate_flow_story()`
**Trigger:** Called automatically after propagation completes
**Model params:** temperature=0.4, max_tokens=800
**Template:**
```
You are a science writer narrating how a signal traveled through a resting-state brain network.
SIGNAL FLOW PATH (in order of propagation):
{flow_path}
Write a SHORT narrative story (2-3 paragraphs) of how the information traveled through the brain:
- Start with where the signal originated and what it carried
- Describe how each region it reached processed and TRANSFORMED the signal according to its own function
- Highlight how the signal's meaning changed as it moved through different functional domains
- End with the overall effect on the brain's resting state
RULES:
- Do NOT list regions mechanically -- weave them into a flowing narrative
- Use concrete, vivid language about what each region actually does
- Show how the signal was transformed at each hop, not just passed along
- Keep it grounded in neuroscience but accessible to a general audience
```
**Parameters:**
- `{flow_path}` β formatted flow steps, e.g.:
```
ORIGIN -- Region: "before" -> "after"
DEPTH 1 (excitatory) -- Region: "before" -> "after"
DEPTH 2 (inhibitory) -- Region: "before" -> "after"
```
**Output:** 2-3 paragraph narrative story.
---
## 9. Probe Flow Analysis (RAG Chain)
**File:** `src/region_analyzer.py` β function `create_rag_chain()`
**Trigger:** Press `Shift+G` in flow mode (when RAG is enabled)
**Model params:** temperature=0.3, max_tokens=1500
**System prompt template:**
```
You are a neuroscience expert interpreting information flow in a resting-state brain.
Reference knowledge about relevant brain regions:
{context}
{question}
CRITICAL INSTRUCTIONS -- read carefully before answering:
1. Do NOT list which regions the probe passed through -- the user already knows that.
2. Do NOT give a generic answer like "this flow is associated with the default mode network" -- that is too shallow.
3. DO explain what SPECIFIC INFORMATION is likely flowing along this exact path.
4. DO describe the functional MEANING of this particular flow trajectory.
5. DO explain how each region transforms the signal before passing it on.
6. DO consider laterality.
7. This is a RESTING-STATE brain -- describe what spontaneous cognitive process would produce this exact flow.
```
**Parameters:**
- `{context}` β retrieved RAG documents (top-10 semantic matches from knowledge base)
- `{question}` β the full analysis question (see Prompt 11 below)
---
## 10. Probe Flow Analysis (Direct / No-RAG)
**File:** `src/region_analyzer.py` β function `_call_direct_responses_api()`
**Trigger:** Press `Shift+G` in flow mode (with `--no-rag` flag)
**API:** OpenAI Responses API (not LangChain)
**Model params:** reasoning.effort="low", max_output_tokens=2500
**Instructions (system-level):**
```
You are a neuroscience expert interpreting information flow in a resting-state brain.
Do NOT repeat the region list.
Do explain:
1. what specific information is likely flowing,
2. how the signal is transformed across regions,
3. what spontaneous resting-state process could produce this path,
4. the functional purpose of this exact trajectory.
Be concrete, not generic.
```
**Input:** The full question (see Prompt 11).
---
## 11. Probe Analysis Question Construction
**File:** `src/region_analyzer.py` β function `analyze_with_gpt()`
**Used by:** Both Prompt 9 (RAG) and Prompt 10 (no-RAG)
**Question template:**
```
A probe was placed in a resting-state brain and followed the intrinsic information
flow field through these regions:
{formatted_transitions}
Analyze this SPECIFIC flow pathway in depth:
1. What concrete information is likely being carried along this path?
2. How does the information CHANGE and get TRANSFORMED as it passes through each region?
3. What spontaneous resting-state cognitive process would produce this EXACT flow?
4. What is the functional PURPOSE of information flowing in this exact direction and order?
Do NOT repeat the region list or give a generic network label. Give deep, specific insight.
Keep your response SHORT and focused β 2-3 concise paragraphs maximum.
```
**Parameters:**
- `{formatted_transitions}` β output of `format_transitions_text()`, listing regions in order with enriched context including:
- **Interaction type**: "passed through center", "traversed mid-region", "briefly touched surface", "passed through periphery", or "nearby (did not enter, ~X.Xmm away)"
- **Penetration depth**: 0-100% normalized distance to region center
- **Traversal direction**: anatomical direction (e.g., "moving upward and anteriorly")
- **Entry/exit positions**: relative position within the region (e.g., "upper-left-anterior")
- **Hemisphere**: left/right when applicable
- **Flow strength, entropy, enclosing regions**: as before
- **Subregion**: extra parcellation subregion name when available
---
## 12. ROI Flow Interpretation (ROI Flow Mode)
**File:** `src/roi_flow.py` β class `ROIFlowLLM.interpret_roi_flow()`
**Trigger:** Press `Shift+G` in ROI flow mode after recording a path
**API:** OpenAI Responses API
**Model params:** reasoning.effort="low", max_output_tokens=2500
**Note:** ROI flow mode uses its own manifold-space MDN flow field (downloaded from HuggingFace), not the brain-space field used by flow mode.
**Instructions:**
```
You are a neuroscientist interpreting brain state dynamics from a manifold flow
simulation. The user traced a path through a learned neural manifold (a
dimensionality-reduced representation of resting-state brain dynamics). You are
given how each ROI's contribution changed along this path.
IMPORTANT: The delta values do NOT mean regions became more or less 'active' in
a simple sense. They measure how each ROI's CONTRIBUTION to the overall brain
state shifted β some regions contribute more to the new state, some less.
A positive delta means the region became a stronger contributor; negative means
it became a weaker contributor. This is a transition in the brain's dynamic state.
Analyze what this particular state transition might mean. Do NOT list the
individual ROI changes β instead, synthesize them into ONE coherent picture of
what cognitive or neural process could underlie this specific shift in brain
dynamics. Consider the spatial pattern (which networks gained vs lost
contribution), the directionality, and what spontaneous resting-state process
would produce this exact transition.
Keep your response SHORT β 2-3 concise paragraphs maximum.
```
**Input:** Structured analysis text from `ROIFlowAnalyzer.build_llm_context()` containing:
- Top changed ROIs (positive and negative delta) with brain region names, hemisphere, and MNI coordinates
- Direction of bulk information flow (anterior/posterior, left/right)
- Flow pattern type (one-to-many, many-to-one, distributed, bilateral_split)
- Directional analysis (L/R, A/P, S/I shift in mm)
---
## How to Modify Prompts
All prompts are defined as inline string templates at the code locations listed above. To change a prompt:
1. Open the file listed above
2. Find the `ChatPromptTemplate.from_template(...)` or instructions string
3. Edit the template text directly
4. Parameters in `{curly_braces}` are filled at runtime -- keep the variable names unchanged
5. Use `--debug` to verify your changes at runtime
The prompts are intentionally kept as inline strings (not in separate files) so they are easy to find and modify alongside the logic that uses them.
|