import torch def test_generation_accepts_prompt(model, tokenizer): prompt = "ROMEO:" token_ids = torch.tensor( tokenizer.encode(prompt), dtype=torch.long, ).unsqueeze(0) generated = model.generate( token_ids=token_ids, max_new_tokens=32, temperature=0.0, ) assert generated.shape[1] == len(prompt) + 32 def test_generated_output_is_valid_text(model, tokenizer): prompt = "ROMEO:" token_ids = torch.tensor( tokenizer.encode(prompt), dtype=torch.long, ).unsqueeze(0) generated = model.generate( token_ids=token_ids, max_new_tokens=32, temperature=0.0, ) text = tokenizer.decode(generated[0].tolist()) assert isinstance(text, str) assert text.startswith(prompt) assert len(text) == len(prompt) + 32 def test_generation_is_deterministic_with_seed(model, tokenizer): prompt = "Wherefore art thou" token_ids = torch.tensor( tokenizer.encode(prompt), dtype=torch.long, ).unsqueeze(0) torch.manual_seed(7) first = model.generate( token_ids=token_ids, max_new_tokens=32, temperature=0.8, ) torch.manual_seed(7) second = model.generate( token_ids=token_ids, max_new_tokens=32, temperature=0.8, ) assert torch.equal(first, second)