Spaces:
Sleeping
Sleeping
import gradio as gr | |
from gradio import ChatMessage | |
import time | |
sleep_time = 0.5 | |
def simulate_thinking_chat(message, history): | |
start_time = time.time() | |
response = ChatMessage( | |
content="", | |
metadata={"title": "_Thinking_ step-by-step", "id": 0, "status": "pending"} | |
) | |
print("one") | |
yield response | |
print("two") | |
thoughts = [ | |
"First, I need to understand the core aspects of the query...", | |
"Now, considering the broader context and implications...", | |
"Analyzing potential approaches to formulate a comprehensive answer...", | |
"Finally, structuring the response for clarity and completeness..." | |
] | |
accumulated_thoughts = "" | |
for thought in thoughts: | |
time.sleep(sleep_time) | |
accumulated_thoughts += f"- {thought}\n\n" | |
response.content = accumulated_thoughts.strip() | |
print("three") | |
yield response | |
print("four") | |
response.metadata["status"] = "done" | |
response.metadata["duration"] = time.time() - start_time | |
print("five") | |
yield response | |
print("six") | |
time.sleep(5.0) | |
response = [ | |
response, | |
ChatMessage( | |
content="Based on my thoughts and analysis above, my response is: This dummy repro shows how thoughts of a thinking LLM can be progressively shown before providing its final answer." | |
) | |
] | |
print("seven") | |
yield response | |
print("eight") | |
#response = ChatMessage( | |
# content="Based on my thoughts and analysis above, my response is: This dummy repro shows how thoughts of a thinking LLM can be progressively shown before providing its final answer." | |
# ) | |
#yield response | |
demo1 = gr.ChatInterface( | |
simulate_thinking_chat, | |
title="Thinking LLM Chat Interface π€", | |
type="messages", | |
) | |
with gr.Blocks() as demo: | |
chat = gr.Chatbot() | |
with gr.Row(): | |
text = gr.Textbox(scale=9) | |
btn = gr.Button(scale=1) | |
btn.click(simulate_thinking_chat, [text, chat], [chat]).then(lambda :gr.Textbox(value=""), [], text) | |
text.submit(simulate_thinking_chat, [text, chat], [chat]).then(lambda :gr.Textbox(value=""), [], text) | |
if __name__ == "__main__": | |
demo.launch() |