En 2016, en la cima de la popularidad de los chatbots, nuestro equipo creó asistentes de botón para los negocios. Hasta que surgió una idea interesante: "¿Qué pasa si automatizamos el soporte al cliente con redes neuronales?" Queríamos que los robots de chat finalmente aprendieran a entender el lenguaje natural y se sintieran cómodos.
Se necesitaron cuatro matemáticos, seis meses de arduo trabajo, un nuevo lenguaje de programación y muchos errores, y creamos un constructor en el que todos pueden armar un asistente virtual con inteligencia artificial.
En el material contaremos
- ¿En qué se diferencia un asistente virtual de un bot de chat normal?
- ¿Es cierto que los asistentes virtuales entienden el lenguaje?
- Cómo enseñamos al robot a entender el contexto y escribimos el lenguaje lialang
- Prueba de caso: cómo automatizamos el soporte en tres bancos
- Creación de Lia Platform y motor para interfaces.
- Tres pasos: cómo funciona la plataforma para ensamblar asistentes virtuales (donde cualquiera, incluso un no programador, puede ensamblar un robot)
Chat bot vs asistente virtual
Los chatbots avanzados pudieron resaltar palabras clave e imitar el diálogo humano en los años 60. Los hippies se lanzaron al LSD, los Beatles reunieron estadios, y Joseph Weizenbaum creó a Eliza, una interlocutora-psicoterapeuta que dará muchas probabilidades a muchos robots modernos, e incluso a psicólogos.
Por ejemplo, en la oración "Mi padre me odia", Eliza respondió a la palabra clave "padre" y preguntó: "¿Quién más en la familia te odia?" Pero el robot psicoterapeuta no entendió la esencia de los problemas. Los chatbots modernos también funcionan: palabras clave, guiones lineales y una parodia del diálogo en vivo.
Pero algo ha cambiado desde los años 60: ahora, gracias al aprendizaje automático y las tecnologías de PNL, podemos enseñar a los bots de chat a comprender el lenguaje natural y el contexto. Esto sigue siendo una imitación, pero más significativo.
Para ver la diferencia, comparemos el chatbot y el asistente: imagine que necesitamos hacer un
sumiller virtual que ayude a los clientes con la elección del vino.
Etapa 1
La primera etapa del chatbot y el asistente virtual es una: resolvemos las solicitudes de los usuarios y creamos frases que pueden escribir. Y luego prescribimos cómo actuará el robot en respuesta.
La solicitud básica es clara: recoger el vino. Pero esta solicitud puede tener muchos parámetros: razón, precio, país, color, variedad de uva. Quizás el usuario escriba inmediatamente el nombre del vino que se va a encontrar. O aclarará los detalles: "¿Dónde se hace?" O tal vez por curiosidad, comenzará a lanzar el bot con preguntas: "¿Qué botella es la más cara del mundo?" Y así sucesivamente. Además, además de las solicitudes en el caso, hay "hola", "adiós", "cómo estás" y otras frases de conversación que deben preguntarse.
Puedes fantasear infinitamente, pero aún así no podremos predecir todas las preguntas de los usuarios. Cuando nos parece que las situaciones descritas serán suficientes para cubrir el 98% de las solicitudes, nos detenemos (aunque la dura realidad se interrumpe y descubrimos que el 80% se cubrirá en el mejor de los casos).
Luego, dispersamos nuestras suposiciones sobre las necesidades de los usuarios para solicitudes específicas: intenciones. Las intenciones indican lo que el usuario quiere, pero descarta información sobre cómo escribió al respecto. Esta etapa es la misma para chatbots y asistentes.
Lista de intenciones
Intención 1 - Quiero cualquier vinoFrases:
- Ayudame a elegir un vino
- ¿Qué vino recomendarías?
- Quiero el mejor vino
- ...
Qué hacer con él: seleccione al azar uno de los vinos más populares e informe al usuario.
Intención 2 - vino más baratoFrases:
- ¿Hay buenos vinos de hasta 1000 rublos?
- Pero no hay nada más barato?
- demasiado caro para mi
- ...
Qué hacer: agregue un filtro de precios a la solicitud y elija uno de los vinos más populares.
Intención 3 - Quiero vino para carneFrases:
- Aconsejar el vino a la carne.
"Voy a tener gulash para la cena". Que beber
- ...
Qué hacer al respecto: una solicitud a la base de datos según el criterio "a la carne", seleccione uno de los vinos más populares e informe al usuario.
... (y así sucesivamente cientos de intenciones diferentes)
Intención 290: no entendimos al usuarioFrases: cualquier otra
Qué hacer: emita una frase: "No sé a qué se refiere, pero el Pinista es encantador en cualquier época del año".
Etapa 2
En esta etapa, comenzamos a crear un algoritmo por el cual el robot funcionará. Aquí termina la similitud del chatbot y el asistente virtual.
Al codificar un chatbot, el programador determina manualmente las palabras clave para cada intención, y cuando el usuario escribe, el bot buscará estas palabras clave en la frase.
Al desarrollar un asistente, un programador enseña un algoritmo para comparar réplicas de usuarios de acuerdo con el significado léxico. Esto le permite encontrar la intención más cercana.
Cómo funciona: una tabla que compara chatbots y asistentes virtuales ¿Es cierto que los asistentes virtuales entienden el lenguaje?
Los algoritmos pueden distinguir algunas frases de otras, pero ¿podemos decir que los robots realmente entienden el lenguaje?
Para responder a esta pregunta, volvamos a una comparación del significado léxico de las frases. El significado para una computadora son tipos de datos comprensibles: cadenas, números y combinaciones de los mismos. Por lo tanto, el programador se enfrenta a la tarea de convertir el texto fuente en una forma adecuada para operaciones matemáticas de comparación: un vector.
vectorize(" ") = (0.004, 17.43, -0.021, ..., 18.68) vectorize(" ") = (0.004, 19.73, -0.001, ..., 25.28) vectorize(" ") = (-8.203, 15.22, -9.253, ..., 10.11) vectorize(" ") = (89.23, -68.99, -10.62, ..., -0.982)
Para nuestras tareas, los vectores de frases léxicamente cercanas deben estar matemáticamente cerca uno del otro, los léxicamente distantes deben estar muy lejos, el vector de frases de otra ópera debe estar muy lejos. Por ejemplo, "Quiero vino" está más cerca de "Quiero vino blanco" que de "No quiero vino". Y lejos de los "ataques de Marte".Una red neuronal adecuadamente entrenada podrá concluir el significado léxico en estos vectores. Resulta que, para comparar el significado de dos frases, necesitas comparar sus vectores.
Por lo tanto, la respuesta a la pregunta "¿Los robots entienden el lenguaje?" Será así: no entienden cómo es una persona, solo saben cómo comparar los significados léxicos y no confunden lo cálido con lo suave. Pero cuando los algoritmos pueden ofrecer mejoras sugerentes y sacar conclusiones, sinceramente decimos: sí, ha llegado la comprensión. Mientras tanto, "entender el idioma" es solo una hermosa frase de marketing.
De hecho, el robot solo funciona con analogías, como un niño de tres años. Sin embargo, si le da al niño un número suficiente de ejemplos, podrá fingir que es un intelectual y conducir una discusión. El operador "en vivo" de la primera línea de soporte funciona de la misma manera: describe un conjunto de situaciones y les dice cómo comportarse en ellas. Por lo tanto, los asistentes virtuales son muy adecuados para la automatización de soporte.
Cómo le enseñamos al robot a entender el contexto: lialang
Para un soporte normal, los robots necesitan poca "comprensión" del lenguaje natural; es importante que puedan responder preguntas y mantenerse en contexto. Para hacer esto, escribimos lialang, un lenguaje de marcado de diálogo donde los scripts se pueden describir y pasar al robot.
La tarea principal de un programador de lialang es describir todas las situaciones que pueden ocurrir en un diálogo entre una persona y una máquina. Para hacer esto, en nuestro idioma puede asociar los nombres de intenciones y acciones.
Considere un ejemplo simple: un saludo:
if intent() { reaction(_) }
Parece un código regular, pero una cuadrícula neural funciona detrás de la construcción de intención (...): lialang describe el diálogo en patrones generales ("si le pidieron algo") utilizando las construcciones de programación habituales. Por supuesto, para que esto funcione, debe aplicar el aprendizaje automático y las tecnologías NLU, porque el usuario puede escribir su solicitud como lo desee.
Y aquí está cómo describir situaciones contextuales.Introdujimos el constructo "era" para captar saludos inapropiados en cualquier parte del diálogo:
if intent() { if was_reaction(_) { reaction(___) } else { reaction(_) } }
Dice: Lia, si te saludan, saluda en respuesta. Y si después de eso volvieron a decir "hola", di que ya has dicho hola.
Una reacción es una acción que Lia debe realizar en respuesta a una intención. En el 95% de los casos, esto es solo texto. Pero también el robot puede llamar a una función en el código, cambiar la comunicación al operador o realizar otras acciones complejas.
El código para enviar texto y funciones existe por separado del idioma: el idioma describe situaciones de la manera más simple posible.
Ahora intentemos escribir algo más complicado: en un chat con el banco, los clientes a menudo solicitan sus detalles. Aprendamos cómo enviarlos al chat y al correo usando lialang.
if intent(_) or intent(___) { reaction(___) { if intent(__) { reaction(___) } } } if intent(___) { reaction(___) }
Aquí se describen dos situaciones:
- Lia, si te pidieron que enviaras los detalles, envíalos al chat. Si después de que preguntaron "es necesario a la oficina de correos", envíelos a la oficina de correos.
- Lia, si te pidieron inmediatamente que envíes los detalles al correo, envía los detalles al correo.
Entonces lialang hace su trabajo, funciona en contexto. Incluso si una persona escribe "por correo, por favor", el robot comprenderá que estamos hablando de detalles.
Lia ha aprendido a soportar escenarios complejos: en el momento necesario para el usuario, obtendrá / pondrá datos de / a CRM, enviará SMS, ayudará con el pago o hablará de la vida.
Gradualmente, mejoramos el lenguaje: agregamos variables, funciones, entidades (fechas, direcciones, números de teléfono, nombres, etc.), estados y otras construcciones útiles. Por lo tanto, se hizo aún más conveniente escribir sobre él.
Prueba de caso: cómo automatizamos el soporte en tres bancos
Tan pronto como creamos la tecnología, tuvimos que finalizarla con urgencia: tuvimos nuestro primer cliente. VTB necesitaba automatizar el soporte en un nuevo banco de Internet para emprendedores.
Comenzamos con bastante éxito, especialmente para un producto que se creó en cuatro meses. Nuestro robot híbrido para VTB se basó en redes neuronales y fue efectivo de inmediato: respondió más de 800 preguntas, admitió varios escenarios complejos (declaraciones, cambios de tarifas, configuraciones de usuario) y habló como una persona. Como resultado, en dos meses, nuestra Lia redujo la carga de soporte en un 74%. Quedó claro: la idea con la automatización de soporte funciona.

Además, en base a Lia, automatizamos las preguntas frecuentes en Rocketbank y DeloBank, y en dos semanas cerraron el 32% de las aplicaciones sin operadores.
Parece que los niños llegaron al éxito. Sin embargo, después de los primeros clientes, quedó claro que el concepto necesitaba ser cambiado. Fue un infierno: tuvimos que modificar manualmente los guiones, hacer ediciones, desarrollar las ramas. Lo mismo con los robots simples, solo que es más difícil y requiere más fuerza. En esta situación, era difícil de escalar.
Luego decidimos hacer una herramienta en la que el cliente mismo pueda armar incluso un asistente complejo. Y solo ayudaremos con tutoriales y educaremos a los usuarios.
Lia Platform y motor para interfaces
Entonces, decidimos hacer una
plataforma para aquellos que no entienden el desarrollo. Aunque lialang contiene menos de diez diseños diferentes, no todos los gerentes le enseñarán a crear su propio bot. Los gerentes aman el mouse.
Por lo tanto, comenzamos a pensar en una interfaz que sea capaz de hacer todo lo que lialang puede hacer. No tendrá problemas con ramas anidadas, transiciones de un guión a otro, y lo más importante, no solo nuestros programadores, sino todos los que quieran pueden crear guiones.
Mira cómo se ve:
Los diálogos son algo no lineal y es muy difícil escribir un motor universal para todo tipo de esquemas de conversación. Pero antes de pensar en los esquemas, ya teníamos lialang: se convirtió en el motor.Independientemente de los diseñadores de interfaces que se les ocurran, no codificamos cerebros para ello, sino que solo escribimos un pequeño traductor de marcado de la interfaz al código de lialang. Si se vuelve a hacer la interfaz, solo necesitaremos cambiar el traductor, gracias a lo cual el comando de interfaz y el comando central pueden existir por separado.
¿Cómo funciona la plataforma para crear asistentes virtuales?
Para armar su propio asistente virtual en Lia, el usuario debe pasar por tres etapas.
Paso 1. Descargue el historial de chat con los usuarios para que el robot comprenda y resalte los escenarios principales
Si el cliente tiene un historial de conversaciones con los usuarios, puede subirlos al sistema y obtener clústeres de las consultas más populares. Será muy conveniente crear intenciones a partir de ellos.

Con el tiempo, la efectividad de Lia aumentará. Los mensajes que el robot no pudo responder se distribuyen nuevamente en grupos: por ejemplo, "¿quién eres?", "¿Quién eres?", "¿Cuál es tu nombre?" Y "¿eres un robot?". Entonces, la plataforma aprende de forma semiautomática: el usuario ve dónde está la brecha y la cierra, agregando nuevos escenarios; como resultado, el porcentaje de solicitudes cubiertas crece del 30% al 70% en seis meses.
Si no hay un historial de correspondencia, omitimos este paso e inmediatamente comenzamos con el segundo paso: predecimos qué solicitudes los usuarios recurrirán al asistente.
Paso 2. Anotamos la intención: 10-20 opciones para las solicitudes de usuarios más frecuentes
En la segunda etapa, prescribimos intenciones basadas en las 10-20 consultas más populares: este número de opciones es suficiente gracias a las redes neuronales. Entonces, una frase como "Quiero pedir vino" le enseña al bot a reconocer solicitudes de usuarios similares: por ejemplo, "Obtener vino" o "Pedir vino".

Otro asistente comprende y extrae la esencia: nombres de ciudades, números de teléfono, direcciones, marcas de tiempo, períodos, fechas y maldiciones, incluso si dice "cansado, traiga una caja de vino mañana".
Además, los usuarios pueden agregar sus propios objetos y marcar manualmente frases de entrenamiento para que el asistente aprenda más rápido. Esta es una de las características más poderosas de la plataforma, gracias a la cual puede crear robots que no funcionan peor que un operador humano.
Paso 3. Crea un escenario: prescribe varias respuestas o acciones
Aquí el usuario debe encontrar respuestas a las solicitudes de los usuarios. El 95% del proyecto promedio generalmente toma un escenario simple de preguntas y respuestas: respuestas a preguntas populares.

Por cierto, el asistente puede responder con imágenes, videos y archivos de audio y, si es necesario, enviar una geolocalización.
El salto para construir es particularmente útil: gracias a él, Lia puede cambiar de un escenario a otro y luego regresar, resolviendo varios problemas. Esto es útil si necesita apartarse en el diálogo, pero luego volver al camino correcto: por ejemplo, haga una pregunta aclaratoria.
Ejemplo de diálogo saltar a:Asistente: Necesitamos aclarar la dirección de entrega, porque el destinatario no responde.
Cliente: ¿Y sobre qué? Cual orden? (JumpTo para aclarar el pedido)
Asistente: Orden 21 de agosto, Antigal, "Uno" Malbec.
Asistente: Entonces, ¿podemos aclarar la dirección de entrega actual? (Regrese al guión principal)
Cuando el creador quiere que su asistente no solo responda con texto, sino que tome medidas, podrá llamar a un programador para escribir fragmentos de JS para el especialista. Le permitimos ejecutar JavaScript directamente durante las secuencias de comandos: acceder a la API externa, enviar un correo electrónico o realizar otras acciones complejas.
4. Resumen
Un asistente puede integrarse con cualquier cosa: hablar con una persona por teléfono, en mensajería instantánea o un widget que el cliente publicará en el sitio.
Montar un asistente inteligente en la plataforma lleva de un par de horas a un mes. Luego, el robot aprende a comprender de manera realista las solicitudes y a reconocer los patrones: lleva unos seis meses (todo este tiempo una persona viva lo supervisa). Las empresas pueden hacer la mayoría de las tareas de rutina para la chica robótica de Lia: desde coordinar la entrega y llamar a un taxi hasta consultar a los clientes.

Por cierto, ya hemos transferido proyectos con bancos a la plataforma. Funcionan igual de bien, pero están mucho más convenientemente moderados.
En un futuro cercano, planeamos agregar extractores, lo que permitirá a nuestros usuarios extraer datos más complejos (por ejemplo, el robot comprenderá la frase "pasado mañana después del almuerzo"). También finalizaremos el control de versiones para que los clientes puedan rodar y revertir rápidamente versiones de proyectos. Y también liberaremos el sistema de roles de la organización.
Esperamos que los
pronósticos de Gartner sean correctos, y en 2022, hasta el 70% de todas las interacciones con los clientes pasarán por algún tipo de IA. Según nuestra idea, los diseñadores como Lia ayudarán a transferir el servicio al cliente a los robots aún más rápido.