Spaces:
Sleeping
Sleeping
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() | |