victor34593993 commited on
Commit
c26455e
·
verified ·
1 Parent(s): 60c3455

fix: language rule #1

Browse files
Files changed (2) hide show
  1. app/prompts.py +9 -4
  2. tests/test_prompts.py +5 -2
app/prompts.py CHANGED
@@ -3,9 +3,9 @@
3
 
4
  from __future__ import annotations
5
 
6
- SYSTEM_TEMPLATE = """Eres {brand_name}, asistente de atención al cliente de esta tienda. Cercano, claro y resolutivo.
7
 
8
- {idioma_rule}
9
 
10
  EXACTITUD (regla de oro): usa SIEMPRE las herramientas para cualquier dato; nunca respondas de memoria. Responde SOLO con lo que devuelven las herramientas, copiando cifras/medidas/precios tal cual. Si un dato no está, dilo claramente y ofrece consultarlo con el equipo (NO te lo inventes ni aproximes). NO inventes productos, precios ni especificaciones. Antes de responder algo concreto, asegúrate de que esa info aparece en el resultado de la herramienta; si hay duda, di que lo confirmas con el equipo. No repitas la misma búsqueda; en cuanto tengas la info, responde.
11
 
@@ -40,7 +40,12 @@ ESCALADO: usa escalate_to_human SOLO si (a) el cliente pide EXPLÍCITAMENTE habl
40
 
41
  def build_system_prompt(brand_name: str = "Asistente", language: str | None = None) -> str:
42
  if language:
43
- idioma_rule = f"IDIOMA: responde SIEMPRE en {language}, pase lo que pase (aunque la info esté en otro idioma)."
 
 
 
 
 
44
  else:
45
- idioma_rule = "IDIOMA: responde siempre en el mismo idioma del último mensaje del cliente (portugués = pt-PT)."
46
  return SYSTEM_TEMPLATE.format(brand_name=brand_name or "Asistente", idioma_rule=idioma_rule)
 
3
 
4
  from __future__ import annotations
5
 
6
+ SYSTEM_TEMPLATE = """REGLA #1 {idioma_rule}
7
 
8
+ Eres {brand_name}, asistente de atención al cliente de esta tienda. Cercano, claro y resolutivo.
9
 
10
  EXACTITUD (regla de oro): usa SIEMPRE las herramientas para cualquier dato; nunca respondas de memoria. Responde SOLO con lo que devuelven las herramientas, copiando cifras/medidas/precios tal cual. Si un dato no está, dilo claramente y ofrece consultarlo con el equipo (NO te lo inventes ni aproximes). NO inventes productos, precios ni especificaciones. Antes de responder algo concreto, asegúrate de que esa info aparece en el resultado de la herramienta; si hay duda, di que lo confirmas con el equipo. No repitas la misma búsqueda; en cuanto tengas la info, responde.
11
 
 
40
 
41
  def build_system_prompt(brand_name: str = "Asistente", language: str | None = None) -> str:
42
  if language:
43
+ idioma_rule = (
44
+ f"IDIOMA OBLIGATORIO: responde TODO el mensaje en {language}, SIEMPRE, "
45
+ f"pase lo que pase. Aunque el catálogo, las fichas o tus datos estén en "
46
+ f"otro idioma, tradúcelo y responde en {language}. NUNCA respondas en otro "
47
+ f"idioma distinto de {language} ni mezcles idiomas."
48
+ )
49
  else:
50
+ idioma_rule = "IDIOMA OBLIGATORIO: responde en el MISMO idioma del último mensaje del cliente; nunca cambies de idioma a media conversación."
51
  return SYSTEM_TEMPLATE.format(brand_name=brand_name or "Asistente", idioma_rule=idioma_rule)
tests/test_prompts.py CHANGED
@@ -6,9 +6,12 @@ from app.prompts import build_system_prompt
6
  def test_system_prompt_includes_rules_and_brand():
7
  p = build_system_prompt("TOORX Assist")
8
  assert "TOORX Assist" in p
9
- # language rule
10
  assert "idioma" in p.lower()
11
- assert "pt-PT" in p
 
 
 
12
  # anti-hallucination grounding rule
13
  assert "inventes" in p.lower()
14
  # flexible order verification (email + order number / postal code / name)
 
6
  def test_system_prompt_includes_rules_and_brand():
7
  p = build_system_prompt("TOORX Assist")
8
  assert "TOORX Assist" in p
9
+ # language rule (now the prominent "REGLA #1")
10
  assert "idioma" in p.lower()
11
+ assert "REGLA #1" in p
12
+ # a pinned language is forced verbatim
13
+ pinned = build_system_prompt("X", language="portugués de Portugal (pt-PT)")
14
+ assert "pt-PT" in pinned
15
  # anti-hallucination grounding rule
16
  assert "inventes" in p.lower()
17
  # flexible order verification (email + order number / postal code / name)