from dotenv import load_dotenv import streamlit as st import os import google.generativeai as genai load_dotenv() genai.configure(api_key=os.getenv("GOOGLE_API_KEY")) # Función para obtener respuesta del modelo Gemini (P.A.S.A) def get_pasa_response(target_audience, product, action, mood, length): model = genai.GenerativeModel("gemini-1.5-flash") full_prompt = f""" You are a skilled copywriter and storyteller. Create a persuasive story in Spanish following the P.A.S.A. formula (Problema, Agitación, Solución, Acción). Do not explicitly label or explain each section (Problema, Agitación, Solución, Acción). Instead, weave these elements naturally into a cohesive, flowing narrative that emotionally connects with the {target_audience}. The story should have {length} words, with a {mood} tone. Here are the details: 1. Problema: Describe a specific problem that keeps the {target_audience} awake at night. 2. Agitación: Amplify the emotional and practical consequences of this problem. 3. Solución: Highlight how the product '{product}' solves this problem and improves their life. 4. Acción: Adapt the provided call-to-action '{action}' and craft it in a way that motivates the reader to take immediate steps, using compelling language that encourages them to act. Write a cohesive, engaging, and emotionally resonant narrative tailored to connect with the {target_audience}. """ response = model.generate_content([full_prompt]) if response and response.parts: text = response.parts[0].text return text.strip() else: raise ValueError("Lo sentimos, intenta con una combinación diferente de entradas.") # Función para obtener respuesta del modelo Gemini (A.D.P.) def get_adp_response(target_audience, product, action, mood, length): model = genai.GenerativeModel("gemini-1.5-flash") full_prompt = f""" You are a skilled copywriter and storyteller. Create a creative and persuasive story in Spanish following the A.D.P. formula (Antes, Después, Puente). Do not explicitly label or explain each section (Antes, Después, Puente). Instead, weave these elements naturally into a cohesive, flowing narrative that emotionally connects with the {target_audience}. The story should always be written in the second person (using 'tú') and should have unexpected twists to engage the {target_audience}. The story should have {length} words, with a {mood} tone. Here are the details: 1. Antes: Describe the current problem and frustrations that you {target_audience} are facing. Create an immersive situation where the reader can recognize themselves. 2. Después: Paint a desired scenario where the problem of {target_audience} is solved and the benefits are clearly evident. Use a surprising twist to show how life can change. 3. Puente: Introduce your solution '{product}' as the logical bridge between your frustration and the desired result. Make sure to emphasize the transformation you’ll experience if you take action '{action}'. Conclude with a compelling call to action '{action}' inviting the reader to take immediate steps to improve their situation. Ensure that the story has a creative flow with unexpected turns and keeps the reader hooked, motivating them to act at the end. Write a cohesive, engaging, and emotionally resonant narrative tailored to connect deeply with you, the {target_audience}. """ response = model.generate_content([full_prompt]) if response and response.parts: text = response.parts[0].text return text.strip() else: raise ValueError("Lo sentimos, intenta con una combinación diferente de entradas.") # Función para obtener respuesta del modelo Gemini (G.H.A.) def get_gha_response(target_audience, product, action, mood, length, story_topic): model = genai.GenerativeModel("gemini-1.5-flash") full_prompt = f""" You are a skilled copywriter and storyteller. Create a persuasive story in Spanish following the G.H.A. formula (Gancho, Historia, Acción). Do not explicitly label or explain each section (Gancho, Historia, Acción). Instead, weave these elements naturally into a cohesive, flowing narrative that emotionally connects with the {target_audience}. The story should have {length} words, with a {mood} tone. Here are the details: 1. **Gancho**: Begin with a hook that immediately grabs the attention of the {target_audience}. It could be a provocative question, an unexpected fact, or a statement that challenges their beliefs or assumptions. The goal is to create curiosity and make them want to read more. 2. **Historia**: Tell a personal or fictional story based on the following story topic: "{story_topic}". Incorporate the following elements seamlessly into the narrative: - What was the initial situation or challenge the protagonist faced? - What conflict or problem arose and how did it affect them emotionally? - How did they feel and what did they learn from that experience? - What action did they take to resolve the situation or what did they learn in the process? - What was the outcome or lesson learned that could apply to the {target_audience}'s life? Make sure the story is engaging and retains the attention of the reader while providing a meaningful takeaway that resonates with their own struggles or aspirations. 3. **Acción**: Conclude with a natural call to action '{action}' that invites the reader to take the next step, based on the lesson or transformation in the story. Make this invitation compelling and connected to the emotional shift the reader should experience. Avoid sounding repetitive by using the lesson as the bridge to your call to action, for example: - "Lo que aprendí es que ser honesto en mis historias conecta más con la gente, y tú también puedes lograrlo si compartes tus experiencias reales. Si quieres saber cómo hacerlo, únete a mi clase en vivo hoy a las 05:00 pm." - "Tras superar mi fracaso, entendí que la vulnerabilidad es la clave para ganar confianza, y tú también puedes mejorar tus relaciones si dejas ver tu humanidad. Si deseas descubrir cómo, contáctame ahora y comencemos." Use the action to empower the reader, showing them that they can take a similar journey and achieve a positive outcome. Ensure that the entire narrative flows smoothly, making the call to action feel like a natural next step after the story, rather than a forced conclusion. """ response = model.generate_content([full_prompt]) if response and response.parts: text = response.parts[0].text return text.strip() else: raise ValueError("Lo sentimos, intenta con una combinación diferente de entradas.") # Inicializar la aplicación Streamlit st.set_page_config(page_title="Generador de Historias", page_icon=":pencil:", layout="wide") st.markdown("