Cómo utilizar la API de OpenAI para generar texto con ChatGPT en Python

Introducción

Bienvenidos a este tutorial sobre cómo generar texto con la tecnología de lenguaje natural, específicamente utilizando el modelo ChatGPT de OpenAI. ChatGPT es un modelo de lenguaje natural que ha sido entrenado en una enorme cantidad de datos para generar texto coherente y relevante en respuesta a una entrada de texto dada. En este tutorial, aprenderás a utilizar la API de OpenAI para generar texto a partir de un prompt (instrucción), así como a interactuar con la interfaz de usuario (UI) que hemos creado con la ayuda de la biblioteca de Python, tkinter.

Para utilizar la API de OpenAI, necesitarás una clave de API válida. Esta clave te permite acceder a los recursos de OpenAI y realizar solicitudes a sus modelos de lenguaje natural. Además, para desarrollar esta interfaz de usuario (UI) utilizaremos la biblioteca de Python, tkinter, que es una herramienta muy útil para crear interfaces gráficas de usuario (GUI) de manera sencilla y rápida. En este tutorial, exploraremos cómo usar estas herramientas para generar texto con el modelo ChatGPT y cómo crear una interfaz de usuario para interactuar con él.

Proyecto de generación de texto en Python

Este proyecto se trata de un generador de texto que utiliza la API de OpenAI para generar respuestas a partir de un prompt o consigna dada por el usuario, esto como he dicho por medio del prompt. el código está escrito en Python y utiliza la biblioteca Tkinter que una herramientas bien interesante para crear una interfaz gráfica de usuario (GUI) en la que se puede ingresar el prompt, generar el texto y guardar los resultados en un archivo de texto.

El programa comienza por importar la biblioteca OpenAI y establecer una clave de API para acceder a los servicios de OpenAI. Luego, define una función llamada generate_text() que se activa al hacer clic en el botón «Generar Texto» y que utiliza la API de OpenAI para generar una respuesta basada en el prompt ingresado.

Además, el programa tiene otras funciones, como clear_results() para limpiar la sección de resultados, y save_results() para guardar los resultados en un archivo de texto en una ubicación seleccionada por el usuario. También hay botones para salir del programa y para limpiar la sección de resultados.

Para poder utilizar estas bibliotecas en Python, debes asegurarte de tenerlas instaladas en tu sistema.

  1. OpenAI: para instalar esta biblioteca, puedes usar el siguiente comando en la terminal de tu sistema operativo:

pip install openai

  1. Tkinter: esta biblioteca ya viene incluida en la instalación estándar de Python, así que no es necesario instalarla por separado.

Codigo del Proyecto en Python


import openai # importamos la biblioteca OpenAI para usar su API
import tkinter as tk # importamos la biblioteca tkinter y la renombramos como "tk"
from tkinter import filedialog # importamos la clase "filedialog" de tkinter
from tkinter import messagebox # importamos la clase "messagebox" de tkinter

openai.api_key = "TU API AQUI" # establecemos la clave de la API de OpenAI

#función para generar el texto basado en el prompt
def generate_text():
    prompt = input_box.get()# obtenemos el texto ingresado por el usuario
    if prompt in ['exit', 'salir', 'quit', 'terminar']:
        root.destroy()# si el prompt es una de estas palabras, salimos del programa
        return
    with open("consulta.txt", "a") as file: # abrimos un archivo de texto para escribir el prompt
        file.write(prompt + "\n")
    completion = openai.Completion.create(   # utilizamos la API de OpenAI para generar la respuesta basada en el prompt
        engine="text-davinci-003",
        prompt=prompt,
        max_tokens=1024,
        n=1,
        stop=None,
        temperature=0.3
    )
    response = completion.choices[0].text # obtenemos la respuesta generada por la API
    results_text.delete('1.0', tk.END) # limpiamos la sección de resultados
    results_text.insert(tk.END, response) # mostramos la respuesta generada en la sección de resultados
    input_box.delete(0, tk.END) # limpiamos el campo de entrada

#unción para limpiar la sección de resultados
def clear_results():
    results_text.delete('1.0', tk.END)

#función para guardar los resultados en un archivo de texto
def save_results():
    result = results_text.get('1.0', tk.END)# obtenemos los resultados de la sección de resultados
    if not result.strip():
        messagebox.showerror("Error", "No hay resultados para guardar.")# si no hay resultados, mostramos un mensaje de error
        return
    file_path = filedialog.asksaveasfilename(defaultextension=".txt", filetypes=(("Text files", "*.txt"), ("All files", "*.*")))
    if file_path:
        with open(file_path, "w") as f:
            f.write(result)# guardamos los resultados en el archivo de texto
            messagebox.showinfo("Guardado", f"Los resultados se han guardado en {file_path}.")

root = tk.Tk() # creamos una ventana principal
root.title("Generador de Texto") # establecemos el título de la ventana

canvas = tk.Canvas(root, width=800, height=800) # creamos un lienzo en la ventana
canvas.pack() # agregamos el lienzo a la ventana

prompt_label = tk.Label(root, text="Introduzca el prompt:", font=("Arial", 14, "bold"), justify="center", wraplength=400) # creamos una etiqueta de texto para indicar al usuario que ingrese el prompt
prompt_label.place(relx=0.5, rely=0.1, anchor=tk.CENTER)

#Creación de la etiqueta para el prompt
prompt_label = tk.Label(root, text="Introduzca el prompt:", font=("Arial", 14, "bold"), justify="center", wraplength=400)

#Posicionamiento de la etiqueta del prompt
prompt_label.place(relx=0.5, rely=0.1, anchor=tk.CENTER)

#Creación de la caja de entrada de texto para el prompt
input_box = tk.Entry(root, width=70, font=("Arial", 14, "bold"), justify="center")

#Posicionamiento de la caja de entrada de texto
input_box.place(relx=0.5, rely=0.2, anchor=tk.CENTER, height=60)

#Creación del botón para generar texto
generate_button = tk.Button(root, text="Generar Texto", command=generate_text, fg="white", bg="green", font=("Arial", 16, "bold"))

#Posicionamiento del botón para generar texto
generate_button.place(relx=0.5, rely=0.3, anchor=tk.CENTER)

#Creación de la etiqueta para los resultados
results_label = tk.Label(root, text="Resultados:")

#Posicionamiento de la etiqueta de los resultados
results_label.place(relx=0.5, rely=0.4, anchor=tk.CENTER)

#Creación del campo de texto para los resultados
results_text = tk.Text(root, width=60, height=10, font=("Arial", 12), fg="black", wrap="word")

#Posicionamiento del campo de texto de los resultados
results_text.place(relx=0.5, rely=0.5, anchor=tk.CENTER)

#Creación del botón para limpiar los resultados
clear_button = tk.Button(root, text="Limpiar", command=clear_results, fg="black", bg="yellow", font=("Arial", 16, "bold"))

#Posicionamiento del botón para limpiar los resultados
clear_button.place(relx=0.3, rely=0.9, anchor=tk.CENTER)

#Creación del botón para guardar los resultados
save_button = tk.Button(root, text="Guardar", command=save_results, bg="white", font=("Arial", 16, "bold"))

#Posicionamiento del botón para guardar los resultados
save_button.place(relx=0.5, rely=0.9, anchor=tk.CENTER)

#Creación del botón para salir del programa
exit_button = tk.Button(root, text="Salir", command=root.destroy, fg="white", bg="red", font=("Arial", 16, "bold"))

#Posicionamiento del botón para salir del programa
exit_button.place(relx=0.7, rely=0.9, anchor=tk.CENTER)

#Ejecución del bucle principal del programa
root.mainloop()

Aplicación en Ejecución y el resultado

Resultado en Visual Studio code

Conclusión

Finalmente hemos aprendido cómo utilizar la API de OpenAI para generar texto con el modelo ChatGPT en Python y cómo crear una interfaz de usuario con la biblioteca tkinter para interactuar con él. Ahora puedes experimentar con diferentes prompts y ver cómo el modelo genera respuestas coherentes y relevantes.

Sin embargo, este proyecto se puede mejorar de varias maneras, como agregar opciones para seleccionar el modelo de lenguaje a utilizar, agregar más controles de entrada de texto y mejorar la interfaz de usuario en general. Además, se pueden explorar otros modelos de lenguaje natural para generar diferentes tipos de texto, como resúmenes, traducciones y análisis de sentimientos.

Consejos de Mejora

  • Experimenta con diferentes prompts para obtener resultados interesantes y sorprendentes.
  • Agrega más opciones de control de entrada de texto para que el usuario pueda personalizar su consulta.
  • Añade más funciones para interactuar con diferentes modelos de lenguaje natural y generar diferentes tipos de texto.
  • Mejora la interfaz de usuario con gráficos y diseños atractivos para una mejor experiencia de usuario.
  • Aprende sobre otros modelos de lenguaje natural y técnicas avanzadas de procesamiento de lenguaje natural para llevar tus habilidades al siguiente nivel.

 

¡No olvides suscribirte a mi blog, para estar al día con mis publicaciones sobre tecnología y programación! Además, te invito a seguir mi canal de YouTube, Juancito Peña, donde comparto tutoriales y contenido relacionado con la programación y la tecnología en general. Si te gustan mis videos, no dudes en darles me gusta y compartirlos con tus amigos y colegas. ¡Tu apoyo es muy valioso para mí!

Comparte este Contenido en tus Redes Sociales

Deja un comentario