import gradio as gr from transformers import pipeline # 1. Carrega o modelo (DeepSeek R1 para raciocínio) # Forçamos o uso de config personalizada para garantir que ele não limite em 4k pipe = pipeline("text-generation", model="deepseek-ai/DeepSeek-R1-Distill-Llama-8B", device_map="cpu", torch_dtype="auto", model_kwargs={"max_length": 16384}) def predict(message, history): """ Com type="messages", o 'history' já vem no formato correto: [{'role': 'user', 'content': 'oi'}, {'role': 'assistant', 'content': 'olá'}] """ # Criamos a lista de mensagens adicionando a mensagem atual ao histórico # O history vem do Gradio, o message é o input atual if message is None: message = "" print(f"DEBUG INPUT: message={repr(message)}") print(f"DEBUG INPUT: history={repr(history)}") new_messages = history + [{"role": "user", "content": message}] # Sanitize messages to ensure no None content messages = [] for msg in new_messages: content = msg.get("content") if content is None: content = "" messages.append({"role": msg.get("role"), "content": content}) print(f"DEBUG FINAL MESSAGES: {messages}") # Gera a resposta (Aumentando output para raciocínio longo) results = pipe(messages, max_new_tokens=2048, truncation=True) # Retorna apenas o texto novo gerado return results[0]['generated_text'][-1]['content'] # 2. Configuração da Interface # Adicionamos type="messages" para corrigir o aviso e padronizar com o OpenClaw/MCP demo = gr.ChatInterface( fn=predict, type="messages", # <--- ESTA LINHA CORRIGE O AVISO E MUDA O FORMATO DO HISTÓRICO title="Qwen Agent Node", description="Bot rodando Qwen 2.5 Coder 1.5B via CPU no Hugging Face." ) if __name__ == "__main__": demo.launch(ssr_mode=False)