Intentions
Este ejemplo muestra cómo configurar un flujo de trabajo básico usando VaincentFlow y un proveedor de mensajería, en este caso, Telegram, para responder automáticamente a mensajes de clientes en función de palabras clave o "intenciones".
Requisitos
Este código depende de las librerías @elimeleth/telegram y @elimeleth/vaincentflow, las cuales permiten la integración de Telegram y la configuración de flujos en el sistema.
Configuración del Proveedor y el Router
import "dotenv/config";
import { TelegramProvider } from "@elimeleth/telegram";
import { Workflow, GlobalRouter } from "@elimeleth/vaincentflow";
// Configuración inicial del proveedor de mensajería
const provider = new TelegramProvider({});
dotenv/config: Carga variables de entorno desde un archivo.env, para poder gestionar de forma segura las credenciales y configuraciones.TelegramProvider: Se configura el proveedor de Telegram, el cual permite enviar y recibir mensajes desde esta plataforma de mensajería. Aquí,providerse instancia sin parámetros adicionales, pero puede personalizarse según las necesidades.
// Configuración del enrutador global con el proveedor de Telegram
const router = new GlobalRouter({
provider,
llm: { provider: "openai", multimodal: { capture_intentions: true } }
});
GlobalRouter: Este enrutador global maneja la lógica de envío y recepción de mensajes para cada flujo. Al inicializarrouter, se le asignaprovider, el cual indica la plataforma de mensajería a usar (Telegram).llm: Se configura el modelo de lenguaje conprovider: "openai"y la opcióncapture_intentions: true. Esta configuración permite que el modelo entienda y clasifique las intenciones de los mensajes.
Definición del Workflow (Flujo de Trabajo)
const foo = new Workflow("foo", {
metadata: {
name: "general",
intentions: [
{
intention: "saludar",
description: "Si el cliente está saludando"
}
]
}
})
.addAction("Hola!");
- Workflow : Un flujo de trabajo define los pasos y acciones a realizar en función de ciertas intenciones o palabras clave. Aquí se crea
foo, un flujo con metadatos que contiene: - name : Nombre del flujo (
general), utilizado para identificarlo. - intentions : Un array de intenciones posibles, donde cada intención es un objeto con:
intention: La palabra clave o acción que el cliente realiza, en este caso,saludar.description: Una breve descripción que ayuda al modelo a interpretar la intención del cliente.- addAction : Especifica la respuesta de este flujo cuando se dispara la intención. En este caso, responde con
"Hola!"cuando el flujo detecta la intención de saludar.
Agregar el Flujo de Trabajo al Router y Escuchar los Mensajes
- addFlows : Se agrega el flujo de trabajo
fooal enrutador, permitiendo que este flujo se active cuando se detecten sus intenciones o palabras clave. - listen : Inicia la escucha de mensajes en la plataforma de mensajería especificada. Cada vez que se recibe un mensaje, el enrutador evalúa si alguna intención o palabra clave dispara una acción.
Intenciones y Palabras Clave
Si una palabra clave especificada en el flujo (saludar) no se activa, el sistema intenta detectar la intención basada en la configuración del LLM (llm). Esto permite que la respuesta sea precisa y acorde a la intención, incluso si la palabra clave exacta no está presente en el mensaje.
Interfaz de Intenciones
Cada flujo admite una interfaz de intenciones, que contiene un array de objetos con las siguientes propiedades:
- intention : Define la acción que debe accionar el cliente para activar una respuesta.
- description : Una descripción que ayuda a un LLM (modelo de lenguaje) a interpretar mejor la intención, proporcionando contexto adicional sobre lo que el cliente indica.