Spaces:
Runtime error
Runtime error
# Load all environment variables | |
import streamlit as st | |
import os | |
import sqlite3 | |
import google.generativeai as genai | |
# Configure GenAI Key | |
genai.configure(api_key="AIzaSyA4jlt819TA84K9zr5EUroIQK83Rsx1A6E") # Use environment variable for API key | |
# Function to load Google Gemini Model and provide queries as responses | |
def get_gemini_response(question, prompt): | |
try: | |
model = genai.GenerativeModel('gemini-pro') | |
response = model.generate_content([prompt[0], question]) | |
return response.text.strip() # Ensure no extra whitespace | |
except Exception as e: | |
st.error(f"Error generating response: {e}") | |
return "" | |
# Function to retrieve query from the database | |
def read_sql_query(sql, db): | |
try: | |
conn = sqlite3.connect(db) | |
cur = conn.cursor() | |
cur.execute(sql) | |
rows = cur.fetchall() | |
conn.close() | |
return rows | |
except sqlite3.Error as e: | |
st.error(f"SQL error: {e}") | |
return [] | |
# Define your prompt | |
prompt = [ | |
""" | |
You are an expert in converting English questions to SQL query! | |
The SQL database has the name STUDENT and has the following columns - NAME, CLASS, | |
SECTION. \n\nFor example,\nExample 1 - How many entries of records are present?, | |
the SQL command will be something like this: SELECT COUNT(*) FROM STUDENT; | |
\nExample 2 - Tell me all the students studying in Data Science class?, | |
the SQL command will be something like this: SELECT * FROM STUDENT | |
WHERE CLASS="Data Science"; | |
Note: The SQL code should not have ``` in beginning or end, and should not include the word "sql". | |
""" | |
] | |
# Streamlit App | |
st.set_page_config(page_title="SQL Query Retriever") | |
st.header("Gemini App To Retrieve SQL Data") | |
question = st.text_input("Input your question:", key="input") | |
if st.button("Ask the question"): | |
response = get_gemini_response(question, prompt) | |
if response: | |
st.write(f"Generated SQL Query: `{response}`") | |
result = read_sql_query(response, "students.db") | |
if result: | |
st.subheader("Query Results") | |
for row in result: | |
st.write(row) | |
else: | |
st.write("No results returned or an error occurred.") | |