Spaces:
Running
Running
import os | |
import streamlit as st | |
from streamlit_chat import message | |
class ChatHistory: | |
def __init__(self): | |
self.history = st.session_state.get("history", []) | |
st.session_state["history"] = self.history | |
def default_greeting(self): | |
return "Hey Robby ! π" | |
def default_prompt(self, topic): | |
return f"Hello ! Ask me anything about {topic} π€" | |
def initialize_user_history(self): | |
st.session_state["user"] = [self.default_greeting()] | |
def initialize_assistant_history(self, uploaded_file): | |
st.session_state["assistant"] = [self.default_prompt(uploaded_file.name)] | |
def initialize(self, uploaded_file): | |
if "assistant" not in st.session_state: | |
self.initialize_assistant_history(uploaded_file) | |
if "user" not in st.session_state: | |
self.initialize_user_history() | |
def reset(self, uploaded_file): | |
st.session_state["history"] = [] | |
self.initialize_user_history() | |
self.initialize_assistant_history(uploaded_file) | |
st.session_state["reset_chat"] = False | |
def append(self, mode, message): | |
st.session_state[mode].append(message) | |
def generate_messages(self, container): | |
if st.session_state["assistant"]: | |
with container: | |
for i in range(len(st.session_state["assistant"])): | |
message( | |
st.session_state["user"][i], | |
is_user=True, | |
key=f"history_{i}_user", | |
avatar_style="big-smile", | |
) | |
message(st.session_state["assistant"][i], key=str(i), avatar_style="thumbs") | |
def load(self): | |
if os.path.exists(self.history_file): | |
with open(self.history_file, "r") as f: | |
self.history = f.read().splitlines() | |
def save(self): | |
with open(self.history_file, "w") as f: | |
f.write("\n".join(self.history)) | |