Crea tu propio chatbot con la API de OpenAI y Gradio en Python

Search for a command to run...

No comments yet. Be the first to comment.
Introducción nanobot es una plataforma de asistente personal de IA diseñada para ejecutarse en tu propia infraestructura, ya sea una laptop, un servidor pequeño o un contenedor en la nube (VPS). A dif

Continuando con un post anterior donde publicamos nuestra librería a PyPI, vamos a ir un paso más allá en el proceso de construcción y despliegue (o, mejor dicho, build y release). En este tutorial, crearemos nuestro propio workflow en GitHub Actions...

El objetivo de este tutorial es guiarte paso a paso en el proceso de creación y publicación de tu propia librería en Python. Aunque Python ofrece una biblioteca estándar muy completa, aprovechar las contribuciones de la comunidad en PyPI te permite e...

En un post anterior, exploramos los conceptos básicos de la shell de la CLI de Odoo y cómo configurar IPython como REPL para mejorar nuestra experiencia de desarrollo. Ahora, profundizaremos en el uso de la shell de Odoo, abordando temas más avanzado...

¡Hola a todos! Hoy vamos a explorar un tema esencial para todos los programadores de Odoo que deseen profundizar en el desarrollo y uso del ORM de Odoo: la shell de la CLI de Odoo. La CLI (Command Line Interface) de Odoo es la forma en que se ejecuta...

Hoy vamos a aprender a crear una aplicación en Python utilizando la API de OpenAI y Gradio. Esta publicación será útil para las personas que quieren aprender a utilizar la API de OpenAI y crear una aplicación con una interfaz de usuario interactiva de forma rapida y sin necesidad de usar HTML, CSS y Javscript.
Antes de empezar, debemos entender qué es la API de OpenAI y Gradio.
OpenAI es una organización de investigación en inteligencia artificial. Ofrecen una API que permite acceder a modelos de inteligencia artificial avanzados para realizar diversas tareas, como responder preguntas, traducir oraciones, resumir noticias y más.
Por otro lado, Gradio es una herramienta de código abierto para crear interfaces de usuario interactivas para modelos de inteligencia artificial. Ofrece una manera fácil y rápida de crear una interfaz de usuario para cualquier modelo de aprendizaje automático.
Ahora que tenemos una comprensión básica de ambas herramientas, comencemos con el tutorial.
Para usar la API de OpenAI, necesitamos generar una clave API. Siga estos pasos para obtener su clave API:
Visite el sitio web de OpenAI y regístrese para obtener una cuenta gratuita.
Inicie sesión en su cuenta y vaya a la página de la API.
Cree una nueva clave API y cópiela porque la usaremos mas adelante.

En este tutorial, crearemos una aplicación de Chatbot utilizando la API de OpenAI y Gradio. Para empezar, necesitamos ubicarnos en la carpeta donde vamos a trabajar nuestro proyecto e instalar ambos paquetes en nuestra máquina. Como un paso previo a la instalación de las dependecias se puede crear un entorno virtual de python para que las librerias no tengan colision con las del sistema:
python3 -m venv venv
source venv/bin/activate
Luego de activar el entorno virtual, procedemos a instalar las dependencias:
pip install openai
pip install gradio
Una vez que tengamos ambos paquetes instalados, podemos comenzar a escribir nuestro código.
Primero, debemos configurar la API de OpenAI para poder acceder a sus servicios. Una vez que tengamos la clave API, podemos configurarla en nuestro código de Python creando un archivo llamado chatbot.py utilizando el siguiente código.
import openai
import os
# Obtener la clave API de OpenAI de la variable de entorno
openai.api_key = os.environ.get("OPENAI_API_KEY", None)
Asegúrate de configurar la variable de entorno OPENAI_API_KEY con tu clave API real antes de ejecutar el código, sino en la ultima sección te explico como hacerlo.
Ahora que tenemos la clave API configurada, podemos comenzar a interactuar con la API de OpenAI. En este tutorial, crearemos un chatbot que puede responder a las preguntas de los usuarios.
Para crear un chatbot utilizando la API de OpenAI, necesitamos proporcionar una serie de mensajes como entrada a la API. Cada mensaje es una cadena de texto que representa el mensaje enviado por un usuario o el chatbot. Usaremos un mensaje por defecto para configurar y condicionar las respuesta GPT:
messages = [
{
"role": "system",
"content": "Act like a personal assistant. You can respond to questions, translate sentences, summarize news, and give recommendations."
}
]
En este ejemplo, el chatbot comienza presentándose como un asistente personal y proporcionando una lista de tareas que puede realizar.
Una vez que tenemos los mensajes de entrada preparados, podemos enviarlos a la API de OpenAI para generar una respuesta utilizando el siguiente código.
def openai_process_message(user_message):
# Set the prompt for OpenAI Api
messages = [
{
"role": "system",
"content": "Act like a personal assistant. You can respond to questions, translate sentences, summarize news, and give recommendations."
}
]
messages.append({"role": "user", "content": user_message})
# Call the OpenAI Api to process our prompt
openai_response = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=messages, max_tokens=2000)
# Parse the response to get the response text for our prompt
response_text = openai_response.choices[0].message.content
return response_text
La función openai_process_message toma como entrada el mensaje del usuario y lo agrega a la lista de mensajes como un mensaje de usuario. A continuación, llama a la API de OpenAI para procesar los mensajes y generar una respuesta. Por último, la función devuelve la respuesta generada por la API de OpenAI.
A continuación, crearemos una lista de ejemplos que se utilizarán para mostrar ejemplos en la interfaz de usuario. En este caso, utilizaremos preguntas sobre la inteligencia artificial.
examples = [
"Que es la IA?",
"Como funciona una red neuronal?",
"pueden las maquinas aprender?",
]
Luego, creamos una instancia de la clase Interface de Gradio y le pasamos la función openai_process_message() como argumento. A continuación, definimos el tipo de entrada y salida que deseamos para nuestra interfaz. En este caso, utilizaremos una caja de texto para la entrada del usuario y otra para mostrar la respuesta del chatbot.
# Create a Gradio interface instance
demo = gr.Interface(
fn=openai_process_message,
inputs=gr.Textbox(lines=5, label='Pregunta', placeholder='Escribe tu pregunta aquí...'),
outputs=gr.Textbox(label='Respuesta'),
examples=examples,
title="Chatbot OpenAI API",
)
Finalmente, lanzamos la interfaz de usuario utilizando el método launch().
if __name__ == "__main__":
demo.launch()
Recuerda que antes de lanzar la aplicación, debes configurar la variable de entorno "OPENAI_API_KEY" con tu clave de API de OpenAI. Puedes hacerlo de la siguiente manera en tu terminal:
export OPENAI_API_KEY=<tu_clave_de_api>
Donde <tu_clave_de_api> debe ser reemplazada con tu clave de API real de OpenAI.
Para lanzar la aplicación, puedes simplemente ejecutar el archivo Python en tu terminal o IDE de Python:
python chatbot.py

Con esto ya tenemos nuestra app corriendo sobre https://127.0.0.1:7860 y con la siguiente UI de forma facil y rapida:

Ahora tenemos una aplicación completa de preguntas y respuestas que utiliza la API de OpenAI para generar respuestas a cualquier pregunta que el usuario pueda tener. Esta aplicación es solo un ejemplo de lo que se puede hacer con la API de OpenAI y la biblioteca Gradio. Hay muchas otras aplicaciones de inteligencia artificial que se pueden crear utilizando estas herramientas.
En un proximo post voy a implementar otra UI usando el componente Chatbot de Gradio para darle un diseño mas acoorde al un chatbot y algunos otros tips a la hora de usar Gradio, por el momento es un buen punto de partida para practicar y probar estas tecnologias.
Todo el codigo y los pasos para instalar la aplicación estan en mi cuenta de GitHub