Wilker commited on
Commit ·
bc5de4c
1
Parent(s): 86a3091
fix: remove cap 2048 no modo fast + sanitize_chat_for_gguf para GGUF alternância user/assistant
Browse files
app.py
CHANGED
|
@@ -500,7 +500,7 @@ def install_script():
|
|
| 500 |
def apply_mode(mode, max_tokens, temperature):
|
| 501 |
do_sample = temperature > 0
|
| 502 |
if mode == "fast":
|
| 503 |
-
return
|
| 504 |
elif mode == "thinking":
|
| 505 |
t = min(temperature, 0.4) if temperature > 0 else 0.3
|
| 506 |
return max(max_tokens, 768), True, t
|
|
@@ -528,6 +528,29 @@ def convert_to_gemini_format(chat_messages, system_content=None):
|
|
| 528 |
|
| 529 |
return payload
|
| 530 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 531 |
# ── Endpoints — Chat ────────────────────────────────────────────────────────────
|
| 532 |
@app.post("/v1/chat/completions")
|
| 533 |
def chat_completions(req: ChatRequest):
|
|
@@ -572,8 +595,9 @@ def chat_completions(req: ChatRequest):
|
|
| 572 |
|
| 573 |
elif backend == "gguf":
|
| 574 |
llm = state["model"]
|
|
|
|
| 575 |
result = llm.create_chat_completion(
|
| 576 |
-
messages=
|
| 577 |
max_tokens=max_tokens,
|
| 578 |
temperature=temperature if temperature else 0.0,
|
| 579 |
)
|
|
|
|
| 500 |
def apply_mode(mode, max_tokens, temperature):
|
| 501 |
do_sample = temperature > 0
|
| 502 |
if mode == "fast":
|
| 503 |
+
return max_tokens, False, None
|
| 504 |
elif mode == "thinking":
|
| 505 |
t = min(temperature, 0.4) if temperature > 0 else 0.3
|
| 506 |
return max(max_tokens, 768), True, t
|
|
|
|
| 528 |
|
| 529 |
return payload
|
| 530 |
|
| 531 |
+
|
| 532 |
+
# ── Helper: Sanitiza mensagens para GGUF (llama-cpp exige user/assistant alternados) ──
|
| 533 |
+
def sanitize_chat_for_gguf(chat_messages):
|
| 534 |
+
messages = [{"role": m["role"], "content": m["content"]} for m in chat_messages]
|
| 535 |
+
system_content = ""
|
| 536 |
+
while messages and messages[0]["role"] == "system":
|
| 537 |
+
system_content += (system_content + "\n\n" if system_content else "") + messages.pop(0)["content"]
|
| 538 |
+
if system_content and messages and messages[0]["role"] == "user":
|
| 539 |
+
messages[0]["content"] = system_content + "\n\n" + messages[0]["content"]
|
| 540 |
+
elif system_content:
|
| 541 |
+
messages.insert(0, {"role": "user", "content": system_content})
|
| 542 |
+
if not messages or messages[0]["role"] != "user":
|
| 543 |
+
messages.insert(0, {"role": "user", "content": "Continue."})
|
| 544 |
+
sanitized = [messages[0]]
|
| 545 |
+
for msg in messages[1:]:
|
| 546 |
+
if sanitized[-1]["role"] == msg["role"]:
|
| 547 |
+
sanitized[-1]["content"] += "\n\n" + msg["content"]
|
| 548 |
+
else:
|
| 549 |
+
sanitized.append(msg)
|
| 550 |
+
if len(sanitized) % 2 == 0:
|
| 551 |
+
sanitized.append({"role": "user", "content": "Continue."})
|
| 552 |
+
return sanitized
|
| 553 |
+
|
| 554 |
# ── Endpoints — Chat ────────────────────────────────────────────────────────────
|
| 555 |
@app.post("/v1/chat/completions")
|
| 556 |
def chat_completions(req: ChatRequest):
|
|
|
|
| 595 |
|
| 596 |
elif backend == "gguf":
|
| 597 |
llm = state["model"]
|
| 598 |
+
safe_chat = sanitize_chat_for_gguf(chat)
|
| 599 |
result = llm.create_chat_completion(
|
| 600 |
+
messages=safe_chat,
|
| 601 |
max_tokens=max_tokens,
|
| 602 |
temperature=temperature if temperature else 0.0,
|
| 603 |
)
|