Spaces:
Sleeping
Sleeping
API Module Structure - Cooking Tutor
📁 Module Overview
config.py - Configuration Management
- Environment variables validation
- Logging configuration
- System resource monitoring
- Memory optimization settings
- CORS configuration
retrieval.py - Web Search Integration
- Cooking information retrieval via web search
- Recipe suggestion system
- Smart content filtering and relevance scoring
- Web search result processing
chatbot.py - Core Chatbot Logic
- CookingTutorChatbot class
- Gemini API client
- Web search integration
- Citation processing
- Memory management integration
routes.py - API Endpoints
/chat- Main chat endpoint/health- Health check/- Root endpoint with landing page- Request/response handling
app.py - Main Application
- FastAPI app initialization
- Middleware configuration
- Route registration
- Server startup
🔄 Data Flow
Request → routes.py → chatbot.py → search.py (web search)
↓
memory.py (context) + utils/ (translation)
↓
models/ (summarization processing)
↓
Response with citations
🚀 Benefits of Modular Structure
- Separation of Concerns: Each module has a single responsibility
- Easier Testing: Individual modules can be tested in isolation
- Better Maintainability: Changes to one module don't affect others
- Improved Readability: Smaller files are easier to understand
- Reusability: Modules can be imported and used elsewhere
- Scalability: Easy to add new features without affecting existing code
📊 File Sizes
| File | Lines | Purpose |
|---|---|---|
| app.py | 50 | Main app initialization |
| config.py | 68 | Configuration |
| retrieval.py | 156 | Web search integration |
| chatbot.py | 203 | Chatbot logic |
| routes.py | 435 | API endpoints |
🔧 Usage
The modular structure maintains clean API interface:
# All imports work the same way
from api.app import app
from api.chatbot import CookingTutorChatbot
from api.retrieval import retrieval_engine
🛠 Development Benefits
- Easier Debugging: Issues can be isolated to specific modules
- Parallel Development: Multiple developers can work on different modules
- Code Reviews: Smaller files are easier to review
- Documentation: Each module can have focused documentation
- Testing: Unit tests can be written for each module independently