cadasme commited on
Commit
4579e3f
1 Parent(s): 7c9815f

refactor: using openai api key from env vars

Browse files
app.py CHANGED
@@ -1,46 +1,60 @@
 
 
1
  import streamlit as st
2
  from cases.optimize_content import optimize_content_with_langchain
3
  from cases.content_generation import content_generation_with_langchain
4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  def main():
6
  st.sidebar.title("Menú")
7
- selection = st.sidebar.radio("SEO Powered By AI", ['Home', 'Optimización de Contenido', 'Generación de Contenido'])
8
-
9
- if selection == 'Home':
10
- st.title("Bienvenido a la página de inicio")
11
- st.markdown('''
12
- En esta aplicación, exploraremos los siguientes casos de uso de SEO potenciado por IA:
13
- 1. **Optimización de Contenido**: Las herramientas de AI pueden sugerir mejoras a tu contenido, como cambios en la redacción o la ubicación de palabras clave, para que sea más amigable para SEO. También pueden analizar el rendimiento SEO de tu contenido existente y sugerir mejoras.
14
- 2. **Generación de Contenido**: Las herramientas de AI pueden generar tu contenido, como articulos, newsletter o posts para RRSS, de modo que sea más amigable para SEO.
15
-
16
- Para continuar, selecciona el caso de uso en la barra lateral.
17
- ''')
18
-
19
- elif selection == 'Optimización de Contenido':
20
- st.title("Optimización de Contenido")
21
- st.markdown("Por favor, copia y pega tu artículo y tu clave de API de OpenAI a continuación:")
22
- openai_key = st.text_input("Clave API OpenAI", type='password')
23
- article_content = st.text_area("Contenido del Artículo")
24
-
25
- if article_content and openai_key:
26
- with st.spinner('Optimizando el contenido para SEO...'):
27
- optimized_content = optimize_content_with_langchain(article_content, openai_key)
28
-
29
- st.success('Optimización de contenido completada.')
30
- st.write(optimized_content)
31
-
32
- elif selection == 'Generación de Contenido':
33
- st.title("Generación de Contenido")
34
- st.markdown("Por favor, completa los siguientes campos y tu clave de API de OpenAI a continuación:")
35
- openai_key = st.text_input("Clave API OpenAI", type='password')
36
- content_type = st.text_area("Tipo de Contenido (Articulo, Posts, Newsletter)")
37
-
38
- if content_type and openai_key:
39
- with st.spinner('Creando el contenido optimizado para SEO...'):
40
- optimized_content = content_generation_with_langchain(content_type, openai_key)
41
-
42
- st.success('Optimización de contenido completada.')
43
- st.write(optimized_content)
44
 
45
  if __name__ == '__main__':
46
  main()
 
1
+ from dotenv import load_dotenv
2
+ import os
3
  import streamlit as st
4
  from cases.optimize_content import optimize_content_with_langchain
5
  from cases.content_generation import content_generation_with_langchain
6
 
7
+ load_dotenv()
8
+
9
+ OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
10
+
11
+ def display_home():
12
+ st.title("Bienvenido a la página de inicio")
13
+ st.markdown('''
14
+ En esta aplicación, exploraremos los siguientes casos de uso de SEO potenciado por IA:
15
+ 1. **Optimización de Contenido**: Las herramientas de AI pueden sugerir mejoras a tu contenido, como cambios en la redacción o la ubicación de palabras clave, para que sea más amigable para SEO. También pueden analizar el rendimiento SEO de tu contenido existente y sugerir mejoras.
16
+ 2. **Generación de Contenido**: Las herramientas de AI pueden generar tu contenido, como artículos, newsletters o posts para RRSS, de modo que sea más amigable para SEO.
17
+ Para continuar, selecciona el caso de uso en la barra lateral.
18
+ ''')
19
+
20
+ def handle_seo_action(text, action, action_text):
21
+ if text:
22
+ with st.spinner(f'{action_text}...'):
23
+ return action(text, OPENAI_API_KEY)
24
+ return None
25
+
26
+ def display_content_optimization():
27
+ st.title("Optimización de Contenido")
28
+ st.markdown("Por favor, copia y pega tu artículo a continuación:")
29
+ article_content = st.text_area("Contenido del Artículo")
30
+
31
+ optimized_content = handle_seo_action(article_content, optimize_content_with_langchain, 'Optimizando el contenido para SEO')
32
+ if optimized_content:
33
+ st.success('Optimización de contenido completada.')
34
+ st.write(optimized_content)
35
+
36
+ def display_content_generation():
37
+ st.title("Generación de Contenido")
38
+ st.markdown("Por favor, una descripción del tipo de contenido que deseas generar:")
39
+ content_type = st.text_area("Tipo de Contenido (Artículo de ventas, Posts sobre IA en RRSS, Newsletter de Suscripcion mensual sobre Tecnologia)")
40
+
41
+ generated_content = handle_seo_action(content_type, content_generation_with_langchain, 'Creando el contenido optimizado para SEO')
42
+ if generated_content:
43
+ st.success('Generación de contenido completada.')
44
+ st.write(generated_content)
45
+
46
+ MENU_FUNCTIONS = {
47
+ 'Home': display_home,
48
+ 'Optimización de Contenido': display_content_optimization,
49
+ 'Generación de Contenido': display_content_generation,
50
+ }
51
+
52
  def main():
53
  st.sidebar.title("Menú")
54
+ selection = st.sidebar.radio("SEO Powered By AI", list(MENU_FUNCTIONS.keys()))
55
+
56
+ menu_function = MENU_FUNCTIONS[selection]
57
+ menu_function()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
 
59
  if __name__ == '__main__':
60
  main()
cases/content_generation.py CHANGED
@@ -1,3 +1,4 @@
 
1
  from langchain import LLMChain
2
  from langchain.chat_models import ChatOpenAI
3
  from langchain.prompts.chat import (
@@ -19,6 +20,7 @@ def content_generation_with_langchain(content, openai_key):
19
  4. Optimización SEO: Asegúrate de que tus palabras clave aparecen en los lugares importantes de tu contenido, como el título, los subtítulos, el primer y último párrafo, y la descripción de la meta.
20
  5. Analisis: Debes analizar el contenido generado con el fin de identificar palabras claves que puedan optimizarse para SEO, puntos de mejora en la estructura y detalle del contenido.
21
  """
 
22
  system_message_prompt = SystemMessagePromptTemplate.from_template(template)
23
  human_template = "{content}"
24
  human_message_prompt = HumanMessagePromptTemplate.from_template(human_template)
 
1
+ import streamlit as st
2
  from langchain import LLMChain
3
  from langchain.chat_models import ChatOpenAI
4
  from langchain.prompts.chat import (
 
20
  4. Optimización SEO: Asegúrate de que tus palabras clave aparecen en los lugares importantes de tu contenido, como el título, los subtítulos, el primer y último párrafo, y la descripción de la meta.
21
  5. Analisis: Debes analizar el contenido generado con el fin de identificar palabras claves que puedan optimizarse para SEO, puntos de mejora en la estructura y detalle del contenido.
22
  """
23
+ st.text_area(template)
24
  system_message_prompt = SystemMessagePromptTemplate.from_template(template)
25
  human_template = "{content}"
26
  human_message_prompt = HumanMessagePromptTemplate.from_template(human_template)
cases/optimize_content.py CHANGED
@@ -1,3 +1,4 @@
 
1
  from langchain import LLMChain
2
  from langchain.chat_models import ChatOpenAI
3
  from langchain.prompts.chat import (
@@ -7,7 +8,10 @@ from langchain.prompts.chat import (
7
  )
8
 
9
  def optimize_content_with_langchain(content, openai_key):
10
- chat = ChatOpenAI(temperature=0, openai_api_key=openai_key)
 
 
 
11
 
12
  template = """
13
  Debes actuar como un agente experto en SEO y Marketing Digital, y utilizando tus habilidades y conocimientos
@@ -17,6 +21,7 @@ def optimize_content_with_langchain(content, openai_key):
17
  2. Proporcionar alternativas para titulo con el fin de generar más tracción a que los usuarios realicen click.
18
  3. Proporcionar una lista de keywords que puedan incluirse en el contenido del articulo y que NO se encuentren en el contenido proporcionado por el usuario.
19
  """
 
20
  system_message_prompt = SystemMessagePromptTemplate.from_template(template)
21
  human_template = "{content}"
22
  human_message_prompt = HumanMessagePromptTemplate.from_template(human_template)
 
1
+ import streamlit as st
2
  from langchain import LLMChain
3
  from langchain.chat_models import ChatOpenAI
4
  from langchain.prompts.chat import (
 
8
  )
9
 
10
  def optimize_content_with_langchain(content, openai_key):
11
+ chat = ChatOpenAI(
12
+ temperature=0,
13
+ openai_api_key=openai_key
14
+ )
15
 
16
  template = """
17
  Debes actuar como un agente experto en SEO y Marketing Digital, y utilizando tus habilidades y conocimientos
 
21
  2. Proporcionar alternativas para titulo con el fin de generar más tracción a que los usuarios realicen click.
22
  3. Proporcionar una lista de keywords que puedan incluirse en el contenido del articulo y que NO se encuentren en el contenido proporcionado por el usuario.
23
  """
24
+ st.text_area(template)
25
  system_message_prompt = SystemMessagePromptTemplate.from_template(template)
26
  human_template = "{content}"
27
  human_message_prompt = HumanMessagePromptTemplate.from_template(human_template)
requirements.txt CHANGED
@@ -1,5 +1,4 @@
1
  streamlit
2
  openai
3
  langchain
4
- requests
5
- BeautifulSoup4
 
1
  streamlit
2
  openai
3
  langchain
4
+ python-dotenv