Logotipo de Zephyrnet

Automatice las cosas aburridas con GPT-4 y Python

Fecha:

Automatice las cosas aburridas con ChatGPT y Python
Imagen por editor
 

El 14 de marzo de 2023, OpenAI lanzó GPT-4, la versión más nueva y poderosa de su modelo de lenguaje. 

A las pocas horas de su lanzamiento, GPT-4 sorprendió a la gente al convertir un boceto dibujado a mano en un sitio web funcional, pasando el examen de la barray generar resúmenes precisos de artículos de Wikipedia

También supera a su predecesor, GPT-3.5, en la resolución de problemas matemáticos y en la respuesta a preguntas basadas en la lógica y el razonamiento.

ChatGPT, el chatbot que se construyó sobre GPT-3.5 y se lanzó al público, era conocido por "alucinar". Generaría respuestas aparentemente correctas y defendería sus respuestas con “hechos”, aunque estuvieran plagados de errores.

Un usuario acudió a Twitter después de que la modelo insistiera en que los huevos de elefante eran los más grandes de todos los animales terrestres:

 

Automatice las cosas aburridas con ChatGPT y Python
Imagen de FioraAeterna
 

Y no se detuvo allí. El algoritmo pasó a corroborar su respuesta con hechos inventados que casi me convencieron por un momento.

GPT-4, por otro lado, fue entrenado para "alucinar" con menos frecuencia. El último modelo de OpenAI es más difícil de engañar y no genera falsedades con tanta confianza.

Como científico de datos, mi trabajo requiere que encuentre fuentes de datos relevantes, preprocese grandes conjuntos de datos y construya modelos de aprendizaje automático altamente precisos que impulsen el valor comercial. 

Paso una gran parte de mi día extrayendo datos de diferentes formatos de archivo y consolidándolos en un solo lugar. 

Después de que ChatGPT se lanzó por primera vez en noviembre de 2022, busqué en el chatbot alguna orientación con mis flujos de trabajo diarios. Utilicé la herramienta para ahorrar la cantidad de tiempo dedicado al trabajo de baja categoría, para poder concentrarme en generar nuevas ideas y crear mejores modelos.

Una vez que se lanzó GPT-4, tenía curiosidad sobre si marcaría una diferencia en el trabajo que estaba haciendo. ¿Hubo algún beneficio significativo al usar GPT-4 en comparación con sus predecesores? ¿Me ayudaría a ahorrar más tiempo del que ya estaba con GPT-3.5?

En este artículo, le mostraré cómo uso ChatGPT para automatizar los flujos de trabajo de ciencia de datos. 

Crearé los mismos avisos y los introduciré en GPT-4 y GPT-3.5, para ver si el primero realmente funciona mejor y ahorra más tiempo.

Si desea seguir todo lo que hago en este artículo, debe tener acceso a GPT-4 y GPT-3.5.

GPT-3.5

GPT-3.5 está disponible públicamente en el sitio web de OpenAI. Simplemente navegue hasta https://chat.openai.com/auth/login, complete los datos requeridos y tendrá acceso al modelo de idioma:

 

Automatice las cosas aburridas con ChatGPT y Python
Imagen de ChatGPT 

GPT-4

GPT-4, por otro lado, actualmente está oculto detrás de un muro de pago. Para acceder al modelo, debe actualizar a ChatGPTPlus haciendo clic en "Actualizar a Plus". 

Hay una cuota de suscripción mensual de $20/mes que se puede cancelar en cualquier momento:

 

Automatice las cosas aburridas con ChatGPT y Python
Imagen de ChatGPT
 

Si no desea pagar la tarifa de suscripción mensual, también puede unirse a la Lista de espera de API para GPT-4. Una vez que obtenga acceso a la API, puede seguir así guía para usarlo en Python. 

Está bien si actualmente no tiene acceso a GPT-4.

Todavía puede seguir este tutorial con la versión gratuita de ChatGPT que usa GPT-3.5 en el backend.

1. Visualización de datos

Cuando realizo un análisis exploratorio de datos, generar una visualización rápida en Python a menudo me ayuda a comprender mejor el conjunto de datos. 

Desafortunadamente, esta tarea puede llevar mucho tiempo, especialmente cuando no conoce la sintaxis correcta para obtener el resultado deseado. 

A menudo me encuentro buscando en la extensa documentación de Seaborn y usando StackOverflow para generar un solo gráfico de Python.

Veamos si ChatGPT puede ayudar a resolver este problema.

Usaremos el Diabetes de los indios pima conjunto de datos en esta sección. Puede descargar el conjunto de datos si desea seguir los resultados generados por ChatGPT.

Después de descargar el conjunto de datos, carguémoslo en Python usando la biblioteca de Pandas e imprimamos el encabezado del marco de datos:

import pandas as pd df = pd.read_csv('diabetes.csv')
df.head()

 

Automatice las cosas aburridas con ChatGPT y Python

 
Hay nueve variables en este conjunto de datos. Uno de ellos, “Resultado”, es la variable objetivo que nos dice si una persona desarrollará diabetes. El resto son variables independientes utilizadas para predecir el resultado.

¡Bueno! Entonces quiero ver cuáles de estas variables tienen un impacto en si una persona desarrollará diabetes.

Para lograr esto, podemos crear un gráfico de barras agrupadas para visualizar la variable "Diabetes" en todas las variables dependientes del conjunto de datos.

En realidad, esto es bastante fácil de codificar, pero empecemos de manera simple. Pasaremos a indicaciones más complicadas a medida que avancemos en el artículo.

Visualización de datos con GPT-3.5

Dado que tengo una suscripción paga a ChatGPT, la herramienta me permite seleccionar el modelo subyacente que me gustaría usar cada vez que accedo a él.

Voy a seleccionar GPT-3.5:

 

Automatice las cosas aburridas con ChatGPT y Python
Imagen de ChatGPT Plus
 

Si no tiene una suscripción, puede usar la versión gratuita de ChatGPT ya que el chatbot usa GPT-3.5 de manera predeterminada.

Ahora, escribamos el siguiente mensaje para generar una visualización utilizando el conjunto de datos de diabetes:

Tengo un conjunto de datos con 8 variables independientes y 1 variable dependiente. La variable dependiente, "Resultado", nos dice si una persona desarrollará diabetes. 
 
Las variables independientes, "Embarazos", "Glucosa", "Presión arterial", "Grosor de la piel", "Insulina", "IMC", "DiabetesPedigreeFunction" y "Edad" se utilizan para predecir este resultado.
 
¿Puedes generar código Python para visualizar todas estas variables independientes por resultado? El resultado debe ser un gráfico de barras agrupado coloreado por la variable "Resultado". Debe haber 16 barras en total, 2 para cada variable independiente.

Aquí está la respuesta del modelo al mensaje anterior:
 

Automatice las cosas aburridas con ChatGPT y Python

 

Una cosa que se destaca de inmediato es que el modelo asumió que queríamos importar un conjunto de datos de Seaborn. Probablemente hizo esta suposición ya que le pedimos que usara la biblioteca Seaborn.

Este no es un gran problema, solo necesitamos cambiar una línea antes de ejecutar los códigos.

Aquí está el fragmento de código completo generado por GPT-3.5:

import seaborn as sns
import matplotlib.pyplot as plt # Load the dataset
dataset = pd.read_csv("diabetes.csv") # Create the bar chart
sns.barplot( x="variable", y="value", hue="Outcome", data=pd.melt(dataset, id_vars=["Outcome"]), ci=None,
) # Set the title and labels
plt.title("Dependent Variables by Outcome")
plt.xlabel("Independent Variables")
plt.ylabel("Value") # Show the chart
plt.show()

 

Puede copiar y pegar esto en su IDE de Python.

Aquí está el resultado generado después de ejecutar el código anterior:

 

Automatice las cosas aburridas con ChatGPT y Python

 

¡Este gráfico se ve perfecto! Es exactamente como lo imaginé al escribir el aviso en ChatGPT.

Sin embargo, un problema que se destaca es que el texto de este gráfico se superpone. Voy a preguntarle al modelo si puede ayudarnos a solucionar esto, escribiendo el siguiente mensaje:

 

Automatice las cosas aburridas con ChatGPT y Python
 

El algoritmo explicó que podíamos evitar esta superposición rotando las etiquetas del gráfico o ajustando el tamaño de la figura. También generó un nuevo código para ayudarnos a lograr esto.

Ejecutemos este código para ver si nos da los resultados deseados:

import seaborn as sns
import matplotlib.pyplot as plt # Load the dataset
dataset = pd.read_csv("diabetes.csv") # Create the bar chart
sns.barplot( x="variable", y="value", hue="Outcome", data=pd.melt(dataset, id_vars=["Outcome"]), ci=None,
) # Set the title and labels
plt.title("Dependent Variables by Outcome")
plt.xlabel("Independent Variables")
plt.ylabel("Value") # Rotate the x-axis labels by 45 degrees and set horizontal alignment to right
plt.xticks(rotation=45, ha="right") # Show the chart
plt.show()

 

Las líneas de código anteriores deberían generar el siguiente resultado:
 

Automatice las cosas aburridas con ChatGPT y Python

 

Esto se ve muy bien! 

Entiendo mucho mejor el conjunto de datos ahora simplemente mirando este gráfico. Parece que las personas con niveles más altos de glucosa e insulina son más propensas a desarrollar diabetes.

Además, observe que la variable "DiabetesPedigreeFunction" no nos brinda ninguna información en este gráfico. Esto se debe a que la característica está en una escala más pequeña (entre 0 y 2.4). Si desea seguir experimentando con ChatGPT, puede solicitarle que genere varias subtramas dentro de un solo gráfico para resolver este problema.

Visualización de datos con GPT-4

Ahora, introduzcamos las mismas indicaciones en GPT-4 para ver si obtenemos una respuesta diferente. Seleccionaré el modelo GPT-4 dentro de ChatGPT y escribiré el mismo mensaje que antes:

 

Automatice las cosas aburridas con ChatGPT y Python
 

Observe cómo GPT-4 no asume que usaremos un marco de datos integrado en Seaborn. 

Nos dice que utilizará un marco de datos llamado "df" para construir la visualización, que es una mejora de la respuesta generada por GPT-3.5.

Aquí está el código completo generado por este algoritmo:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt # Assuming your DataFrame is called df
# First, you need to melt the DataFrame to make # it suitable for creating a clustered bar chart
melted_df = pd.melt( df, id_vars=["Outcome"], var_name="Independent Variable", value_name="Value",
) # Create the clustered bar chart
plt.figure(figsize=(12, 6))
sns.barplot( data=melted_df, x="Independent Variable", y="Value", hue="Outcome", ci=None,
) # Customize the plot
plt.title("Independent Variables by Outcome")
plt.ylabel("Average Value")
plt.xlabel("Independent Variables")
plt.legend(title="Outcome", loc="upper right") # Show the plot
plt.show()

 

El código anterior debería generar el siguiente gráfico:

 

Automatice las cosas aburridas con ChatGPT y Python
 

¡Esto es perfecto! 

Aunque no se lo pedimos, GPT-4 ha incluido una línea de código para aumentar el tamaño de la trama. Las etiquetas de este gráfico son claramente visibles, por lo que no tenemos que volver atrás y modificar el código como hicimos antes. 

Este es un paso por encima de la respuesta generada por GPT-3.5.

Sin embargo, en general, parece que GPT-3.5 y GPT-4 son efectivos para generar código para realizar tareas como visualización y análisis de datos. 

Es importante tener en cuenta que, dado que no puede cargar datos en la interfaz de ChatGPT, debe proporcionar al modelo una descripción precisa de su conjunto de datos para obtener resultados óptimos.

2. Trabajar con documentos PDF

Si bien este no es un caso de uso común de la ciencia de datos, una vez tuve que extraer datos de texto de cientos de archivos PDF para crear un modelo de análisis de sentimientos. Los datos no estaban estructurados y pasé mucho tiempo extrayéndolos y preprocesándolos.

También trabajo a menudo con investigadores que leen y crean contenido sobre eventos actuales que tienen lugar en industrias específicas. Necesitan estar al tanto de las noticias, analizar los informes de la empresa y leer sobre las tendencias potenciales en la industria. 

En lugar de leer 100 páginas del informe de una empresa, ¿no es más fácil simplemente extraer las palabras que le interesan y leer solo las oraciones que contienen esas palabras clave? 

O si está interesado en las tendencias, puede crear un flujo de trabajo automatizado que muestre el crecimiento de las palabras clave a lo largo del tiempo en lugar de revisar cada informe manualmente.

En esta sección, usaremos ChatGPT para analizar archivos PDF en Python. Le pediremos al chatbot que extraiga el contenido de un archivo PDF y lo escriba en un archivo de texto.

Nuevamente, esto se hará usando tanto GPT-3.5 como GPT-4 para ver si hay una diferencia significativa en el código generado.

Lectura de archivos PDF con GPT-3.5

En esta sección, analizaremos un documento PDF disponible públicamente titulado Una breve introducción al aprendizaje automático para ingenieros. Asegúrese de descargar este archivo si desea codificar esta sección.

Primero, pidamos al algoritmo que genere código Python para extraer datos de este documento PDF y guardarlo en un archivo de texto:

 

Automatice las cosas aburridas con ChatGPT y Python

 

Aquí está el código completo proporcionado por el algoritmo:

import PyPDF2 # Open the PDF file in read-binary mode
with open("Intro_to_ML.pdf", "rb") as pdf_file: # Create a PDF reader object pdf_reader = PyPDF2.PdfFileReader(pdf_file) # Get the total number of pages in the PDF file num_pages = pdf_reader.getNumPages() # Create a new text file with open("output_file.txt", "w") as txt_file: # Loop through each page in the PDF file for page_num in range(num_pages): # Get the text from the current page page_text = pdf_reader.getPage(page_num).extractText() # Write the text to the text file txt_file.write(page_text)

 

(Nota: asegúrese de cambiar el nombre del archivo PDF por el que guardó antes de ejecutar este código).

Desafortunadamente, después de ejecutar el código generado por GPT-3.5, encontré el siguiente error Unicode:

 

Automatice las cosas aburridas con ChatGPT y Python
 

Volvamos a GPT-3.5 y veamos si el modelo puede arreglar esto:

 

Automatice las cosas aburridas con ChatGPT y Python
 

Pegué el error en ChatGPT y el modelo respondió que se podía solucionar cambiando la codificación utilizada a "utf-8". También me dio un código modificado que reflejaba este cambio:

import PyPDF2 # Open the PDF file in read-binary mode
with open("Intro_to_ML.pdf", "rb") as pdf_file: # Create a PDF reader object pdf_reader = PyPDF2.PdfFileReader(pdf_file) # Get the total number of pages in the PDF file num_pages = pdf_reader.getNumPages() # Create a new text file with utf-8 encoding with open("output_file.txt", "w", encoding="utf-8") as txt_file: # Loop through each page in the PDF file for page_num in range(num_pages): # Get the text from the current page page_text = pdf_reader.getPage(page_num).extractText() # Write the text to the text file txt_file.write(page_text)

 

Este código se ejecutó con éxito y creó un archivo de texto llamado "output_file.txt". Todo el contenido del documento PDF se ha escrito en el archivo:

 

Automatice las cosas aburridas con ChatGPT y Python

Lectura de archivos PDF con GPT-4

Ahora, voy a pegar el mismo aviso en GPT-4 para ver qué aparece con el modelo:

 

Automatice las cosas aburridas con ChatGPT y Python
 

Aquí está el código completo generado por GPT-4:

import PyPDF2 def pdf_to_text(input_pdf, output_txt): with open(input_pdf, "rb") as pdf_file: pdf_reader = PyPDF2.PdfFileReader(pdf_file) num_pages = pdf_reader.numPages text = "" for page_num in range(num_pages): page = pdf_reader.getPage(page_num) text += page.extractText() with open(output_txt, "w", encoding="utf-8") as text_file: text_file.write(text) input_pdf = "Intro_to_ML.pdf"
output_txt = "output_gpt4.txt"
pdf_to_text(input_pdf, output_txt)

 

¡Mira eso!

A diferencia de GPT-3.5, GPT-4 ya ha especificado que se debe usar la codificación "utf-8" para abrir el archivo de texto. No necesitamos volver atrás y modificar el código como lo hicimos anteriormente.

El código proporcionado por GPT-4 debería ejecutarse correctamente y debería ver el contenido del documento PDF en el archivo de texto que se creó.

Hay muchas otras técnicas que puede usar para automatizar documentos PDF con Python. Si desea explorar esto más a fondo, aquí hay algunas otras indicaciones que puede escribir en ChatGPT:

  • ¿Puedes escribir código Python para fusionar dos archivos PDF?
  • ¿Cómo puedo contar las apariciones de una palabra o frase específica en un documento PDF con Python?
  • ¿Puedes escribir código Python para extraer tablas de archivos PDF y escribirlas en Excel?

Sugiero que pruebe algunos de estos durante su tiempo libre: se sorprenderá de la rapidez con la que GPT-4 puede ayudarlo a realizar tareas menores que generalmente demoran horas en realizarse.

3. Envío de correos electrónicos automatizados

Paso horas de mi semana laboral leyendo y respondiendo correos electrónicos. No solo lleva mucho tiempo, sino que también puede ser increíblemente estresante estar al tanto de los correos electrónicos cuando se persiguen plazos ajustados.

Y aunque no puede hacer que ChatGPT escriba todos sus correos electrónicos por usted (deseo), aún puede usarlo para escribir programas que envíen correos electrónicos programados en un momento específico o modificar una sola plantilla de correo electrónico que se puede enviar a varias personas. .

En esta sección, obtendremos GPT-3.5 y GPT-4 para ayudarnos a escribir un script de Python para enviar correos electrónicos automatizados.

Envío de correos electrónicos automatizados con GPT-3.5

Primero, escribamos el siguiente mensaje para generar códigos para enviar un correo electrónico automatizado:

 

Automatice las cosas aburridas con ChatGPT y Python
 

Aquí está el código completo generado por GPT-3.5 (asegúrese de cambiar las direcciones de correo electrónico y la contraseña antes de ejecutar este código):

import smtplib # Set up SMTP connection
smtp_server = "smtp.gmail.com"
smtp_port = 587
sender_email = "your_email@gmail.com"
sender_password = "your_password"
receiver_email = "receiver_email@example.com" with smtplib.SMTP(smtp_server, smtp_port) as smtp: # Start TLS encryption smtp.starttls() # Log in to your Gmail account smtp.login(sender_email, sender_password) # Compose your email message subject = "Automated email" body = "Hello,nnThis is an automated email sent from Python." message = f"Subject: {subject}nn{body}" # Send the email smtp.sendmail(sender_email, receiver_email, message)

 

Desafortunadamente, este código no se ejecutó con éxito para mí. Generó el siguiente error:

 

Automatice las cosas aburridas con ChatGPT y Python
 

Peguemos este error en ChatGPT y veamos si el modelo puede ayudarnos a resolverlo:

 

Automatice las cosas aburridas con ChatGPT y Python

 

De acuerdo, entonces el algoritmo señaló algunas razones de por qué podríamos encontrarnos con este error.

Sé con certeza que mis credenciales de inicio de sesión y direcciones de correo electrónico eran válidas y que no había errores tipográficos en el código. Así que estas razones pueden ser descartadas.

GPT-3.5 también sugiere que permitir aplicaciones menos seguras podría resolver este problema.

Sin embargo, si intenta esto, no encontrará una opción en su cuenta de Google para permitir el acceso a aplicaciones menos seguras.

Esto se debe a que Google ya no permite a los usuarios permitir aplicaciones menos seguras debido a problemas de seguridad.

Finalmente, GPT-3.5 también menciona que se debe generar una contraseña de aplicación si se activó la autenticación de dos factores.

No tengo habilitada la autenticación de dos factores, así que voy a renunciar (temporalmente) a este modelo y ver si GPT-4 tiene una solución.

Envío de correos electrónicos automatizados con GPT-4

De acuerdo, entonces, si escribe el mismo mensaje en GPT-4, encontrará que el algoritmo genera un código que es muy similar al que nos dio GPT-3.5. Esto causará el mismo error con el que nos encontramos anteriormente.

Veamos si GPT-4 puede ayudarnos a corregir este error:

 

Automatice las cosas aburridas con ChatGPT y Python
 

Las sugerencias de GPT-4 son muy similares a las que vimos anteriormente.

Sin embargo, esta vez, nos brinda un desglose paso a paso de cómo lograr cada paso.

GPT-4 también sugiere crear una contraseña de aplicación, así que intentémoslo.

Primero, visite su cuenta de Google, navegue hasta "Seguridad" y habilite la autenticación de dos factores. Luego, en la misma sección, debería ver una opción que dice "Contraseñas de la aplicación".

Haga clic en él y aparecerá la siguiente pantalla:

 

Automatice las cosas aburridas con ChatGPT y Python
 

Puede ingresar cualquier nombre que desee y hacer clic en "Generar".

Aparecerá una nueva contraseña de la aplicación.

Reemplace su contraseña existente en el código de Python con esta contraseña de aplicación y ejecute el código nuevamente:

import smtplib # Set up SMTP connection
smtp_server = "smtp.gmail.com"
smtp_port = 587
sender_email = "your_email@gmail.com"
sender_password = "YOUR_APP_PASSWORD"
receiver_email = "receiver_email@example.com" with smtplib.SMTP(smtp_server, smtp_port) as smtp: # Start TLS encryption smtp.starttls() # Log in to your Gmail account smtp.login(sender_email, sender_password) # Compose your email message subject = "Automated email" body = "Hello,nnThis is an automated email sent from Python." message = f"Subject: {subject}nn{body}" # Send the email smtp.sendmail(sender_email, receiver_email, message)

 

Debería ejecutarse con éxito esta vez, y su destinatario recibirá un correo electrónico similar a este:

 

Automatice las cosas aburridas con ChatGPT y Python
 

Perfecto!

Gracias a ChatGPT, hemos enviado con éxito un correo electrónico automatizado con Python.

Si desea llevar esto un paso más allá, le sugiero que genere avisos que le permitan:

  1. Envíe correos electrónicos masivos a múltiples destinatarios al mismo tiempo
  2. Envíe correos electrónicos programados a una lista predefinida de direcciones de correo electrónico
  3. Envíe a los destinatarios un correo electrónico personalizado que se adapte a su edad, género y ubicación.

 
 
Natassha Selvaraj es un científico de datos autodidacta apasionado por la escritura. Puedes conectarte con ella en Etiqueta LinkedIn.
 

punto_img

Información más reciente

punto_img