File size: 8,240 Bytes
91a0d7e a8fd769 d51e47b a8fd769 d51e47b 522d135 e8314b4 1ff0df4 522d135 1ff0df4 522d135 09f09fc 063a515 522d135 063a515 09f09fc 522d135 93aa621 522d135 a8fd769 ff360f5 e8314b4 a8fd769 1ff0df4 d51e47b 1ff0df4 522d135 d51e47b 522d135 e8314b4 bef3dc5 522d135 a8fd769 03cdd46 dc809d3 03cdd46 a988be6 a8fd769 03cdd46 e5e600e 60ce54c 522d135 03cdd46 522d135 03cdd46 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
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鈥檒l 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: Start with an attention-grabbing hook that immediately captures the {target_audience}'s interest. It can be a question, a surprising fact, or a statement that challenges their beliefs.
2. Historia: Tell an engaging and emotional story about {story_topic}. This can be personal or fictional, but should always have a meaningful lesson or takeaway for the reader.
3. Acci贸n: Conclude with a strong call-to-action, motivating the reader to take a specific step based on the insights from the story. Make the call-to-action compelling and clear, prompting immediate action.
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.")
# Inicializar la aplicaci贸n Streamlit
st.set_page_config(page_title="Generador de Historias", page_icon=":pencil:", layout="wide")
st.markdown("<h1 style='text-align: center;'>Generador de Historias</h1>", unsafe_allow_html=True)
st.markdown("<h3 style='text-align: center;'>Crea historias persuasivas con inteligencia artificial, dise帽adas para conectar emocionalmente con tu audiencia.</h3>", unsafe_allow_html=True)
# Crear el selector para elegir la f贸rmula
formula = st.radio("Selecciona la f贸rmula para generar tu historia:", ["P.A.S.A.", "A.D.P.", "G.H.A."])
# Crear las columnas para el dise帽o (40% para la izquierda, 60% para la derecha)
col1, col2 = st.columns([2, 3])
# Entradas del usuario en la columna izquierda (col1)
with col1:
target_audience = st.text_input("P煤blico objetivo", placeholder="驴A qui茅n est谩 dirigido tu mensaje?")
product = st.text_input("Producto/Servicio", placeholder="驴Qu茅 est谩s ofreciendo?")
action = st.text_area("Llamado a la acci贸n", placeholder="驴Qu茅 acci贸n espec铆fica debe tomar tu audiencia?")
# Personalizaci贸n adicional
with st.expander("Personaliza tu historia"):
mood = st.selectbox("Tono de la historia:", ["Emocional", "Triste", "Feliz", "Horror", "Comedia", "Rom谩ntico"])
length = st.slider("Longitud de la historia (palabras):", min_value=50, max_value=200, value=150, step=10)
if formula == "G.H.A.":
story_topic = st.text_area("De qu茅 quieres que trate la historia", placeholder="Explica si hay algo espec铆fico sobre lo que te gustar铆a contar (puede ser una vivencia personal, pel铆cula, cuento, personaje ficticio, etc.).")
# Bot贸n para generar contenido
submit = st.button("Generar mi historia")
# Mostrar el contenido generado en la columna derecha (col2)
with col2:
if submit:
if target_audience and product and action:
try:
if formula == "P.A.S.A.":
response = get_pasa_response(target_audience, product, action, mood, length)
elif formula == "A.D.P.":
response = get_adp_response(target_audience, product, action, mood, length)
elif formula == "G.H.A.":
if story_topic:
response = get_gha_response(target_audience, product, action, mood, length, story_topic)
else:
st.error("Por favor, completa todos los campos requeridos para la f贸rmula G.H.A.")
response = ""
if response:
st.subheader("Historia generada:")
st.write(response)
except ValueError as e:
st.error(f"Error: {str(e)}")
else:
st.error("Por favor, completa todos los campos requeridos (P煤blico objetivo, Producto y Acci贸n).")
|