IA conversacional: una inmersión profunda en las funciones de ChatGPT para una experiencia de usuario mejorada | de José Valdivia León | julio de 2023

José Valdivia León

Esta inmersión profunda revela cómo las funciones de ChatGPT simplifican la captura de datos complejos y mejoran las interacciones de los usuarios. No te quedes sin aprender a agilizar tus procesos y mejorar la experiencia de los usuarios.

Únase a mí en una inmersión profunda para mejorar las interacciones de IA conversacional a través de IA generativa, integraciones inteligentes con plataformas de centros de contacto y casos de uso de automatización de procesos. Si te apetece un chat, conéctate conmigo en LinkedIn.

Continuando donde lo dejamos en nuestro primer artículo de esta serie sobre cómo abordar los desafíos de la IA conversacional (CAI) mediante la IA generativa, el artículo de hoy habla sobre cómo aumentar la precisión de las plataformas CAI, especialmente cuando se trata de declaraciones de clientes detalladas y con muchos datos.

Todos sabemos que los servicios basados ​​en modelos de lenguaje grande (LLM) como ChatGPT son capaces de reconocimiento de entidad nombrada (NER) básico sin ningún ajuste fino, o con solo unas pocas indicaciones de aprendizaje. Sin embargo, la variabilidad de su salida a menudo complica su integración en un flujo conversacional, donde la salida se requiere para un procesamiento posterior. Bueno, ¡buenas noticias amigos! Esta situación ahora es historia con el lanzamiento de las llamadas a la función ChatGPT. Las funciones actúan como un analizador de salida, asegurándose de que la salida esté estructurada y lista para los siguientes pasos. ¿Curioso? ¡Vamos a sumergirnos!

Una gran cantidad de procesos comerciales admitidos a través de CAI implican la captura de datos de usuario para iniciar el proceso. Esto podría significar autenticar a un usuario que regresa, recopilar información básica de un novato o tomar, por ejemplo, el proceso de búsqueda de un vuelo: necesitamos capturar detalles como ciudades/aeropuertos de salida y llegada, fechas de viaje y más.

Las plataformas CAI tradicionalmente manejan la recopilación de datos solicitando la entrada del usuario de forma secuencial. Pero en algunos casos, se pueden capturar varios puntos de datos simultáneamente, lo que ofrece una experiencia de usuario más fluida. Un ejemplo de esto es el uso de Slot Fillers en Cognigy.AI.

Tome esta expresión del usuario, por ejemplo: “Necesito un taxi para el lunes 3 de julio, mi correo es j.leon@evoai.onmicrosoft.com y saldré de LHR”.

Producción:
booking_date: “3 de julio de 2023”
correo electrónico: “j.leon@evoai.onmicrosoft.com”
aeropuerto_de_salida: “LHR”

Como puede ver en este ejemplo, los puntos de datos capturados son de diferentes tipos de datos, por lo que el sistema no tendrá problemas para identificar qué datos corresponden a qué variable. El desafío se amplifica cuando la entrada involucra muchas variables del mismo tipo de datos, o cuando las declaraciones del cliente son particularmente largas o complejas, por ejemplo, si un cliente llama a una compañía de aviación para reservar un vuelo de varios tramos y dice: «Necesito volar a Roma el próximo lunes, me quedaré allí por 4 noches y luego necesito un vuelo a Londres hasta el sábado, cuando tengo que volver a Colonia.”; la NLU tendrá dificultades para encontrar los tramos de vuelo para buscar las opciones disponibles.

Ahora, ¿dónde encajan nuestros LLM de confianza en esto? Son capaces de tener un ida y vuelta con el usuario para recopilar todos los datos necesarios, y con las funciones de ChatGPT, podemos garantizar que los datos se emitan en un formato fijo que la plataforma CAI puede procesar posteriormente.

OpenAI presentó recientemente «Llamada de función» con sus nuevos modelos gpt-4–0613 y gpt-3.5-turbo-0613. Estas funciones funcionan como un analizador de resultados, lo que garantiza que todo lo que surja de la conversación siga una estructura predefinida, como un objeto JSON.

Para un repaso rápido de las funciones de llamada, visite su página de documentación. Ahora, veamos cómo podemos usar la función para analizar expresiones complejas.

Nuestro objetivo será procesar las declaraciones de los clientes, extraer los datos necesarios y obtener un resultado como este:

[
{
"departure_city": "New York",
"arrival_city": "Los Angeles",
"departure_date": "2019-01-01"
},
{
"departure_city": "Los Angeles",
"arrival_city": "Rome",
"departure_date": "2019-01-10"
},
{
"departure_city": "Rome",
"arrival_city": "New York",
"departure_date": "2019-01-20"
}
]

Logramos esto mediante el uso de funciones de llamada como parte del punto final de finalización de chat, así:

{
"model": "gpt-3.5-turbo-0613",
"messages": [
{
"role": "system",
"content": "Think step by step, check if you have all cities and all dates needed. Don't make assumptions about what values to plug into functions. Ask for clarification if a user request is ambiguous or you need more data. Consider that the current date and time is: Fri Jun 30 2023 11:27:39 GMT+0100 (British Summer Time)."
},
{
"role": "user",
"content": "I need to fly to Rome then go to London and then back home"
}
],
"functions": [
{
"name": "get_flight_legs",
"description": "Get a list representing the flight departure and arrival cities and the departure date.",
"parameters": {
"type": "object",
"properties": {
"legs": {
"type": "array",
"items": {
"type": "object",
"properties": {
"departure_city": {
"type": "string",
"description": "the departure city of the flight leg."
},
"arrival_city": {
"type": "string",
"description": "the arrival city of the flight leg"
},
"departure_date": {
"type": "string",
"format": "date",
"description": "the departure date of the flight leg"
}
},
"description": "List of departure and arrival cities and the departure date."
}
}
},
"required": [
"legs"
]
}
}
],
"function_call": "auto",
"temperature": 0
}

En la propiedad “functions.parameter”, incluimos el esquema JSON del objeto de salida esperado. La propiedad “descripción” de cada elemento nos permite especificar el contenido que debe insertar el LLM. La salida completa recibida se muestra a continuación:

{
"id": "chatcmpl-7X3krXbNO7pbBpdyUji0Y6Jpd2Ihw",
"object": "chat.completion",
"created": 1688113613,
"model": "gpt-3.5-turbo-0613",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": null,
"function_call": {
"name": "get_flight_legs",
"arguments": "{\n \"legs\": [\n {\n \"departure_city\": \"Cologne\",\n \"arrival_city\": \"Rome\",\n \"departure_date\": \"2023-07-03\"\n },\n {\n \"departure_city\": \"Rome\",\n \"arrival_city\": \"London\",\n \"departure_date\": \"2023-07-07\"\n },\n {\n \"departure_city\": \"London\",\n \"arrival_city\": \"Cologne\",\n \"departure_date\": \"2023-07-08\"\n }\n ]\n}"
}
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 132,
"completion_tokens": 112,
"total_tokens": 244
}
}

De él necesitamos tomar el elemento: opciones[0].message.function_call.arguments , tenga en cuenta que se devuelve como una cadena, por lo que debemos analizarlo en JSON antes del procesamiento posterior.

Tenga en cuenta también que hemos incluido instrucciones del sistema a ChatGPT para no hacer suposiciones y pedir aclaraciones si es necesario, esto podría evitar alucinaciones en la respuesta.

Usemos Cognigy.AI como nuestra plataforma CAI preferida. Pero antes de sumergirnos, asegúrese de tener los siguientes requisitos previos:

– Un entorno Cognigy.AI (consígalo gratis en https://signup.cognigy.ai)

– Su clave API de Open AI (https://help.openai.com/en/articles/4936850-where-do-i-find-my-secret-api-key)

La implementación del flujo se puede ver a continuación:

También puede encontrar la implementación completa de Cognigy.AI en el repositorio de GitHub, disponible gratuitamente bajo la licencia Apache 2.0. Hagamos una prueba con el panel de interacción:

Como se ve en los ejemplos anteriores, las expresiones del usuario contienen toda la información necesaria, por lo que el flujo captura todo de una sola vez. El flujo establecerá los datos en el objeto de contexto, como se muestra a continuación:

Veamos otro ejemplo; en este caso el usuario no proporcionó información completa sobre el viaje, y ChatGPT ha sido instruido para pedir aclaraciones al usuario si es necesario, por lo que en la primera interacción no ejecuta la llamada de función sino que pide aclaraciones; cuando tiene todos los datos necesarios, activa la función y genera el objeto JSON correspondiente.

En esta entrega, hemos visto cómo las herramientas de IA generativa pueden superar los obstáculos en las interacciones de IA conversacional. Abordamos los desafíos asociados con declaraciones largas y con muchos datos de los clientes. Estas instancias a menudo desconciertan a la NLU, lo que requiere que los bots planteen varias preguntas para recopilar todos los datos necesarios. Al aprovechar ChatGPT y su perfecta integración en los flujos de bots mediante la nueva función de llamada de funciones, podemos mejorar la experiencia del usuario.

¿Tiene alguna pregunta, comentario o desafío con su proyecto de IA conversacional? No dude en enviarme una línea.

  • Cómo detectar contestadores automáticos en llamadas salientes con LLM
  • Las ventajas de las soluciones de inteligencia artificial conversacional llave en mano para las pymes

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio