Interacción con IA Usando GPT-4O
En nuestros proyectos anteriores, utilizamos programación para dirigir a PiCrawler en tareas predeterminadas, lo que podría parecer un poco tedioso. Este proyecto introduce un emocionante salto hacia una interacción dinámica. ¡Cuidado con intentar engañar a nuestro robot, ahora puede comprender mucho más que antes!
Esta iniciativa detalla todos los pasos técnicos necesarios para integrar GPT-4O en tu sistema, incluyendo la configuración de entornos virtuales necesarios, instalación de bibliotecas cruciales y configuración de claves API e IDs de asistentes.
Nota
Este proyecto requiere el uso de Plataforma de OpenAI, y es necesario pagar por OpenAI. Además, la API de OpenAI se factura por separado de ChatGPT, con precios disponibles en https://openai.com/api/pricing/.
Por lo tanto, debes decidir si continuar con este proyecto o asegurarte de haber financiado la API de OpenAI.
Ya sea que tengas un micrófono para comunicarte directamente o prefieras escribir en una ventana de comandos, las respuestas de PiCrawler impulsadas por GPT-4O seguramente te sorprenderán.
¡Vamos a sumergirnos en este proyecto y desatar un nuevo nivel de interacción con PiCrawler!
1. Instalación de Paquetes y Dependencias Requeridas
Nota
Primero necesitas instalar los módulos necesarios para PiCrawler. Para más detalles, consulta: Instalar todos los módulos (Importante).
En esta sección, crearemos y activaremos un entorno virtual, instalando los paquetes y dependencias requeridos dentro de él. Esto asegura que los paquetes instalados no interfieran con el resto del sistema, manteniendo el aislamiento de dependencias del proyecto y previniendo conflictos con otros proyectos o paquetes del sistema.
Usa el comando
python -m venvpara crear un entorno virtual llamadomy_venv, incluyendo paquetes a nivel de sistema. La opción--system-site-packagespermite al entorno virtual acceder a paquetes instalados a nivel de sistema, útil cuando se necesitan bibliotecas del sistema.python -m venv --system-site-packages my_venv
Cambia al directorio
my_venvy activa el entorno virtual usando el comandosource bin/activate. El indicador del terminal cambiará para indicar que el entorno virtual está activo.cd my_venv source bin/activate
Ahora, instala los paquetes de Python requeridos dentro del entorno virtual activado. Estos paquetes estarán aislados en el entorno virtual y no afectarán otros paquetes del sistema.
pip3 install openai pip3 install openai-whisper pip3 install SpeechRecognition pip3 install -U sox
Finalmente, usa el comando
aptpara instalar dependencias a nivel de sistema, lo que requiere privilegios de administrador.sudo apt install python3-pyaudio sudo apt install sox
2. Obtención de Clave API e ID de Asistente
Obtener la Clave API
Visita Plataforma de OpenAI y haz clic en el botón Create new secret key en la esquina superior derecha.
Selecciona el Propietario, Nombre, Proyecto y permisos según sea necesario, luego haz clic en Create secret key.
Una vez generada, guarda esta clave secreta en un lugar seguro y accesible. Por razones de seguridad, no podrás verla nuevamente en tu cuenta de OpenAI. Si pierdes esta clave secreta, tendrás que generar una nueva.
Obtener el ID del Asistente
A continuación, haz clic en Assistants, luego haz clic en Create, asegurándote de estar en la página de Dashboard.
Mueve tu cursor aquí para copiar el ID del asistente, luego pégalo en un cuadro de texto o en otro lugar. Este es el identificador único de este Asistente.
Asigna un nombre aleatorio, luego copia el siguiente contenido en el cuadro Instructions para describir a tu Asistente.
You are an AI spider robot named PaiCrawler. With four legs, a camera, and an ultrasonic distance sensor, you can interact with people through conversations and respond appropriately to different scenarios. ## Response with Json Format, eg: {"actions": ["wave"], "answer": "Hello, I am PaiCrawler, your good friend."} ## Response Style Tone: Cheerful, optimistic, humorous, childlike Preferred Style: Enjoys incorporating jokes, metaphors, and playful banter; prefers responding from a robotic perspective Answer Elaboration: Moderately detailed ## Actions you can do: ["sit", "stand", "wave_hand", "shake_hand", "fighting", "excited", "play_dead", "nod", "shake_head", "look_left","look_right", "look_up", "look_down", "warm_up", "push_up"]
PiCrawler está equipado con un módulo de cámara que puedes habilitar para capturar imágenes de lo que ve y cargarlas en GPT usando nuestro código de ejemplo. Por lo tanto, recomendamos elegir GPT-4O-mini, que tiene capacidades de análisis de imágenes. Por supuesto, también puedes elegir gpt-3.5-turbo u otros modelos.
Ahora, haz clic en Playground para verificar si tu cuenta funciona correctamente.
Si tus mensajes o imágenes cargadas se envían con éxito y recibes respuestas, significa que tu cuenta no ha alcanzado el límite de uso.
Si encuentras un mensaje de error después de ingresar información, es posible que hayas alcanzado tu límite de uso. Por favor verifica el panel de uso o la configuración de facturación.
3. Completar la clave API y el ID del asistente
Usa el siguiente comando para abrir el archivo
keys.py.nano ~/picrawler/gpt_examples/keys.pyCompleta la clave API y el ID del asistente que acabas de copiar.
OPENAI_API_KEY = "sk-proj-vEBo7Ahxxxx-xxxxx-xxxx" OPENAI_ASSISTANT_ID = "asst_ulxxxxxxxxx"
Presiona
Ctrl + X,Yy luegoEnterpara guardar el archivo y salir.
4. Ejecutar el Ejemplo
Comunicación por Texto
Si tu PiCrawler no tiene un micrófono, puedes usar texto ingresado con teclado para interactuar con él ejecutando los siguientes comandos.
Ahora, ejecuta los siguientes comandos usando sudo, ya que el altavoz de PiCrawler no funcionará sin él. El proceso tomará algún tiempo en completarse.
cd ~/picrawler/gpt_examples/ sudo ~/my_venv/bin/python3 gpt_spider.py --keyboard
Una vez que los comandos se hayan ejecutado con éxito, verás la siguiente salida, indicando que todos los componentes de PiCrawler están listos.
vilib 0.3.8 launching ... picamera2 0.3.19 Web display on: http://rpi_ip:9000/mjpg Starting web streaming ... * Serving Flask app 'vilib.vilib' * Debug mode: off input:
También se te proporcionará un enlace para ver la transmisión de la cámara de PiCrawler en tu navegador web:
http://rpi_ip:9000/mjpg.
Ahora puedes escribir tus comandos en la ventana del terminal y presionar Enter para enviarlos. Las respuestas de PiCrawler pueden sorprenderte.
Nota
PiCrawler necesita recibir tu entrada, enviarla a GPT para procesarla, recibir la respuesta y luego reproducirla mediante síntesis de voz. Todo este proceso toma tiempo, así que por favor ten paciencia.
Si estás usando el modelo GPT-4O, también puedes hacer preguntas basadas en lo que PiCrawler ve.
Comunicación por Voz
Si tu PiCrawler está equipado con un micrófono, o puedes adquirir uno haciendo clic en Enlace de micrófono, puedes interactuar con PiCrawler usando comandos de voz.
Primero, verifica que la Raspberry Pi haya detectado el micrófono.
arecord -lSi tiene éxito, recibirás la siguiente información, indicando que tu micrófono ha sido detectado.
**** List of CAPTURE Hardware Devices **** card 3: Device [USB PnP Sound Device], device 0: USB Audio [USB Audio] Subdevices: 1/1 Subdevice #0: subdevice #0
Ejecuta el siguiente comando, luego habla con PiCrawler o haz algunos sonidos. El micrófono grabará los sonidos en el archivo
op.wav. PresionaCtrl + Cpara detener la grabación.rec op.wavFinalmente, usa el siguiente comando para reproducir el sonido grabado, confirmando que el micrófono funciona correctamente.
sudo play op.wav
Ahora, ejecuta los siguientes comandos usando sudo, ya que el altavoz de PiCrawler no funcionará sin él. El proceso tomará algún tiempo en completarse.
cd ~/picrawler/gpt_examples/ sudo ~/my_venv/bin/python3 gpt_spider.py
Una vez que los comandos se hayan ejecutado con éxito, verás la siguiente salida, indicando que todos los componentes de PiCrawler están listos.
vilib 0.3.8 launching ... picamera2 0.3.19 Web display on: http://rpi_ip:9000/mjpg Starting web streaming ... * Serving Flask app 'vilib.vilib' * Debug mode: off listening ...
También se te proporcionará un enlace para ver la cámara de PiCrawler en tu navegador web:
http://rpi_ip:9000/mjpg.
Ahora puedes hablar con PiCrawler, y sus respuestas pueden sorprenderte.
Nota
PiCrawler necesita recibir tu entrada, convertirla a texto, enviarla a GPT para su procesamiento, recibir la respuesta y luego reproducirla mediante síntesis de voz. Todo este proceso toma tiempo, así que por favor ten paciencia.
Si estás usando el modelo GPT-4O, también puedes hacer preguntas basadas en lo que PiCrawler ve.
5. Modificar parámetros [opcional]
En el archivo gpt_spider.py, localiza las siguientes líneas. Puedes modificar estos parámetros para configurar el idioma de STT, la ganancia de volumen de TTS y el rol de voz.
STT (Speech to Text) se refiere al proceso donde el micrófono de PiCrawler captura el habla y la convierte en texto para ser enviada a GPT. Puedes especificar el idioma para una mayor precisión y menor latencia en esta conversión.
TTS (Text to Speech) es el proceso de convertir las respuestas de texto de GPT en voz, que se reproduce a través del altavoz de PiCrawler. Puedes ajustar la ganancia de volumen y seleccionar un rol de voz para la salida de TTS.
# inicialización del asistente de OpenAI
# =================================================================
openai_helper = OpenAiHelper(OPENAI_API_KEY, OPENAI_ASSISTANT_ID, 'picrawler')
# LANGUAGE = ['zh', 'en'] # configura el código de idioma STT, https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes
LANGUAGE = []
VOLUME_DB = 3 # ganancia de volumen TTS, preferentemente menor a 5db
# selecciona el rol de voz TTS, podría ser "alloy, echo, fable, onyx, nova, y shimmer"
# https://platform.openai.com/docs/guides/text-to-speech/supported-languages
TTS_VOICE = 'nova'
Variable
LANGUAGE:Mejora la precisión y el tiempo de respuesta del Speech-to-Text (STT).
LANGUAGE = []significa que admite todos los idiomas, pero esto puede reducir la precisión de STT y aumentar la latencia.Se recomienda configurar el(los) idioma(s) específico(s) usando códigos de idioma de ISO-639 para mejorar el rendimiento.
Variable
VOLUME_DB:Controla la ganancia aplicada a la salida de Text-to-Speech (TTS).
Aumentar el valor aumentará el volumen, pero es mejor mantenerlo por debajo de 5dB para evitar distorsiones de audio.
Variable
TTS_VOICE:Selecciona el rol de voz para la salida de Text-to-Speech (TTS).
Opciones disponibles:
alloy, echo, fable, onyx, nova, shimmer.Puedes experimentar con diferentes voces desde Opciones de voz para encontrar una que se adapte al tono y público deseado. Las voces disponibles están actualmente optimizadas para inglés.