RAG / app.py
Rohit108's picture
Upload app.py
257219e verified
import sqlite3
import pandas as pd
import openai
import os
import streamlit as st
import datetime
# Set OpenAI API Key (Ensure it's set properly)
openai.api_key = os.getenv("sk-NOBe-504FBda5dOQPesE8xKYgzmvBhG_Z_21UZGXtvT3BlbkFJF2vDvLgwzMMrIYgqAC6ezqMnupr9ZAelUCMH4XBP8A") or "sk-NOBe-504FBda5dOQPesE8xKYgzmvBhG_Z_21UZGXtvT3BlbkFJF2vDvLgwzMMrIYgqAC6ezqMnupr9ZAelUCMH4XBP8A"
# Create sample house data
house_data = [
("Alice", "1234567890", 15000, True, "Delhi", "2BHK", "Furnished"),
("Bob", "9876543210", 45000, False, "Mumbai", "3BHK", "Semi Furnished"),
("Charlie", "5556667777", 30000, True, "Pune", "4BHK", "Non Furnished"),
("David", "4445556666", 25000, True, "Jaipur", "1BHK", "Furnished"),
("Eve", "3332221111", 40000, False, "Ahmedabad", "3BHK", "Semi Furnished")
]
# Create DataFrame and save to CSV
df = pd.DataFrame(house_data, columns=["owner_name", "contact", "price", "for_sale", "location", "house_type", "house_details"])
df.to_csv("houses.csv", index=False)
# Connect to SQLite Database
conn = sqlite3.connect("houses.db")
cursor = conn.cursor()
# Create Table if it doesn't exist
cursor.execute('''
CREATE TABLE IF NOT EXISTS houses (
id INTEGER PRIMARY KEY AUTOINCREMENT,
owner_name TEXT,
contact TEXT,
price INTEGER,
for_sale BOOLEAN,
location TEXT,
house_type TEXT,
house_details TEXT
)
''')
# Load data from CSV and insert into database (replace table content if exists)
df = pd.read_csv("houses.csv")
df.to_sql("houses", conn, if_exists="replace", index=False)
conn.commit()
# Function to retrieve data from SQLite Database
def retrieve_data():
cursor.execute("SELECT * FROM houses")
rows = cursor.fetchall()
# Assuming the table now includes the 'id' column, we include it in the DataFrame.
return pd.DataFrame(rows, columns=["owner_name", "contact", "price", "for_sale", "location", "house_type", "house_details"])
# Chatbot function that uses the database records in its prompt
def chatbot(query):
df = retrieve_data()
relevant_data = df.to_string(index=False)
prompt = f"Given the following real estate records:\n{relevant_data}\n\nAnswer the user's query based on the provided data.\n\nUser Query: {query}\nResponse:"
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are an AI assistant that uses the provided database records to answer user queries."},
{"role": "user", "content": prompt}
]
)
return response["choices"][0]["message"]["content"]
# Streamlit UI
st.title("Real Estate Chatbot")
st.write("### Available Houses")
st.dataframe(retrieve_data())
query = st.text_input("Ask about available houses:")
if st.button("Ask Chatbot"):
if query:
response_text = chatbot(query)
# Get the current date and time
now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
st.write("### User Query:")
st.write(query)
st.write(f"### Chatbot Response (Generated on {now}):")
st.write(response_text)
else:
st.warning("Please enter a query.")
conn.close()