| import gradio as gr |
| from transformers import pipeline, set_seed |
| import os |
|
|
| |
| os.environ["TOKENIZERS_PARALLELISM"] = "false" |
|
|
| |
| generator = pipeline( |
| "text-generation", |
| model="openai-community/openai-gpt", |
| device=-1 |
| ) |
|
|
| def generate_text(prompt, max_length=30, num_return_sequences=3, seed=42): |
| """Generate text with configurable parameters and seed""" |
| set_seed(seed) |
| results = generator( |
| prompt, |
| max_length=max_length, |
| num_return_sequences=num_return_sequences, |
| truncation=True, |
| pad_token_id=generator.tokenizer.eos_token_id |
| ) |
| |
| return "\n\n".join([f"{i+1}. {r['generated_text']}" for i, r in enumerate(results)]) |
|
|
| |
| with gr.Blocks(theme="soft", title="GPT-1 Text Generator") as demo: |
| gr.Markdown(""" |
| # 📜 GPT-1 Text Generation Demo |
| Run on free HuggingFace CPU • Model: [openai-community/openai-gpt](https://huggingface.co/openai-community/openai-gpt ) |
| |
| *Note: This is the original 2018 GPT model with known limitations and biases. For production use, consider newer models.* |
| """) |
| |
| with gr.Row(): |
| with gr.Column(): |
| prompt = gr.Textbox( |
| label="Input Prompt", |
| placeholder="Enter your prompt here...", |
| lines=4 |
| ) |
| seed = gr.Number(value=42, label="Random Seed") |
| |
| with gr.Column(): |
| max_length = gr.Slider(10, 100, value=30, step=5, label="Max Output Length") |
| num_return_sequences = gr.Slider(1, 5, value=3, step=1, label="Number of Variants") |
| |
| generate_btn = gr.Button("✨ Generate Text") |
| output = gr.Textbox(label="Generated Results", lines=10) |
| |
| generate_btn.click( |
| fn=generate_text, |
| inputs=[prompt, max_length, num_return_sequences, seed], |
| outputs=output |
| ) |
|
|
| if __name__ == "__main__": |
| demo.launch() |