Update python-chatGPT course
Signed-off-by: Manuel Vergara <manuel@vergaracarmona.es>
This commit is contained in:
parent
c3fdcdec37
commit
5b40a76d6b
@ -248,6 +248,8 @@ if ubicacion:
|
|||||||
|
|
||||||
![](img/python-chatgpt04.png)
|
![](img/python-chatgpt04.png)
|
||||||
|
|
||||||
|
El fichero del código completo es [miPrograma.py](srec/01_miPrograma.py)
|
||||||
|
|
||||||
## TEMA 4 - Aplicaciones Prácticas de Python + ChatGPT
|
## TEMA 4 - Aplicaciones Prácticas de Python + ChatGPT
|
||||||
|
|
||||||
### 4.1. - Chatbot básico
|
### 4.1. - Chatbot básico
|
||||||
@ -440,7 +442,7 @@ while True:
|
|||||||
preguntas_anteriores.append(ingreso_usuario)
|
preguntas_anteriores.append(ingreso_usuario)
|
||||||
respuestas_anteriores.append(respuesta_gpt)
|
respuestas_anteriores.append(respuesta_gpt)
|
||||||
```
|
```
|
||||||
|
El fichero del código completo es [chatbot.py](src/02_chatbot.py)
|
||||||
### 4.3. - Generación de contenido y resúmenes automáticos
|
### 4.3. - Generación de contenido y resúmenes automáticos
|
||||||
|
|
||||||
Vamos a crear dos funciones, una para generar el contenido y otra para resumirlo. Creando un archivo nuevo con las bibliotecas necesarias y cargando la clave de nuevo, como en los anteriores casos.
|
Vamos a crear dos funciones, una para generar el contenido y otra para resumirlo. Creando un archivo nuevo con las bibliotecas necesarias y cargando la clave de nuevo, como en los anteriores casos.
|
||||||
@ -474,6 +476,8 @@ print(articulo_creado)
|
|||||||
|
|
||||||
![](img/python-chatgpt07.png)
|
![](img/python-chatgpt07.png)
|
||||||
|
|
||||||
|
El fichero del código completo es [crear_contenido.py](src/03_crear_contenido.py)
|
||||||
|
|
||||||
Ahora haremos lo mismo en otro fichero con la función para el resumen:
|
Ahora haremos lo mismo en otro fichero con la función para el resumen:
|
||||||
```python
|
```python
|
||||||
def resumir_text(texto, tokens, temperatura, modelo="text-davinci-002
|
def resumir_text(texto, tokens, temperatura, modelo="text-davinci-002
|
||||||
@ -505,15 +509,102 @@ Pero en este artículo hay un problema. No podemos pasar saltos de línea. Así
|
|||||||
|
|
||||||
![](img/python-chatgpt08.png)
|
![](img/python-chatgpt08.png)
|
||||||
|
|
||||||
|
El fichero del código completo es [resumir_articulo.py](src/04_resumir_articulo.py)
|
||||||
|
|
||||||
### 4.4. - Análisis de sentimiento y clasificaciones
|
### 4.4. - Análisis de sentimiento y clasificaciones
|
||||||
|
|
||||||
|
Podemos analizar el sentimiento predominante en el texto y clasificarlo. Todo esto en dos funciones.
|
||||||
|
|
||||||
|
La función de analisis de texto es:
|
||||||
|
```python
|
||||||
|
def analizar_sentimientos(texto):
|
||||||
|
prompt = f"Analiza los sentimientos del siguiente texto: '{texto}'. El sentimiento predominante es: "
|
||||||
|
respuesta = openai.Completion.create(
|
||||||
|
engine="text-davinci-002",
|
||||||
|
prompt=prompt,
|
||||||
|
n=1,
|
||||||
|
temperature=0.5,
|
||||||
|
max_tokens=100
|
||||||
|
)
|
||||||
|
return respuesta.choices[0].text.strip()
|
||||||
|
```
|
||||||
|
|
||||||
|
Ahora la dinámica del programa:
|
||||||
|
```python
|
||||||
|
texto_para_analizar = input("Pega aquí el texto a analizar: ")
|
||||||
|
sentimiento = analizar_sentimientos(texto_para_analizar)
|
||||||
|
print(sentimiento)
|
||||||
|
```
|
||||||
|
|
||||||
|
![](img/python-chatgpt09.png)
|
||||||
|
|
||||||
|
Una consideración a tener en cuenta es que se podría crear un programa de scraping que recogiera los comentarios efectuados por usuarios en, por ejemplo, un artículo o un vídeo de youtube, y pasarselo a chatgpt para que indicará sus conclusiones de sentimiento predominante.
|
||||||
|
|
||||||
|
Para clasificar texto la función y la dinámica es:
|
||||||
|
```python
|
||||||
|
def clasificar_texto(texto):
|
||||||
|
# Definir categorías en un array
|
||||||
|
categorias = [
|
||||||
|
"Arte",
|
||||||
|
"ciencia",
|
||||||
|
"deportes",
|
||||||
|
"entretenimiento",
|
||||||
|
"educación",
|
||||||
|
"finanzas",
|
||||||
|
"historia",
|
||||||
|
"literatura",
|
||||||
|
"matemáticas",
|
||||||
|
"medicina",
|
||||||
|
"medio ambiente",
|
||||||
|
"música",
|
||||||
|
"noticias",
|
||||||
|
"política",
|
||||||
|
"religión",
|
||||||
|
"salud",
|
||||||
|
"tecnología",
|
||||||
|
"viajes",
|
||||||
|
]
|
||||||
|
prompt = f"Clasifica el siguiente texto: '{texto}' en una de estar categorías: {','.join(categorias)}. La categoría es: "
|
||||||
|
respuesta = openai.Completion.create(
|
||||||
|
engine="text-davinci-002",
|
||||||
|
prompt=prompt,
|
||||||
|
n=1,
|
||||||
|
temperature=0.5,
|
||||||
|
max_tokens=50
|
||||||
|
)
|
||||||
|
return respuesta.choices[0].text.strip()
|
||||||
|
texto_para_clasificar = input("Ingresa texto a clasificar en una categoría: ")
|
||||||
|
clasificacion = clasificar_texto(texto_para_clasificar)
|
||||||
|
|
||||||
|
print(clasificacion)
|
||||||
|
```
|
||||||
|
|
||||||
|
Para la prueba he cogido los comentarios del grupo del canal telegram [seguridadinformátic4](t.me/seguridadinformatic4):
|
||||||
|
|
||||||
|
![](img/python-chatgpt10.png)
|
||||||
|
|
||||||
### 4.5. - Traducción
|
### 4.5. - Traducción
|
||||||
|
|
||||||
|
Tan solo con una función podremos traducir un texto al idioma que queramos. La función y la dinámica del programa:
|
||||||
|
def traducir_texto(texto, idioma):
|
||||||
|
```python
|
||||||
|
prompt = f"Traduce el siguiente texto al idioma {idioma}:\n\n{texto}\n\nTexto traducido: "
|
||||||
|
respuesta = openai.Completion.create(
|
||||||
|
engine="text-davinci-002",
|
||||||
|
prompt=prompt,
|
||||||
|
n=1,
|
||||||
|
temperature=0.5,
|
||||||
|
max_tokens=100
|
||||||
|
)
|
||||||
|
return respuesta.choices[0].text.strip()
|
||||||
|
print("Bienvenido al traductor de texto\n")
|
||||||
|
idioma = input("Escribe el idioma al que quieres traducir: ")
|
||||||
|
texto_a_traducir = input("Escribe el texto a traducir: ")
|
||||||
|
texto_traducido = traducir_texto(texto_a_traducir, idioma)
|
||||||
|
print(f"El texto traducido es: {texto_traducido}")
|
||||||
|
```
|
||||||
|
|
||||||
|
![](img/python-chatgpt11.png)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## TEMA 5 - Otras consideraciones para la integración
|
## TEMA 5 - Otras consideraciones para la integración
|
||||||
|
|
||||||
|
BIN
python-chatgpt/img/python-chatgpt09.png
Normal file
BIN
python-chatgpt/img/python-chatgpt09.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 27 KiB |
BIN
python-chatgpt/img/python-chatgpt10.png
Normal file
BIN
python-chatgpt/img/python-chatgpt10.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 148 KiB |
BIN
python-chatgpt/img/python-chatgpt11.png
Normal file
BIN
python-chatgpt/img/python-chatgpt11.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 241 KiB |
37
python-chatgpt/src/05_analisis_sentimientos.py
Normal file
37
python-chatgpt/src/05_analisis_sentimientos.py
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
"""
|
||||||
|
Programa para analizar los sentimientos predominantes
|
||||||
|
de un texto
|
||||||
|
"""
|
||||||
|
import openai
|
||||||
|
import os
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
|
||||||
|
load_dotenv()
|
||||||
|
api_key = os.getenv("OPENAI_API_KEY")
|
||||||
|
|
||||||
|
openai.api_key = api_key
|
||||||
|
|
||||||
|
|
||||||
|
def analizar_sentimientos(texto):
|
||||||
|
"""
|
||||||
|
Analizar sentimientos con OpenAI GPT-3
|
||||||
|
"""
|
||||||
|
|
||||||
|
prompt = f"Analiza los sentimientos del siguiente texto: '{texto}'. El sentimiento predominante es: "
|
||||||
|
|
||||||
|
respuesta = openai.Completion.create(
|
||||||
|
engine="text-davinci-002",
|
||||||
|
prompt=prompt,
|
||||||
|
n=1,
|
||||||
|
temperature=0.5,
|
||||||
|
max_tokens=100
|
||||||
|
)
|
||||||
|
|
||||||
|
return respuesta.choices[0].text.strip()
|
||||||
|
|
||||||
|
|
||||||
|
texto_para_analizar = input("Pega aquí el texto a analizar: ")
|
||||||
|
|
||||||
|
sentimiento = analizar_sentimientos(texto_para_analizar)
|
||||||
|
|
||||||
|
print(sentimiento)
|
59
python-chatgpt/src/06_clasificar_texto.py
Normal file
59
python-chatgpt/src/06_clasificar_texto.py
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
"""
|
||||||
|
Programa para analizar los sentimientos predominantes
|
||||||
|
de un texto
|
||||||
|
"""
|
||||||
|
import openai
|
||||||
|
import os
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
|
||||||
|
load_dotenv()
|
||||||
|
api_key = os.getenv("OPENAI_API_KEY")
|
||||||
|
|
||||||
|
openai.api_key = api_key
|
||||||
|
|
||||||
|
|
||||||
|
def clasificar_texto(texto):
|
||||||
|
"""
|
||||||
|
Clasificar texto con OpenAI GPT-3
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Definir categorías en un array
|
||||||
|
categorias = [
|
||||||
|
"Arte",
|
||||||
|
"ciencia",
|
||||||
|
"deportes",
|
||||||
|
"entretenimiento",
|
||||||
|
"educación",
|
||||||
|
"finanzas",
|
||||||
|
"historia",
|
||||||
|
"literatura",
|
||||||
|
"matemáticas",
|
||||||
|
"medicina",
|
||||||
|
"medio ambiente",
|
||||||
|
"música",
|
||||||
|
"noticias",
|
||||||
|
"política",
|
||||||
|
"religión",
|
||||||
|
"salud",
|
||||||
|
"tecnología",
|
||||||
|
"viajes",
|
||||||
|
]
|
||||||
|
|
||||||
|
prompt = f"Clasifica el siguiente texto: '{texto}' en una de estar categorías: {','.join(categorias)}. La categoría es: "
|
||||||
|
|
||||||
|
respuesta = openai.Completion.create(
|
||||||
|
engine="text-davinci-002",
|
||||||
|
prompt=prompt,
|
||||||
|
n=1,
|
||||||
|
temperature=0.5,
|
||||||
|
max_tokens=50
|
||||||
|
)
|
||||||
|
|
||||||
|
return respuesta.choices[0].text.strip()
|
||||||
|
|
||||||
|
|
||||||
|
texto_para_clasificar = input("Ingresa texto a clasificar en una categoría: ")
|
||||||
|
|
||||||
|
clasificacion = clasificar_texto(texto_para_clasificar)
|
||||||
|
|
||||||
|
print(clasificacion)
|
40
python-chatgpt/src/07_traducir_texto.py
Normal file
40
python-chatgpt/src/07_traducir_texto.py
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
"""
|
||||||
|
Programa para analizar los sentimientos predominantes
|
||||||
|
de un texto
|
||||||
|
"""
|
||||||
|
import openai
|
||||||
|
import os
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
|
||||||
|
load_dotenv()
|
||||||
|
api_key = os.getenv("OPENAI_API_KEY")
|
||||||
|
|
||||||
|
openai.api_key = api_key
|
||||||
|
|
||||||
|
|
||||||
|
def traducir_texto(texto, idioma):
|
||||||
|
"""
|
||||||
|
Analizar sentimientos con OpenAI GPT-3
|
||||||
|
"""
|
||||||
|
|
||||||
|
prompt = f"Traduce el siguiente texto al idioma {idioma}:\n\n{texto}\n\nTexto traducido: "
|
||||||
|
|
||||||
|
respuesta = openai.Completion.create(
|
||||||
|
engine="text-davinci-002",
|
||||||
|
prompt=prompt,
|
||||||
|
n=1,
|
||||||
|
temperature=0.5,
|
||||||
|
max_tokens=1000
|
||||||
|
)
|
||||||
|
|
||||||
|
return respuesta.choices[0].text.strip()
|
||||||
|
|
||||||
|
|
||||||
|
print("Bienvenido al traductor de texto\n")
|
||||||
|
|
||||||
|
idioma = input("Escribe el idioma al que quieres traducir: ")
|
||||||
|
texto_a_traducir = input("Escribe el texto a traducir: ")
|
||||||
|
|
||||||
|
texto_traducido = traducir_texto(texto_a_traducir, idioma)
|
||||||
|
|
||||||
|
print(f"El texto traducido es: {texto_traducido}")
|
Loading…
Reference in New Issue
Block a user