import streamlit as st import openai import pandas as pd from sqlalchemy import create_engine from langchain.chat_models import ChatOpenAI from langchain.prompts import PromptTemplate from langchain.chains import LLMChain # Set OpenAI API Key directly here if not set as an environment variable OPENAI_API_KEY = "sk-O7esHSo2XAWm-GXUGXp7_P9l4qXrQMn0CIGzs34ojLT3BlbkFJeXGSSvywppRTAvyT0zZkmZLZsj5cg7XkAkBTh8ZxoA" # Database connection DATABASE_URL = "sqlite:///Sakila.db" # Replace with your DB path or connection string engine = create_engine(DATABASE_URL) # Set up LangChain components llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0.5, openai_api_key=OPENAI_API_KEY) # Pass API key here # Custom prompt to generate SQL query prompt_template = """ You are an SQL expert. Write an SQL query to answer the following question: Question: {question} SQL Query: """ prompt = PromptTemplate(input_variables=["question"], template=prompt_template) llm_chain = LLMChain(llm=llm, prompt=prompt) # Streamlit UI setup st.title("SQL Data Chatbot with LangChain") st.write("Ask questions about the data, and I will answer them with both a response and an SQL query.") # Input field for the user question user_question = st.text_input("Your question:") # Process the question if provided if user_question: # Generate the SQL query using the custom LLM chain try: # Generate SQL query with the language model sql_query = llm_chain.run({"question": user_question}).strip() # Display the generated SQL query st.subheader("Generated SQL Query") st.code(sql_query, language="sql") # Execute SQL query to get the results with engine.connect() as conn: result_df = pd.read_sql_query(sql_query, conn) # Show query results if any if not result_df.empty: st.write("Query Results:") st.write(result_df) else: st.write("No results found for this query.") except Exception as e: st.write(f"Error processing the query: {e}")