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
Files changed (1) hide show
  1. app.py +26 -2
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 min(max_tokens, 32048), 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,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=chat,
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
  )