BirdScopeAI / docs /dev /prompts_config-README.md
facemelter's picture
Added provider-specific prompt infrastructure; thinking and progress indicators to chat ui
68723f3 verified

A newer version of the Gradio SDK is available: 6.1.0

Upgrade

How Developers Work With This System

1. Adding a New Provider (e.g., "Claude" prompts)

Step 1: Create the prompt in prompts.py:

# 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:

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:

"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)

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:

# 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:

from langgraph_agent.prompts import get_prompt
print(get_prompt("audio_finder", "huggingface")[:200])