| 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"} |
| ) |
| yield response |
|
|
| 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() |
| yield response |
|
|
| response.metadata["status"] = "done" |
| response.metadata["duration"] = time.time() - start_time |
| yield response |
|
|
| 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." |
| ) |
| ] |
| yield response |
|
|
|
|
| demo = gr.ChatInterface( |
| simulate_thinking_chat, |
| title="Thinking LLM Chat Interface 🤔", |
| ) |
|
|
| if __name__ == "__main__": |
| demo.launch() |
|
|