import gradio as gr from gradio import ChatMessage import time sleep_time = 0.1 long_sleep_time = 1 def generate_response(history): history.append( ChatMessage( role="user", content="What is the weather in San Francisco right now?" ) ) yield history time.sleep(sleep_time) history.append( ChatMessage( role="assistant", content="In order to find the current weather in San Francisco, I will need to use my weather tool.", ) ) yield history time.sleep(sleep_time) history.append( ChatMessage( role="assistant", content="", metadata={"title": "Gathering Weather Websites", "id": 1}, ) ) yield history time.sleep(long_sleep_time) history[-1].content = "Will check: weather.com and sunny.org" yield history time.sleep(sleep_time) history.append( ChatMessage( role="assistant", content="Received weather from weather.com.", metadata={"title": "API Success ✅", "parent_id": 1, "id": 2}, ) ) yield history time.sleep(sleep_time) history.append( ChatMessage( role="assistant", content="API Error when connecting to sunny.org.", metadata={"title": "API Error 💥 ", "parent_id": 1, "id": 3}, ) ) yield history time.sleep(sleep_time) history.append( ChatMessage( role="assistant", content="I will try yet again", metadata={"title": "I will try again", "id": 4, "parent_id": 3}, ) ) yield history time.sleep(sleep_time) history.append( ChatMessage( role="assistant", content="Failed again", metadata={"title": "Failed again", "id": 6, "parent_id": 4}, ) ) yield history history.append( ChatMessage( role="assistant", content="Failed again", metadata={"title": "Failed again", "id": 7, "parent_id": 1}, ) ) yield history with gr.Blocks() as demo: chatbot = gr.Chatbot(type="messages", height=500, show_copy_button=True) demo.load(generate_response, chatbot, chatbot) if __name__ == "__main__": demo.launch()