Los modelos de última generación como GPT-4 y PaLM 2 han demostrado la capacidad de realizar tareas complejas que requieren razonamiento y toma de decisiones, ampliando los límites de los procesos automatizados. Además de este avance, la reciente actualización de la API de OpenAI permite a los desarrolladores definir funciones y parámetros al solicitar ‘gpt-4′ y ‘gpt-3.5′ modelos, haciendo más práctica la automatización de tareas.
Este desarrollo abre el camino para crear bots activos que interactúen con los usuarios y ejecuten acciones en base a las conversaciones, automatizando procesos manuales sin necesidad de dependencias complejas. En este artículo, exploraremos las capacidades de la función con un ejemplo práctico de automatización de tareas de AWS S3 en una implementación basada en conversaciones.
Fundamentos
Antes de profundizar en los detalles de implementación, es esencial comprender los mecanismos subyacentes de los LLM. PaLM-2 y GPT-4 son grandes modelos de lenguaje construidos sobre la arquitectura del transformador, un tipo de red neuronal diseñada para tareas de procesamiento de lenguaje natural y manejo de entradas contextuales largas. Los transformadores pueden capturar con eficacia las relaciones entre las palabras en el texto del lenguaje natural y gestionar las dependencias de largo alcance mediante la utilización de mecanismos de autoatención que sopesan la importancia de las diferentes palabras en una secuencia.
El aprendizaje de pocos disparos es un enfoque empleado con grandes modelos de lenguaje, donde estos modelos aprenden nuevas tareas a partir de solo unos pocos ejemplos. A diferencia de los métodos tradicionales de aprendizaje automático, los LLM no requieren conjuntos de datos masivos de ejemplos para aprender de manera efectiva. En cambio, inicialmente se les entrena en corpus extensos de texto y código, lo que les permite comprender las relaciones estadísticas entre palabras y generalizar a nuevas tareas con solo unos pocos ejemplos proporcionados. Este método de entrenamiento permite que el modelo asocie la entrada del usuario con la función más adecuada utilizando las descripciones dadas sin un nuevo entrenamiento adicional.
El valor de llamada de función
OpenAI lanzó una capacidad de llamada de función para los modelos basados en GPT que les permite conectarse con herramientas y API externas. Al describir las funciones y sus argumentos, los desarrolladores pueden aprovechar la capacidad de detectar cuándo se debe llamar a una función en función de la entrada del usuario. Esto abre numerosas posibilidades para la automatización, tales como:
1. Asistente virtual con integración de API externa: los desarrolladores pueden crear chatbots que van más allá de responder preguntas. Mediante la integración de API externas y la realización de acciones como la programación de citas. Por ejemplo, un chatbot integrado con un CRM puede enviar correos electrónicos personalizados utilizando una función send_email.
2. Procesamiento del lenguaje natural (NLP) para obtener fuentes de datos: se vuelve más fácil acceder a las fuentes de datos como parte de la conversación del chatbot. Por ejemplo, los usuarios pueden hacer preguntas como «¿Quiénes son mis principales clientes este mes?» y hacer que el sistema transforme la consulta en una fuente de datos a través de una función definida, como get_customers_by_revenue(start_date, end_date, limit) para recibir la información deseada en tiempo real.
3. Delegación automática de tareas: mediante la integración de modelos GPT con herramientas de gestión de proyectos, los usuarios pueden delegar tareas a los miembros del equipo a través de comandos de lenguaje natural. Por ejemplo, el usuario dice: «Asigna a Adam para que termine el borrador de la presentación para el viernes». El modelo identificará las funciones relacionadas para ejecutar la tarea y las devolverá para su ejecución.
Estos son algunos escenarios de automatización entre innumerables ejemplos. Si bien fue posible lograr la automatización a través de múltiples dependencias y encadenamiento de acciones, la última actualización de GPT simplificó el proceso como parte de la conversación en curso.
Ejemplo práctico: integración de AWS S3
Para demostrar las capacidades de la función de llamada de OpenAI, analicemos un ejemplo práctico que involucra a AWS S3, un servicio de almacenamiento en la nube ampliamente utilizado. Usaremos el código de Python para interactuar con S3 y realizar varias operaciones a través de un chatbot basado en conversaciones. La entrada del usuario pasará por tres etapas: Primero el chatbot con el contexto de funciones para seleccionar la más relevante. En segundo lugar, extraeremos la función específica y sus argumentos de la salida del modelo para ejecutar la operación prevista. Finalmente, la salida de la función irá a un modelo de resumen para formalizar las respuestas.
Paso 1: Importación de bibliotecas y configuración de credenciales
Comience importando bibliotecas relevantes y configurando las credenciales necesarias para el acceso a AWS S3 y Openai.
Reemplace con bloque de código para Github Gist: https://gist.github.com/Barqawiz/97573f8e25eb3c491953ca2e6ac9d251
Paso 2: definición de funciones para las operaciones de S3
A continuación, cree funciones que encapsulen diferentes operaciones de S3, como enumerar depósitos, enumerar objetos dentro de un depósito, descargar archivos, cargar archivos y buscar. Estas funciones interactúan directamente con la API de S3 y consolidan los parámetros necesarios.
Reemplace con bloque de código para Github Gist: https://gist.github.com/Barqawiz/519bb6fc55445c307c1a1e155871f110
Es esencial proporcionar un diccionario de descripción para el modelo que proporcione los detalles y requisitos de cada argumento de función con los siguientes campos:
- nombre: el nombre de función exacto para que el modelo lo devuelva cuando la conversación active una llamada de función.
- descripción: descripción de cadena para la acción esperada de esta función.
- parámetros: un diccionario que incluye todas las propiedades de entrada y si son obligatorias o no.
Reemplazar con bloque de código para Github Gist: https://gist.github.com/Barqawiz/5f5d6eb48fb0e16e5eefdb846f73610b
Paso 3: Implementación del flujo de conversación:
En este paso, diseñaremos un flujo de conversación utilizando la API de finalización de chat de OpenAI, donde los usuarios interactúan con el chatbot para ejecutar varias operaciones de S3. A medida que los usuarios ingresan comandos o hacen preguntas, el chatbot identifica cuándo se debe llamar a una función adecuada y genera objetos JSON que se ajustan a las firmas de funciones especificadas.
La función de finalización de chat:
Reemplazar con bloque de código para Github Gist: https://gist.github.com/Barqawiz/a4c1977c2167c49093cb3cb908b9c24e
La lógica de la conversación comienza enviando la entrada del usuario y los detalles de la función al chatGPT, el modelo verificará la función más adecuada para devolver o pedirle al usuario una aclaración adicional. Cuando el modelo devuelva la función y el argumento, llamaremos a un diccionario que devuelve una función para ejecutar según el nombre de la clave:
Reemplace con bloque de código para Github Gist: https://gist.github.com/Barqawiz/95a2bd9b1a88c7aa2b60e2c0b3cceb56
Para obtener el código completo de automatización del depósito s3, consulte este repositorio de GitHub.
Ejemplos de la salida del chatbot de la función
Exploremos las respuestas del chatbot con la expectativa de aclarar la información que falta antes de ejecutar la acción de solicitud:
usuario: enumerar mis cubos s3 bot: Aquí están sus cubos S3 junto con sus fechas de creación: 1. “bakcup-ahm-test” – Fecha de creación: 2023-06-172. “elasticbeanstalk-eu-west-1” – Fecha de creación: 2023-03-173. “papel-de-illinois” – Fecha de creación: 2023-06-17 |
usuario: busque un archivo reflections.zip en todos los cubos bot: Encontré el archivo «reflections.zip» en los siguientes cubos S3: 1. Depósito: «bakcup-ahm-test», Última modificación: «2023-06-17T16:05:16+00:00», Tamaño: 4862255 bytes, Clase de almacenamiento: STANDARD2. Depósito: «papel de Illinois», Última modificación: «2023-06-17T12: 38: 24 + 00: 00», Tamaño: 4862255 bytes, Clase de almacenamiento: ESTÁNDAR |
usuario: buscar un archivo bot: proporcione el nombre del archivo y el nombre del depósito S3. |
usuario: Cómo esta el clima hoy bot: Solo puedo ayudar con las funciones del depósito S3. |
usuario: descargue Reflections.zip desde el cubo de papel de Illinois al directorio actual bot: He descargado con éxito el archivo «Reflections.zip» del cubo «illinois-paper». |
usuario: cargue ./resource/Reflections.zip en el depósito bakcup-ahm-test bot: El archivo `Reflections.zip` se cargó correctamente en el depósito. |
Las funciones de GPT me ayudan a administrar las tareas de mi depósito s3 sin un agente de terceros, lo que mejora la capacidad de extraer argumentos de los mensajes de los usuarios y llamar a las acciones relevantes.
Evaluación y Direcciones Futuras
Durante la evaluación, el modelo identificó con éxito la función adecuada utilizando el significado semántico del mensaje de entrada. Además, pudo evitar responder a comandos o preguntas fuera de tema. Un problema que encontré fue que el modelo ocasionalmente completaba argumentos con parámetros inesperados cuando el usuario no proporcionaba un valor, a pesar de que se le indicó que no lo hiciera. Sin embargo, este comportamiento era poco frecuente y, en la mayoría de los casos, chatGPT respondía con preguntas cuando faltaba un parámetro.
Es crucial evaluar la efectividad de la función de los modelos GPT y mitigar cualquier riesgo potencial al tener un ser humano en el circuito «al menos al principio» antes de ejecutar las acciones de salida. Es imperativo priorizar la investigación en curso para evaluar el rendimiento y la confiabilidad de las características de la función antes de aplicarla en la producción. Si bien la integración con herramientas y API externas puede ofrecer beneficios de automatización, la seguridad debe ser la prioridad.
Referencias:
Autor
Ahmad Albarqawi- [email protected]
https://www.linkedin.com/in/barqawi/