import streamlit as st import time import uuid import requests import os import json chat_url = os.environ['CHAT_URL'] # Streamed response emulator def response_generator(user_input): payload = json.dumps({ "user_query": user_input, "thread_id": st.session_state.session_id }) headers = { 'Content-Type': 'application/json' } response = requests.request("POST", chat_url, headers=headers, data=payload) ai_response = response.json()['ai_response'] for character in ai_response: yield character time.sleep(0.001) st.title("BookBot 📚 🤖") if "session_id" not in st.session_state: st.session_state.session_id = str(uuid.uuid4()) # Initialize chat history if "messages" not in st.session_state: st.session_state.messages = [] # Display chat messages from history on app rerun for message in st.session_state.messages: with st.chat_message(message["role"]): st.markdown(message["content"]) # Accept user input if user_input := st.chat_input("What is up?"): # Add user message to chat history st.session_state.messages.append({"role": "user", "content": user_input.strip()}) # Display user message in chat message container with st.chat_message("user"): st.markdown(user_input) # Display assistant response in chat message container with st.chat_message("assistant"): response = st.write_stream(response_generator(user_input.strip())) # Add assistant response to chat history st.session_state.messages.append({"role": "assistant", "content": response})