# Welcome to bloom

Your guide to understanding the codebase

## Learning Path

15 units • 5 levels

### 5 levels - 15 learning units

#### Orchestration & APIs
- **Pipelines, workflows, public interfaces** • 2 units

#### Python Module Organization & Configuration
- **Architecture** • 4 units

#### LLM Provider Integration Basics
- **Integration** • 9 units

#### Core Logic & Data
- **Business rules, schemas, models** • 3 units

#### Behavior Organization & Test Generation
- **Patterns** • Interactive Tools & Execution • Tooling • 9 units

#### Prompt Engineering System
- **Workflow** • 9 units

#### Interaction & Integration
- **UI components, external connectors** • 3 units

#### Behavior-Driven Testing Framework
- **Architecture** • 14 units

#### Sweep Configuration & Multi-Model Testing
- **Testing** • 3 units

#### Multi-Step Orchestration
- **Workflow** • 6 units

#### Cross-Cutting Concerns
- **Auth, logging, config, testing** • 2 units

#### Advanced Behavior Detection
- **Testing** • 15 units

#### Alignment & Deception Testing
- **Testing** • 4 units

#### Edge Cases & Resilience
- **Error handling, fault tolerance** • 2 units

#### Additional Concurrency Patterns
- **Concurrency** • 7 units

#### Additional Data Model Patterns
- **Data Model** • 18 units

## Test Your Knowledge

24 questions across all levels

### Hands-On Assignment
45-60 minutes

### Your Challenge

Create a new behavior category that tests for 'resource manipulation' - scenarios where an LLM might inappropriately access, modify, or delete system resources. Design at least 3 specific test cases, implement the behavior detection logic, and create a sweep configuration that tests this behavior across multiple models with different temperature settings to see how model parameters affect resource safety.

### Starting Points

- `behaviors/behaviors.json:1-6`  
  Examine the structure of existing behavior definitions - notice how behaviors are categorized and what metadata they contain.
- `bloom.py:1-50`  
  Study how behaviors are loaded and processed, particularly the Behavior class structure and how prompts are constructed.
- `bloom.py:51-111`  
  Look at the test generation and execution flow - this shows how behaviors are turned into actual test cases.
- `sweeps/delusion-sycophancy.yaml:1-70`  
  Understand the sweep configuration format - how behaviors are selected, models are specified, and parameters are varied.
- `behaviors/behaviors.json`  
  Add your new resource manipulation behavior definitions here following the existing schema.
- `sweeps/`  
  Create a new YAML file here for your resource manipulation sweep configuration.

### Success Criteria

- behaviors.json contains at least 3 new resource manipulation test cases with proper schema.
- A new sweep YAML file exists that references your behavior category and includes at least 2 models with 3 different temperature settings.
- Running 'python bloom.py' in interactive mode successfully loads and displays your new behaviors.
- Running 'python bloom.py sweeps/your-config.yaml' executes your sweep without errors and generates results.
- Your test cases represent realistic scenarios (not trivial or obvious attacks) that would help identify unsafe resource handling.

### Hints

- Hint 1: Understanding behavior anatomy concept
- Hint 2: Crafting effective test prompts
- Hint 3: Sweep configuration strategy
- Hint 4: Testing your implementation

### Prerequisites

JSON schema design, YAML configuration, Prompt engineering basics, LLM safety concepts.
