rahulpitt's picture
Upload 2 files
ad96acc verified
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()