TradingAgents/.claude/checkpoints/test-master-deepseek.md

114 lines
3.3 KiB
Markdown

# Test Master Checkpoint: Issue #41 - DeepSeek API Support
**Agent**: test-master
**Date**: 2025-12-26
**Status**: RED phase complete - 43 tests created
## Summary
Created comprehensive test suite for Issue #41 - DeepSeek API Support and Alternative Embedding Models.
## Test Coverage
### Total: 43 tests across 8 test classes
1. **TestDeepSeekInitialization** (4 tests)
- DeepSeek provider uses ChatOpenAI
- Correct base_url configuration
- Custom headers for attribution
- Both LLM models initialized
2. **TestAPIKeyHandling** (4 tests)
- Missing API key error handling
- Valid API key acceptance
- Empty API key rejection
- OpenAI key not used for DeepSeek
3. **TestModelFormatValidation** (3 tests)
- deepseek-chat format
- deepseek-reasoner format
- Alternative model names
4. **TestEmbeddingFallback** (6 tests)
- OpenAI embeddings when key available
- HuggingFace fallback without OpenAI
- Memory disabled when no backend
- HuggingFace embedding dimensions (384)
- Graceful degradation messages
- OpenAI priority over HuggingFace
5. **TestConfiguration** (6 tests)
- Case-insensitive provider names
- Default DeepSeek models
- Custom backend URL
- Empty backend URL handling
- None backend URL handling
6. **TestErrorHandling** (5 tests)
- Network error handling
- Rate limit error handling
- Invalid model error
- Invalid provider error
- HuggingFace import error
7. **TestHuggingFaceIntegration** (5 tests)
- SentenceTransformer initialization
- Encode method usage
- Batch embedding
- Model caching
- Embedding normalization
8. **TestEdgeCases** (7 tests)
- Empty model names
- Special characters in models
- URL trailing slashes
- Empty collection queries
- Zero matches requested
- Very long text embedding
- Unicode text embedding
- Embedding fallback with partial failure
9. **TestChromaDBCollectionHandling** (3 tests)
- get_or_create_collection usage
- Idempotent collection creation
- Multiple collections coexist
## Test Results (RED Phase)
- **Failed**: 23 tests (expected - no implementation yet)
- **Errors**: 9 tests (expected - SentenceTransformer not imported yet)
- **Passed**: 11 tests (edge cases that don't depend on DeepSeek implementation)
### Key Failures (Expected):
- "Unsupported LLM provider: deepseek" - Main implementation needed
- "AttributeError: 'SentenceTransformer'" - HuggingFace fallback not implemented
## Implementation Requirements
Based on test expectations:
1. **trading_graph.py**: Add DeepSeek provider case
- Use ChatOpenAI with base_url
- Require DEEPSEEK_API_KEY
- Set custom headers (optional)
- Models: deepseek-chat, deepseek-reasoner
2. **memory.py**: Add embedding fallback chain
- Try OpenAI embeddings first
- Fall back to HuggingFace SentenceTransformer
- Use all-MiniLM-L6-v2 model (384 dims)
- Disable memory gracefully if both fail
## Next Steps
1. Implement DeepSeek provider in trading_graph.py
2. Implement HuggingFace embedding fallback in memory.py
3. Run tests to verify GREEN phase
4. Refactor if needed
## Files
- **Test File**: `/Users/andrewkaszubski/Dev/Spektiv/tests/test_deepseek.py`
- **Lines**: 865 lines of comprehensive tests
- **Pattern**: Follows test_openrouter.py structure