File size: 4,303 Bytes
5a6a2cc |
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 |
# Context Window Increased to 20 Interactions for Stable UX
## Changes Made
### 1. Synthesis Agent Context Window: 5 β 20
**Files:**
- `src/agents/synthesis_agent.py`
- `Research_AI_Assistant/src/agents/synthesis_agent.py`
**Change:**
```python
# OLD:
recent_interactions = context.get('interactions', [])[:5] # Last 5 interactions
# NEW:
recent_interactions = context.get('interactions', [])[:20] # Last 20 interactions for stable UX
```
### 2. Context Manager Buffer: 10 β 40
**Files:**
- `context_manager.py`
- `Research_AI_Assistant/context_manager.py`
**Change:**
```python
# OLD:
# Keep only last 10 interactions in memory
context["interactions"] = [new_interaction] + context["interactions"][:9]
# NEW:
# Keep only last 40 interactions in memory (2x the context window for stability)
context["interactions"] = [new_interaction] + context["interactions"][:39]
```
## Rationale
### Moving Window Strategy
The system now maintains a **sliding window** of 20 interactions:
1. **Memory Buffer (40 interactions)**:
- Stores in-memory for fast retrieval
- Provides 2x the context window for stability
- Newest interaction is added, oldest is dropped beyond 40
2. **Context Window (20 interactions)**:
- Sent to LLM for each request
- Contains last 20 Q&A pairs
- Ensures deep conversation history
### Benefits
**Before (5 interactions):**
- Lost context after 3-4 questions
- Domain switching issues (cricket β gaming journalist)
- Inconsistent experience
**After (20 interactions):**
- β
Maintains context across 20+ questions
- β
Stable conversation flow
- β
No topic/domain switching
- β
Better UX for extended dialogues
## Technical Implementation
### Memory Management Flow
```
Initial:
Memory Buffer: [I1, I2, ..., I40] (40 slots)
Context Window: [I1, I2, ..., I20] (20 slots sent to LLM)
After 1 new interaction:
Memory Buffer: [I41, I1, I2, ..., I39] (I40 dropped)
Context Window: [I41, I1, I2, ..., I20] (I21 dropped from LLM context)
After 20 more interactions:
Memory Buffer: [I41, ..., I60, I1, ..., I20] (I21-40 dropped)
Context Window: [I41, ..., I60] (Still have 20 recent interactions)
```
### Database Storage
- Database stores **unlimited** interactions
- Memory buffer holds **40** for performance
- LLM gets **20** for context
- Moving window ensures recent context always available
## Performance Considerations
### Memory Usage
- **Per interaction**: ~1-2KB (text + metadata)
- **40 interactions buffer**: ~40-80KB per session
- **Negligible** impact on performance
### LLM Token Usage
- **20 Q&A pairs**: ~2000-4000 tokens (estimated)
- Well within Qwen model limits (8K tokens typically)
- Graceful handling if token limit exceeded
### Response Time
- **No impact** on response time
- Database queries unchanged
- In-memory buffer ensures fast retrieval
## Testing Recommendations
### Test Scenarios
1. **Short Conversation (5 interactions)**:
- All 5 interactions in context β
- Full conversation history available
2. **Medium Conversation (15 interactions)**:
- Last 15 interactions in context β
- Recent history maintained
3. **Long Conversation (30 interactions)**:
- Last 20 interactions in context β
- First 10 dropped (moving window)
- Still maintains recent context
4. **Extended Conversation (50+ interactions)**:
- Last 20 interactions in context β
- Memory buffer holds 40
- Database retains all for historical lookup
### Validation
- Verify context persistence across 20+ questions
- Check for domain/topic drift
- Ensure stable conversation flow
- Monitor memory usage
- Verify database persistence
## Migration Notes
### For Existing Sessions
- Existing sessions will upgrade on next interaction
- No data migration required
- Memory buffer automatically adjusted
- Database schema unchanged
### Backward Compatibility
- β
Compatible with existing sessions
- β
No breaking changes
- β
Graceful upgrade
## Summary
The context window has been increased from **5 to 20 interactions** with a **moving window** strategy:
- π **Memory buffer**: 40 interactions (2x for stability)
- π― **Context window**: 20 interactions (sent to LLM)
- πΎ **Database**: Unlimited (permanent storage)
- β
**Result**: Stable UX across extended conversations
|