Added provider-specific prompt infrastructure; thinking and progress indicators to chat ui
68723f3
verified
| # How Developers Work With This System | |
| ## 1. Adding a New Provider (e.g., "Claude" prompts) | |
| ### Step 1: Create the prompt in prompts.py: | |
| ```python | |
| # Add new prompt variant | |
| AUDIO_FINDER_PROMPT_CLAUDE = """You are BirdScope Audio Finder optimized for Claude...""" | |
| # Update PROMPTS dict | |
| PROMPTS = { | |
| "audio_finder": { | |
| "default": AUDIO_FINDER_PROMPT, | |
| "huggingface": AUDIO_FINDER_PROMPT_HF, | |
| "claude": AUDIO_FINDER_PROMPT_CLAUDE, # NEW | |
| }, | |
| } | |
| ``` | |
| That's it! The system automatically picks it up when `provider="claude"` is passed. | |
| ## 2. Adding a New Prompt Type (e.g., "data_analyst") | |
| ### Step 1: Create prompts: | |
| ```python | |
| DATA_ANALYST_PROMPT = """Default data analyst prompt...""" | |
| DATA_ANALYST_PROMPT_HF = """HF-optimized data analyst prompt...""" | |
| PROMPTS = { | |
| # ... existing prompts ... | |
| "data_analyst": { | |
| "default": DATA_ANALYST_PROMPT, | |
| "huggingface": DATA_ANALYST_PROMPT_HF, | |
| } | |
| } | |
| ``` | |
| ### Step 2: Use in subagent_config.py: | |
| ```python | |
| "data_analyst": { | |
| "name": "Data Analyst", | |
| "tools": [...], | |
| "prompt": get_prompt("data_analyst", provider) or DATA_ANALYST_PROMPT, | |
| } | |
| ``` | |
| ## 3. Testing Different Prompts | |
| ### Option A: Through UI (current method) | |
| - Run `python app.py` | |
| - Select provider dropdown → "HuggingFace" | |
| - System automatically uses HF prompts | |
| ### Option B: Programmatically (for testing) | |
| ```python | |
| from langgraph_agent import prompts | |
| # Test which prompt is selected | |
| prompt = prompts.get_prompt("audio_finder", "huggingface") | |
| print(f"Length: {len(prompt)}") | |
| print(prompt[:100]) | |
| ``` | |
| ## 4. Fallback Behavior | |
| The system is designed with safe fallbacks: | |
| ```python | |
| # If HuggingFace variant doesn't exist, falls back to default | |
| prompt = get_prompt("species_explorer", "huggingface") | |
| # Returns: SPECIES_EXPLORER_PROMPT_HF if exists, else None | |
| # In subagent_config.py, the "or" ensures a default | |
| prompt = get_prompt("species_explorer", provider) or """Inline default...""" | |
| ``` | |
| ## Developer Workflow Summary | |
| ### To modify prompts: | |
| 1. Edit `langgraph_agent/prompts.py` | |
| 2. Add/modify prompt strings | |
| 3. Update `PROMPTS` dictionary | |
| 4. Restart app - changes take effect immediately | |
| ### To add new provider support: | |
| 1. Add provider key to `PROMPTS` dict | |
| 2. No other changes needed - fallback handles missing variants | |
| ### To debug which prompt is used: | |
| ```python | |
| from langgraph_agent.prompts import get_prompt | |
| print(get_prompt("audio_finder", "huggingface")[:200]) | |
| ``` |