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