Spaces:
Sleeping
Sleeping
Upload engine.py
Browse files
engine.py
CHANGED
|
@@ -3,6 +3,7 @@ import os
|
|
| 3 |
from functools import lru_cache
|
| 4 |
from openai import OpenAI
|
| 5 |
from datetime import datetime
|
|
|
|
| 6 |
|
| 7 |
# =========================
|
| 8 |
# CONFIG
|
|
@@ -137,6 +138,19 @@ def build_join_sql(base_table, steps):
|
|
| 137 |
|
| 138 |
return "\n".join(sql)
|
| 139 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 140 |
|
| 141 |
# =========================
|
| 142 |
# INTENT PARSING (LLM)
|
|
@@ -177,10 +191,14 @@ User question:
|
|
| 177 |
"""
|
| 178 |
|
| 179 |
res = client.chat.completions.create(
|
| 180 |
-
|
| 181 |
-
|
| 182 |
-
|
| 183 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 184 |
|
| 185 |
# ✅ Safe JSON parsing
|
| 186 |
try:
|
|
|
|
| 3 |
from functools import lru_cache
|
| 4 |
from openai import OpenAI
|
| 5 |
from datetime import datetime
|
| 6 |
+
import re
|
| 7 |
|
| 8 |
# =========================
|
| 9 |
# CONFIG
|
|
|
|
| 138 |
|
| 139 |
return "\n".join(sql)
|
| 140 |
|
| 141 |
+
# =========================
|
| 142 |
+
# JSON SAFETY
|
| 143 |
+
# =========================
|
| 144 |
+
|
| 145 |
+
def safe_json_loads(text):
|
| 146 |
+
try:
|
| 147 |
+
return json.loads(text)
|
| 148 |
+
except json.JSONDecodeError:
|
| 149 |
+
match = re.search(r"\{.*\}", text, re.S)
|
| 150 |
+
if match:
|
| 151 |
+
return json.loads(match.group())
|
| 152 |
+
raise ValueError("LLM returned invalid JSON")
|
| 153 |
+
|
| 154 |
|
| 155 |
# =========================
|
| 156 |
# INTENT PARSING (LLM)
|
|
|
|
| 191 |
"""
|
| 192 |
|
| 193 |
res = client.chat.completions.create(
|
| 194 |
+
model="gpt-4.1-mini",
|
| 195 |
+
messages=[
|
| 196 |
+
{"role": "system", "content": "You are a JSON-only API. Return valid JSON only."},
|
| 197 |
+
{"role": "user", "content": prompt}
|
| 198 |
+
],
|
| 199 |
+
temperature=0
|
| 200 |
+
)
|
| 201 |
+
|
| 202 |
|
| 203 |
# ✅ Safe JSON parsing
|
| 204 |
try:
|