PD03 commited on
Commit
9ef8ded
·
verified ·
1 Parent(s): 4b4dd57

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +19 -13
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
- # Remove markdown code blocks safely
100
- sql_markers = ['``````']
 
101
 
102
- for marker in sql_markers:
103
- if sql_query.startswith(marker):
104
- sql_query = sql_query[len(marker):]
105
- break
 
106
 
107
  # Remove trailing backticks
108
- if sql_query.endswith('```
109
- sql_query = sql_query[:-3]
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```sql\n{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.43+**: Secure interactive web interface
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)