Summarizer node
El Summarizer node es un componente de Nappai que toma la conversación o los mensajes almacenados en memoria y los resume de forma concisa. Utiliza un modelo de lenguaje (LLM) para generar un resumen que puede ser usado en pasos posteriores del flujo de trabajo, como generar respuestas más cortas o mantener un historial compacto.
¿Cómo funciona?
El nodo no realiza ninguna operación externa aparte de llamar al LLM que le indiques. Cuando se ejecuta, el nodo:
- Recibe la conversación (ya sea la memoria completa o un fragmento) y la pasa al LLM junto con los prompts configurados.
- Aplica el prompt inicial si no existe un resumen previo, o el prompt de extensión si ya hay un resumen.
- Limita la longitud del resumen según los valores de Max Summary Tokens y Max Tokens para evitar exceder el límite de tokens del modelo.
- Devuelve el resumen como un objeto
LangmemSummarizerNode
que puede ser conectado a otros nodos del flujo.
El proceso es totalmente local dentro del entorno de Nappai; solo necesita que el LLM esté disponible (por ejemplo, OpenAI, Anthropic, etc.) y que la clave de API esté configurada en el sistema.
Entradas
Campos de Entrada
- llm: El modelo de lenguaje que se usará para generar el resumen.
- Existing Summarization Prompt: Prompt que se emplea cuando no hay un resumen previo.
- Default Final Prompt: Prompt final que se usa para la generación de resumen.
- Initial Summarization Prompt: Prompt inicial que se aplica cuando se crea el primer resumen.
- Max Summary Tokens: Número máximo de tokens que puede contener el resumen generado.
- Max Tokens: Límite total de tokens que incluye tanto los mensajes como el resumen.
- Output Messages Key: Clave que se usará para identificar el mensaje de salida en el flujo.
Salidas
- SummarizeNode: Un objeto
LangmemSummarizerNode
que contiene el resumen generado. Este objeto se puede usar como entrada para otros nodos que necesiten un historial resumido o para almacenar el resumen en la memoria.
Ejemplo de Uso
Supongamos que quieres mantener un historial resumido de una conversación con un cliente. Puedes usar el Summarizer node de la siguiente manera:
- Configura el LLM (por ejemplo,
gpt-4o-mini
). - Define el prompt inicial:
This is summary of the conversation so far: {existing_summary}Extend this summary by taking into account the new messages above:
- Establece los límites:
- Max Summary Tokens: 200
- Max Tokens: 400
- Conecta la salida del nodo a un nodo de almacenamiento o a un nodo que genere respuestas.
Cuando la conversación crece, el nodo actualizará el resumen automáticamente, manteniendo solo la información esencial.
Componentes Relacionados
- LangmemSummarizerNodeBase: La clase base que define la lógica común de los nodos de resumen.
- LangmemNode: Nodo que gestiona la memoria de conversación.
- LLMNode: Nodo que permite seleccionar y configurar modelos de lenguaje.
Consejos y Mejores Prácticas
- Usa prompts claros: Un prompt bien estructurado reduce la ambigüedad y mejora la calidad del resumen.
- Controla los tokens: Ajusta Max Summary Tokens y Max Tokens según el modelo para evitar costos innecesarios.
- Revisa el resumen: Si el resumen pierde información crítica, aumenta el límite de tokens o modifica el prompt.
- Mantén la coherencia: Usa el mismo LLM y los mismos prompts en todo el flujo para obtener resultados consistentes.
Consideraciones de Seguridad
- Protege la clave de API: Asegúrate de que las credenciales del LLM estén almacenadas de forma segura y no se expongan en el flujo.
- Control de acceso: Limita quién puede editar los prompts y los parámetros de token para evitar abusos.
- Revisión de contenido: Si el resumen contiene datos sensibles, revisa que el LLM no exponga información confidencial en la salida.