AliInamdar commited on
Commit
e6cd1d5
Β·
verified Β·
1 Parent(s): 34ed036

Create appy.py

Browse files
Files changed (1) hide show
  1. appy.py +66 -0
appy.py ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import pandas as pd
3
+ import os
4
+ from groq import Groq
5
+
6
+ # Set page configuration
7
+ st.set_page_config(page_title="πŸ“Š Excel SQL Assistant", layout="centered")
8
+ st.title("🧠 Excel to SQL with GROQ + Streamlit")
9
+
10
+ # Load Groq API key from Streamlit secrets
11
+ GROQ_API_KEY = st.secrets.get("GROQ_API_KEY", None)
12
+
13
+ # Fallback warning if API key not found
14
+ if not GROQ_API_KEY:
15
+ st.error("❌ GROQ API key not found. Please set it in your Hugging Face `secrets` tab.")
16
+ st.stop()
17
+
18
+ # Initialize Groq client
19
+ client = Groq(api_key=GROQ_API_KEY)
20
+
21
+ # Upload Excel file
22
+ uploaded_file = st.file_uploader("πŸ“‚ Upload your Excel file", type=["xlsx"])
23
+ st.write("πŸ“ Uploaded file object:", uploaded_file) # Debugging aid
24
+
25
+ # Text input for user query
26
+ user_query = st.text_input("πŸ’¬ Ask a question about your data")
27
+
28
+ # Generate button
29
+ if st.button("πŸš€ Generate & Run SQL"):
30
+ if uploaded_file is not None and user_query.strip() != "":
31
+ try:
32
+ df = pd.read_excel(uploaded_file)
33
+ st.success("βœ… File successfully loaded!")
34
+
35
+ # Create schema-like string from the DataFrame
36
+ preview = df.head(5).to_string(index=False)
37
+ schema = f"Here are the first few rows of the dataset:\n\n{preview}"
38
+
39
+ # Prompt to Groq
40
+ full_prompt = f"""You are a data expert. Write a Pandas code snippet to answer the following question based on the data:\n\n{schema}\n\nQuestion: {user_query}"""
41
+
42
+ with st.spinner("⏳ Generating SQL-like response using Groq..."):
43
+ response = client.chat.completions.create(
44
+ model="mixtral-8x7b-32768",
45
+ messages=[
46
+ {"role": "system", "content": "You are an expert data assistant that writes pandas code based on user questions."},
47
+ {"role": "user", "content": full_prompt}
48
+ ]
49
+ )
50
+
51
+ answer = response.choices[0].message.content
52
+ st.code(answer, language="python")
53
+
54
+ # Optionally: try to run it
55
+ try:
56
+ local_vars = {"df": df.copy()}
57
+ exec(answer, {}, local_vars)
58
+ if 'df' in local_vars:
59
+ st.dataframe(local_vars['df'])
60
+ except Exception as e:
61
+ st.warning(f"⚠️ Could not execute the code:\n\n{e}")
62
+
63
+ except Exception as e:
64
+ st.error(f"❌ Error processing file: {e}")
65
+ else:
66
+ st.warning("⚠️ Please upload a file and enter a question.")