Spaces:
Sleeping
Sleeping
| 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() |