Spaces:
Sleeping
Sleeping
import gradio as gr | |
from transformers import AutoModelForCausalLM, AutoTokenizer | |
import time | |
import random | |
# Load the model and tokenizer | |
model_id = "microsoft/phi-2" # Change to your desired model | |
tokenizer = AutoTokenizer.from_pretrained(model_id) | |
model = AutoModelForCausalLM.from_pretrained(model_id) | |
# --- Functions --- | |
def get_response(input_text, temperature, top_p, top_k, max_length): | |
inputs = tokenizer(input_text, return_tensors="pt") | |
outputs = model.generate( | |
input_ids=inputs["input_ids"], | |
attention_mask=inputs["attention_mask"], | |
max_length=max_length, | |
temperature=temperature, | |
top_p=top_p, | |
top_k=top_k, | |
) | |
response = tokenizer.decode(outputs[0], skip_special_tokens=True) | |
return response | |
def analyze_text(text): | |
num_tokens = len(tokenizer.tokenize(text)) | |
return { | |
"Number of characters": len(text), | |
"Number of words": len(text.split()), | |
"Number of tokens": num_tokens, | |
} | |
def update_analysis(response): | |
analysis = analyze_text(response) | |
analysis_str = f"Number of characters: {analysis['Number of characters']}<br>" \ | |
f"Number of words: {analysis['Number of words']}<br>" \ | |
f"Number of tokens: {analysis['Number of tokens']}" | |
return analysis_str | |
# --- Interface --- | |
with gr.Blocks() as iface: | |
gr.Markdown( | |
""" | |
# Hajax Chat | |
""" | |
) | |
input_text = gr.Textbox( | |
label="Your message:", lines=5, placeholder="Ask me anything...", show_label=True | |
) | |
temperature = gr.Slider(label="Temperature", minimum=0.1, maximum=1.0, step=0.1, value=0.7) | |
top_p = gr.Slider(label="Top p", minimum=0.1, maximum=1.0, step=0.1, value=0.9) | |
top_k = gr.Slider(label="Top k", minimum=1, maximum=100, step=1, value=50) | |
max_length = gr.Slider(label="Max length", minimum=10, maximum=1000, step=10, value=250) | |
submit_button = gr.Button(value="Submit") | |
response = gr.TextArea(label="Response:", lines=10) | |
analysis_html = gr.HTML(elem_id="analysis") | |
submit_button.click(fn=get_response, inputs=[input_text, temperature, top_p, top_k, max_length], outputs=[response]) | |
response.change(fn=update_analysis, inputs=[response], outputs=[analysis_html]) | |
# --- Dynamic Background --- | |
def update_background(): | |
while True: | |
r = random.randint(0, 255) | |
g = 255 # Keep the green component constant | |
b = random.randint(0, 255) | |
gr.update(iface.root, value=f"rgb({r}, {g}, {b})", | |
_js="style.background_color") | |
time.sleep(1) | |
# Start a separate thread to update the background color | |
gr.update(update_background, inputs=[], outputs=[], live=True) | |
iface.launch(debug=True) |