import streamlit as st import google.generativeai as genai from dotenv import load_dotenv import os # Load environment variables load_dotenv() os.environ["GOOGLE_API_KEY"] = os.getenv("GOOGLE_API_KEY") genai.configure(api_key=os.environ["GOOGLE_API_KEY"]) def main(): # Function to generate SQL query based on prompt input def gemini_ans(prompt_input): model = genai.GenerativeModel('gemini-1.5-flash-latest') response = model.generate_content([prompt_input]) return response.text # Set page configuration st.set_page_config(page_title='SQL Query Generator', page_icon=':robot:') # Custom CSS for styling st.markdown( """ """, unsafe_allow_html=True ) # Header section st.markdown( """

SQL Query Generator

Effortlessly transform your natural language input into SQL queries!

""" , unsafe_allow_html=True) # Input section with a card-like design st.markdown( """

Enter your details below:

""", unsafe_allow_html=True ) # Inputs input_text = st.text_area('Enter your natural language query...') schema_name = st.text_input('Enter the schema name (optional):', placeholder="e.g., public") table_name = st.text_input('Enter the table name:', placeholder="e.g., users") # Generate SQL Query button submit = st.button('Generate SQL Query', key='generate_button') # Prompts for model responses prompt = """ You are an English to SQL language translator. The schema name is {schema}, and the table name is {table}. Using the given text here {en}, write a SQL query only without making any mistakes. """ prompt1 = """ What would be the expected response of this query snippet: ``` {query} ``` Provide a sample tabular response with no explanation. """ prompt2 = """ Explain the SQL query: ``` {query} ``` Please provide the simplest explanation. """ # Handle button click event if submit: if not table_name: st.error("Please enter the table name!") return with st.spinner('Generating SQL Query...'): # Generate SQL query sql_query = gemini_ans(prompt.format( schema=schema_name or 'default schema', table=table_name, en=input_text )) st.header('Model Response') st.success("Generated SQL Query Successfully!") st.code(sql_query, language="sql") # Generate sample expected output sql_table = gemini_ans(prompt1.format(query=sql_query)) st.success('Sample Expected Output') st.markdown(sql_table) # Generate explanation of the given query sql_explanation = gemini_ans(prompt2.format(query=sql_query)) st.success('Explanation of the Given Query') st.markdown(sql_explanation) # Execute main function if __name__ == "__main__": main()