Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from transformers import pipeline | |
| import random | |
| # Load a GPT-like model for joke generation | |
| joke_generator = pipeline("text-generation", model="EleutherAI/gpt-neo-1.3B") | |
| # Predefined random jokes | |
| random_jokes = [ | |
| "Why don't programmers like nature? It has too many bugs.", | |
| "Why do Java developers wear glasses? Because they can't C#!", | |
| "Why was the math book sad? It had too many problems.", | |
| "What’s a computer’s favorite beat? An algo-rhythm!", | |
| ] | |
| # Multilingual jokes feature | |
| def generate_multilingual_joke(prompt, language): | |
| """ | |
| Generate a joke in the specified language. | |
| """ | |
| if language == "English": | |
| return generate_joke(prompt, "Random") | |
| elif language == "Spanish": | |
| return f"Lo siento, todavía no sé cómo contar chistes en español sobre {prompt}." | |
| elif language == "French": | |
| return f"Je suis désolé, je ne sais pas encore raconter des blagues en français sur {prompt}." | |
| else: | |
| return "Sorry, this language is not supported yet!" | |
| # Function to generate jokes | |
| def generate_joke(prompt, style): | |
| """ | |
| Generate a joke based on user prompt and selected style. | |
| """ | |
| style_prompts = { | |
| "Dad Jokes": "Tell me a funny dad joke about", | |
| "Puns": "Tell me a clever pun about", | |
| "Knock-Knock": "Give me a knock-knock joke about", | |
| "Random": "Tell me a random joke." | |
| } | |
| if style == "Random" or not prompt.strip(): | |
| return random.choice(random_jokes) | |
| full_prompt = f"{style_prompts[style]} {prompt.strip()}." | |
| response = joke_generator(full_prompt, max_length=50, do_sample=True, temperature=1.0) | |
| return response[0]["generated_text"] | |
| # Feedback collection | |
| def save_feedback(joke, feedback): | |
| """ | |
| Save user feedback to a text file. | |
| """ | |
| with open("joke_feedback.txt", "a") as f: | |
| f.write(f"Joke: {joke}\nFeedback: {feedback}\n\n") | |
| return "Thanks for your feedback!" | |
| # Gradio Interface | |
| with gr.Blocks() as interface: | |
| gr.Markdown("# Joke Chatbot 🤖") | |
| gr.Markdown("Ask for a joke about any topic, and the chatbot will try its best to make you laugh!") | |
| with gr.Row(): | |
| prompt = gr.Textbox(label="Your Prompt", placeholder="E.g., Tell me a joke about programming") | |
| style = gr.Radio(["Dad Jokes", "Puns", "Knock-Knock", "Random"], label="Choose Joke Style") | |
| language = gr.Dropdown(["English", "Spanish", "French"], label="Choose Language") | |
| joke_output = gr.Textbox(label="Generated Joke") | |
| feedback = gr.Radio(["👍 Like", "👎 Dislike"], label="Did you like the joke?") | |
| feedback_message = gr.Textbox(label="Feedback Message", interactive=False) | |
| with gr.Row(): | |
| generate_button = gr.Button("Generate Joke") | |
| feedback_button = gr.Button("Submit Feedback") | |
| generate_button.click(generate_joke, inputs=[prompt, style], outputs=joke_output) | |
| feedback_button.click(save_feedback, inputs=[joke_output, feedback], outputs=feedback_message) | |
| # Launch the interface | |
| if __name__ == "__main__": | |
| interface.launch() | |