Spaces:
Sleeping
Sleeping
| import os | |
| import streamlit as st | |
| from dotenv import load_dotenv | |
| from langchain import HuggingFaceHub | |
| # Load environment variables from the .env file | |
| load_dotenv() | |
| # Set your Hugging Face API token from the environment variable | |
| HUGGINGFACE_API_TOKEN = os.getenv("HUGGINGFACE_API_TOKEN") | |
| # Function to return the SQL query from natural language input | |
| def load_sql_query(question): | |
| try: | |
| # Initialize the Hugging Face model using LangChain's HuggingFaceHub class | |
| llm = HuggingFaceHub( | |
| repo_id="Salesforce/grappa_large_jnt", # Hugging Face model repo for text-to-SQL | |
| task="text2text-generation", # Set the task to 'text2text-generation' | |
| huggingfacehub_api_token=HUGGINGFACE_API_TOKEN, # Pass your API token | |
| model_kwargs={"temperature": 0.3} # Optional: Adjust response randomness | |
| ) | |
| # Call the model with the user's question and get the SQL query | |
| sql_query = llm.predict(question) | |
| return sql_query | |
| except Exception as e: | |
| # Capture and return any exceptions or errors | |
| return f"Error: {str(e)}" | |
| # Streamlit App UI starts here | |
| st.set_page_config(page_title="Text-to-SQL Demo", page_icon=":robot:") | |
| st.header("Text-to-SQL Demo") | |
| # Function to get user input | |
| def get_text(): | |
| input_text = st.text_input("Ask a question (related to a database):", key="input") | |
| return input_text | |
| # Get user input | |
| user_input = get_text() | |
| # Create a button for generating the SQL query | |
| submit = st.button('Generate SQL') | |
| # If the generate button is clicked and user input is not empty | |
| if submit and user_input: | |
| response = load_sql_query(user_input) | |
| st.subheader("Generated SQL Query:") | |
| st.write(response) | |
| elif submit: | |
| st.warning("Please enter a question.") # Warning for empty input | |