Skip to content

Referencia: Mindset

IMindset

Interfaz que toda clase de mindset debe implementar.

import { IMindset, IMindsetIdentity, IMindsetModels } from '@wabot-dev/framework'
MétodoRetornaDescripció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ónTipoDescripción
modulesIConstructor[]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

ModeloCaracterísticas
claude-opus-4-7Mayor capacidad de razonamiento
claude-sonnet-4-6Equilibrio velocidad / calidad
claude-haiku-4-5-20251001Más rápido y económico
async models(): Promise<IMindsetModels> {
return { llm: [{ provider: 'anthropic', model: 'claude-sonnet-4-6' }] }
}

OpenAI

ModeloCaracterísticas
gpt-4oMayor capacidad
gpt-4o-miniRápido y económico
async models(): Promise<IMindsetModels> {
return { llm: [{ provider: 'openai', model: 'gpt-4o' }] }
}

Google

ModeloCaracterísticas
gemini-2.5-proMayor capacidad de razonamiento
gemini-2.5-flashRá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.