import streamlit as st import json st.title("Streamlit Chatbot") def load_user_data(): try: with open('user_data.json', 'r') as f: data = json.load(f) st.session_state.name = data['user_data'].get('name', '') st.session_state.age = data['user_data'].get('age', '') st.session_state.chat_history = data['user_data'].get('chat_history', []) except FileNotFoundError: print("user_data.json not found.") except json.JSONDecodeError: print("Error decoding user_data.json. The file might be corrupt.") def save_user_data(): data = { 'user_data': { 'name': st.session_state.name, 'age': st.session_state.age, 'chat_history': st.session_state.chat_history } } with open('user_data.json', 'w') as f: json.dump(data, f) # Correct usage of json.dump if 'chat_state' not in st.session_state: st.session_state.chat_state = 'get_name' load_user_data() if st.session_state.chat_state == 'get_name': st.write("Welcome! Please enter your name:") name = st.text_input('Your Name') if st.button('Start Chat'): st.session_state.name = name st.session_state.chat_state = 'get_age' elif st.session_state.chat_state == 'get_age': st.write(f"Hello, {st.session_state.name}! Enter your age:") age = st.text_input('Your Age') if st.button('Submit'): st.session_state.age = age # Store the age save_user_data() st.session_state.chat_state = 'chat' elif st.session_state.chat_state == 'chat': st.write("Chat History:") for msg in st.session_state.chat_history: st.write(f"**{msg['role']}**: {msg['message']}") st.write("Ask me anything:") message = st.text_input('Your Message') if st.button('Send'): if message.lower() in ['hi', 'hello', 'hey']: chatbot_response = f"Hello, {st.session_state.name}!" elif 'how are you' in message.lower(): chatbot_response = "I'm doing well, thanks for asking!" else: chatbot_response = "I'm still learning. Can you try asking something else?" # st.session_state.chat_history.append({"role": "user", "message": message}) # st.session_state.chat_history.append({"role": "bot", "message": chatbot_response}) save_user_data() # Save all data