This document provides development guidelines and best practices for contributors working on the Mastering LLMs Workshop repository.
- Use Python 3.11 or above for all code development
- Ensure compatibility with modern Python features and type hints
- Leverage new Python 3.11+ features where appropriate (e.g., improved error messages, performance enhancements)
- Leverage Jupyter Lab wherever possible for:
- Interactive development and experimentation
- Workshop tutorials and demonstrations
- Data exploration and visualization
- Prototyping LLM implementations
- Use
.ipynbfiles for workshop modules and tutorials - Include clear markdown documentation within notebooks
- Use meaningful cell outputs and visualizations
- Keep notebooks focused on specific learning objectives
- Use descriptive, lowercase filenames with underscores (snake_case)
- Include version numbers or module identifiers where relevant
- Examples:
01_introduction_to_llms.ipynb02_prompt_engineering_basics.ipynbllm_utils.pydata_preprocessing.py
Organize content into logical modules:
|──README.md
|──llm.txt
|──LICENSE
├──docs/
├── assets/
├── module_01_lm_fundamentals/
├── module_02_llm_building_blocks/
├── module_03_instruction_tuning_and_alignment/
├── module_04_llm_apps/
- Always cross-check new additions with the README file
- Keep changes in sync between implementation and documentation
- Update README.md whenever:
- New modules or workshops are added
- Dependencies change
- Installation instructions are modified
- Learning objectives are updated
- Always analyze code files (.py, .ipynb) in the module and understand key topics covered
- The module specific README.md should cover:
- A title of the module
- A short description of the module
- A table of contents with hyperlinks to all notebooks. The hyperlink should be named in a meaningful way.
- A block quote at the end mention which model was used to generate the README with a timestamp
- A horizontal line to close it off.
- Use clear, concise language
- Include code examples where relevant
- Provide step-by-step instructions
- Link to relevant external resources
- Maintain a consistent tone and style
- Update
llm.txtwith each significant change to the repository - Document:
- New files and modules added
- Dependencies and their purposes
- Workshop structure changes
- Key learning resources
- Setup and installation changes
- Provide a comprehensive overview of the repository
- Include current project structure
- List key technologies and frameworks used
- Document overview of topics covered in each module
- Include links to relevant resources and documentation
- Write clean, readable, and well-documented code
- Use type hints for function parameters and return values
- Follow PEP 8 style guidelines
- Include docstrings for all functions and classes
- Write meaningful variable and function names
- Include unit tests for utility functions
- Test notebook examples and code snippets
- Validate that all workshop materials work end-to-end
- Make atomic commits with descriptive messages
- Use conventional commit format where appropriate
- Keep commits focused on single logical changes
- Update documentation in the same commit as code changes
- Clearly define learning objectives for each module
- Include practical exercises and hands-on components
- Provide both theoretical background and practical implementation
- Include real-world use cases and examples
- Optimize for computational efficiency in workshops
- Provide alternatives for different computational environments
- Include resource requirements and recommendations
- Consider cloud-based alternatives for resource-intensive tasks
- Ensure content is accessible to different skill levels
- Provide prerequisite information clearly
- Include multiple learning paths where appropriate
- Support both beginner and advanced participants
- Review and test workshop materials before merging
- Ensure all external links and resources are accessible
- Validate that installation instructions work across different environments
- Coordinate with README updates when making structural changes
- Maintain consistency in style and approach across all modules