import gradio as gr from huggingface_hub import InferenceClient # Initialize the InferenceClient with the model hosted on Hugging Face Hub client = InferenceClient("deepseek-ai/DeepSeek-R1") def respond(message, history: list[tuple[str, str]]): # System message and generation parameters system_message = "You are a friendly Chatbot." max_tokens = 2048 temperature = 0.7 top_p = 0.95 # Prepare the conversation history messages = [{"role": "system", "content": system_message}] for user_msg, assistant_msg in history: if user_msg: messages.append({"role": "user", "content": user_msg}) if assistant_msg: messages.append({"role": "assistant", "content": assistant_msg}) # Add the current user message messages.append({"role": "user", "content": message}) # Stream the response from the model response = "" for message in client.chat_completion( messages, max_tokens=max_tokens, stream=True, temperature=temperature, top_p=top_p, ): token = message.choices[0].delta.content response += token yield response # Custom button actions def retry_last_message(history): if history: return history[:-1] # Remove the last assistant response return history def undo_last_interaction(history): if history: return history[:-1] # Remove the last user-assistant interaction return history def clear_chat(history): return [] # Clear the entire chat history # Create the Gradio ChatInterface with custom buttons with gr.Blocks() as demo: chatbot = gr.Chatbot(label="Chat with DeepSeek-R1") msg = gr.Textbox(label="Your Message") clear = gr.Button("Clear") undo = gr.Button("Undo") retry = gr.Button("Retry") # Define button actions clear.click(clear_chat, chatbot, chatbot) undo.click(undo_last_interaction, chatbot, chatbot) retry.click(retry_last_message, chatbot, chatbot) # Handle user input and chatbot responses msg.submit(respond, [msg, chatbot], chatbot) # Launch the Gradio app if __name__ == "__main__": demo.launch()