Академический Документы
Профессиональный Документы
Культура Документы
com/primer-bot-con-sap-conversational-ai-e2aeec25e9fb
SAP Conversational AI
Feb 1 · 13 min read
Cuando eres un desarrollador de chatbots principiante, aprender sobre la comprensión del lenguaje natural, los flujos de
conversación y las plataformas de mensajería puede ser un poco abrumador. En esta guía, te ayudaré a construir tu primer
bot en SAP Conversational AI. Al final de este tutorial, tendrás un chatbot funcional y sabrás cómo:
Con SAP Conversational AI, puedes diseñar fácilmente flujos de conversación complejos impulsados por una poderosa
inteligencia artificial.
Necesitarás una cuenta para seguir este tutorial, haz click aquí si aún no tienes una … ¡es completamente gratis!
2. Comprender que el usuario está pidiendo una broma y envíar una seleccionada al azar de una lista.
3. Comprender al menos dos reacciones: se ríe o sonríe, y reaccionar con un divertido gif o tus más sinceras disculpas.
Requerimientos
2. Una vez que hayas iniciado sesión, es el momento de crear tu primer bot. Haz clic en el botón “Comenzar con una
plantilla”, o simplemente en + NEW BOT en la sección del encabezado.
3. Puedes elegir una o muchas habilidades predefinidas para tu bot. Esto te ayudará a comenzar más rápido. Por ahora
selecciona solo “saludos”, pero te animo a que revises los demás más tarde.
5. Añade una descripción. “Mi increíble y divertido chiste bot” aunque quizá algo menos engreído sería lo correcto.
6. Puedes configurar hasta 6 temas para mejorar tu entrenamiento de bot. Los temas son palabras clave que pueden definir
tu bot como “moda”, “juegos” o “trabajos”.
7. Dependiendo del uso de los datos, elige la opción de Política de datosapropiada. Ten en cuenta que no permitimos bots
de “Salud” (que solicitan información personal de salud a sus usuarios) por el momento.
9. Puedes mantener tu bot público ya que no hay información privada, pero en caso de que cambies de opinión, puedes
cambiar esta configuración más adelante.
https://planetachatbot.com/primer-bot-con-sap-conversational-ai-e2aeec25e9fb
Hay 5 fases en la vida de tu bot, todas ellas representadas en nuestra plataforma a través del uso de 5 pestañas:
5. Monitor: entrena a tu bot para hacerlo más nítido y obtén información sobre su uso.
En el post de hoy, omitiremos la parte del “Código”, porque no necesitaremos información externa. Si quieres conectar tu
bot con algún código, te animo a que consultes este tutorial.
Un intent (o intención) es una “caja” de oraciones que tienen el mismo significado, aunque pueden ser muy diferentes
entre sí. Cuando un usuario envía un texto a tu bot, nuestro algoritmo lo compara con las frases de tus intents. Luego
verifica si está lo suficientemente cerca de uno de ellos y decide cuál es la intención del mensaje.
Por ejemplo:
¿Eres un bot?
Usted responde tan rápido, estoy seguro de que debe ser algún tipo de robot.
Todos estos inputs son diferentes, pero todos hacen la misma pregunta que podemos resumir como: ¿Eres un bot? Bueno,
eso sería un gran intento! Si tu bot es capaz de reconocer esta pregunta, puedes preparar una reacción inteligente, como
“Soy un robot y estoy orgulloso de ello”.
Intenciones de tenedor
Todos los bots deben entender cosas básicas como ‘saludos’, ‘estar de acuerdo’, ‘no estar de acuerdo’, o cuando un
usuario pide ayuda.
Si elegiste los “saludos” de habilidades predefinidos cuando configuraste tu bot, ya tendrás dos intenciones: adiós y
saludos.
Como SAP Conversational AI es colaborativo, ¡no tienes que recrear cada intent! Puedes “bifurcar” una intención que
alguien ya creó para clonarla directamente en tu bot. Ya que debemos entender que nuestro usuario desea que se nos
cuente un chiste, veamos si la comunidad ya ha creado esta intención para nosotros.
https://planetachatbot.com/primer-bot-con-sap-conversational-ai-e2aeec25e9fb
Puedes hacer clic en los nombres de intención si deseas verificar su contenido completo. El primer resultado se adapta a lo
que estoy buscando.
Si quieres una intención personalizada, puedes construirla desde cero. Aquí, queremos que el robot entienda cuando
alguien se ríe de la broma.
Haz clic en + CREAR a la derecha del campo de búsqueda, y elige un nombre para tu intención:
https://planetachatbot.com/primer-bot-con-sap-conversational-ai-e2aeec25e9fb
Repite este proceso para la intención que reúne reacciones negativas a tus chistes:
Ahora que tenemos intenciones, debemos rellenarlos con varias expresiones. Una expresión es el nombre de una oración
agregada a un intento.
Una regla de oro sería agregar al menos 30 expresiones a un intento, e idealmente más de 50 .
Haz clic en un intento y agrega oraciones que quieras que tu bot entienda.
https://planetachatbot.com/primer-bot-con-sap-conversational-ai-e2aeec25e9fb
Ponte en los zapatos de las personas que hablan con tu bot. ¿Qué podrían pedir? Ingresa una nueva expresión
escribiéndola en el campo Agregar una expresión. Aquí hay unos ejemplos:
Risas
Cojo
Consejo: haz clic en el mensaje “Tienes X expresiones sugeridas para enriquecer tu intención “ para ver ejemplos de frases
que puedes agregar a tu bot. Una buena manera de acelerar tu entrenamiento!
Ahora que tu bot está lleno de expresiones, probémoslo con la consola: Haz clic en el icono de burbuja de PRUEBA en la
parte superior derecha. Escribe una oración con la que no hayas entrenado a tu bot: “Botty bot, ¿puedes contarme una
broma, por favor?”
https://planetachatbot.com/primer-bot-con-sap-conversational-ai-e2aeec25e9fb
Con respecto a lo que escribiste, verás qué intento se detectó en “Se está refiriendo a”. Si el algoritmo no detectó un
intento, o detectó un intento no válido, eso significa que necesitas entrenar a tu bot con más expresiones. Vuelve a tus
intentos y añade o modifica expresiones. Entonces, prueba de nuevo. Esto puede parecer un poco repetitivo, pero es la
mejor manera de asegurar que tu bot detecte correctamente las oraciones de los usuarios.
Una vez que estés satisfecho con la detección de la intención de tu bot, es hora de pasar a la siguiente fase: crear el flujo de
tu bot.
Ahora que el “cerebro” de tu bot está completo, haz clic en la pestaña Crear.
La pestaña Construir es donde encuentras el Generador de Bot. Te ayuda a construir el flujo de conversación de tu bot
usando Skills.
Cada skill representa una cosa que tu bot sabe cómo hacer, y pueden interactuar entre sí. Tu skill puede ser complicada,
como gestionar el pago con crédito o simplemente, responder preguntas básicas.
https://planetachatbot.com/primer-bot-con-sap-conversational-ai-e2aeec25e9fb
Cuando creas un nuevo bot, las habilidades de bifurcación que ya creaste en el nuevo seguirán haciendo que tus bots sean
más poderosos. ¡También puedes unir las skills creadas por otras personas en la plataforma, para que no tengas que
reinventar la rueda!
El resumen de habilidades
Desencadenadores: donde defines por qué esta skill debe activarse después de un mensaje de usuario.
Requisitos: Describe qué información debe recopilar esta skill y qué preguntas deben formularse para cumplir los
requisitos
https://planetachatbot.com/primer-bot-con-sap-conversational-ai-e2aeec25e9fb
Acciones: Qué hacer una vez cumplidos los requisitos.
Si navegas por las pestañas, verás que esta skill está estructurada de la siguiente manera:
No tiene requisitos, ya que no necesita recopilar información adicional. Eso significa que ejecutará acciones
directamente después de un trigger.
Tiene dos acciones posibles: si la intención coincidente son saludos, envía un mensaje de bienvenida al azar elegido de
una lista, y si la intención es adiós, hace lo mismo, pero selecciona el mensaje de una lista diferente.
Business y Floating no tienen diferencias estructurales. Sin embargo, la diferenciación de los dos tipos de habilidades
ayuda cuando tienes muchas de ellas.
Las habilidades de fallback se activan cuando ninguna otra habilidad tiene sus desencadenantes cumplidos después de
un mensaje de usuario. La mayoría de las veces, solo tendrás uno de este tipo, en el que podrás recordar al usuario
qué puede hacer tu robot y pedirle que lo reformule.
Nuestra skilll será de tipo floating. Dale el nombre que quieras, yo elegí “hacerle una broma”.
No te olvides de cambiar la condición a OR — haciendo clic en uno de los botones azules “Y” — ya que es una condición
AND por defecto, y queremos activar nuestra skill cuando alguna de estas intenciones coincida.
No tendremos que hacer nada en los Requisitos, porque no tenemos nada que preguntar. Pero puedes mejorar el bot
pidiendo información, como qué tipo de bromas prefieren, o qué edad tienen si quieres agregar algunas bromas para
adultos.
Haz clic en AGREGAR NUEVO GRUPO DE MENSAJES, luego AGREGA CONDICIÓN para activar los mensajes y agrega la
condición: Si @ ask-joke está presente. La “@” significa tipo de intención. Vamos a cubrir otros tipos más tarde.
Luego elige el tipo de acción “ENVIAR MENSAJE”, elige Formato de texto y escribe la mejor broma que conozcas:
https://planetachatbot.com/primer-bot-con-sap-conversational-ai-e2aeec25e9fb
También puedes establecer un retraso (opcional) entre dos mensajes, hasta cinco segundos. Esto puede ser útil cuando los
mensajes que envía tu bot son bastante largos y necesitan tiempo para que los lea el usuario.
Haz clic en el little + sobre tu mensaje para agregar un nuevo mensaje a tu lista aleatoria, para que no siempre estés
enviando el mismo chiste. Si vuelves a hacer clic en ENVIAR MENSAJE, puedes enviar varios mensajes al mismo tiempo.
https://planetachatbot.com/primer-bot-con-sap-conversational-ai-e2aeec25e9fb
Una vez que te sientas cómodo con tus chistes, vamos a cubrir los otros dos intentos.
Haz clic en ADD A NEW MESSAGE GROUP y establece como condición: Si @laughs está presente…
En este caso yo decidí enviar gifts, así que hice clic en ENVIAR MENSAJE y en Formato de imagen.
https://planetachatbot.com/primer-bot-con-sap-conversational-ai-e2aeec25e9fb
Último paso antes de lanzar tu bot a tu audiencia: chatea con él en una situación real. Esto te mostrará exactamente cómo
es el bot y cómo reacciona como si estuvieras en la piel de cualquier otro usuario, y podrás volver a verificar cualquier error
en el flujo de la conversación (respuestas incorrectas, error de recuperación, comportamiento extraño…) y corregirlo antes
de que se haga público. De hecho, te recomiendo que converses con tu robot tan a menudo como puedas durante su
construcción, ya que será más fácil identificar de dónde viene un error final.
Haz clic en el botón azul de abajo a la derecha “CHAT WITH YOUR BOT” y comienza a enviar algunos mensajes. Utiliza
“Clear” para actualizar el chat.
¿Tu bot está listo? Es hora de implementarlo en una plataforma de mensajería pública.
Ves a la pestaña Conect, elige la plataforma de mensajería que prefieras y sigue las instrucciones paso a paso.
No tendrás que hacer nada más que la configuración inicial para implementar tu bot en un nuevo canal. Por esta razón, ¡no
debes dudar en configurar los múltiplos para ampliar tu audiencia!
Ten en cuenta que algunas plataformas no son tan poderosas como otras. Por ejemplo, Telegram es muy fácil de configurar
pero no admite imágenes GIF, por lo que debes adaptar tu bot como corresponda.
Si no sabes por dónde empezar, Facebook Messenger es una plataforma muy poderosa con una gran audiencia.
Con Bot Connector, agregar un nuevo canal se puede llevar a cabo en cuestión de minutos, no requiere mantenimiento.
Ahora, ves a Messenger, Kik o cualquier otro canal que elijas y busca tu bot, ¡Sí, está ahí, está listo para usarse!
Reúne todos los mensajes que recibe tu robot y muestra la intención que coincidió.
Asigne el intento correcto si un intento inválido fue emparejado o no se le asignó absolutamente nada.
https://planetachatbot.com/primer-bot-con-sap-conversational-ai-e2aeec25e9fb
Aquí, el último mensaje enviado a mi bot no coincide con ninguna intención. Si los mensajes similares siguen llegando con
el tiempo, crearé una nueva intención para este caso.
Ya has hecho un gran trabajo por hoy. Ahora es el momento de tomar un descanso, divertirte viendo a las personas hablar
con tu bot y pulir tu identidad.
La próxima vez que hagas un bot, ¡no olvides incluir tu joke skill! Una y otra vez, tus bots sabrán más y más. Sé iterativo y
reutiliza lo que ya has hecho.
SAP Conversational AI
Apr 2 · 9 min read
Pokémon es uno de los primeros juegos a los que recuerdo haber jugado. Tenía todo lo necesario para triunfar: una historia
que enganchaba, unas mecánicas profundas pero sencillas y un diseño de personajes increíble.
Sin embargo, con el volumen de Pokémon que hay actualmente disponibles, es muy complicado seguir la pista a todos los
Pokémon que puedes encontrarte. En los últimos juegos, Sol y Luna, ¡hay más de 807 Pokémon por capturar! Es por esto
que quiero construir un bot que me ayude a seguirles la pista: Quiero un compañero que me ayude a recordar de qué tipo
es Gyarados o cómo hacer que mi Stufful evolucione.
Además, el objetivo de este tutorial es enseñarte cómo usar Gazettes para mejorar detección de entidad del bot y cómo
interactuar con un Node.JS API que recupera información desde una base de datos para crear una experiencia rica e
interactiva para los usuarios.
Este tutorial asume que tienes un conocimiento básico sobre la plataforma de SAP Conversational AI. Si eres un
principiante, te recomiendo que empieces leyendo este tutorial y creando tu propio chatbot gratis.
Un indicador de línea de comandos similar a Unix. Si estás usando un Windows y no puedes instalar un Bash para
Windows tendrás que adaptar algunos pasos a tus herramientas. Estaremos encantados de ayudarte si necesitas algo.
Nota: Si quisieras omitir la creación del bot en SAP Conversational AI e ir directamente al lado del servidor, puedes hacerlo
desde aquí.
Vamos a empezar
Crea un nuevo bot en la plataforma, elige Greetings and Small Talk como cualidades predefinidas:
Crea un nuevo intent llamado pokemon-informations, y añade las siguientes frases para empezar con:
Puedes añadir muchas más frases, contra más ejemplos añadas, tu bot se hará más fuerte.
Las Gazettes están hechas para mejorar la detección de entidades cuando puedes proporcionar una lista de sinónimos para
cada entidad. Una Gazette mantiene una lista de término que se llama Synonyms, y el algoritmo la usa para conseguir que
tu bot sea más listo.
Hay dos ajustes para una Gazette; puede ser abierta o cerrada:
Si es abierta (la configuración por defento), simplemente mejorará la entidad de detección. Para hacerlo, va de la
mano con los ejemplos de entidades que etiquetaste en tus expresiones de intents. Piensa en ello como un
entrenamiento extra.
Si es cerrado, el synonyms en la Gazette representa cada uno de los valores que la entidad puede tener. Olvídate del
contexto y de todas esas características tan sofisticadas que los motores de PLN utilizan para extraer entidades, si una
palabra se guarda en una Gazette cerrada, se etiquetará, si no lo está, no.
La única excepción es que la Gazette cerrada utiliza la coincidencia aproximada para permitir pequeños errores y errores
tipográficos, pero puedes ajustar su rigor (100 significa que se requiere una coincidencia perfecta, 1 significa que todo se
etiquetará con la entidad).
La buena noticia es que puedes subir archivos cvs conteniendo synonyms de tu Gazette. Yo cree uno que contenía cada
uno de los nombres de los Pokémonque existen: Puedes descargarlos aquí.
Ahora que el bot ha aprendido cada nombre de los Pokémon, es perfecto para una Gazette cerrada. Ve a las opciones y
activa el botón para cerrarla.
https://planetachatbot.com/primer-bot-con-sap-conversational-ai-e2aeec25e9fb
Pero ¿por qué necesitaría entrenar mi bot una vez que la Gazette está creada?
Bueno, entidades e intents, incluso vinculados, son conceptos distintos. Sigues necesitando entrenar tu bot para detectar
correctamente los intents incluso cuando las entidades están bien entrenadas.
Deberías notar que la entidad POKEMONes etiquetada en la creación de tus expresiones, ¡Sin ninguna acción!
Habilidades:
Junto a las 2 habilidades que ya tienes en la pestaña Build, crea una nueva habilidad, llamada pokemon-informations.
Configura un mensaje si falta #pokemon, algo como “¿Sobre qué Pokemon quieres saber más?
Manda una solicitud a la API una vez que Pokémon esté registrado, y después limpia la memoria:
https://planetachatbot.com/primer-bot-con-sap-conversational-ai-e2aeec25e9fb
Crea otra habilidad llamada pokemon-evolutionsy estructúrala de la misma forma, pero que esté desencadenado si el
intent pokemon-evolutionsestá presente, y ten una URL webhook de /pokemon-evolutions.
Construyendo la API
El núcleo de la API no es más que una aplicación Express.js. Tendrá dos rutas principales: una para información general y
otra para preguntas sobre las evoluciones de los Pokémon. También manejará las solicitudes de POST on /errors, que el bot
builder utilizará para avisarte cuando algo vaya mal.
En lugar de usar una base de datos remota, crea un archivo JSON que contenga todo el conocimiento de los Pokémon
necesario para tu bot. Dado que NodeJS puede requerir archivos JSON o JavaScriot, será muy sencillo de usar, y es lo
suficientemente pequeño como para cargarlo en la RAM sin tener que preocuparse de nada (son “solo” cerca de 500kb).
Puedes descargarlo usando este enlace y moviéndolo a la carpeta que acabas de crear o también usar el siguiente
comando de curl:
curl -O https://cdn.cai.tools.sap/blog/pokebot/pokedex.json
No todos los datos incluidos se utilizarán en este tutorial, así que siéntete libre de agregar funciones a tu bot, o incluso de
mejorar el JSON si es necesario. ¡Tus solicitudes serán bienvenidas!
Ahora abre el archivo index.js con tu editor favorito. Empezaremos cargando las dependencias e iniciando la aplicación
exprés.
const express = require('express');
const bodyParser = require('body-parser');
const db = require('./pokedex.json');const app = express();
app.use(bodyParser.json());
// Load routes
app.post('/pokemon-informations', getPokemonInformations); app.post('/pokemon-evolutions', getPokemonEvolutions);
app.post('/errors', function (req, res) {
console.error(req.body);
res.sendStatus(200);
});// Start server
https://planetachatbot.com/primer-bot-con-sap-conversational-ai-e2aeec25e9fb
const PORT = process.env.PORT || 5000;
app.listen(PORT, () => console.log(`App is listening on port ${PORT}`));
Ambas rutas necesitarán información sobre un Pokémon desde el archivo JSON. Escribamos una función para que haga
esto:
function findPokemonByName(name) {
const data = db.find(p => p.name.toLowerCase() === name.toLowerCase());
if (!data) {
return null;
}
return data;
};
El controlador para la ruta /pokemon-informationsextrae el nombre del Pokémon de la memoria, tal y como está
configurado en la skill correspondiente, obteniendo su información de JSON.
Después vuelve a una lista de mensajes donde muestra los datos de una forma más amigable y sencilla.
Existe un fallback en caso de que la entidad Pokémon extraída de SAP Conversational AI no se encuentre en la base de
datos.
function getPokemonInformations(req, res) {
const pokemon = req.body.conversation.memory.pokemon;
const pokemonInfos = findPokemonByName(pokemon.value);if (!pokemonInfos) {
res.json({
replies: [
{ type: 'text', content: `I don't know a Pokémon called ${pokemon} :(` },
],
});
} else {
res.json({
replies: [
{ type: 'text', content: `${pokemonInfos.name} infos` },
{ type: 'text', content: `Type(s): ${pokemonInfos.types.join(' and ')}` },
{ type: 'text', content: pokemonInfos.description },
{ type: 'picture', content: pokemonInfos.image },
],
});
}
}
El controlador para la ruta /pokemon-informationses similar, solo que devuelve diferentes datos.
Dado que el formato del mensaje muestra los requisitos de evolución de una manera muy densa, es mejor moverlo a su
propia función,formatEvolutionString.
Además del fallback en caso de que no pueda encontrar el Pokémon, este controlador también necesita una alternativa si
el Pokémon no tiene ninguna evolución.
https://planetachatbot.com/primer-bot-con-sap-conversational-ai-e2aeec25e9fb
function getPokemonEvolutions(req, res) {
const pokemon = req.body.conversation.memory.pokemon;
const pokemonInfos = findPokemonByName(pokemon.value);if (!pokemonInfos) {
res.json({
replies: [
{ type: 'text', content: `I don't know a Pokémon called ${pokemon} :(` },
],
});
} else if (pokemonInfos.evolutions.length === 1) {
res.json({
replies: [{ type: 'text', content: `${pokemonInfos.name} has no evolutions.` }],
});
} else {
res.json({
replies: [
{ type: 'text', content: `${pokemonInfos.name} family` },
{
type: 'text',
content: pokemonInfos.evolutions.map(formatEvolutionString).join('\n'), },
{
type: 'card',
content: {
title: 'See more about them',
buttons: pokemonInfos.evolutions
.filter(p => p.id !== pokemonInfos.id) // Remove initial pokemon from list
.map(p => ({
type: 'postback',
title: p.name,
value: `Tell me more about ${p.name}`,
})),
},
},
],
});
}
}
Si este no es tu caso, intenta leer el código de nuevo para verificar si hay algún error, ¡también puede pasar por
nuestra Slack se te atascas!
Publicando tu API
https://planetachatbot.com/primer-bot-con-sap-conversational-ai-e2aeec25e9fb
Dado que SAP Conversational AI debe poder acceder de forma pública a tu API, debes alojarla en un servidor público o usar
Ngrok.
Ngrok te permite exponer un puerto de tu ordenador al mundo exterior. Descarga Ngrok y ejecútalo usando el siguiente
comando:
ngrok http 5000
Ahora puedes pegar la URL de redirección de http en la base del bot en tu URL, en su configuración en la plataforma de SAP
Conversational AI.
¡Tú bot ahora está vivo! Puedes conectarte a varios canales de mensajería siguiendo los pasos en la pestaña Conectar.
Ahora ya tienes un bot de Pokémon en marcha. Esto ya está bien, pero con lo que has aprendido en este tutorial puedes
hacer mucho más. Aquí hay algunas consultas que tu bot podría procesar si quieres ir más lejos:
Coincidencia de tipos: ¿cuál es el modificador de un tipo dado frente a otro? ¡Mega-bonus si puedes manejar tipos
dobles!
Adapta las respuestas en función de la versión de Pokémon (¡Buena suerte con esta!)
https://planetachatbot.com/primer-bot-con-sap-conversational-ai-e2aeec25e9fb
Construir un Pokémon bot exhaustivo, todo en uno y que todo lo sepa es una misión para una vida. Solo un verdadero
Pokefan podría lograrlo. ¿Serías tú el único? Y recuerda que puedes ponerte en contacto con nosotros si necesitas ayuda, a
través de la sección de comentarios que se muestra a continuación o por medio de Slack.