Aris11-11 commited on
Commit
666e464
Β·
verified Β·
1 Parent(s): 2b7705b

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +106 -0
app.py ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ Copy
3
+
4
+ import gradio as gr
5
+ from transformers import pipeline, AutoTokenizer, AutoModelForCausalLM
6
+ import torch
7
+
8
+ # ─────────────────────────────────────────
9
+ # Model loading
10
+ # ─────────────────────────────────────────
11
+ MODEL_ID = "microsoft/phi-2" # Change this to any HF model you like
12
+ DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
13
+
14
+ print(f"Loading model: {MODEL_ID} | Device: {DEVICE}")
15
+
16
+ tokenizer = AutoTokenizer.from_pretrained(MODEL_ID, trust_remote_code=True)
17
+ model = AutoModelForCausalLM.from_pretrained(
18
+ MODEL_ID,
19
+ torch_dtype=torch.float16 if DEVICE == "cuda" else torch.float32,
20
+ device_map="auto",
21
+ trust_remote_code=True,
22
+ )
23
+
24
+ generator = pipeline(
25
+ "text-generation",
26
+ model=model,
27
+ tokenizer=tokenizer,
28
+ device_map="auto",
29
+ )
30
+
31
+ # ─────────────────────────────────────────
32
+ # Generation function
33
+ # ─────────────────────────────────────────
34
+ def generate_text(
35
+ prompt: str,
36
+ max_new_tokens: int,
37
+ temperature: float,
38
+ top_p: float,
39
+ top_k: int,
40
+ repetition_penalty: float,
41
+ ):
42
+ if not prompt.strip():
43
+ return "⚠️ Please enter a prompt."
44
+
45
+ outputs = generator(
46
+ prompt,
47
+ max_new_tokens=int(max_new_tokens),
48
+ temperature=float(temperature),
49
+ top_p=float(top_p),
50
+ top_k=int(top_k),
51
+ repetition_penalty=float(repetition_penalty),
52
+ do_sample=True,
53
+ pad_token_id=tokenizer.eos_token_id,
54
+ )
55
+
56
+ generated = outputs[0]["generated_text"]
57
+ # Remove the original prompt from the output
58
+ result = generated[len(prompt):].strip()
59
+ return result if result else "(No output generated β€” try a longer max_tokens)"
60
+
61
+ # ─────────────────────────────────────────
62
+ # Gradio UI
63
+ # ─────────────────────────────────────────
64
+ with gr.Blocks(title="AI Text Generator", theme=gr.themes.Soft()) as demo:
65
+ gr.Markdown(
66
+ """
67
+ # πŸ€– AI Text Generator
68
+ Powered by **Phi-2** (Microsoft) via πŸ€— Transformers.
69
+ Enter a prompt, tweak the settings, and hit **Generate**!
70
+ """
71
+ )
72
+
73
+ with gr.Row():
74
+ with gr.Column(scale=2):
75
+ prompt_box = gr.Textbox(
76
+ label="Your Prompt",
77
+ placeholder="Once upon a time in a land far away...",
78
+ lines=5,
79
+ )
80
+ generate_btn = gr.Button("⚑ Generate", variant="primary")
81
+
82
+ with gr.Column(scale=1):
83
+ max_tokens = gr.Slider(50, 500, value=200, step=10, label="Max New Tokens")
84
+ temperature = gr.Slider(0.1, 2.0, value=0.7, step=0.05, label="Temperature")
85
+ top_p = gr.Slider(0.1, 1.0, value=0.9, step=0.05, label="Top-p")
86
+ top_k = gr.Slider(1, 100, value=50, step=1, label="Top-k")
87
+ rep_penalty = gr.Slider(1.0, 2.0, value=1.1, step=0.05, label="Repetition Penalty")
88
+
89
+ output_box = gr.Textbox(label="Generated Text", lines=10, interactive=False)
90
+
91
+ gr.Examples(
92
+ examples=[
93
+ ["Write a short story about a robot learning to paint."],
94
+ ["Explain quantum computing in simple words:"],
95
+ ["Python code to reverse a linked list:\n```python\n"],
96
+ ],
97
+ inputs=prompt_box,
98
+ )
99
+
100
+ generate_btn.click(
101
+ fn=generate_text,
102
+ inputs=[prompt_box, max_tokens, temperature, top_p, top_k, rep_penalty],
103
+ outputs=output_box,
104
+ )
105
+
106
+ demo.launch()