Luis Beltrán
• Microsoft MVP (AI, Developer Technologies,
Azure)
• Investigador en Tomás Bata University in Zlín
• Docente en Tecnológico Nacional de México en
Celaya
@darkicebeam
luis@luisbeltran.mx
luisbeltran.mx
¿Qué es Question Answering?
• Una capacidad del servicio cognitivo
Language.
• Permite definir una knowledge base
(base de conocimientos) de pares de
preguntas y respuestas que se
pueden consultar mediante la
entrada de lenguaje natural.
• La base de conocimientos puede
publicarse en un endpoint REST y ser
consumida por aplicaciones cliente,
comúnmente bots.
Demo 1: Creando una base de conocimientos
1. Crea un recurso Language en Azure
A. Activa la característica de Question Answering
B. Crea o elige un recurso de Azure Cognitive Search para hospedar el índice de la
base de conocimiento
2. En Language Studio, elige el recurso de Language y crea un Proyecto de
Custom question answering.
3. Asigna un nombre a la base de conocimiento.
4. Agrega una o más fuentes de datos para la base de conocimiento
A. URL
B. Archivos
C. Datasets predefinidos
5. Crea la base de conocimiento y edita los pares de preguntas y respuestas
en el portal
Demo 2: Implementando conversaciones
multiturno
1. Agrega una petición de seguimiento (follow-up prompt).
A. Ingresa el mensaje
B. Elige un enlace existente o crea uno nuevo
C. Elige si el mensaje solo debe mostrarse en el contexto o también es una
pregunta aislada válida
Demo 3: Probando y publicando una base de
conocimiento
1. Guarda los cambios realizados en la base de conocimientos.
2. Da clic en el botón Test para abrir un espacio donde puedes
conversar con la base, hacer preguntas y obtener respuestas.
Demo 4: Publicando una base de
conocimiento
1. En el menu Deploy knowledge base, da clic en Deploy.
2. Accede a la URL del servicio implementado con el botón Get
prediction URL
Consumiendo la base de conocimiento
{
"answers": [
{
"questions": [
"How can I cancel a reservation?"
],
"answer": "Call us on 555 123 4567 to cancel a
reservation.",
"confidenceScore": 1.0,
"id": 6,
"source": "https://margies-travel.com/faq",
"metadata": {},
"dialog": {
"isContextOnly": false,
"prompts": []
}
}
]
{
"question": "What do I need to do to cancel a reservation?"
}
Petición REST
Respuesta
Demo 5: Consumiendo la base de
conocimiento
1. En la tecnología de tu preferencia, realiza una petición REST
considerando:
A. El endpoint REST de predicción de la base de conocimiento
B. La llave de suscripción del servicio de Azure
C. La pregunta que deseas realizar
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
rem Set variables
set prediction_url="YOUR_PREDICTION_ENDPOINT"
set key="YOUR_KEY"
curl -X POST !prediction_url! -H "Ocp-Apim-Subscription-Key: !key!" -H "Content-
Type: application/json" -d "{'question': 'What is a learning Path?' }"
Demo 6: Creando un bot de preguntas y
respuestas
1. Da clic en el botón Crear bot
2. Personaliza la información del bot en el portal de Azure:
A. Nombre
B. Ubicación
C. Esquema de precio
D. Nombre de la aplicación
E. Lenguaje
3. Accede al recurso creado
4. Da clic en Test in Web Chat para probar la funcionalidad del bot
Mejorando el
desempeño del servicio
• Aprendizaje activo
{
"question": "I want to book a hotel.",
"top": 3
}
{
"answers":[
{
"questions":[
"How do I book a hotel?"
],
"answer": "Call 555-123-4567 to book.",
"score":76.55,
"id":2,
...
},
{
"questions":[
"Can I book multiple hotel rooms?"
],
"answer":"Yes, you can reserve up to 3 rooms.",
"score":76.15,
"id":6,
...
},
{
"questions":[
"Is there a booking fee?"
],
"answer":"No, we do not charge a booking fee.",
¡Gracias por tu atención!
About Me:
https://about.me/luis-beltran
Notas del editor
El servicio cognitivo Language incluye una capacidad de Question Answering, que le permite definir una base de conocimientos de pares de preguntas y respuestas que se pueden consultar mediante la entrada de lenguaje natural. La base de conocimientos puede publicarse en un extremo REST y ser consumida por aplicaciones cliente, comúnmente bots.
Question Answering es una versión más reciente del Servicio QnA que está por ser dado de baja en Azure.
Una base de conocimiento es una forma de modelo de lenguaje que se puede crear a partir de fuentes existentes:
Sitios web que contienen documentación de preguntas frecuentes (FAQ).
Archivos que contienen texto estructurado, como folletos o guías de usuario.
Pares de preguntas y respuestas de chit chat incorporados que encapsulan intercambios conversacionales comunes
El usuario envía una pregunta, esperando una respuesta.
El servicio utiliza el procesamiento del lenguaje natural para buscar la mejor coincidencia de la pregunta con un element de la base de conocimientos.
La respuesta es un elemento estático a una pregunta conocida
La aplicación cliente presenta la respuesta al usuario.
Question Answering usa Azure Search para indexar y consultar la base de conocimientos de preguntas y respuestas.
La respuesta a preguntas proporciona creación, entrenamiento y publicación junto con permisos de colaboración para integrarse en el ciclo de vida completo del desarrollo.
Para crear una solución de Question Answering, puedes usar la API REST o un SDK para escribir código que defina, entrene y publique la base de conocimientos. Sin embargo, es más común utilizar la interfaz web de Language Studio para definir y administrar una base de conocimientos.
La URL de una página que contenga un FAQ.
Archivos con texto estructurado del que se pueden derivar preguntas y respuestas.
Datasets de chit-chat predefinidos que incluyen preguntas y respuestas conversacionales comunes en un estilo específico.
La base de conocimientos se ha rellenado con pares de preguntas y respuestas de las preguntas más frecuentes de Microsoft Learn
https://learn.microsoft.com/en-us/training/support/faq?pivots=general
Complementamos la base de conocimientos con un conjunto de pares de preguntas y respuestas de chat conversacional.
Puede ampliar la base de conocimientos agregando pares de preguntas y respuestas adicionales.
Es possible crear una base de conocimientos efectiva con pares de preguntas y respuestas individuales, pero en ocasiones será necesario hacer preguntas de seguimiento para obtener más información de un usuario antes de presentar una respuesta definitiva. Este tipo de interacción se conoce como una conversación de varios turnos.
Por ejemplo, supongamos que una pregunta inicial para una base de conocimientos de reservas de viajes es "¿Cómo puedo cancelar una reserva?". Una reserva puede referirse a un hotel o un vuelo, por lo que se requiere un mensaje de seguimiento para aclarar este detalle. La respuesta puede consistir en textos como "Las políticas de cancelación dependen del tipo de reserva" e incluir indicaciones de seguimiento con enlaces a respuestas sobre la cancelación de vuelos y la cancelación de hoteles.
Se pueden definir explícitamente indicaciones y mensajes de seguimiento para los pares de preguntas y respuestas existentes.
Show in contextual flow only: Selected. Esta opción garantiza que la respuesta solo se devuelva en el contexto de una pregunta de seguimiento de la pregunta de certificación original.
Después de definir una base de conocimientos, puede entrenar su modelo de lenguaje natural y probarlo antes de publicarlo para su uso en una aplicación o bot.
Puede probar su base de conocimientos de forma interactiva en Language Studio, enviando preguntas y revisando las respuestas que se devuelven. Puede inspeccionar los resultados para ver sus puntajes de confianza, así como otras respuestas potenciales.
La base de conocimientos proporciona un servicio back-end que las aplicaciones cliente pueden usar para responder preguntas.
Cuando esté satisfecho con el rendimiento de su base de conocimientos, puede publicarla e implementarla en un endpoint REST que las aplicaciones cliente puedan usar para enviar preguntas y recibir respuestas.
Para consumir la base de conocimientos publicada, puede utilizar la interfaz REST.
El cuerpo de solicitud mínima para la función contiene una pregunta, como esta:
La respuesta incluye la coincidencia de preguntas más cercana que se encontró en la base de conocimientos, junto con la respuesta asociada, la puntuación de confianza y otros metadatos sobre el par de preguntas y respuestas.
Si bien puede usar la base de conocimiento de respuesta a preguntas en cualquier tipo de aplicación, un uso común son los bots.
Un bot es una aplicación conversacional que permite a los usuarios interactuar utilizando el lenguaje natural a través de uno o más canales, como correo electrónico, chat integrado en sitios web, mensajes de voz, plataformas de redes sociales e incluso Microsoft Teams.
Question Answering es el punto de partida para el desarrollo de bots, particularmente para los diálogos conversacionales que implican responder preguntas de los usuarios. Por ello, Language Studio ofrece la opción de crear fácilmente un bot que se ejecute en azure bot Service en función de su base de conocimientos.
Para crear un bot desde la base de conocimientos, use Language Studio para implementar el bot y, a continuación, use el botón Crear bot para crear un bot en su suscripción de Azure. A continuación, puede editar y personalizar el bot en Azure Portal.
El aprendizaje activo puede ayudarlo a realizar mejoras continuas en las respuestas a las preguntas de los usuarios de forma correcta con el paso del tiempo.
El aprendizaje activo ayuda a mejorar la base de conocimientos de dos maneras:
Retroalimentación implícita: el servicio identifica las preguntas proporcionadas por el usuario que tienen múltiples coincidencias puntuadas de manera similar en la base de conocimientos. Estos se agrupan automáticamente como sugerencias de frases alternativas para las posibles respuestas que puede aceptar o rechazar en la página Sugerencias para su base de conocimientos en Language Studio.
Retroalimentación explícita. Al desarrollar una aplicación cliente, puede controlar el número de posibles coincidencias de preguntas devueltas para la entrada del usuario, luego el usuario decide cuál es la major coincidencia; esta retroalimentación se devuelve al servicio para que en futuras iteraciones se elija la respuesta más adecuada según los usuarios.
Los sinónimos son útiles cuando la pregunta enviada por los usuarios puede incluir varias palabras diferentes para significar lo mismo. Por ejemplo, un cliente de una agencia de viajes puede referirse a los términos "reservation" o ”booking". Al definirlos como sinónimos, el servicio de respuesta a preguntas puede encontrar una respuesta adecuada independientemente del término que utilice un cliente individual.
Un sistema de IA incluye no solo la tecnología, sino también las personas que la usarán, las personas que se verán afectadas por ella y el entorno en el que se implementa. Crear un sistema que sea adecuado para su propósito previsto requiere una comprensión de cómo funciona la tecnología, sus capacidades y limitaciones, y cómo lograr el mejor rendimiento.
Microsoft proporciona notas de transparencia para ayudarle a comprender cómo funciona nuestra tecnología de IA. Esto incluye las elecciones que los propietarios del sistema pueden hacer que influyen en el rendimiento y el comportamiento del sistema, y la importancia de pensar en todos los elementos, incluida la tecnología, las personas y el medio ambiente. Puede usar notas de transparencia al desarrollar o implementar su propio sistema, o compartirlas con las personas que usarán o se verán afectadas por su sistema.
Microsoft quiere ayudarle a desarrollar e implementar de forma responsable soluciones que usen la respuesta a preguntas. Se adopta un enfoque basado en principios para defender la agencia personal y la dignidad al considerar la equidad, confiabilidad y seguridad de los sistemas de IA, la privacidad y la seguridad, la inclusión, la transparencia y la responsabilidad humana. Estas consideraciones reflejan nuestro compromiso con el desarrollo de la IA responsable.
Es importante recordar que usted es responsable del uso y la implementación de esta tecnología, incluido el cumplimiento de todas las leyes y regulaciones aplicables que se aplican a usted. Por ejemplo, es su responsabilidad:
Comprender dónde se procesan y almacenan sus datos mediante el servicio de respuesta a preguntas para cumplir con las obligaciones reglamentarias de su solicitud.
Informe a los usuarios de sus aplicaciones que la información como los registros de chat se registrará y se puede utilizar para su posterior procesamiento.
Asegúrese de que tiene todas las licencias, derechos de propiedad u otros permisos necesarios para el contenido de su base de conocimientos que se utiliza como base para desarrollar los QnAs.