import gradio as gr from transformers import AutoTokenizer, AutoModelForCausalLM import torch # Model ID MODEL_ID = "mx-llms/Lychee-GPT-9B" # Load tokenizer tokenizer = AutoTokenizer.from_pretrained(MODEL_ID, trust_remote_code=True) # Load model model = AutoModelForCausalLM.from_pretrained( MODEL_ID, torch_dtype=torch.float32, device_map="cpu", trust_remote_code=True, ) def generate_text(prompt, max_length=256, temperature=0.7, top_p=0.9): """Generate text using Lychee-GPT-9B""" try: # Tokenize input inputs = tokenizer(prompt, return_tensors="pt") # Generate with torch.no_grad(): output = model.generate( inputs["input_ids"], max_new_tokens=max_length, temperature=temperature, top_p=top_p, do_sample=True, pad_token_id=tokenizer.eos_token_id, ) # Decode output response = tokenizer.decode(output[0], skip_special_tokens=True) # Remove input prompt from response if prompt in response: response = response.replace(prompt, "", 1).strip() return response except Exception as e: return f"Error: {str(e)}" # Create Gradio interface with gr.Blocks(title="Lychee-GPT-9B") as demo: gr.Markdown(""" # 🎉 Lychee-GPT-9B Demo āφāĻĒāύāĻžāϰ āύāĻŋāϜāĻ¸ā§āĻŦ LLM Model! âąī¸ **āύ⧋āϟ:** - āĻĒā§āϰāĻĨāĻŽ load: 2-3 āĻŽāĻŋāύāĻŋāϟ - Response time: 30-90 āϏ⧇āϕ⧇āĻ¨ā§āĻĄ (CPU āϤ⧇) """) with gr.Row(): with gr.Column(): prompt = gr.Textbox( label="āĻĒā§āϰāĻļā§āύ/Prompt", placeholder="āĻ•āĻŋāϛ⧁ āϞāĻŋāϖ⧁āύ...", lines=3 ) with gr.Row(): max_len = gr.Slider( label="Max Length", minimum=10, maximum=512, value=256, step=10 ) with gr.Row(): temp = gr.Slider( label="Temperature", minimum=0.0, maximum=1.0, value=0.7, step=0.1 ) top_p = gr.Slider( label="Top P", minimum=0.0, maximum=1.0, value=0.9, step=0.05 ) submit_btn = gr.Button("Generate", variant="primary", size="lg") with gr.Column(): output = gr.Textbox( label="Response", lines=8, interactive=False ) # Examples gr.Examples( examples=[ ["āĻŦāĻžāĻ‚āϞāĻž āĻ­āĻžāώāĻž āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻŦāϞ⧁āύ"], ["āĻĒāĻžāχāĻĨāύ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāĻŋāĻ‚ āĻ•āĻŋ?"], ["āĻāĻ•āϟāĻŋ āϏāĻ‚āĻ•ā§āώāĻŋāĻĒā§āϤ āĻ—āĻ˛ā§āĻĒ āĻŦāϞ⧁āύ"], ], inputs=prompt, ) # Connect button submit_btn.click( fn=generate_text, inputs=[prompt, max_len, temp, top_p], outputs=output ) # Allow Enter key prompt.submit( fn=generate_text, inputs=[prompt, max_len, temp, top_p], outputs=output ) if __name__ == "__main__": demo.launch()