alzx1 commited on
Commit
fed242e
·
verified ·
1 Parent(s): b7deff7

Upload 2 files

Browse files
Files changed (2) hide show
  1. app.py +60 -0
  2. requirements.txt +4 -0
app.py ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # app.py
2
+ import gradio as gr
3
+ from transformers import pipeline, set_seed
4
+ import torch
5
+
6
+ # Load generator (will download GPT-2 the first time)
7
+ device = 0 if torch.cuda.is_available() else -1
8
+ generator = pipeline("text-generation", model="gpt2", device=device)
9
+ set_seed(42)
10
+
11
+ def generate_blog(title, keywords, max_length, temperature, num_return_sequences):
12
+ # Build a short prompt for the model
13
+ prompt = f"Blog Title: {title}\nKeywords: {keywords}\n\nWrite a clear, friendly blog post about the above:"
14
+ # Generate text
15
+ outputs = generator(
16
+ prompt,
17
+ max_length=max_length,
18
+ temperature=temperature,
19
+ do_sample=True,
20
+ top_k=50,
21
+ top_p=0.95,
22
+ num_return_sequences=num_return_sequences,
23
+ )
24
+
25
+ # Extract generated text and remove the prompt prefix
26
+ posts = []
27
+ for out in outputs:
28
+ text = out["generated_text"]
29
+ # remove prompt part if present
30
+ if text.startswith(prompt):
31
+ text = text[len(prompt):].strip()
32
+ posts.append(text.strip())
33
+
34
+ # If only one sequence requested, return string; otherwise return joined with separators
35
+ if len(posts) == 1:
36
+ return posts[0]
37
+ return "\n\n-----\n\n".join(posts)
38
+
39
+ # Build a minimal Gradio interface
40
+ with gr.Blocks() as demo:
41
+ gr.Markdown("# Simple GPT-2 Blog Generator")
42
+ with gr.Row():
43
+ title_input = gr.Textbox(label="Blog Title", placeholder="Enter your blog title...", lines=1)
44
+ keywords_input = gr.Textbox(label="Keywords / Short brief", placeholder="e.g., sustainable travel, packing tips", lines=1)
45
+ with gr.Row():
46
+ max_len = gr.Slider(label="Max tokens (approx.)", minimum=50, maximum=800, step=10, value=250)
47
+ temp = gr.Slider(label="Temperature (creativity)", minimum=0.1, maximum=1.5, step=0.1, value=0.8)
48
+ with gr.Row():
49
+ nseq = gr.Slider(label="Number of outputs", minimum=1, maximum=3, step=1, value=1)
50
+ generate_btn = gr.Button("Generate Blog Post")
51
+ output = gr.Textbox(label="Generated Blog Post", lines=20)
52
+
53
+ generate_btn.click(
54
+ fn=generate_blog,
55
+ inputs=[title_input, keywords_input, max_len, temp, nseq],
56
+ outputs=output,
57
+ )
58
+
59
+ if __name__ == "__main__":
60
+ demo.launch(server_name="0.0.0.0", share=False)
requirements.txt ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ gradio
2
+ transformers
3
+ torch
4
+