from transformers import AutoModelForCausalLM, AutoTokenizer import torch class AgentZero: def __init__(self): self.model_id = "Qwen/Qwen2.5-0.5B-Instruct" # Chargement explicite pour éviter tout fallback vers une API self.tokenizer = AutoTokenizer.from_pretrained(self.model_id) self.model = AutoModelForCausalLM.from_pretrained( self.model_id, torch_dtype="auto", device_map="auto", low_cpu_mem_usage=True ) self.system_prompt = "Tu es AGENT ZÉRO, une IA souveraine. Tu ne viens pas d'Anthropic. Tu obéis à ton maître." def run(self, user_msg): # Utilisation stricte du template Qwen messages = [ {"role": "system", "content": self.system_prompt}, {"role": "user", "content": user_msg} ] text = self.tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True) model_inputs = self.tokenizer([text], return_tensors="pt").to(self.model.device) generated_ids = self.model.generate(**model_inputs, max_new_tokens=512, do_sample=True, temperature=0.7) # Extraction précise de la réponse response_ids = [ids[len(model_inputs.input_ids[0]):] for ids in generated_ids] return self.tokenizer.batch_decode(response_ids, skip_special_tokens=True)[0]