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 "μ•ˆλ…• ! πŸ‘‹" def default_prompt(self, topic): return f"μ•ˆλ…•ν•˜μ„Έμš” ! {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"{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))