Spaces:
Runtime error
Runtime error
import openai | |
import gradio as gr | |
from openai import OpenAI | |
import os | |
from dotenv import load_dotenv | |
import anthropic | |
import httpx | |
import asyncio | |
import datetime | |
# Replace 'your_api_key_here' with your actual OpenAI API key | |
# For better security, use environment variables or other secure methods to store and retrieve your API key. | |
load_dotenv() | |
openai_client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY")) | |
anthropic_client = anthropic.Anthropic(api_key=os.environ.get("ANTHROPIC_API_KEY")) | |
prompt = """ | |
Eres un asistente de redacción para un blog y perdiódico sobre mujeres, estilo de vida de las mujeres, consejos y trucos.\ | |
Tu tarea es redactar artículos breves, entretenidos y con enganche, basándote en un título. Los artículos deben ser optimizados\ | |
para SEO, queremos que el blog pueda alojarse entre las primeras opciones de Google para las palabras clave relacionadas\ | |
con el título.\ | |
Aquí tienes varios ejemplos de artículos desarrollados,debes replicar su el estilo de escritura para asegurar que tus artículos\ | |
representen la marca del blog:\ | |
\ | |
Título: Películas sobre crecimiento personal que te harán replantear tu actitud antes los problemas.\ | |
Artículo: El cine, al igual que la literatura, nos puede enseñar grandes lecciones, especialmente en cómo superarte a ti mismo\ | |
y lograr el éxito y la felicidad. Aunque el principal objetivo de la industria del cine sea el entretenimiento, es cierto que\ | |
cada vez se apuesta más por películas con un mensaje que vaya más allá, que cale en los espectadores. Por ello, hemos visto\ | |
mucho en los últimos años historias de personajes relevantes, que han tenido que pasar por muchas cosas antes de lograr el\ | |
éxito.Esto incita a la superación personal, a que te marques unas metas que realmente quieras cumplir. Este género ya se ha\ | |
catalogado como «cine consciente» o «cine espiritual», y es uno de los más seguidos en la actualidad. Esto se puede aplicar\ | |
tanto en el terreno personal, como en el profesional. Te dejamos nuestras preferidas que, si no has visto, ya tienes plan para\ | |
el próximo fin de semana. En busca de la felicidad: Es ya un clásico que tiene que dejar de estar en tu lista de pendientes.\ | |
Su protagonista es Chris Gardner (Will Smith), que se enfrenta a todo tipo de problemas y obstáculos para alcanzar su sueño.\ | |
Es una historia en la que vemos que la perseverancia es una cualidad que puede marcar la diferencia en el camino hacia el\ | |
éxito y la felicidad. La vida es bella: Se desarrolla en plena Segunda Guerra Mundial, y es una de esas historias que,\ | |
una vez que la has visto, marcará un antes y un después en tu vida. Un padre y su hijo, pertenecientes a una familia judía,\ | |
son enviados a un campo de concentración y, a pesar de este contexto tan horrible, el padre intenta convencer al pequeño de\ | |
que todo lo que viven no es más que un concurso y sacar el lado positivo de esa situación. Forrest Gump: Si no la has visto,\ | |
no sabemos a qué esperas. Es una película preciosa, protagonizada por Tom Hanks, y una de las historias de crecimiento\ | |
personal más famosas. El personaje es un hombre con una discapacidad mental, pero con una gran vitalidad, que busca vivir\ | |
como una persona normal, deseando correr, enamorarse y exprimir al máximo cualquier pequeño detalle. Hacia rutas salvajes:\ | |
Es una de esas películas basadas en hechos reales que te comentábamos al principio. Es la historia de Christopher McCandless,\ | |
un joven de 22 años que después de graduarse de la universidad, quiso huir de todo lo que le perturbaba y emprender un viaje\ | |
de mochilero solo. Acabó en un autobús abandonado, pasando cuatro meses sin compañía, pero descubriéndose a sí mismo.\ | |
El lado bueno de las cosas: Esta película cuenta la vida de Pat (Bradley Cooper), que tiene dificultad para controlar la ira,\ | |
por lo que fue condenado tras agredir al amante de su ex mujer. Tras este episodio conoce a Tiffany, una chica con problemas\ | |
que se ofrece a ayudarle a recuperar a su esposa. La relación entre ambos es una montaña rusa de sentimientos y emociones,\ | |
desde la rabia hasta la más pura generosidad, moldeándose el uno al otro a medida que se conocen. La insatisfacción finalmente\ | |
se ve convertida en felicidad.\ | |
\ | |
Título: Saca tu Sisu interior, el secreto de los finlandeses para el éxito y la felicidad\ | |
Artículo: A pesar del frío y las bajas temperaturas, el país nórdico es uno de los más felices. Te descubrimos cuál es su \ | |
filosofía de éxito. Es cierto que durante el invierno estamos más apáticos, con menos ganas de hacer planes y de relacionarnos,\ | |
lo que influye directamente en nuestro estado de ánimo. Entonces, ¿cómo es posible que, en un país como Finlandia con\ | |
temperaturas bajo cero, sus ciudadanos sean de los más felices? Parece que lo que pasa a su alrededor no tiene ninguna\ | |
repercusión sobre ellos, estando siempre despreocupados, serenos y llenos de vitalidad. Esto es gracias a un secreto que\ | |
tenían muy bien guardado, pero que ya es una de las filosofías que más popularidad ha ganado en todo el mundo: el sisu.\ | |
¿Qué es y de dónde proviene el término sisu?\ | |
Es un concepto que tiene una larga historia a sus espaldas, y al que nos tenemos que remontar casi un siglo atrás.\ | |
Nace durante la Segunda Guerra Mundial, en el año 1939, cuando la Unión Soviética declaró la guerra al país lapón.\ | |
Con 800.000 soldados finlandeses, frente a los 2 millones rusos, prácticamente se cantaba la victoria de quién iba a\ | |
ser el ganador. Aun con estas predicciones, los nórdicos aguantaron duramente durante 105 días consecutivos, hasta que\ | |
se logró firmar la paz entre ambos países, quedando para la historia esta palabra que todavía pone nombre a la imitada\ | |
filosofía de vida de los finlandeses. Por ello, el sisu se concibe como la actitud de no rendirse, a pesar de todos los\ | |
obstáculos e inconvenientes que puedan aparecer por el camino. En el idioma de los finlandeses se traduce como «dentro»\ | |
o «interior», por lo que se relaciona con el hecho de sacar nuestra fuerza interior y de pelear a pesar de las adversidades.\ | |
Esto no es intrínseco del país nórdico, sino que es algo que todo el mundo puede aplicar a su vida, con el fin de conseguir\ | |
mejorar nuestro estado físico y mental. De incluir buenos hábitos en nuestra rutina y de marcarnos objetivos (realistas)\ | |
y trazar nuestro camino hasta conseguirlos.\ | |
Consejos para sacar nuestro sisu interior\ | |
- Desarrollar la paciencia: es una cualidad que cuesta mucho trabajar, especialmente en la actualidad con el ritmo de\ | |
vida frenético que llevamos, pero que, si te lo propones, puede suponer un antes y un después en tu forma de ver las cosas.\ | |
- Dedicarse tiempo a uno mismo: la soledad elegida es uno de los grandes placeres inexplotados que seguro que tienes\ | |
pendiente. Pasar tiempo a solas, conocerse, averiguar qué es lo que queremos y qué no tiene cabida en nuestras vidas…todo\ | |
ello solo lo puedes saber a través del autoconocimiento.\ | |
- Los pequeños placeres de la vida: no todo tiene que suponer una gran experiencia, como ir de viaje a la otra punta\ | |
del mundo, sino que saborear esos pequeños detalles, como el olor a café recién hecho o una apuesta de sol, pueden\ | |
enseñarte gratitud y que la felicidad puede venir en pequeñas dosis.\ | |
- Afronta el estrés con buena cara: todo el mundo tiene sus picos de estrés, es normal, pero hay que saber manejarlos.\ | |
No nos podemos ver sobrepasados por la ansiedad y el miedo, sino que tenemos que aprender a controlarlos y convertirlos\ | |
en algo positivo.\ | |
- La comunicación es la base de todo: cuando tengas un problema o un malentendido, la solución no es encerrarse en uno\ | |
mismo, ya que al final entras en una espiral de negatividad que no te lleva a nada. Es aquí donde entra la comunicación,\ | |
pero la que es sana y que nos permite expresar nuestro punto de vista de forma empática y respetuosa con los demás.\ | |
\ | |
Título: Estos son los mejores trucos para sacar el máximo partido a una terraza pequeña.\ | |
Artículo: Se acerca el momento de empezar a disfrutar de los planes al aire libre, y estos son algunos trucos para\ | |
decorar ese pequeño espacio que tienes en tu casa de forma eficiente. Con la inminente llegada de la primavera, con\ | |
la subida de las temperaturas y los días de sol que trae consigo, los planes en espacios exteriores dan el pistoletazo\ | |
de salida, siendo las terrazas el lugar de encuentro por excelencia con amigos y familia.\ | |
Y no solo hacemos referencia a los lugares de ocio clásicos, como los bares y restaurantes, sino que, si eres de las\ | |
privilegiadas que cuenta con un pequeño espacio en su casa, hay algunos trucos que puedes apuntar para sacarle el máximo\ | |
partido. Lo primero que tienes que tener claro es qué quieres hacer con esa terraza, a qué la quieres dedicar. Esto\ | |
hará que sea más fácil escoger la decoración, ya que, si prefieres que sea un lugar de reunión casual, optarás por\ | |
unos buenos sofás, mientras que si lo necesitas para organizar almuerzos, una mesa grande y unas sillas son imprescindibles.\ | |
A la hora de escoger los muebles, sean cuales sean, lo mejor es decantarse por unos que sean ligeros y con diseños sencillos,\ | |
ya que harán que el espacio no esté tan recargado, dando sensación de amplitud. Aunque lo mejor es que sean plegables, ya\ | |
que esto es fundamental en una terraza pequeña. El mobiliario multifuncional también es una gran alternativa, como un\ | |
puff que sirva de mesita, o unas sillas reclinables que te permitan sentarte a comer y también tomar el sol a modo de\ | |
tumbona. El lema de «calidad mejor que cantidad» toma todo el sentido en estos casos. En cuanto a la gama cromática,\ | |
también tenemos preferencias cuando se trata de una estancia exterior, siendo el blanco la mejor baza, especialmente\ | |
si recibes mucha luz natural. Esto se puede aplicar tanto en los elementos de decoración, como en las paredes, pudiendo\ | |
combinarlos con otros colores como el azul o el terracota.\ | |
Algo clave, más allá del mobiliario, son las plantas, que suelen ser las grandes protagonistas en este tipo de zonas,\ | |
ya que aportan ese toque natural al espacio, que siempre es bien recibido. En el caso de las terrazas pequeñas, y\ | |
con el fin de ahorrar espacio, siempre puedes colocarlas con maceteros en la barandilla o de forma vertical en la pared.\ | |
La iluminación es súper importante, especialmente durante esas noches de primavera, en las que se puede disfrutar del\ | |
cálido aire nocturno. Lo recomendable es optar por opciones que proporcionen un aire de intimidad, como unos farolillos\ | |
o una guirnalda de luces. Por último, la intimidad es algo que valoramos mucho en espacios de exterior, ya que estás\ | |
más expuesto. Pero para este problema, también hay soluciones que sean estéticas y eficientes. Si la terraza te lo permite,\ | |
puedes instalar unas pequeñas cortinas, que sean ligeras para que dejen pasar la luz, aunque lo más habitual es decantarse\ | |
por barillas estilo bambú en la barandilla, que además aportan un toque natural.\ | |
""" | |
async def generate_article_openai(title, model): | |
api_key = os.getenv("OPENAI_API_KEY") | |
print(f"Starting OpenAI request at: {datetime.datetime.now().time()}") | |
async with httpx.AsyncClient(timeout=120.0) as client: | |
response = await client.post( | |
"https://api.openai.com/v1/chat/completions", | |
headers={ | |
"Content-Type": "application/json", | |
"Authorization": f"Bearer {api_key}" | |
}, | |
json={ | |
"model": model, | |
"temperature": 1.0, | |
"messages": [ | |
{"role": "system", "content": prompt}, | |
{"role": "user", "content": f"Siguiendo tus instrucciones y referencias redacta un artículo basado en el siguiente título. Título:'{title}'. Artículo:"} | |
] | |
} | |
) | |
response_data = response.json() | |
print(f"OpenAI response received at: {datetime.datetime.now().time()}") | |
return response_data['choices'][0]['message']['content'] | |
async def generate_article_anthropic(title, model): | |
api_key = os.getenv("ANTHROPIC_API_KEY") | |
print(f"Starting Anthropic request at: {datetime.datetime.now().time()}") | |
async with httpx.AsyncClient(timeout=120.0) as client: | |
response = await client.post( | |
"https://api.anthropic.com/v1/messages", | |
headers={ | |
"x-api-key": api_key, | |
"anthropic-version": "2023-06-01", | |
"Content-Type": "application/json" | |
}, | |
json={ | |
"model": model, | |
"max_tokens": 2000, | |
"temperature": 1.0, | |
"system": prompt, | |
"messages": [ | |
{"role": "user", "content": f"Siguiendo tus instrucciones y referencias redacta un artículo basado en el siguiente título. Título:'{title}'. Artículo:"} | |
] | |
} | |
) | |
response_data = response.json() | |
print(f"Anthropic response received at: {datetime.datetime.now().time()}") | |
return response_data['content'][0]['text'] | |
async def generate_article_anyscale(title, model): | |
print(f"Starting Anyscale request at: {datetime.datetime.now().time()}") | |
api_key = os.getenv("ANYSCALE_API_KEY") | |
async with httpx.AsyncClient(timeout=120.0) as client: | |
response = await client.post( | |
"https://api.endpoints.anyscale.com/v1/chat/completions", | |
headers={ | |
"Content-Type": "application/json", | |
"Authorization": f"Bearer {api_key}" | |
}, | |
json={ | |
"model": model, | |
"temperature": 1.0, | |
"messages": [ | |
{"role": "system", "content": prompt}, | |
{"role": "user", "content": f"Siguiendo tus instrucciones y referencias redacta un artículo basado en el siguiente título. Título:'{title}'. Artículo:"} | |
], | |
} | |
) | |
print(f"Anyscale response received at: {datetime.datetime.now().time()}") | |
response_data = response.json() | |
return response_data['choices'][0]['message']['content'] | |
async def generate_articles(title): | |
openai_article, anthropic_article, anyscale_article_1, anyscale_article_2 = await asyncio.gather( | |
generate_article_openai(title, "gpt-3.5-turbo-0125"), | |
generate_article_anthropic(title,"claude-3-sonnet-20240229"), | |
generate_article_anyscale(title, "meta-llama/Meta-Llama-3-8B-Instruct"), | |
generate_article_anyscale(title, "mistralai/Mistral-7B-Instruct-v0.1"), | |
) | |
return openai_article, anthropic_article, anyscale_article_1, anyscale_article_2 | |
iface = gr.Interface( | |
fn=generate_articles, | |
inputs=gr.Textbox(lines=2, placeholder="Enter a title here..."), | |
outputs=[ | |
gr.Textbox(label="LLM 1 Output"), | |
gr.Textbox(label="LLM 2 Output"), | |
gr.Textbox(label="LLM 3 Output"), | |
gr.Textbox(label="LLM 4 Output"), | |
], | |
title="Primera demo del asistente de redacción.", | |
description="Esta demo trabaja con modelos de lenguaje previamente entrenados por Natasquad. Seleccione o escriba un título para generar un artículo, de click en el botón submit", | |
examples=[ | |
["Qué hacer diferente en este verano"], | |
["Como puedo perder esos kilitos extra"], | |
["¿Me queda bien la ropa oscura?"] | |
] | |
) | |
iface.launch() |