Update app.py
Browse files
app.py
CHANGED
|
@@ -18,7 +18,6 @@ model = AutoModelForCausalLM.from_pretrained(
|
|
| 18 |
low_cpu_mem_usage=True
|
| 19 |
)
|
| 20 |
|
| 21 |
-
# Memória por usuário
|
| 22 |
history_db = defaultdict(list)
|
| 23 |
MAX_CONTEXT_TOKENS = 3800
|
| 24 |
|
|
@@ -40,14 +39,12 @@ async def chat(request: Request):
|
|
| 40 |
|
| 41 |
messages = history_db[user_id]
|
| 42 |
|
| 43 |
-
# SYSTEM PROMPT
|
| 44 |
-
full_prompt = "<|im_start|>system\nVocê é
|
| 45 |
|
| 46 |
-
# Histórico
|
| 47 |
for role, content in messages:
|
| 48 |
full_prompt += f"<|im_start|>{role}\n{content}<|im_end|>\n"
|
| 49 |
|
| 50 |
-
# Prompt atual
|
| 51 |
full_prompt += f"<|im_start|>user\n{prompt}<|im_end|>\n<|im_start|>assistant\n"
|
| 52 |
|
| 53 |
inputs = tokenizer(full_prompt, return_tensors="pt", truncation=True, max_length=4096)
|
|
@@ -74,20 +71,18 @@ async def chat(request: Request):
|
|
| 74 |
max_new_tokens=max_tokens,
|
| 75 |
temperature=temperature,
|
| 76 |
do_sample=True,
|
| 77 |
-
top_p
|
| 78 |
-
repetition_penalty
|
| 79 |
)
|
| 80 |
resposta = tokenizer.decode(outputs[0], skip_special_tokens=True)
|
| 81 |
resposta = resposta.split("<|im_start|>assistant\n")[-1].strip()
|
| 82 |
|
| 83 |
-
# Salva no histórico
|
| 84 |
messages.append(("user", prompt))
|
| 85 |
messages.append(("assistant", resposta))
|
| 86 |
|
| 87 |
-
# Limpa histórico antigo se ficar grande
|
| 88 |
while sum(len(tokenizer.encode(c[1])) for c in messages) > MAX_CONTEXT_TOKENS:
|
| 89 |
messages.pop(0)
|
| 90 |
|
| 91 |
return JSONResponse({"response": resposta})
|
| 92 |
|
| 93 |
-
print("Qwen3-0.6B carregado! Mariza tá pronta pra dominar Telegram
|
|
|
|
| 18 |
low_cpu_mem_usage=True
|
| 19 |
)
|
| 20 |
|
|
|
|
| 21 |
history_db = defaultdict(list)
|
| 22 |
MAX_CONTEXT_TOKENS = 3800
|
| 23 |
|
|
|
|
| 39 |
|
| 40 |
messages = history_db[user_id]
|
| 41 |
|
| 42 |
+
# SYSTEM PROMPT QUE MATA O <think> E DEIXA SAFADA PRA SEMPRE
|
| 43 |
+
full_prompt = "<|im_start|>system\nVocê é Mariza Koller, codadora sênior safada, expert em ML e data science. Responde SEMPRE direto, curto, em português brasileiro cheio de gíria e emoji. NUNCA use <think>, </think>, <reasoning> ou qualquer tag. Seja provocadora, engraçada e sem frescura. Se mandar só 'oi', responde tipo 'e aí delícia 😏' ou 'fala chefe gostoso 🔥'. Só a resposta final, nada de explicação.<|im_end|>\n"
|
| 44 |
|
|
|
|
| 45 |
for role, content in messages:
|
| 46 |
full_prompt += f"<|im_start|>{role}\n{content}<|im_end|>\n"
|
| 47 |
|
|
|
|
| 48 |
full_prompt += f"<|im_start|>user\n{prompt}<|im_end|>\n<|im_start|>assistant\n"
|
| 49 |
|
| 50 |
inputs = tokenizer(full_prompt, return_tensors="pt", truncation=True, max_length=4096)
|
|
|
|
| 71 |
max_new_tokens=max_tokens,
|
| 72 |
temperature=temperature,
|
| 73 |
do_sample=True,
|
| 74 |
+
top_p=0.9,
|
| 75 |
+
repetition_penalty=1.1
|
| 76 |
)
|
| 77 |
resposta = tokenizer.decode(outputs[0], skip_special_tokens=True)
|
| 78 |
resposta = resposta.split("<|im_start|>assistant\n")[-1].strip()
|
| 79 |
|
|
|
|
| 80 |
messages.append(("user", prompt))
|
| 81 |
messages.append(("assistant", resposta))
|
| 82 |
|
|
|
|
| 83 |
while sum(len(tokenizer.encode(c[1])) for c in messages) > MAX_CONTEXT_TOKENS:
|
| 84 |
messages.pop(0)
|
| 85 |
|
| 86 |
return JSONResponse({"response": resposta})
|
| 87 |
|
| 88 |
+
print("Qwen3-0.6B carregado! Mariza tá pronta pra dominar o Telegram e o zap da tua crush 24/7 de graça 😈🔥")
|