No te habrás perdido el frenesí de emoción que rodea a ChatGPT (Chat Generative-Pre-Trained Transformer). Puede crear imágenes, escribir código, canciones, poesía y tratar de resolver nuestros problemas, grandes o pequeños. Puede que no sepa cómo vencer a la simulación Kobayashi Maru de Star Trek, pero puede escribir código Python y Bash con facilidad. En un empujón también se puede utilizar para escribir Código G Para el mejores impresoras 3D aunque todavía tenemos que probarlo en nuestro Creality Ender 2 Pro.
Por lo general, interactuamos con ChatGPT a través del navegador, pero en este tutorial usaremos una biblioteca especial de Python que conectará nuestro humilde frambuesa pi a la poderosa IA y brindarnos una herramienta para responder casi cualquier pregunta. Este proyecto no es exclusivo de Raspberry Pi; también se puede usar con PC con Windows, macOS y Linux. Si puede ejecutar Python en él, es probable que este proyecto también funcione.
Si está utilizando una Raspberry Pi, puede usar casi cualquier modelo con este proyecto, ya que simplemente estamos realizando solicitudes a través de una conexión a Internet. Sin embargo, para obtener el mejor rendimiento en general, recomendamos un frambuesa pi 4 o Raspberry Pi 3B+.
Configuración de la clave API de ChatGPT para Raspberry Pi
Antes de que podamos usar ChatGPT con nuestra Raspberry Pi y Python, primero debemos configurar una clave API. Esta clave permitirá que nuestro código se conecte a nuestra cuenta de OpenAI y use IA para responder consultas, escribir código, escribir poesía o crear la próxima canción de éxito.
1. Inicie sesión en su cuenta de OpenAI.
2. Haga clic en el menú y seleccione Ver claves API.
3. Haga clic en Crear nueva clave secreta para generar una clave API. Asegúrese de copiar y pegar esta clave en un lugar seguro, no se volverá a mostrar. Nunca comparta sus claves API, son exclusivas de su cuenta, cualquier costo incurrido provendrá de su cuenta.
Instalación de la API Python de ChatGPT en Raspberry Pi
Con nuestra clave API en la mano, ahora podemos configurar nuestra Raspberry Pi y específicamente Python para usar la API a través de la biblioteca openAI Python.
1. Abra una Terminal y actualice el software en su Raspberry Pi. Este mandato es doble. Primero ejecuta una actualización, comprobando que la lista de repositorios de software en nuestra Pi está actualizada. De lo contrario, descarga los últimos detalles. El “&&” significa que si el primer comando (actualizar) se ejecuta correctamente, entonces comenzará el segundo comando en el que actualizamos el software. El indicador «-y» se utiliza para aceptar la instalación sin intervención del usuario.
sudo apt update && sudo apt upgrade -y
2. Instale la biblioteca openai Python usando el administrador de paquetes pip.
pip3 install openai
3. Abra el archivo bashrc oculto en su directorio de inicio. Este archivo es donde necesitamos establecer una ruta, una ubicación donde Raspberry Pi OS y Python pueden buscar archivos ejecutables/de configuración.
nano ~/.bashrc
4. Con el teclado, desplácese hasta la parte inferior del archivo y agregue esta línea.
export PATH="$HOME/.local/bin:$PATH"
5. Guarde el archivo presionando CTRL + X, luego Y y Enter.
6. Vuelva a cargar la configuración de bashrc para finalizar la configuración. Luego cierre la terminal.
source ~/.bashrc
Creación de un chatbot ChatGPT para Raspberry Pi
El objetivo de nuestro chatbot es responder a las preguntas planteadas por el usuario. Siempre que la respuesta pueda estar en formato de texto, este código de proyecto funcionará. Cuando el usuario termina, puede escribir una palabra para salir o presionar CTRL+C para detener el código. Lo probamos con hechos y preguntas de trivia, luego le pedimos que escribiera código Python, Bash y un poco de G-Code para una impresora 3D.
1. lanzamiento thonyun editor de Python incorporado. Puede encontrarlo en el menú de Raspberry Pi, en Programación >> Thonny.
2. Importa la biblioteca openai. Esto permite que nuestro código Python se conecte y ChatGPT.
import openai
3. Cree un objeto, model_engine y allí almacene su modelo preferido. davinci-003 es el más capaz, pero también podemos usar (en orden de capacidad) “text-curie-001”, “text-babbage-001” y “text-ada-001”. El modelo ada tiene el costo de token más bajo.
model_engine = "text-davinci-003"
4. Cree un objeto, abra.api_key y almacene su clave API. Pegue su clave API entre comillas.
openai.api_key = "YOUR API KEY HERE”
5. Cree una función, GPT() que tome la consulta (pregunta) del usuario como argumento. Esto significa que podemos reutilizar la función para cualquier pregunta.
def GPT(query):
6. Cree un objeto de respuesta que pasará los detalles de nuestra consulta a ChatGPT. Utiliza nuestro modelo elegido y la consulta para hacer la pregunta. Establecimos el gasto máximo de tokens en 1024, pero en realidad, gastaremos mucho menos para que esto pueda modificarse. La “temperatura” controla qué tan creativas pueden ser las respuestas. Cuanto mayor sea el valor, digamos 0,9, más creativo intentará ser el modelo. 0.5 es una buena mezcla de creatividad y hechos.
response = openai.Completion.create(
engine=model_engine,
prompt=query,
max_tokens=1024,
temperature=0.5,
)
7. Devuelva los datos de ChatGPT, eliminando el texto de respuesta y la cantidad de tokens utilizados. Los datos devueltos están en formato de diccionario/JSON, por lo que debemos apuntar específicamente a los datos correctos usando claves. Estas claves devuelven los valores asociados.
return str.strip(response['choices'][0]['text']), response['usage']['total_tokens']
8. Cree una tupla y úsela para almacenar una lista de cadenas que se pueden usar para salir del chat. Las tuplas son inmutables, lo que significa que se pueden crear y destruir, pero el código en ejecución no las puede actualizar. Hacen configuraciones perfectas de «establecer y olvidar».
exit_words = ("q","Q","quit","QUIT","EXIT")
9. Use un intento, seguido de un tiempo verdadero: para indicar a Python que intente ejecutar nuestro código, y que lo haga para siempre.
try:
while True:
10 Imprimir una instrucción para el usuarioen este caso cómo salir del chat.
print("Type q, Q, quit, QUIT or EXIT and press Enter to end the chat session")
11 Capture la consulta del usuario mediante un aviso personalizado y guárdela en un objeto denominado consulta.
query = input("What is your question?> ")
12 Use una prueba condicional para verificar si alguna de las palabras de salida está presente únicamente en la consulta. Podemos usar estas palabras en una consulta, pero si son las únicas palabras, el chat terminará.
if query in exit_words:
13 Ponlo de modo que, si exit_words están presentes, el código imprimirá «TERMINAR CHAT» y luego use break para detener el código.
print("ENDING CHAT")
break
14 Crea una condición else. Esta condición siempre se ejecutará si no se encuentran exit_words.
else:
15. Ejecute la consulta ChatGPT y guarde la salida en dos objetos, res (respuesta) y uso (tokens usados).
(res, usage) = GPT(query)
dieciséis. Imprima la respuesta de ChatGPT en el shell de Python.
print(res)
17 Imprima 20 = en una fila para crear una barrera entre el texto ChatGPT y luego imprima la cantidad de tokens utilizados.
print("="*20)
print("You have used %s tokens" % usage)
print("="*20)
18 Cree un controlador de excepciones que se activará si el usuario presiona CTRL+C. Imprimirá un mensaje de salida en el shell de Python antes de que salga el código.
except KeyboardInterrupt:
print("nExiting ChatGPT")
19 Guarde el código como ChatGPT-Chatbot.py y haga clic en Ejecutar para comenzar. Haga sus preguntas al chatbot y, cuando termine, escriba una de las palabras de salida o presione CTRL+C para salir.
Listado completo de códigos
import openai
model_engine = "text-davinci-003"
openai.api_key = "YOUR API KEY HERE"
def GPT(query):
response = openai.Completion.create(
engine=model_engine,
prompt=query,
max_tokens=1024,
temperature=0.5,
)
return str.strip(response['choices'][0]['text']), response['usage']['total_tokens']
exit_words = ("q","Q","quit","QUIT","EXIT")
try:
while True:
print("Type q, Q, quit, QUIT or EXIT and press Enter to end the chat session")
query = input("What is your question?> ")
if query in exit_words:
print("ENDING CHAT")
break
else:
(res, usage) = GPT(query)
print(res)
print("="*20)
print("You have used %s tokens" % usage)
print("="*20)
except KeyboardInterrupt:
print("nExiting ChatGPT")