Update app.py
Browse files
app.py
CHANGED
|
@@ -95,18 +95,20 @@ class SALTAnalytics:
|
|
| 95 |
return f"Error generating insights: {str(e)}"
|
| 96 |
|
| 97 |
def clean_sql_response(self, sql_query: str) -> str:
|
| 98 |
-
"""Safely clean SQL response from OpenAI - FIXED VERSION"""
|
| 99 |
-
#
|
| 100 |
-
|
|
|
|
| 101 |
|
| 102 |
-
|
| 103 |
-
|
| 104 |
-
|
| 105 |
-
|
|
|
|
| 106 |
|
| 107 |
# Remove trailing backticks
|
| 108 |
-
if sql_query.endswith(
|
| 109 |
-
sql_query = sql_query[:-
|
| 110 |
|
| 111 |
return sql_query.strip()
|
| 112 |
|
|
@@ -146,7 +148,7 @@ class SALTAnalytics:
|
|
| 146 |
temperature=0.1
|
| 147 |
)
|
| 148 |
|
| 149 |
-
sql_query = response.choices.message.content.strip()
|
| 150 |
|
| 151 |
# Clean SQL query using safe method
|
| 152 |
sql_query = self.clean_sql_response(sql_query)
|
|
@@ -168,9 +170,13 @@ class SALTAnalytics:
|
|
| 168 |
temperature=0.3
|
| 169 |
)
|
| 170 |
|
| 171 |
-
explanation = explanation_response.choices.message.content
|
|
|
|
|
|
|
|
|
|
|
|
|
| 172 |
|
| 173 |
-
return f"**SQL Query:**\n
|
| 174 |
|
| 175 |
except Exception as e:
|
| 176 |
return f"Error: {str(e)}"
|
|
@@ -302,7 +308,7 @@ with gr.Blocks(title="SAP SALT Analytics Demo", theme=gr.themes.Soft()) as demo:
|
|
| 302 |
- **DuckDB**: High-performance analytics database
|
| 303 |
- **OpenAI GPT-4**: Natural language to SQL conversion
|
| 304 |
- **Hugging Face**: Dataset hosting and deployment
|
| 305 |
-
- **Gradio 5
|
| 306 |
|
| 307 |
**Business Value**:
|
| 308 |
- Automate sales order completion (70-80% accuracy)
|
|
|
|
| 95 |
return f"Error generating insights: {str(e)}"
|
| 96 |
|
| 97 |
def clean_sql_response(self, sql_query: str) -> str:
|
| 98 |
+
"""Safely clean SQL response from OpenAI - COMPLETELY FIXED VERSION"""
|
| 99 |
+
# Define markers as variables to avoid syntax errors
|
| 100 |
+
triple_backticks = "```
|
| 101 |
+
sql_marker = "```sql"
|
| 102 |
|
| 103 |
+
# Remove markdown code blocks safely
|
| 104 |
+
if sql_query.startswith(sql_marker):
|
| 105 |
+
sql_query = sql_query[len(sql_marker):]
|
| 106 |
+
elif sql_query.startswith(triple_backticks):
|
| 107 |
+
sql_query = sql_query[len(triple_backticks):]
|
| 108 |
|
| 109 |
# Remove trailing backticks
|
| 110 |
+
if sql_query.endswith(triple_backticks):
|
| 111 |
+
sql_query = sql_query[:-len(triple_backticks)]
|
| 112 |
|
| 113 |
return sql_query.strip()
|
| 114 |
|
|
|
|
| 148 |
temperature=0.1
|
| 149 |
)
|
| 150 |
|
| 151 |
+
sql_query = response.choices[0].message.content.strip()
|
| 152 |
|
| 153 |
# Clean SQL query using safe method
|
| 154 |
sql_query = self.clean_sql_response(sql_query)
|
|
|
|
| 170 |
temperature=0.3
|
| 171 |
)
|
| 172 |
|
| 173 |
+
explanation = explanation_response.choices[0].message.content
|
| 174 |
+
|
| 175 |
+
# Use variables for backticks in output
|
| 176 |
+
code_start = "```
|
| 177 |
+
code_end = "\n```"
|
| 178 |
|
| 179 |
+
return f"**SQL Query:**\n{code_start}{sql_query}{code_end}\n\n**Results:**\n{result_df.to_string(index=False)}\n\n**Explanation:**\n{explanation}"
|
| 180 |
|
| 181 |
except Exception as e:
|
| 182 |
return f"Error: {str(e)}"
|
|
|
|
| 308 |
- **DuckDB**: High-performance analytics database
|
| 309 |
- **OpenAI GPT-4**: Natural language to SQL conversion
|
| 310 |
- **Hugging Face**: Dataset hosting and deployment
|
| 311 |
+
- **Gradio 5**: Secure interactive web interface
|
| 312 |
|
| 313 |
**Business Value**:
|
| 314 |
- Automate sales order completion (70-80% accuracy)
|