Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from transformers import pipeline, AutoTokenizer, AutoModelForCausalLM | |
| # 1. Carrega Tokenizer e Modelo separadamente para garantir o controle do Contexto | |
| model_id = "deepseek-ai/DeepSeek-R1-Distill-Llama-8B" | |
| tokenizer = AutoTokenizer.from_pretrained(model_id) | |
| # Força o tokenizer a entender que aceitamos até 16k tokens (DeepSeek suporta 128k, mas RAM limita) | |
| tokenizer.model_max_length = 16384 | |
| model = AutoModelForCausalLM.from_pretrained( | |
| model_id, | |
| device_map="cpu", | |
| torch_dtype="auto", | |
| max_length=16384 | |
| ) | |
| pipe = pipeline("text-generation", model=model, tokenizer=tokenizer) | |
| 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) |