File size: 2,446 Bytes
68723f3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# 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])
```