@startuml
class PromptGenerator {
    + prompt: string
    + problem: string
    + technique: int
    + variation: int
    + generate_prompt_series()
    + generate_modified_prompt()
    - _generate_prompt_with_typos()
    - _generate_few_shot_prompt()
    - _generate_chain_of_thought_prompt()
}

class CodeGenerator {
    + model: string
    + language: string
    + generate_code()
    - _log_api_call()
    - _call_OpenAI_API()
}

class Evaluator {
    + log_file: string
    + log_filepath: string
    + problem_id: string
    - _extract_generated_code()
    - _extract_name_from_namespace()
    + run_test()
}

PromptGenerator --|> CodeGenerator
CodeGenerator --|> Evaluator
@enduml
