Spaces:
Sleeping
Sleeping
| import json | |
| import re | |
| # Exact text from User (Step 3333). | |
| # I am using a raw string r'' to represent what likely came out of the LLM before any python processing. | |
| # BUT, if the user copy-pasted from a log that already had escapes... | |
| # Let's assume the LLM output raw LaTeX single backslashes. | |
| llm_output = r""" | |
| { | |
| "questions": [ | |
| { | |
| "id": 1, | |
| "content": "Tính tích phân $\iint\limits_{D} \frac{x^2 + 2}{x^2 + y^2 + 4} \, dxdy$, với $D$ là miền giới hạn bởi hình vuông $|x| + |y| = 1$.", | |
| "type": "code", | |
| "tool_input": "Viết code Python để tính tích phân kép của hàm f(x,y) = (x^2 + 2)/(x^2 + y^2 + 4) trên miền D là hình vuông |x| + |y| = 1" | |
| }, | |
| { | |
| "id": 2, | |
| "content": "Tính tích phân $\iint\limits_{D} \frac{y^2 + 8}{x^2 + y^2 + 16} \, dxdy$, với $D$ là miền giới hạn bởi hình vuông $|x| + |y| = 2$.", | |
| "type": "code", | |
| "tool_input": "Viết code Python để tính tích phân kép của hàm f(x,y) = (y^2 + 8)/(x^2 + y^2 + 16) trên miền D là hình vuông |x| + |y| = 2" | |
| } | |
| ] | |
| } | |
| """ | |
| print(f"Original Length: {len(llm_output)}") | |
| # Current Logic in nodes.py | |
| def current_repair(text): | |
| return re.sub(r'\\(?!"|u[0-9a-fA-F]{4})', r'\\\\', text) | |
| print("\n--- Testing Current Repair Logic ---") | |
| fixed = current_repair(llm_output) | |
| print(f"Fixed snippet: {fixed[50:150]}...") | |
| try: | |
| data = json.loads(fixed) | |
| print("✅ JSON Load Success") | |
| print(data['questions'][0]['content']) | |
| except json.JSONDecodeError as e: | |
| print(f"❌ JSON Load Failed: {e}") | |
| # Inspect around error | |
| print(f"Error Context: {fixed[e.pos-10:e.pos+10]}") | |
| print("\n--- Testing Improved Logic (Lookbehind?) ---") | |
| # If the current logic fails, we need to know why. | |
| # Maybe it double-escapes existing double-escapes? | |
| # If input is `\\iint` (valid), regex sees `\` (first one) not followed by quote. Replaces with `\\\\`. | |
| # Result `\\\\` + `iint`? No, `\\\\` + `\iint` (second slash remains)? | |
| # Let's see what happens. | |