AI-901
Deep Dive
La IA conversacional permite a las máquinas mantener diálogos útiles con humanos. Azure ofrece tres piezas complementarias: CLU entiende intenciones, Question Answering responde preguntas de base de conocimiento, y Bot Service conecta ambos con los usuarios.
Contenido
La IA conversacional permite que los sistemas comprendan lenguaje natural y respondan de forma coherente en un diálogo de múltiples turnos. No es solo responder preguntas — es mantener contexto, entender intenciones y ejecutar acciones basadas en lo que el usuario dice.
🎯
Chatbots de tarea
Ayudan al usuario a completar una acción específica: reservar un vuelo, consultar un saldo, hacer un pedido.
📚
Bots de FAQ
Responden preguntas frecuentes desde una base de conocimiento: políticas, procedimientos, documentación de producto.
🤝
Asistentes híbridos
Combinan tarea + FAQ: entienden intenciones Y responden preguntas arbitrarias, escalando a humanos cuando es necesario.
Las tres piezas de Azure para IA Conversacional
Entiende QUÉ quiere hacer el usuario (intención) y extrae los datos necesarios (entidades).
Responde preguntas abiertas buscando en una base de conocimiento predefinida.
Infraestructura que conecta todo con el usuario a través de canales (Teams, web, WhatsApp).
CLU (sucesor de LUIS) es el servicio de Azure AI Language que entrena modelos capaces de identificar la intención (qué quiere hacer el usuario) y extraer entidades (los datos específicos dentro del mensaje).
Intenciones (Intents)
Clasificación de lo que el usuario quiere hacer. Cada mensaje del usuario se mapea a una intención predefinida.
"Reserva un vuelo a Madrid"
→ ReservarVuelo
"Cancela mi pedido número 123"
→ CancelarPedido
"¿Cuánto cuesta el envío express?"
→ ConsultarPrecio
"Quiero hablar con un agente"
→ EscalarHumano
Entidades (Entities)
Datos específicos extraídos del mensaje que el sistema necesita para actuar. Tipos: learned, list, prebuilt.
"Reserva un vuelo a Madrid el viernes"
→ Destino: Madrid Fecha: viernes
"Cancela mi pedido número 123"
→ NumeroPedido: 123
"Dos cafés y un té con leche"
→ Producto: café (x2), té Modificador: con leche
Utterances
Ejemplos de frases que expresan cada intención. Más utterances = modelo más robusto ante variaciones.
// Intent: ReservarVuelo
"Quiero ir a Barcelona"
"Necesito un billete para Roma"
"Vuelo a París por favor"
"Cómo puedo llegar a Lisboa en avión"
"Reserva para Berlín mañana"
Mínimo recomendado: 15 utterances por intención.
Intención "None" — crítica para el examen
Todo proyecto CLU debe tener una intención None que captura mensajes que no corresponden a ninguna intención definida. Sin ella, el modelo intenta forzar cada mensaje a una intención — produciendo predicciones incorrectas con alta confianza. La intención None es el "no entiendo" del bot.
Crear proyecto CLU
En Azure AI Language Studio o via API. Elegir idioma(s) del proyecto — CLU soporta multilenguaje en un solo modelo.
Definir intenciones
Crear las intenciones que el modelo debe reconocer. Incluir siempre la intención "None". Nombres claros y mutuamente excluyentes.
Definir tipos de entidades
Learned (extraídas del contexto), List (valores fijos como "Madrid", "Barcelona"), Prebuilt (fechas, números, emails — ya vienen entrenadas).
Añadir utterances y etiquetar
Escribir 15+ ejemplos por intención. Para cada utterance: asignar intención y marcar las entidades dentro del texto (span labeling).
Entrenar el modelo
Clic en "Train". El servicio usa transfer learning sobre modelos de lenguaje preentrenados. Proceso en minutos/horas según volumen.
Evaluar y depurar
Revisar la matriz de confusión por intención. Ver utterances mal clasificadas. Añadir más ejemplos para las intenciones con baja precision/recall.
Desplegar y llamar a la API
Publicar el modelo a un deployment name. La Prediction API devuelve: top intent, score de confianza, entidades extraídas, todas las intenciones con scores.
Tipos de entidades en CLU
El modelo aprende a extraerlas del contexto. "Reserva en [Hotel Ritz]" → HotelName. Flexible pero necesita ejemplos etiquetados.
Lista de valores exactos y sinónimos. "Rojo" = ["rojo", "red", "carmesí"]. Determinístico, no necesita ML.
Modelos ya entrenados: DateTime, Number, Email, URL, PersonName, etc. Sin etiquetado propio.
Patrón de expresión regular. "Pedido número [A-Z]{2}\d{6}" → exacto para códigos de formato fijo.
Respuesta de la Prediction API
// POST /analyze
{
"topIntent": "ReservarVuelo"
"confidence": 0.94
"intents": {
"ReservarVuelo": {"score": 0.94}
"ConsultarPrecio": {"score": 0.04}
"None": {"score": 0.02}
}
"entities": [
{"category": "Destino", "text": "Madrid"}
{"category": "Fecha", "text": "el viernes"}
]
}
Question Answering (sucesor de QnA Maker) crea una base de conocimiento de pares pregunta-respuesta. Cuando el usuario hace una pregunta, el servicio busca la respuesta más adecuada por similitud semántica — no por palabras clave exactas.
URLs de FAQ
El servicio extrae automáticamente pares Q&A de páginas web de preguntas frecuentes.
Archivos (PDF, Word, Excel)
Extrae contenido de documentos. Los títulos de sección se convierten en preguntas, el contenido en respuestas.
Manual (Chitchat)
Pares Q&A escritos manualmente. También incluye respuestas a conversación casual prebuilt (hola, gracias, adiós).
Editorial
Azure puede sugerir preguntas alternativas para cada par basándose en variaciones lingüísticas.
Preguntas alternativas
Cada par puede tener múltiples formulaciones de la misma pregunta. "¿Cómo devuelvo un producto?" = "¿Cómo hago una devolución?" = "Quiero devolver algo".
Respuestas enriquecidas
Las respuestas pueden incluir markdown, imágenes, botones de acción sugerida (Adaptive Cards).
Confidence score
Cada respuesta viene con un score (0-1). Si es muy bajo, el bot puede decir "No tengo información sobre eso".
Aprendizaje activo
El servicio analiza preguntas sin respuesta buena y sugiere mejoras a la base de conocimiento.
Multi-turn
Soporte para conversaciones de múltiples turnos: una pregunta puede llevar a preguntas de seguimiento.
Ejemplo de respuesta de Question Answering
// Query: "¿Cuánto tarda el envío estándar?"
{
"answers": [
{
"answer": "El envío estándar tarda entre 3 y 5 días hábiles."
"confidenceScore": 0.92
"source": "FAQ-envios.pdf"
"questions": ['
"¿Cuánto tarda el envío estándar?"
"Tiempo de entrega envío normal"
]
}
]
}
Esta es la pregunta de examen más frecuente en IA Conversacional. La diferencia fundamental: CLU entiende qué quiere hacer el usuario para que el bot actúe; Question Answering busca información que el usuario quiere saber.
| Dimensión | CLU | Question Answering |
|---|---|---|
| Pregunta que responde | ¿Qué quiere HACER el usuario? | ¿Qué quiere SABER el usuario? |
| Output | Intent + Entities (para el bot actúe) | Texto de respuesta (para mostrar al usuario) |
| Entrenamiento | Utterances etiquetadas con intents/entities | Pares pregunta-respuesta |
| Ejemplo típico | "Reserva vuelo a Madrid el viernes" | "¿Cuánto equipaje puedo llevar?" |
| El bot después | Ejecuta una acción (llama a un API, reserva) | Muestra el texto de respuesta al usuario |
| Resultado si no hay match | Intent: None | Score bajo → "No encontré información" |
Usa CLU cuando...
Usa Question Answering cuando...
Azure Bot Service es la plataforma de infraestructura que aloja, conecta y gestiona el bot. No proporciona inteligencia conversacional — eso viene de CLU o Question Answering. Bot Service gestiona canales, autenticación, estado de conversación y mensajería.
Un solo bot → múltiples canales simultáneamente sin cambiar el código.
Un bot real generalmente necesita ambos servicios: CLU para manejar tareas de usuario y Question Answering para responder preguntas. Azure AI Language incluye un Orchestration Workflow que decide automáticamente a cuál de los dos redirigir cada mensaje.
Usuario envía mensaje
"¿Cuánto tarda el envío?" o "Quiero cancelar mi pedido"
Orchestration Workflow analiza
Decide si el mensaje es una pregunta (→ Question Answering) o una tarea (→ CLU). Basado en el intent más probable.
Ruta: Question Answering
Si es pregunta informativa → busca en la base de conocimiento → devuelve respuesta al usuario.
Ruta: CLU
Si es tarea → extrae intent + entities → el código del bot ejecuta la acción correspondiente.
Respuesta al usuario
El bot responde con la información de QnA o con el resultado de la acción ejecutada.
Ejemplo real: bot de aerolínea
Va a CLU (tareas)
"Reserva un vuelo a Madrid para el 15 de enero"
"Cancela mi reserva número RES-123"
"Cambia mi asiento al 14A"
"Necesito una silla de ruedas en el aeropuerto"
Va a Question Answering (info)
"¿Cuánto equipaje de mano puedo llevar?"
"¿Qué documentos necesito para volar?"
"¿Cuál es la política de cancelación?"
"¿Puedo llevar mascotas en cabina?"
| Escenario | Servicio | Razón |
|---|---|---|
| Bot que toma pedidos en un restaurante | CLU | Necesita extraer platos, cantidad, personalización — son entidades de una intención |
| Bot de FAQ del departamento de RRHH | Question Answering | Solo responde preguntas sobre políticas, no ejecuta acciones |
| Asistente que reserva salas de reuniones | CLU | Extrae fecha, hora, sala, asistentes — tarea con múltiples entidades |
| Bot de soporte con manual del producto como fuente | Question Answering | La base de conocimiento es el manual — no hay acciones |
| Bot de banco: consultas Y transferencias | CLU + QnA (orquestado) | Transferencias requieren CLU; preguntas sobre tasas requieren QnA |
| Desplegar el mismo bot en Teams y WhatsApp | Azure Bot Service | Gestión de canales múltiples — no es capacidad de CLU ni QnA |
| Bot que autentifica al usuario con su cuenta Microsoft | Azure Bot Service (OAuth) | Autenticación OAuth es responsabilidad de Bot Service |
❓ ¿CLU y Question Answering son lo mismo?
No. CLU clasifica la intención del usuario y extrae entidades para que el bot ejecute una acción. Question Answering busca una respuesta de texto predefinida en una base de conocimiento. CLU → "el usuario quiere HACER algo"; QnA → "el usuario quiere SABER algo".
❓ ¿Azure Bot Service incluye NLP incorporado?
No. Bot Service es infraestructura (canales, hosting, autenticación, estado de conversación). El NLP viene de CLU, Question Answering u otros servicios que se conectan al bot. Sin CLU o QnA, el bot no entiende lenguaje natural.
❓ ¿LUIS todavía existe como servicio separado?
LUIS fue reemplazado por CLU (Conversational Language Understanding) dentro de Azure AI Language Service. QnA Maker fue reemplazado por Question Answering, también dentro de Azure AI Language. El examen puede usar los nombres antiguos o nuevos — son el mismo concepto.
❓ ¿Con Question Answering el bot puede ejecutar acciones como hacer reservas?
No. Question Answering solo devuelve texto de respuesta. Para que el bot ejecute una acción (reservar, cancelar, modificar) se necesita CLU para extraer la intención y las entidades, más código personalizado que llame a los sistemas de back-end correspondientes.
¿Entendiste este tema?
Pon a prueba lo que acabas de aprender
Una cadena de pizzerías quiere un chatbot en su web que: (1) permita a los clientes hacer pedidos diciendo 'quiero una pizza margarita grande y dos colas', (2) responda preguntas como '¿tienen gluten free?' o '¿cuál es el horario de entrega?', y (3) funcione también en WhatsApp. ¿Qué combinación de servicios Azure necesitan?