Logotipo de Zephyrnet

Desarrollo de resúmenes de texto: un tutorial de Python con GPT-3.5

Fecha:

Desarrollo de resúmenes de texto: un tutorial de Python con GPT-3.5
Imagen de frimufilms on Freepik
 

Esta es una era en la que el avance de la IA se produce a diario. No teníamos muchos generados por IA en público hace unos años, pero ahora la tecnología es accesible para todos. Es excelente para muchos creadores individuales o empresas que desean aprovechar significativamente la tecnología para desarrollar algo complejo, lo que puede llevar mucho tiempo.

Uno de los avances más increíbles que cambia la forma en que trabajamos es el lanzamiento del Modelo GPT-3.5 de OpenAI. ¿Qué es el modelo GPT-3.5? Si dejo que la modelo hable por sí sola. En ese caso, la respuesta es “un modelo de IA muy avanzado en el campo del procesamiento del lenguaje natural, con grandes mejoras en la generación de texto contextualmente preciso y relevantet ”.

OpenAI proporciona una API para el modelo GPT-3.5 que podemos usar para desarrollar una aplicación simple, como un resumen de texto. Para hacer eso, podemos usar Python para integrar la API del modelo en nuestra aplicación prevista sin problemas. ¿Cómo es el proceso? Entremos en ello.

Hay algunos requisitos previos antes de seguir este tutorial, que incluyen:

– Conocimiento de Python, incluido el conocimiento del uso de bibliotecas externas e IDE

– Comprensión de las API y manejo del punto final con Python

– Tener acceso a las API de OpenAI

Para obtener acceso a las API de OpenAI, debemos registrarnos en el Plataforma de desarrollo OpenAI y visite Ver claves API dentro de su perfil. En la web, haga clic en el botón "Crear nueva clave secreta" para adquirir acceso a la API (vea la imagen a continuación). Recuerde guardar las claves, ya que no se mostrarán las claves después de eso.
 

Desarrollo de resúmenes de texto: un tutorial de Python con GPT-3.5
Imagen del autor
 

Con toda la preparación lista, intentemos comprender lo básico del modelo de API de OpenAI.

La Modelo de familia GPT-3.5 se especificó para muchas tareas lingüísticas, y cada modelo de la familia sobresale en algunas tareas. Para este ejemplo de tutorial, usaríamos el gpt-3.5-turbo ya que era el modelo actual recomendado cuando se escribió este artículo por su capacidad y rentabilidad.

A menudo usamos el text-davinci-003 en el tutorial de OpenAI, pero usaríamos el modelo actual para este tutorial. Confiaríamos en la Finalización de chat endpoint en lugar de Finalización porque el modelo recomendado actual es un modelo de chat. Incluso si el nombre fuera un modelo de chat, funciona para cualquier tarea de idioma.

Tratemos de entender cómo funciona la API. Primero, necesitamos instalar los paquetes actuales de OpenAI. 

pip install openai

 

Una vez que hayamos terminado de instalar el paquete, intentaremos usar la API conectándonos a través del punto final de ChatCompletion. Sin embargo, necesitamos configurar el entorno antes de continuar.

En su IDE favorito (para mí, es VS Code), cree dos archivos llamados .env y summarizer_app.py, similar a la imagen de abajo.

 

Desarrollo de resúmenes de texto: un tutorial de Python con GPT-3.5
Imagen del autor
 

La summarizer_app.py es donde construiríamos nuestra sencilla aplicación de resumen, y el .env El archivo es donde almacenaríamos nuestra clave API. Por razones de seguridad, siempre se recomienda separar nuestra clave API en otro archivo en lugar de codificarla en el archivo de Python.

En .env file ponga la siguiente sintaxis y guarde el archivo. Reemplace your_api_key_here con su clave API real. No cambie la clave API en un objeto de cadena; déjalos como están. 

OPENAI_API_KEY=your_api_key_here

 

Para comprender mejor la API GPT-3.5; usaríamos el siguiente código para generar la palabra resumen.

openai.ChatCompletion.create( model="gpt-3.5-turbo", max_tokens=100, temperature=0.7, top_p=0.5, frequency_penalty=0.5, messages=[ { "role": "system", "content": "You are a helpful assistant for text summarization.", }, { "role": "user", "content": f"Summarize this for a {person_type}: {prompt}", }, ],
)

 

El código anterior es cómo interactuamos con el modelo GPT-3.5 de las API de OpenAI. Usando la API de ChatCompletion, creamos una conversación y obtendremos el resultado deseado después de pasar el aviso.

Desglosemos cada parte para entenderlas mejor. En la primera línea, usamos el openai.ChatCompletion.create código para crear la respuesta desde el indicador que pasaríamos a la API.

En la siguiente línea, tenemos nuestros hiperparámetros que usamos para mejorar nuestras tareas de texto. Aquí está el resumen de cada función de hiperparámetro:

  • model: La familia modelo que queremos usar. En este tutorial, usamos el modelo recomendado actual (gpt-3.5-turbo).
  • max_tokens: El límite superior de las palabras generadas por el modelo. Ayuda a limitar la longitud del texto generado.
  • temperature: La aleatoriedad de la salida del modelo, con una temperatura más alta, significa un resultado más diverso y creativo. El rango de valores es de 0 a infinito, aunque los valores superiores a 2 no son comunes. 
  • top_p: El muestreo Top P o top-k o el muestreo de núcleo es un parámetro para controlar el grupo de muestreo de la distribución de salida. Por ejemplo, el valor 0.1 significa que el modelo solo muestra la salida del 10 % superior de la distribución. El rango de valores estuvo entre 0 y 1; valores más altos significan un resultado más diverso.
  • frequency_penalty: La penalización por el token de repetición de la salida. El rango de valores entre -2 y 2, donde los valores positivos evitarían que el modelo repita el token, mientras que los valores negativos alentarían al modelo a usar palabras más repetitivas. 0 significa que no hay penalización.
  • messages: El parámetro donde pasamos nuestro mensaje de texto para ser procesado con el modelo. Pasamos una lista de diccionarios donde la clave es el objeto de función (ya sea "sistema", "usuario" o "asistente") que ayuda al modelo a comprender el contexto y la estructura, mientras que los valores son el contexto.
    •  El "sistema" de roles son las pautas establecidas para el comportamiento del "asistente" del modelo,
    •  El rol "usuario" representa el aviso de la persona que interactúa con el modelo,
    •  El rol "asistente" es la respuesta al mensaje "usuario"

Habiendo explicado el parámetro anterior, podemos ver que el messages El parámetro anterior tiene dos objetos de diccionario. El primer diccionario es cómo configuramos el modelo como un resumen de texto. El segundo es donde pasaríamos nuestro texto y obtendríamos el resultado del resumen. 

En el segundo diccionario, también verá la variable person_type y prompt. person_type es una variable que utilicé para controlar el estilo resumido, que mostraré en el tutorial. Mientras que la prompt Es por donde pasaríamos nuestro texto para que sea resumido.

Continuando con el tutorial, coloque el siguiente código en el summarizer_app.py e intentaremos ver cómo funciona la siguiente función.

import openai
import os
from dotenv import load_dotenv load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY") def generate_summarizer( max_tokens, temperature, top_p, frequency_penalty, prompt, person_type,
): res = openai.ChatCompletion.create( model="gpt-3.5-turbo", max_tokens=100, temperature=0.7, top_p=0.5, frequency_penalty=0.5, messages= [ { "role": "system", "content": "You are a helpful assistant for text summarization.", }, { "role": "user", "content": f"Summarize this for a {person_type}: {prompt}", }, ], ) return res["choices"][0]["message"]["content"]

 

El código anterior es donde creamos una función de Python que aceptaría varios parámetros que hemos discutido anteriormente y devolvería la salida de resumen de texto. 

Pruebe la función anterior con su parámetro y vea el resultado. Luego, continuemos con el tutorial para crear una aplicación simple con el paquete streamlit.

iluminado es un paquete Python de código abierto diseñado para crear aplicaciones web de aprendizaje automático y ciencia de datos. Es fácil de usar e intuitivo, por lo que se recomienda para muchos principiantes. 

Instalemos el paquete streamlit antes de continuar con el tutorial.

pip install streamlit

 

Una vez finalizada la instalación, coloque el siguiente código en el summarizer_app.py.

import streamlit as st #Set the application title
st.title("GPT-3.5 Text Summarizer") #Provide the input area for text to be summarized
input_text = st.text_area("Enter the text you want to summarize:", height=200) #Initiate three columns for section to be side-by-side
col1, col2, col3 = st.columns(3) #Slider to control the model hyperparameter
with col1: token = st.slider("Token", min_value=0.0, max_value=200.0, value=50.0, step=1.0) temp = st.slider("Temperature", min_value=0.0, max_value=1.0, value=0.0, step=0.01) top_p = st.slider("Nucleus Sampling", min_value=0.0, max_value=1.0, value=0.5, step=0.01) f_pen = st.slider("Frequency Penalty", min_value=-1.0, max_value=1.0, value=0.0, step=0.01) #Selection box to select the summarization style
with col2: option = st.selectbox( "How do you like to be explained?", ( "Second-Grader", "Professional Data Scientist", "Housewives", "Retired", "University Student", ), ) #Showing the current parameter used for the model with col3: with st.expander("Current Parameter"): st.write("Current Token :", token) st.write("Current Temperature :", temp) st.write("Current Nucleus Sampling :", top_p) st.write("Current Frequency Penalty :", f_pen) #Creating button for execute the text summarization
if st.button("Summarize"): st.write(generate_summarizer(token, temp, top_p, f_pen, input_text, option))

 

Intente ejecutar el siguiente código en su símbolo del sistema para iniciar la aplicación.

streamlit run summarizer_app.py

 

Si todo funciona bien, verá la siguiente aplicación en su navegador predeterminado.

 

Desarrollo de resúmenes de texto: un tutorial de Python con GPT-3.5
Imagen del autor
 

Entonces, ¿qué sucedió en el código anterior? Permítanme explicar brevemente cada función que usamos:

  • .st.title: Proporcione el texto del título de la aplicación web.
  • .st.write: Escribe el argumento en la aplicación; podría ser cualquier cosa menos principalmente una cadena de texto.
  • .st.text_area: Proporcione un área para la entrada de texto que se puede almacenar en la variable y usar para el indicador de nuestro resumen de texto
  • .st.columns: Contenedores de objetos para proporcionar interacción lado a lado.
  • .st.slider: Proporcione un widget de control deslizante con valores establecidos con los que el usuario puede interactuar. El valor se almacena en una variable utilizada como parámetro del modelo.
  • .st.selectbox: Proporcione un widget de selección para que los usuarios seleccionen el estilo de resumen que desean. En el ejemplo anterior, usamos cinco estilos diferentes.
  • .st.expander: Proporcione un contenedor que los usuarios puedan expandir y contener múltiples objetos.
  • .st.button: proporciona un botón que ejecuta la función prevista cuando el usuario lo presiona.

Como streamlit diseñaría automáticamente la interfaz de usuario siguiendo el código dado de arriba a abajo, podríamos centrarnos más en la interacción.  

Con todas las piezas en su lugar, probemos nuestra aplicación de resumen con un ejemplo de texto. Para nuestro ejemplo, usaría el Página de Wikipedia de Teoría de la Relatividad texto a resumir. Con un parámetro predeterminado y un estilo de segundo grado, obtenemos el siguiente resultado.

Albert Einstein was a very smart scientist who came up with two important ideas about how the world works. The first one, called special relativity, talks about how things move when there is no gravity. The second one, called general relativity, explains how gravity works and how it affects things in space like stars and planets. These ideas helped us understand many things in science, like how particles interact with each other and even helped us discover black holes! 

 

Es posible que obtenga un resultado diferente al anterior. Probemos el estilo Housewives y modifiquemos un poco el parámetro (Token 100, Temperature 0.5, Nucleus Sampling 0.5, Frequency Penalty 0.3).

The theory of relativity is a set of physics theories proposed by Albert Einstein in 1905 and 1915. It includes special relativity, which applies to physical phenomena without gravity, and general relativity, which explains the law of gravitation and its relation to the forces of nature. The theory transformed theoretical physics and astronomy in the 20th century, introducing concepts like 4-dimensional spacetime and predicting astronomical phenomena like black holes and gravitational waves.

 

Como podemos ver, hay una diferencia de estilo para el mismo texto que proporcionamos. Con un indicador de cambio y un parámetro, nuestra aplicación puede ser más funcional. 

El aspecto general de nuestra aplicación de resumen de texto se puede ver en la imagen a continuación.

 

Desarrollo de resúmenes de texto: un tutorial de Python con GPT-3.5
Imagen del autor
 

Ese es el tutorial sobre cómo crear el desarrollo de aplicaciones de resúmenes de texto con GPT-3.5. Puede modificar la aplicación aún más e implementarla.

La IA generativa está aumentando y deberíamos aprovechar la oportunidad creando una aplicación fantástica. En este tutorial, aprenderemos cómo funcionan las API GPT-3.5 OpenAI y cómo usarlas para crear una aplicación de resumen de texto con la ayuda de Python y el paquete streamlit.
 
 
Cornelio Yudha Wijaya es subgerente de ciencia de datos y escritor de datos. Mientras trabaja a tiempo completo en Allianz Indonesia, le encanta compartir consejos sobre Python y datos a través de las redes sociales y los medios de escritura.
 

punto_img

Información más reciente

punto_img