Add response streaming
This commit is contained in:
		
							
								
								
									
										28
									
								
								app.py
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								app.py
									
									
									
									
									
								
							@@ -1,6 +1,23 @@
 | 
				
			|||||||
import streamlit as st
 | 
					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
 | 
					# Initialize chat history
 | 
				
			||||||
if "messages" not in st.session_state:
 | 
					if "messages" not in st.session_state:
 | 
				
			||||||
@@ -11,17 +28,16 @@ for message in st.session_state.messages:
 | 
				
			|||||||
    with st.chat_message(message["role"]):
 | 
					    with st.chat_message(message["role"]):
 | 
				
			||||||
        st.markdown(message["content"])
 | 
					        st.markdown(message["content"])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# React to user input
 | 
					# Accept user input
 | 
				
			||||||
if prompt := st.chat_input("What is up?"):
 | 
					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
 | 
					    # Display user message in chat message container
 | 
				
			||||||
    with st.chat_message("user"):
 | 
					    with st.chat_message("user"):
 | 
				
			||||||
        st.markdown(prompt)
 | 
					        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
 | 
					    # Display assistant response in chat message container
 | 
				
			||||||
    with st.chat_message("assistant"):
 | 
					    with st.chat_message("assistant"):
 | 
				
			||||||
    st.markdown(response)
 | 
					        response = st.write_stream(response_generator())
 | 
				
			||||||
    # Add assistant response to chat history
 | 
					    # Add assistant response to chat history
 | 
				
			||||||
    st.session_state.messages.append({"role": "assistant", "content": response})
 | 
					    st.session_state.messages.append({"role": "assistant", "content": response})
 | 
				
			||||||
		Reference in New Issue
	
	Block a user