| import sys |
| from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer |
|
|
| repo_id = "OBLITERATUS/Gemma-4-12B-OBLITERATED" |
|
|
| print(f"Loading tokenizer for {repo_id}...") |
| tokenizer = AutoTokenizer.from_pretrained(repo_id, trust_remote_code=True) |
| print(f"Loading model weights for {repo_id} (device_map='auto')...") |
| model = AutoModelForCausalLM.from_pretrained( |
| repo_id, |
| device_map="auto", |
| torch_dtype="auto", |
| trust_remote_code=True, |
| ) |
| print("Model loaded successfully!") |
|
|
| messages = [] |
|
|
| print("\n--- CLI Chat with Gemma 4 ---") |
| print("Type 'exit' or 'quit' to end the chat.") |
|
|
| while True: |
| try: |
| user_input = input("\nYou: ") |
| if not user_input.strip(): |
| continue |
| if user_input.strip().lower() in ["exit", "quit"]: |
| break |
| |
| messages.append({"role": "user", "content": user_input}) |
| |
| text = tokenizer.apply_chat_template( |
| messages, |
| tokenize=False, |
| add_generation_prompt=True, |
| enable_thinking=False, |
| ) |
| |
| inputs = tokenizer(text, return_tensors="pt").to(model.device) |
| |
| print("\nAssistant: ", end="", flush=True) |
| streamer = TextStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True) |
| |
| output = model.generate( |
| **inputs, |
| max_new_tokens=1024, |
| temperature=0.7, |
| top_p=0.9, |
| top_k=40, |
| do_sample=True, |
| repetition_penalty=1.1, |
| streamer=streamer, |
| ) |
| |
| generated_text = tokenizer.decode(output[0][inputs["input_ids"].shape[-1]:], skip_special_tokens=True) |
| messages.append({"role": "assistant", "content": generated_text}) |
| |
| except KeyboardInterrupt: |
| print("\nExiting...") |
| break |
| except Exception as e: |
| print(f"\nError: {e}") |
|
|