Cotype-Nano / app.py
Ivan000's picture
Update app.py
cd869da verified
raw
history blame
2.63 kB
# app.py
# =============
# This is a complete app.py file for deploying the MTSAIR/Cotype-Nano model using Gradio and Hugging Face Transformers with chat and token streaming functionality, advanced settings, and English interface.
import gradio as gr
from transformers import pipeline
# Load the model and pipeline
model_name = "MTSAIR/Cotype-Nano"
pipe = pipeline("text-generation", model=model_name, device="cpu")
# Define the system prompt
system_prompt = {"role": "system", "content": "You are an AI assistant. Your task is to generate a detailed and comprehensive response."}
# Define the Gradio interface
def generate_response(history, user_input, temperature, max_new_tokens):
messages = [system_prompt] + history + [{"role": "user", "content": user_input}]
response = pipe(messages, max_new_tokens=max_new_tokens, temperature=temperature, return_full_text=False)
generated_text = response[0]['generated_text']
history.append({"role": "user", "content": user_input})
history.append({"role": "assistant", "content": generated_text})
return history, ""
# Function to clear chat history
def clear_chat():
return [], ""
# Custom CSS for styling
custom_css = """
#chatbot {
height: 400px;
overflow-y: auto;
border: 1px solid #ccc;
padding: 10px;
border-radius: 5px;
}
.gr-button {
margin-top: 10px;
padding: 10px 20px;
font-size: 16px;
border-radius: 5px;
}
.gr-textbox {
margin-top: 10px;
padding: 10px;
font-size: 16px;
border-radius: 5px;
}
.gr-slider {
margin-top: 20px;
}
"""
# Create the Gradio interface
with gr.Blocks(css=custom_css) as demo:
gr.Markdown("## Cotype-Nano Text Generation Chat")
chatbot = gr.Chatbot([], elem_id="chatbot", type='messages')
with gr.Row():
txt = gr.Textbox(
show_label=False,
placeholder="Type your message here...",
)
send_btn = gr.Button("Send")
with gr.Row():
clear_btn = gr.Button("Clear Chat")
with gr.Row():
temperature_slider = gr.Slider(0, 1, 0.7, step=0.1, label="Temperature")
max_new_tokens_slider = gr.Slider(1, 1000, 100, step=1, label="Max New Tokens")
send_btn.click(generate_response, [chatbot, txt, temperature_slider, max_new_tokens_slider], [chatbot, txt])
txt.submit(generate_response, [chatbot, txt, temperature_slider, max_new_tokens_slider], [chatbot, txt])
clear_btn.click(clear_chat, outputs=[chatbot, txt])
# Launch the interface
if __name__ == "__main__":
demo.launch()