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() |