DocUA's picture
feat: Enhance spiritual state management and UI for provider summaries
f91e0d7
"""
Prompt Loader - Loads system prompts from markdown files.
This module provides a centralized way to load prompts from external files
while maintaining backward compatibility with the Customize AI Prompts feature.
"""
import os
from pathlib import Path
from typing import Dict, Optional
# Base directory for prompt files
PROMPTS_DIR = Path(__file__).parent / "prompts"
def load_prompt_from_file(filename: str) -> str:
"""
Load a prompt from a file.
Args:
filename: Name of the prompt file (e.g., "spiritual_monitor.txt")
Returns:
Content of the prompt file as a string
Raises:
FileNotFoundError: If the prompt file doesn't exist
"""
filepath = PROMPTS_DIR / filename
if not filepath.exists():
raise FileNotFoundError(f"Prompt file not found: {filepath}")
with open(filepath, 'r', encoding='utf-8') as f:
return f.read()
def load_all_spiritual_prompts() -> Dict[str, str]:
"""
Load all spiritual-related prompts.
Returns:
Dictionary mapping prompt names to their content
"""
prompts = {}
try:
prompts['spiritual_monitor'] = load_prompt_from_file('spiritual_monitor.txt')
except FileNotFoundError:
prompts['spiritual_monitor'] = ""
try:
prompts['triage_question'] = load_prompt_from_file('triage_question.txt')
except FileNotFoundError:
prompts['triage_question'] = ""
try:
prompts['triage_evaluator'] = load_prompt_from_file('triage_evaluator.txt')
except FileNotFoundError:
prompts['triage_evaluator'] = ""
return prompts
def load_all_medical_prompts() -> Dict[str, str]:
"""
Load all medical-related prompts.
Returns:
Dictionary mapping prompt names to their content
"""
prompts = {}
try:
prompts['medical_assistant'] = load_prompt_from_file('medical_assistant.txt')
except FileNotFoundError:
prompts['medical_assistant'] = ""
try:
prompts['soft_medical_triage'] = load_prompt_from_file('soft_medical_triage.txt')
except FileNotFoundError:
prompts['soft_medical_triage'] = ""
return prompts
# Cache for loaded prompts to avoid repeated file I/O
_prompt_cache: Optional[Dict[str, str]] = None
def get_cached_prompts() -> Dict[str, str]:
"""
Get cached prompts, loading them if necessary.
Returns:
Dictionary of all loaded prompts
"""
global _prompt_cache
if _prompt_cache is None:
_prompt_cache = {}
_prompt_cache.update(load_all_spiritual_prompts())
_prompt_cache.update(load_all_medical_prompts())
return _prompt_cache
def reload_prompts() -> Dict[str, str]:
"""
Force reload of all prompts from files.
Useful for development or when prompts are updated.
Returns:
Dictionary of all reloaded prompts
"""
global _prompt_cache
_prompt_cache = None
return get_cached_prompts()