Los pasos
1
Entender
El agente lee la pregunta junto con la conversación hasta ese punto, detecta el idioma en el que escribe el visitante y reescribe la pregunta en dos consultas de búsqueda enfocadas: una para conocimiento, otra para imágenes. La respuesta volverá en el idioma del visitante. Una pregunta fuera de tema para el negocio se salta la recuperación por completo; el agente reencauza con cortesía en lugar de responderla.
2
Seleccionar temas e imágenes, al mismo tiempo
Dos llamadas rápidas al modelo corren en paralelo. Una elige cuáles de los temas de conocimiento del agente toca la pregunta, escogiendo a partir de la descripción que cada tema tiene de lo que cubre. La otra elige imágenes candidatas del registro del agente, a partir de una lista corta con el id, el tipo, la orientación y qué muestra cada imagen. Nunca una URL. Las imágenes ya mostradas en la conversación se excluyen en código, no solo en el prompt.
3
Sintetizar cada tema
Cada tema seleccionado recibe su propia síntesis, todas en paralelo, y cada una ejecuta su propia recuperación.La recuperación es híbrida. Un mapa de temas determinista y una búsqueda vectorial sobre los pasajes indexados del agente corren lado a lado y sus rankings se fusionan, devolviendo los ocho mejores pasajes para ese tema. Las dos mitades fallan de forma distinta a propósito: el mapa de temas no necesita modelo, ni índice, ni red, así que una página sigue respondiendo cuando la mitad vectorial no está disponible o todavía está calentando.La síntesis destila esos pasajes en un resumen corto y fundamentado de lo que el conocimiento dice sobre la pregunta. Un tema fallido nunca hunde el turno; el constructor trabaja con los resúmenes que llegaron.
4
Construir la respuesta
Una sola llamada compone la respuesta completa a partir de los resúmenes fundamentados y la lista corta de imágenes: de uno a tres componentes del catálogo cerrado, en orden, más la respuesta hablada de una línea. Construir escribe el texto; no sale a buscar hechos nuevos. Una construcción que no produce ningún componente válido recibe exactamente un intento de reparación antes de que el turno termine en error.
5
Validar, sanitizar, resolver
Cada componente construido pasa por el mismo pipeline, en ese orden exacto, del lado del servidor:
- Validar las props del componente contra su esquema. Los campos desconocidos son un rechazo, no una clave descartada en silencio.
- Sanitizar cada campo de texto, dejando intactos los ids de referencia.
- Resolver los ids en datos reales: un id de imagen se convierte en una URL firmada del propio almacenamiento de wondeya, un id de enlace se convierte en la URL que registraste.
6
Transmitir
La página recibe eventos por Server-Sent Events a medida que ocurren: primero el id de conversación, luego un estado grueso y una línea de progreso mientras se elabora el turno, la respuesta escrita, cada sección exactamente una vez con props validadas listas para renderizar, y al final la lista autoritativa de las secciones que llegaron. No hay placeholders de carga: una sección aparece cuando está lista.