Referencia: Mindset
IMindset
Interfaz que toda clase de mindset debe implementar.
import { IMindset, IMindsetIdentity, IMindsetModels } from '@wabot-dev/framework'| Método | Retorna | Descripción |
|---|---|---|
context() | Promise<string> | Descripción del propósito de la aplicación. Se inyecta en el system prompt. |
identity() | Promise<IMindsetIdentity> | Nombre, idioma y personalidad del bot. |
skills() | Promise<string> | Conocimientos y capacidades del bot. |
limits() | Promise<string> | Restricciones absolutas que el bot nunca debe violar. |
workflow() | Promise<string> | Guión paso a paso que el bot sigue para lograr su objetivo. |
models() | Promise<IMindsetModels> | Modelos de IA a usar por tipo de tarea. |
Todos los métodos son async — pueden consultar bases de datos o servicios externos.
Mindset
Clase base que implementa IMindset con errores por defecto. Extiéndela para no implementar métodos opcionales que no uses.
import { Mindset } from '@wabot-dev/framework'
@mindset()export class MiMindset extends Mindset implements IMindset { // Solo necesitas implementar los métodos que uses}@mindset(config?)
Decorador de clase. Registra la clase como mindset inyectable.
import { mindset } from '@wabot-dev/framework'| Opción | Tipo | Descripción |
|---|---|---|
modules | IConstructor[] | Clases de módulos que el LLM puede invocar como tools. |
@mindset()export class SimpleMindset extends Mindset implements IMindset { }
@mindset({ modules: [ReservasModule, MenuModule] })export class RestauranteMindset extends Mindset implements IMindset { }IMindsetIdentity
interface IMindsetIdentity { name: string // Nombre del bot — cómo se presenta language: string // Idioma principal ('Español', 'English', etc.) personality?: string // Descripción del carácter y estilo emotions?: string // Cómo maneja emociones en distintos contextos}IMindsetModels
Define qué modelos de IA usa el bot por tipo de tarea. Cada clave es opcional; si se omite visionLlm, el framework usa llm como fallback para imágenes.
interface IMindsetModels { llm?: IMindsetModelRef[] // Chat de texto (el más común) visionLlm?: IMindsetModelRef[] // Análisis de imágenes audioLlm?: IMindsetModelRef[] // Procesamiento de audio speechToText?: IMindsetModelRef[] // Transcripción de voz textToSpeech?: IMindsetModelRef[] // Síntesis de voz imageGen?: IMindsetModelRef[] // Generación de imágenes embedding?: IMindsetModelRef[] // Embeddings vectoriales}
interface IMindsetModelRef { provider?: string // 'anthropic' | 'openai' | 'google' | 'openrouter' | 'wabot' model: string // Nombre exacto del modelo}Cuando se listan varios modelos en una clave, el framework intenta el primero y usa los siguientes como fallback.
Proveedores y modelos
Anthropic
| Modelo | Características |
|---|---|
claude-opus-4-7 | Mayor capacidad de razonamiento |
claude-sonnet-4-6 | Equilibrio velocidad / calidad |
claude-haiku-4-5-20251001 | Más rápido y económico |
async models(): Promise<IMindsetModels> { return { llm: [{ provider: 'anthropic', model: 'claude-sonnet-4-6' }] }}OpenAI
| Modelo | Características |
|---|---|
gpt-4o | Mayor capacidad |
gpt-4o-mini | Rápido y económico |
async models(): Promise<IMindsetModels> { return { llm: [{ provider: 'openai', model: 'gpt-4o' }] }}| Modelo | Características |
|---|---|
gemini-2.5-pro | Mayor capacidad de razonamiento |
gemini-2.5-flash | Rápido, económico |
async models(): Promise<IMindsetModels> { return { llm: [{ provider: 'google', model: 'gemini-2.5-flash' }] }}OpenRouter
Accede a cientos de modelos con una sola API key. El nombre del modelo sigue el formato proveedor/nombre-modelo.
async models(): Promise<IMindsetModels> { return { llm: [{ provider: 'openrouter', model: 'anthropic/claude-sonnet-4-5' }] }}Fallback multi-proveedor
async models(): Promise<IMindsetModels> { return { llm: [ { provider: 'anthropic', model: 'claude-sonnet-4-6' }, { provider: 'openai', model: 'gpt-4o' }, // si Anthropic falla { provider: 'google', model: 'gemini-2.5-flash' }, // segundo fallback ], visionLlm: [ { provider: 'anthropic', model: 'claude-sonnet-4-6' }, ] }}llms() — obsoleto
llms(): Promise<IMindsetLlm[]> está deprecado. Usa models() en su lugar.