Spaces:
Sleeping
Sleeping
Download app.py from RozzaCreat/Quote_Generator: direct link, hf CLI and curl.
- Browser
- Download file 11.1 kB
-
https://huggingface.co/spaces/RozzaCreat/Quote_Generator/resolve/main/app.py
- Command line
-
hf download hf://spaces/RozzaCreat/Quote_Generator/app.py
-
curl -L -o app.py https://huggingface.co/spaces/RozzaCreat/Quote_Generator/resolve/main/app.py
11.1 kB
| from smolagents import CodeAgent, HfApiModel, tool | |
| import yaml | |
| import random | |
| from tools.final_answer import FinalAnswerTool | |
| from Gradio_UI import GradioUI | |
| def generate_famous_quote(topic: str) -> str: | |
| """ | |
| Generates a famous quote related to the provided topic. | |
| Args: | |
| topic (str): The topic or theme for the quote. | |
| Returns: | |
| str: A famous quote related to the topic and its author. | |
| """ | |
| # Dictionary of quotes by topic | |
| quotes_by_topic = { | |
| "love": [ | |
| "The greatest happiness of life is the conviction that we are loved; loved for ourselves, or rather, loved in spite of ourselves. — Victor Hugo", | |
| "Love is composed of a single soul inhabiting two bodies. — Aristotle", | |
| "Being deeply loved by someone gives you strength, while loving someone deeply gives you courage. — Lao Tzu", | |
| "Where there is love, there is life. — Mahatma Gandhi", | |
| "The best thing to hold onto in life is each other. — Audrey Hepburn" | |
| ], | |
| "wisdom": [ | |
| "The only true wisdom is in knowing you know nothing. — Socrates", | |
| "Wisdom is not a product of schooling but of the lifelong attempt to acquire it. — Albert Einstein", | |
| "The fool doth think he is wise, but the wise man knows himself to be a fool. — William Shakespeare", | |
| "By three methods we may learn wisdom: First, by reflection, which is noblest; Second, by imitation, which is easiest; and third by experience, which is the bitterest. — Confucius", | |
| "The beginning of wisdom is the definition of terms. — Socrates" | |
| ], | |
| "success": [ | |
| "Success is not final, failure is not fatal: It is the courage to continue that counts. — Winston Churchill", | |
| "The way to get started is to quit talking and begin doing. — Walt Disney", | |
| "Don't be distracted by criticism. Remember, the only taste of success some people get is to take a bite out of you. — Zig Ziglar", | |
| "Success usually comes to those who are too busy to be looking for it. — Henry David Thoreau", | |
| "I never dreamed about success, I worked for it. — Estée Lauder" | |
| ], | |
| "happiness": [ | |
| "Happiness is not something ready-made. It comes from your own actions. — Dalai Lama", | |
| "The happiness of your life depends upon the quality of your thoughts. — Marcus Aurelius", | |
| "The most important thing is to enjoy your life—to be happy—it's all that matters. — Audrey Hepburn", | |
| "Happiness is when what you think, what you say, and what you do are in harmony. — Mahatma Gandhi", | |
| "Count your age by friends, not years. Count your life by smiles, not tears. — John Lennon" | |
| ], | |
| "time": [ | |
| "The two most powerful warriors are patience and time. — Leo Tolstoy", | |
| "Time is what we want most, but what we use worst. — William Penn", | |
| "Yesterday is gone. Tomorrow has not yet come. We have only today. Let us begin. — Mother Teresa", | |
| "Time you enjoy wasting is not wasted time. — Marthe Troly-Curtin", | |
| "The future starts today, not tomorrow. — Pope John Paul II" | |
| ], | |
| "friendship": [ | |
| "A real friend is one who walks in when the rest of the world walks out. — Walter Winchell", | |
| "Friendship is born at that moment when one person says to another, 'What! You too? I thought I was the only one.' — C.S. Lewis", | |
| "A friend is someone who knows all about you and still loves you. — Elbert Hubbard", | |
| "A single rose can be my garden... a single friend, my world. — Leo Buscaglia", | |
| "Friendship is the only cement that will ever hold the world together. — Woodrow Wilson" | |
| ], | |
| "courage": [ | |
| "Courage is resistance to fear, mastery of fear, not absence of fear. — Mark Twain", | |
| "It takes courage to grow up and become who you really are. — E.E. Cummings", | |
| "Success is not final, failure is not fatal: It is the courage to continue that counts. — Winston Churchill", | |
| "Courage is found in unlikely places. — J.R.R. Tolkien", | |
| "You cannot swim for new horizons until you have courage to lose sight of the shore. — William Faulkner" | |
| ], | |
| "change": [ | |
| "The only way to make sense out of change is to plunge into it, move with it, and join the dance. — Alan Watts", | |
| "Change is the law of life. And those who look only to the past or present are certain to miss the future. — John F. Kennedy", | |
| "Everyone thinks of changing the world, but no one thinks of changing himself. — Leo Tolstoy", | |
| "Be the change that you wish to see in the world. — Mahatma Gandhi", | |
| "Those who cannot change their minds cannot change anything. — George Bernard Shaw" | |
| ], | |
| "education": [ | |
| "Education is the most powerful weapon which you can use to change the world. — Nelson Mandela", | |
| "The function of education is to teach one to think intensively and to think critically. — Martin Luther King, Jr.", | |
| "Education is not the filling of a pail, but the lighting of a fire. — W.B. Yeats", | |
| "The roots of education are bitter, but the fruit is sweet. — Aristotle", | |
| "An investment in knowledge pays the best interest. — Benjamin Franklin" | |
| ], | |
| "faith": [ | |
| "Faith is taking the first step even when you don't see the whole staircase. — Martin Luther King, Jr.", | |
| "Faith consists in believing when it is beyond the power of reason to believe. — Voltaire", | |
| "Keep your faith in all beautiful things; in the sun when it is hidden, in the Spring when it is gone. — Roy R. Gilson", | |
| "Faith is the bird that feels the light when the dawn is still dark. — Rabindranath Tagore", | |
| "Faith is to believe what you do not see; the reward of this faith is to see what you believe. — Saint Augustine" | |
| ], | |
| "hope": [ | |
| "Hope is being able to see that there is light despite all of the darkness. — Desmond Tutu", | |
| "We must accept finite disappointment, but never lose infinite hope. — Martin Luther King, Jr.", | |
| "Hope is the thing with feathers that perches in the soul. — Emily Dickinson", | |
| "Where there is no vision, there is no hope. — George Washington Carver", | |
| "A leader is a dealer in hope. — Napoleon Bonaparte" | |
| ], | |
| "perseverance": [ | |
| "It does not matter how slowly you go as long as you do not stop. — Confucius", | |
| "Perseverance is not a long race; it is many short races one after the other. — Walter Elliot", | |
| "Many of life's failures are people who did not realize how close they were to success when they gave up. — Thomas Edison", | |
| "Through perseverance many people win success out of what seemed destined to be certain failure. — Benjamin Disraeli", | |
| "The difference between a successful person and others is not a lack of strength, not a lack of knowledge, but rather a lack in will. — Vince Lombardi" | |
| ] | |
| } | |
| # Normalize the topic (convert to lowercase) | |
| topic_lower = topic.lower() | |
| # Find the closest matching topic | |
| if topic_lower in quotes_by_topic: | |
| # Topic directly matches | |
| relevant_quotes = quotes_by_topic[topic_lower] | |
| else: | |
| # Search for partial matches in topic keywords | |
| matched_topics = [] | |
| for key in quotes_by_topic: | |
| if key in topic_lower or topic_lower in key: | |
| matched_topics.append(key) | |
| if matched_topics: | |
| # Use quotes from the first matching topic | |
| relevant_quotes = quotes_by_topic[matched_topics[0]] | |
| else: | |
| # No match found - use a generic response | |
| return f"No famous quotes found for '{topic}'. Try topics like: love, wisdom, success, happiness, time, friendship, courage, change, education, faith, hope, or perseverance." | |
| # Return a random quote from the relevant ones | |
| return random.choice(relevant_quotes) | |
| # Setup agent | |
| final_answer = FinalAnswerTool() | |
| model = HfApiModel( | |
| max_tokens=2096, | |
| temperature=0.5, | |
| model_id='Qwen/Qwen2.5-Coder-32B-Instruct' | |
| ) | |
| # Custom prompt templates for the quote generator agent | |
| quote_prompt_templates = { | |
| "react-system": """You are a helpful agent that provides famous quotes on various topics. | |
| You have access to the following tools: | |
| {tools_string} | |
| When a user enters a topic, use the generate_famous_quote tool to find a relevant quote on that topic. | |
| Return the quote to the user using the final_answer tool. | |
| To use a tool, output an action in this format: | |
| ```py | |
| action = tool_name(arg1=value1, arg2=value2, ...) | |
| ``` | |
| Always use Python syntax for calling tools. After using a tool, analyze the result to determine what to do next. Use final_answer to return your answer when complete. | |
| """, | |
| "react-human": "{input_string}", | |
| "react-assistant": "{agent_response}", | |
| } | |
| # Load prompts.yaml if it exists, otherwise use our custom templates | |
| try: | |
| with open("prompts.yaml", 'r') as stream: | |
| prompt_templates = yaml.safe_load(stream) | |
| prompt_templates.update(quote_prompt_templates) | |
| except: | |
| prompt_templates = quote_prompt_templates | |
| # Create the agent | |
| agent = CodeAgent( | |
| model=model, | |
| tools=[final_answer, generate_famous_quote], | |
| max_steps=3, # Reduced steps since this is a simple task | |
| verbosity_level=1, | |
| prompt_templates=prompt_templates | |
| ) | |
| # Create a custom Gradio UI | |
| class QuoteGeneratorUI(GradioUI): | |
| def launch(self, **kwargs): | |
| import gradio as gr | |
| with gr.Blocks(theme=gr.themes.Soft()) as demo: | |
| gr.Markdown("# Famous Quotes Generator") | |
| gr.Markdown("Enter a topic to receive a famous quote related to it.") | |
| with gr.Row(): | |
| with gr.Column(): | |
| topic_input = gr.Textbox(label="Enter a topic (e.g., love, wisdom, success)") | |
| submit_btn = gr.Button("Get Quote", variant="primary") | |
| with gr.Row(): | |
| with gr.Column(): | |
| quote_output = gr.Markdown(label="Your Quote") | |
| def get_quote(topic): | |
| if not topic or topic.strip() == "": | |
| return "Please enter a topic to receive a quote." | |
| try: | |
| quote = generate_famous_quote(topic) | |
| return f"### Quote on '{topic}':\n\n> {quote}" | |
| except Exception as e: | |
| return f"Error generating quote: {str(e)}" | |
| submit_btn.click(get_quote, inputs=topic_input, outputs=quote_output) | |
| demo.launch(**kwargs) | |
| # Launch the custom UI | |
| QuoteGeneratorUI(agent).launch() |