Spaces:
Sleeping
Sleeping
| # Development Guide | |
| ## Overview | |
| MediGuard AI is a medical biomarker analysis system that uses agentic RAG (Retrieval-Augmented Generation) and multi-agent workflows to provide clinical insights. | |
| ## Project Structure | |
| ``` | |
| Agentic-RagBot/ | |
| βββ src/ | |
| β βββ agents/ # Agent implementations (biomarker_analyzer, disease_explainer, etc.) | |
| β βββ services/ # Core services (retrieval, embeddings, opensearch, etc.) | |
| β βββ routers/ # FastAPI route handlers | |
| β βββ models/ # Data models | |
| β βββ schemas/ # Pydantic schemas | |
| β βββ state.py # State management | |
| β βββ workflow.py # Workflow orchestration | |
| β βββ main.py # FastAPI application factory | |
| β βββ settings.py # Configuration management | |
| βββ tests/ # Test suite | |
| βββ data/ # Data files (vector stores, etc.) | |
| βββ docs/ # Documentation | |
| ``` | |
| ## Development Setup | |
| 1. **Install dependencies**: | |
| ```bash | |
| pip install -r requirements.txt | |
| ``` | |
| 2. **Environment variables**: | |
| - Copy `.env.example` to `.env` and configure | |
| - Key variables: | |
| - `API__HOST`: Server host (default: 127.0.0.1) | |
| - `API__PORT`: Server port (default: 8000) | |
| - `GRADIO_SERVER_NAME`: Gradio host (default: 127.0.0.1) | |
| - `GRADIO_PORT`: Gradio port (default: 7860) | |
| 3. **Running the application**: | |
| ```bash | |
| # FastAPI server | |
| python -m src.main | |
| # Gradio interface | |
| python -m src.gradio_app | |
| ``` | |
| ## Code Quality | |
| ### Linting | |
| ```bash | |
| # Check code quality | |
| ruff check src/ | |
| # Auto-fix issues | |
| ruff check src/ --fix | |
| ``` | |
| ### Security | |
| ```bash | |
| # Run security scan | |
| bandit -r src/ | |
| ``` | |
| ### Testing | |
| ```bash | |
| # Run all tests | |
| pytest tests/ | |
| # Run with coverage | |
| pytest tests/ --cov=src --cov-report=term-missing | |
| # Run specific test file | |
| pytest tests/test_agents.py -v | |
| ``` | |
| ## Testing Guidelines | |
| 1. **Test structure**: | |
| - Unit tests for individual components | |
| - Integration tests for workflows | |
| - Mock external dependencies (LLMs, databases) | |
| 2. **Test coverage**: | |
| - Current coverage: 58% | |
| - Target: 70%+ | |
| - Focus on critical paths and business logic | |
| 3. **Best practices**: | |
| - Use descriptive test names | |
| - Mock external services | |
| - Test both success and failure cases | |
| - Keep tests isolated and independent | |
| ## Architecture | |
| ### Multi-Agent Workflow | |
| The system uses a multi-agent architecture with the following agents: | |
| 1. **BiomarkerAnalyzer**: Validates and analyzes biomarker values | |
| 2. **DiseaseExplainer**: Provides disease pathophysiology explanations | |
| 3. **BiomarkerLinker**: Connects biomarkers to disease predictions | |
| 4. **ClinicalGuidelines**: Provides evidence-based recommendations | |
| 5. **ConfidenceAssessor**: Evaluates prediction reliability | |
| 6. **ResponseSynthesizer**: Compiles final response | |
| ### State Management | |
| - `GuildState`: Shared state between agents | |
| - `PatientInput`: Input data structure | |
| - `ExplanationSOP`: Standard operating procedures | |
| ## Configuration | |
| Settings are managed via Pydantic with environment variable support: | |
| ```python | |
| from src.settings import get_settings | |
| settings = get_settings() | |
| print(settings.api.host) | |
| ``` | |
| ## Deployment | |
| ### Production Considerations | |
| 1. **Security**: | |
| - Bind to specific interfaces (not 0.0.0.0) | |
| - Use HTTPS in production | |
| - Configure proper CORS origins | |
| 2. **Performance**: | |
| - Use multiple workers | |
| - Configure connection pooling | |
| - Monitor memory usage | |
| 3. **Monitoring**: | |
| - Enable health checks | |
| - Configure logging | |
| - Set up metrics collection | |
| ## Contributing | |
| 1. Fork the repository | |
| 2. Create a feature branch | |
| 3. Write tests for new functionality | |
| 4. Ensure all tests pass | |
| 5. Submit a pull request | |
| ## Troubleshooting | |
| ### Common Issues | |
| 1. **Tests failing with import errors**: | |
| - Check PYTHONPATH includes project root | |
| - Ensure all dependencies installed | |
| 2. **Vector store errors**: | |
| - Check data/vector_stores directory exists | |
| - Verify embedding model is accessible | |
| 3. **LLM connection issues**: | |
| - Check Ollama is running | |
| - Verify model is downloaded | |
| ## Performance Optimization | |
| 1. **Caching**: Redis for frequently accessed data | |
| 2. **Async**: Use async/await for I/O operations | |
| 3. **Batching**: Process multiple items when possible | |
| 4. **Lazy loading**: Load resources only when needed | |
| ## Security Best Practices | |
| 1. Never commit secrets or API keys | |
| 2. Use environment variables for configuration | |
| 3. Validate all inputs | |
| 4. Implement proper error handling | |
| 5. Regular security scans with Bandit | |