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']}
" \ f"Number of words: {analysis['Number of words']}
" \ 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)