saad-sust commited on
Commit
9812dd1
Β·
verified Β·
1 Parent(s): 1c88910

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +29 -3
app.py CHANGED
@@ -994,9 +994,14 @@ def run_sympy(problem: str) -> dict:
994
 
995
  # ── Series sum ────────────────────────────────────────────
996
  elif any(k in p for k in ["series","sum of"]):
997
- m = re.search(r"(?:sum|series)\s+(?:of\s+)?(.+?)\s*(?:from|$)", p)
998
  if m:
999
- raw = clean(m.group(1))
 
 
 
 
 
1000
  try:
1001
  expr_ser = parse_expr(raw, transformations=tfms,
1002
  local_dict={**ld, "n": n_s})
@@ -1247,13 +1252,34 @@ def ask_ai(problem: str, sympy_info: dict, history: list) -> str:
1247
  user_msg = problem
1248
  messages.append({"role": "user", "content": user_msg})
1249
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1250
  # Try each provider in order β€” auto-rotate on 429 or error
1251
  last_error = ""
1252
  for provider_name, key, call_fn in providers:
1253
  if not key:
1254
  continue # skip if key not set
1255
  try:
1256
- return call_fn(key, messages)
 
1257
  except requests.exceptions.Timeout:
1258
  last_error = f"⏳ {provider_name} timed out"
1259
  continue
 
994
 
995
  # ── Series sum ────────────────────────────────────────────
996
  elif any(k in p for k in ["series","sum of"]):
997
+ m = re.search(r"(?:sum\s+of|series\s+(?:of\s+)?|convergence\s+of)\s*(.+?)(?:\s+from|\s+using|\s+by|$)", p)
998
  if m:
999
+ raw = m.group(1).strip()
1000
+ raw = re.sub(r"^series\s+sum\s+of\s+", "", raw)
1001
+ raw = re.sub(r"^series\s+of\s+", "", raw)
1002
+ raw = re.sub(r"^sum\s+of\s+", "", raw)
1003
+ raw = re.sub(r"^of\s+", "", raw)
1004
+ raw = clean(raw)
1005
  try:
1006
  expr_ser = parse_expr(raw, transformations=tfms,
1007
  local_dict={**ld, "n": n_s})
 
1252
  user_msg = problem
1253
  messages.append({"role": "user", "content": user_msg})
1254
 
1255
+ # ── Permanent fix: force correct final answer from SymPy ────────
1256
+ def enforce_verified_answer(ai_response: str) -> str:
1257
+ """Remove AI final answer, replace with SymPy verified one."""
1258
+ result = sympy_info.get("result", "")
1259
+ latex = sympy_info.get("latex", "")
1260
+ # Only enforce if SymPy has a real computed result
1261
+ if (not result or
1262
+ result in (None, "matrix_detected", "mod_detected") or
1263
+ not latex):
1264
+ return ai_response # theory question β€” leave AI response untouched
1265
+ # Remove everything after last "βœ…" or "Final Answer"
1266
+ cleaned = re.sub(
1267
+ r'(βœ…\s*\*{0,2}Final\s*Answer\*{0,2}.*|βœ…[^\n]*$)',
1268
+ "", ai_response,
1269
+ flags=re.DOTALL | re.IGNORECASE
1270
+ ).rstrip()
1271
+ # Append our verified final answer
1272
+ verified_line = f"\n\nβœ… **Final Answer:** $${latex}$$"
1273
+ return cleaned + verified_line
1274
+
1275
  # Try each provider in order β€” auto-rotate on 429 or error
1276
  last_error = ""
1277
  for provider_name, key, call_fn in providers:
1278
  if not key:
1279
  continue # skip if key not set
1280
  try:
1281
+ response = call_fn(key, messages)
1282
+ return enforce_verified_answer(response)
1283
  except requests.exceptions.Timeout:
1284
  last_error = f"⏳ {provider_name} timed out"
1285
  continue