Add response streaming
This commit is contained in:
		
							
								
								
									
										28
									
								
								app.py
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								app.py
									
									
									
									
									
								
							@@ -1,6 +1,23 @@
 | 
			
		||||
import streamlit as st
 | 
			
		||||
import random
 | 
			
		||||
import time
 | 
			
		||||
 | 
			
		||||
st.title("Echo Bot")
 | 
			
		||||
 | 
			
		||||
# Streamed response emulator
 | 
			
		||||
def response_generator():
 | 
			
		||||
    response = random.choice(
 | 
			
		||||
        [
 | 
			
		||||
            "Hello there! How can I assist you today?",
 | 
			
		||||
            "Hi, human! Is there anything I can help you with?",
 | 
			
		||||
            "Do you need help?",
 | 
			
		||||
        ]
 | 
			
		||||
    )
 | 
			
		||||
    for word in response.split():
 | 
			
		||||
        yield word + " "
 | 
			
		||||
        time.sleep(0.05)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
st.title("Simple chat")
 | 
			
		||||
 | 
			
		||||
# Initialize chat history
 | 
			
		||||
if "messages" not in st.session_state:
 | 
			
		||||
@@ -11,17 +28,16 @@ for message in st.session_state.messages:
 | 
			
		||||
    with st.chat_message(message["role"]):
 | 
			
		||||
        st.markdown(message["content"])
 | 
			
		||||
 | 
			
		||||
# React to user input
 | 
			
		||||
# Accept user input
 | 
			
		||||
if prompt := st.chat_input("What is up?"):
 | 
			
		||||
    # Add user message to chat history
 | 
			
		||||
    st.session_state.messages.append({"role": "user", "content": prompt})
 | 
			
		||||
    # Display user message in chat message container
 | 
			
		||||
    with st.chat_message("user"):
 | 
			
		||||
        st.markdown(prompt)
 | 
			
		||||
    # Add user message to chat history
 | 
			
		||||
    st.session_state.messages.append({"role": "user", "content": prompt})
 | 
			
		||||
 | 
			
		||||
response = f"Echo: {prompt}"
 | 
			
		||||
    # Display assistant response in chat message container
 | 
			
		||||
    with st.chat_message("assistant"):
 | 
			
		||||
    st.markdown(response)
 | 
			
		||||
        response = st.write_stream(response_generator())
 | 
			
		||||
    # Add assistant response to chat history
 | 
			
		||||
    st.session_state.messages.append({"role": "assistant", "content": response})
 | 
			
		||||
		Reference in New Issue
	
	Block a user