ChatGPT es un innovador modelo de lenguaje de gran tamaño para generar texto. Ya está cambiando la forma en que escribimos casi todo tipo de textos, desde tutoriales como éste, hasta descripciones de productos autogeneradas, resultados del motor de búsqueda de Bing y docenas de casos de uso de datos, como se describe en la hoja de trucos ChatGPT para la ciencia de datos.
Para un uso interactivo, la interfaz web de ChatGPT es ideal. Sin embargo, OpenAI (la empresa que está detrás de ChatGPT) también tiene una interfaz de programación de aplicaciones (API) que te permite interactuar con ChatGPT y sus otros modelos utilizando código.
En este tutorial, aprenderás a trabajar con el paquete openai de Python para mantener conversaciones programáticamente con ChatGPT.
Ten en cuenta que OpenAI cobra por utilizar la API GPT. (A veces se proporcionan créditos gratuitos a los nuevos usuarios, pero no es transparente quién obtiene el crédito ni cuánto durará este trato). Cuesta 0,002 $ / 1000 tokens, donde 1000 tokens equivalen a unas 750 palabras. Ejecutar todos los ejemplos de este tutorial una vez debería costar menos de 2 céntimos de euro (pero si vuelves a ejecutar tareas, se te cobrará cada vez).
¿Cuándo debes utilizar la API en lugar de la Interfaz Web?
La aplicación web ChatGPT es una gran interfaz para los modelos GPT. Sin embargo, si quieres incluir la IA en una canalización de datos o en un software, la API es más apropiada. Algunos posibles casos de uso para los profesionales de los datos son:
Extraer datos de una base de datos o de otra API, y luego pedir a GPT que los resuma o genere un informe al respecto
Integrar la funcionalidad GPT en un cuadro de mandos para proporcionar automáticamente un resumen de texto de los resultados
Proporcionar una interfaz de lenguaje natural a tu data mart
Realizar investigaciones extrayendo artículos de revistas a través del paquete scholarly (PyPI, Conda), y conseguir que GPT resuma los resultados.
Crear una cuenta de desarrollador de OpenAI
Para utilizar la API, tienes que crear una cuenta de desarrollador en OpenAI. Necesitarás tener a mano tu dirección de correo electrónico, tu número de teléfono y los datos de tu tarjeta de débito o crédito.
Haz clic en "Añadir método de pago" e introduce los datos de tu tarjeta.
Almacena de forma segura las credenciales de tu cuenta
¡La clave secreta debe mantenerse en secreto! De lo contrario, otras personas podrán utilizarla para acceder a la API, y tú pagarás por ello. Los siguientes pasos describen cómo almacenar de forma segura tu clave utilizando DataCamp Workspace. Si utilizas una plataforma diferente, consulta la documentación de dicha plataforma. También puedes pedir consejo a ChatGPT. Aquí tienes una sugerencia:
> Eres un experto en seguridad informática. Estás hablando con un científico de datos. Explica las mejores prácticas para almacenar de forma segura las claves privadas utilizadas para acceder a la API.
En tu workspace, haz clic en Integrations
Pulsa el botón más "Create integration"
Selecciona una integración de "Environment Variables"
En el campo "Name", escribe "OPENAI". En el campo "Value", introduce tu clave secreta
Haz clic en "Create", y conecta la nueva integración
Configurar Python
Para utilizar GPT a través de la API, necesitas importar los paquetes Python os y openai.
Si utilizas un Jupyter Notebook (como DataCamp Workspace), también es útil importar algunas funciones de IPython.display.
Un ejemplo también utiliza el paquete yfinance para recuperar los precios de las acciones.
# Import the os packageimport os
# Import the openai packageimport openai
# From the IPython.display package, import display and Markdownfrom IPython.display import display, Markdown
# Import yfinance as yfimport yfinance as yfCon la tecnología de
La otra tarea de configuración es poner la variable de entorno que acabas de crear en un lugar en el que el paquete openai pueda verla.
# Set openai.api_key to the OPENAI environment variable
openai.api_key = os.environ["OPENAI"]Con la tecnología de
El patrón de código para llamar a GPT a través de la API
El patrón de código para llamar a la API de OpenAI y obtener una respuesta de chat es el siguiente:
response = openai.ChatCompletion.create(
model="MODEL_NAME",
messages=[{"role":"system","content":'SPECIFY HOW THE AI ASSISTANT SHOULD BEHAVE'},{"role":"user","content":'SPECIFY WANT YOU WANT THE AI ASSISTANT TO SAY'}])Con la tecnología de
Aquí hay varias cosas que desentrañar.
Nombres de los modelos de API de OpenAI para GPT
Los nombres de los modelos aparecen en la página Descripción general de los modelos de la documentación para desarrolladores. En este tutorial, utilizarás gpt-3.5-turbo, que es el último modelo utilizado por ChatGPT que tiene acceso público a la API. (Cuando esté ampliamente disponible, querrás cambiar a gpt-4.)
Los mensajes system describen el comportamiento del asistente de IA. Un mensaje system útil para los casos de uso de la ciencia de datos es "You are a helpful assistant who understands data science."
Los mensajes user describen lo que quieres que diga el asistente de IA. A lo largo de este tutorial veremos ejemplos de mensajes de usuario
Los mensajes assistant describen respuestas anteriores en la conversación. Veremos cómo mantener una conversación interactiva en tareas posteriores
El primer mensaje debe ser un mensaje del sistema. Los mensajes adicionales deben alternarse entre el usuario y el asistente.
Tu primera conversación: Generar un conjunto de datos
Generar conjuntos de datos de muestra es útil para probar tu código con distintos escenarios de datos o para demostrar el código a otras personas. Para obtener una respuesta útil de GPT, tienes que ser preciso y especificar los detalles de tu conjunto de datos, incluyendo:
el número de filas y columnas
los nombres de las columnas
una descripción de lo que contiene cada columna
el formato de salida del conjunto de datos
Aquí tienes un ejemplo de mensaje de usuario para crear un conjunto de datos.
Create a small dataset about total sales over the last year.
The format of the dataset should be a data frame with 12 rows and 2 columns.
The columns should be called "month" and "total_sales_usd".
The "month" column should contain the shortened forms of month names
from "Jan" to "Dec". The "total_sales_usd" column should
contain random numeric values taken from a normal distribution
with mean 100000 and standard deviation 5000. Provide Python code to
generate the dataset, then provide the output in the format of a markdown table.Con la tecnología de
Incluyamos este mensaje en el patrón de código anterior.
# Define the system message
system_msg ='You are a helpful assistant who understands data science.'# Define the user message
user_msg ='Create a small dataset about total sales over the last year. The format of the dataset should be a data frame with 12 rows and 2 columns. The columns should be called "month" and "total_sales_usd". The "month" column should contain the shortened forms of month names from "Jan" to "Dec". The "total_sales_usd" column should contain random numeric values taken from a normal distribution with mean 100000 and standard deviation 5000. Provide Python code to generate the dataset, then provide the output in the format of a markdown table.'# Create a dataset using GPT
response = openai.ChatCompletion.create(model="gpt-3.5-turbo",
messages=[{"role":"system","content": system_msg},{"role":"user","content": user_msg}])Con la tecnología de
Comprueba que la respuesta de GPT es OK
Las llamadas a la API son "arriesgadas" porque pueden surgir problemas ajenos a tu portátil, como problemas de conectividad a Internet, o un problema con el servidor que te envía los datos, o porque te quedaste sin crédito API. Debes comprobar que la respuesta que obtienes es correcta.
Los modelos GPT devuelven un código de estado con uno de cuatro valores, documentados en la sección Formato de respuesta de la documentación del Chat.
stop: la API devolvió el resultado completo del modelo
length: resultado incompleto del modelo debido al parámetro max_tokens o al límite de tokens
content_filter: contenido omitido debido a una marca de nuestros filtros de contenido
null: respuesta de la API aún en curso o incompleta
La API de GPT envía datos a Python en formato JSON, por lo que la variable de respuesta contiene listas y diccionarios profundamente anidados. ¡Es un poco pesado trabajar con él!
Para una variable de respuesta llamada response, el código de estado se almacena en el siguiente lugar.
El contenido de la respuesta puede imprimirse como de costumbre con print(content), pero es contenido Markdown, que los cuadernos Jupyter pueden renderizar, mediante display(Markdown(content))
Here's the Python code to generate the dataset:import numpy as np
import pandas as pd
# Set random seed for reproducibility
np.random.seed(42)# Generate random sales data
sales_data = np.random.normal(loc=100000, scale=5000, size=12)# Create month abbreviation list
month_abbr =['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']# Create dataframe
sales_df = pd.DataFrame({'month': month_abbr,'total_sales_usd': sales_data})# Print dataframeprint(sales_df)
And here's the output in markdown format:| month | total_sales_usd ||-------|----------------|| Jan |98728.961189|| Feb |106931.030292|| Mar |101599.514152|| Apr |97644.534384|| May |103013.191014|| Jun |102781.514665|| Jul |100157.741173|| Aug |104849.281004|| Sep |100007.081991|| Oct |94080.272682|| Nov |96240.993328|| Dec |104719.371461|Con la tecnología de
Utiliza una función auxiliar para llamar a GPT
Necesitas escribir un montón de código repetitivo para hacer estas tres simples cosas. Es útil disponer de una función wrapper que elimine las partes aburridas. De este modo, podemos centrarnos en los casos de uso de la ciencia de datos.
Esperemos que OpenAI mejore la interfaz de su paquete Python para que este tipo de cosas estén integradas. Mientras tanto, siéntete libre de utilizarlo en tu propio código.
La función toma dos argumentos.
system: una cadena que contiene el mensaje del sistema.
user_assistant: una matriz de cadenas que alternan el mensaje del usuario y el mensaje del asistente.
El valor de retorno es el contenido generado.
defchat(system, user_assistant):assertisinstance(system,str),"`system` should be a string"assertisinstance(user_assistant,list),"`user_assistant` should be a list"
system_msg =[{"role":"system","content": system}]
user_assistant_msgs =[{"role":"assistant","content": user_assistant[i]}if i %2else{"role":"user","content": user_assistant[i]}for i inrange(len(user_assistant))]
msgs = system_msg + user_assistant_msgs
response = openai.ChatCompletion.create(model="gpt-3.5-turbo",
messages=msgs)
status_code = response["choices"][0]["finish_reason"]assert status_code =="stop",f"The status code was {status_code}."return response["choices"][0]["message"]["content"]Con la tecnología de
Un ejemplo de uso de esta función es
response_fn_test = chat("You are a machine learning expert.",["Explain what a neural network is."])
display(Markdown(response_fn_test))Con la tecnología de
A neural network is a type of machine learning model that is inspired by the architecture of the human brain. It consists of layers of interconnected processing units, called neurons, that work together to process and analyze data.
Each neuron receives input from other neurons or from external sources, processes that input using a mathematical function, and then produces an output that is passed on to other neurons in the network.
The structure and behavior of a neural network can be adjusted by changing the weights and biases of the connections between neurons. During the training process, the network learns to recognize patterns and make predictions based on the input it receives.
Neural networks are often used for tasks such as image classification, speech recognition, and natural language processing, and have been shown to be highly effective at solving complex problems that are difficult to solve with traditional rule-based programming methods.Con la tecnología de
Reutilizar respuestas del Asistente de IA
En muchas situaciones, desearás entablar una conversación más larga con la IA. Es decir, envías una solicitud a GPT, recibes una respuesta y envías otra solicitud para continuar el chat. En este caso, tienes que incluir la respuesta anterior de GPT en la segunda llamada a la API, para que GPT tenga el contexto completo. Esto mejorará la precisión de la respuesta y aumentará la coherencia en toda la conversación.
Para reutilizar el mensaje de GPT, lo recuperas de la respuesta y luego lo pasas a una nueva llamada al chat.
Ejemplo: Analizar el conjunto de datos de la muestra
Intentemos calcular la media de la columna de ventas del conjunto de datos generado anteriormente. Ten en cuenta que, como la primera vez no utilizamos la función chat(), tenemos que utilizar el código de subconjunto más largo para llegar al texto de respuesta anterior. Si utilizas chat(), el código es más sencillo.
# Assign the content from the response in Task 1 to assistant_msg
assistant_msg = response["choices"][0]["message"]["content"]# Define a new user message
user_msg2 ='Using the dataset you just created, write code to calculate the mean of the `total_sales_usd` column. Also include the result of the calculation.'# Create an array of user and assistant messages
user_assistant_msgs =[user_msg, assistant_msg, user_msg2]# Get GPT to perform the request
response_calc = chat(system_msg, user_assistant_msgs)# Display the generated content
display(Markdown(response_calc))Con la tecnología de
Sure! Here's the code to calculate the mean of the `total_sales_usd` column:
```python
mean_sales = sales_df['total_sales_usd'].mean()
print("Mean sales: $", round(mean_sales, 2))
```
And here's the output of this code:
```
Mean sales: $ 100077.57
```
Therefore, the mean of total sales over the last year is about $100,077.57.
Con la tecnología de
Utilizar GPT en una canalización
Una gran ventaja de utilizar la API frente a la interfaz web es que puedes combinar GPT con otras API. Recoger datos de una o varias fuentes y aplicarles IA es un potente flujo de trabajo.
Aplicación de la IA GPT a los datos meteorológicos
Aquí, obtendremos una previsión meteorológica con el paquete weather2 (PyPI) y utilizaremos GPT para obtener ideas de actividades.
# Import the weather2 packageimport weather
# Get the forecast for Miami
location ="Miami"
forecast = weather.forecast(location)# Pull out forecast data for midday tomorrow
fcast = forecast.tomorrow["12:00"]# Create a prompt
user_msg_weather =f"In {location} at midday tomorrow, the temperature is forecast to be {fcast.temp}, the wind speed is forecast to be {fcast.wind.speed} m/s, and the amount of precipitation is forecast to be {fcast.precip}. Make a list of suitable leisure activities."# Call GPT
response_activities = chat("You are a travel guide.",[user_msg_weather])
display(Markdown(response_activities))Con la tecnología de
With mild temperatures and calm winds, Miami is the perfect place for leisure activities. Here are some suggestions:
1. Visit Miami's beaches and soak up some sun or take a dip in the ocean!
2. Explore Miami's art scene with a visit to the Perez Art Museum Miami or the Wynwood Walls.
3. Take a stroll along the famous Ocean Drive and enjoy the colorful Art Deco architecture.
4. Head to Little Havana to experience the Cuban culture and delicious cuisine.
5. Enjoy a scenic walk or bike ride through one of Miami's many parks, such as Bayfront Park or South Pointe Park.
6. Visit the Miami Seaquarium and see some incredible marine life up close.
7. Take a boat tour to see the stunning Miami skyline from the water.
8. Shopping enthusiasts can explore the many high-end boutiques and outdoor shopping malls, such as Lincoln Road Mall.
9. Foodies can venture to one of the many food festivals happening throughout the year.
10. Finally, there are plenty of nightclubs and live music venues to keep the night going.Con la tecnología de
Muy bien. ¡Una parte de mí desearía estar mañana en Miami!
Llévalo al siguiente nivel
Puedes obtener más información sobre el uso de GPT en el curso Introducción a ChatGPT. (Pronto habrá un curso completo sobre cómo trabajar con la API de OpenAI)
Alternativas de código abierto a GPT-4 que pueden ofrecer un rendimiento similar y requieren menos recursos informáticos para funcionar. Estos proyectos vienen con instrucciones, fuentes de código, pesos del modelo, conjuntos de datos e IU de chatbot.
OpenAI ha anunciado el lanzamiento de su último gran modelo lingüístico, GPT-4. Este modelo es un gran modelo multimodal que puede aceptar tanto entradas de imagen como de texto y generar salidas de texto.
Libere todo el potencial de GPT-3 mediante el ajuste fino. Aprenda a utilizar la API de OpenAI y Python para mejorar este modelo de red neuronal avanzado para su caso de uso específico.
Esta guía te acompanya a través de los fundamentos de la API ChatGPT, demostrando su potencial en el procesamiento del lenguaje natural y la comunicación impulsada por la IA.
Descubra cómo la nueva capacidad de llamada a funciones de OpenAI permite a los modelos GPT generar salidas JSON estructuradas, resolviendo problemas comunes de desarrollo causados por salidas irregulares.
ChatGPT es un innovador modelo de lenguaje de gran tamaño para generar texto. Ya está cambiando la forma en que escribimos casi todo tipo de textos, desde tutoriales como éste, hasta descripciones de productos autogeneradas, resultados del motor de búsqueda de Bing y docenas de casos de uso de datos, como se describe en la hoja de trucos ChatGPT para la ciencia de datos.
Para un uso interactivo, la interfaz web de ChatGPT es ideal. Sin embargo, OpenAI (la empresa que está detrás de ChatGPT) también tiene una interfaz de programación de aplicaciones (API) que te permite interactuar con ChatGPT y sus otros modelos utilizando código.
En este tutorial, aprenderás a trabajar con el paquete
openaide Python para mantener conversaciones programáticamente con ChatGPT.Ten en cuenta que OpenAI cobra por utilizar la API GPT. (A veces se proporcionan créditos gratuitos a los nuevos usuarios, pero no es transparente quién obtiene el crédito ni cuánto durará este trato). Cuesta 0,002 $ / 1000 tokens, donde 1000 tokens equivalen a unas 750 palabras. Ejecutar todos los ejemplos de este tutorial una vez debería costar menos de 2 céntimos de euro (pero si vuelves a ejecutar tareas, se te cobrará cada vez).
¿Cuándo debes utilizar la API en lugar de la Interfaz Web?
La aplicación web ChatGPT es una gran interfaz para los modelos GPT. Sin embargo, si quieres incluir la IA en una canalización de datos o en un software, la API es más apropiada. Algunos posibles casos de uso para los profesionales de los datos son:
Crear una cuenta de desarrollador de OpenAI
Para utilizar la API, tienes que crear una cuenta de desarrollador en OpenAI. Necesitarás tener a mano tu dirección de correo electrónico, tu número de teléfono y los datos de tu tarjeta de débito o crédito.
Sigue estos pasos:
Almacena de forma segura las credenciales de tu cuenta
¡La clave secreta debe mantenerse en secreto! De lo contrario, otras personas podrán utilizarla para acceder a la API, y tú pagarás por ello. Los siguientes pasos describen cómo almacenar de forma segura tu clave utilizando DataCamp Workspace. Si utilizas una plataforma diferente, consulta la documentación de dicha plataforma. También puedes pedir consejo a ChatGPT. Aquí tienes una sugerencia:
> Eres un experto en seguridad informática. Estás hablando con un científico de datos. Explica las mejores prácticas para almacenar de forma segura las claves privadas utilizadas para acceder a la API.
Configurar Python
Para utilizar GPT a través de la API, necesitas importar los paquetes Python
osyopenai.Si utilizas un Jupyter Notebook (como DataCamp Workspace), también es útil importar algunas funciones de
IPython.display.Un ejemplo también utiliza el paquete yfinance para recuperar los precios de las acciones.
La otra tarea de configuración es poner la variable de entorno que acabas de crear en un lugar en el que el paquete openai pueda verla.
El patrón de código para llamar a GPT a través de la API
El patrón de código para llamar a la API de OpenAI y obtener una respuesta de chat es el siguiente:
Aquí hay varias cosas que desentrañar.
Nombres de los modelos de API de OpenAI para GPT
Los nombres de los modelos aparecen en la página Descripción general de los modelos de la documentación para desarrolladores. En este tutorial, utilizarás
gpt-3.5-turbo, que es el último modelo utilizado por ChatGPT que tiene acceso público a la API. (Cuando esté ampliamente disponible, querrás cambiar agpt-4.)Tipos de mensajes GPT de la API OpenAI
Hay tres tipos de mensajes documentados en la Introducción a la documentación del Chat:
systemdescriben el comportamiento del asistente de IA. Un mensaje system útil para los casos de uso de la ciencia de datos es "You are a helpful assistant who understands data science."userdescriben lo que quieres que diga el asistente de IA. A lo largo de este tutorial veremos ejemplos de mensajes de usuarioassistantdescriben respuestas anteriores en la conversación. Veremos cómo mantener una conversación interactiva en tareas posterioresEl primer mensaje debe ser un mensaje del sistema. Los mensajes adicionales deben alternarse entre el usuario y el asistente.
Tu primera conversación: Generar un conjunto de datos
Generar conjuntos de datos de muestra es útil para probar tu código con distintos escenarios de datos o para demostrar el código a otras personas. Para obtener una respuesta útil de GPT, tienes que ser preciso y especificar los detalles de tu conjunto de datos, incluyendo:
Aquí tienes un ejemplo de mensaje de usuario para crear un conjunto de datos.
Incluyamos este mensaje en el patrón de código anterior.
Comprueba que la respuesta de GPT es OK
Las llamadas a la API son "arriesgadas" porque pueden surgir problemas ajenos a tu portátil, como problemas de conectividad a Internet, o un problema con el servidor que te envía los datos, o porque te quedaste sin crédito API. Debes comprobar que la respuesta que obtienes es correcta.
Los modelos GPT devuelven un código de estado con uno de cuatro valores, documentados en la sección Formato de respuesta de la documentación del Chat.
stop: la API devolvió el resultado completo del modelolength: resultado incompleto del modelo debido al parámetro max_tokens o al límite de tokenscontent_filter: contenido omitido debido a una marca de nuestros filtros de contenidonull: respuesta de la API aún en curso o incompletaLa API de GPT envía datos a Python en formato JSON, por lo que la variable de respuesta contiene listas y diccionarios profundamente anidados. ¡Es un poco pesado trabajar con él!
Para una variable de respuesta llamada
response, el código de estado se almacena en el siguiente lugar.Extraer el mensaje del asistente de IA
Dentro de la variable de respuesta está el texto que pedimos a GPT que generara. Por suerte, siempre está en el mismo sitio.
El contenido de la respuesta puede imprimirse como de costumbre con
print(content), pero es contenido Markdown, que los cuadernos Jupyter pueden renderizar, mediantedisplay(Markdown(content))Utiliza una función auxiliar para llamar a GPT
Necesitas escribir un montón de código repetitivo para hacer estas tres simples cosas. Es útil disponer de una función wrapper que elimine las partes aburridas. De este modo, podemos centrarnos en los casos de uso de la ciencia de datos.
Esperemos que OpenAI mejore la interfaz de su paquete Python para que este tipo de cosas estén integradas. Mientras tanto, siéntete libre de utilizarlo en tu propio código.
La función toma dos argumentos.
system: una cadena que contiene el mensaje del sistema.user_assistant: una matriz de cadenas que alternan el mensaje del usuario y el mensaje del asistente.El valor de retorno es el contenido generado.
Un ejemplo de uso de esta función es
Reutilizar respuestas del Asistente de IA
En muchas situaciones, desearás entablar una conversación más larga con la IA. Es decir, envías una solicitud a GPT, recibes una respuesta y envías otra solicitud para continuar el chat. En este caso, tienes que incluir la respuesta anterior de GPT en la segunda llamada a la API, para que GPT tenga el contexto completo. Esto mejorará la precisión de la respuesta y aumentará la coherencia en toda la conversación.
Para reutilizar el mensaje de GPT, lo recuperas de la respuesta y luego lo pasas a una nueva llamada al chat.
Ejemplo: Analizar el conjunto de datos de la muestra
Intentemos calcular la media de la columna de ventas del conjunto de datos generado anteriormente. Ten en cuenta que, como la primera vez no utilizamos la función
chat(), tenemos que utilizar el código de subconjunto más largo para llegar al texto de respuesta anterior. Si utilizaschat(), el código es más sencillo.Utilizar GPT en una canalización
Una gran ventaja de utilizar la API frente a la interfaz web es que puedes combinar GPT con otras API. Recoger datos de una o varias fuentes y aplicarles IA es un potente flujo de trabajo.
Aplicación de la IA GPT a los datos meteorológicos
Aquí, obtendremos una previsión meteorológica con el paquete weather2 (PyPI) y utilizaremos GPT para obtener ideas de actividades.
Muy bien. ¡Una parte de mí desearía estar mañana en Miami!
Llévalo al siguiente nivel
Puedes obtener más información sobre el uso de GPT en el curso Introducción a ChatGPT. (Pronto habrá un curso completo sobre cómo trabajar con la API de OpenAI)
Para tener una referencia de lo que acabas de aprender, hazte con una copia de la Hoja de trucos de la API OpenAI en Python o mira la grabación de la formación en directo Introducción a la API OpenAI y ChatGPT.
Si te interesa la transcripción de texto a voz, lee el tutorial Convertir voz en texto con la API Whisper de OpenAI.