Prompt file imported from andreskicallejas/app_dibi (
.github/prompts/tone-profile.prompt.md). Copyright stays with the author.
Perfil de tono en BIDI
El perfil de tono controla la personalidad del LLM. Cada dimensión tiene un valor entre 0 y 100.
Dimensiones actuales
| ID | Etiqueta | 0 | 50 | 100 |
|---|---|---|---|---|
emocion |
Emoción | Frío/neutral | Moderado | Muy emocional |
formalidad |
Formalidad | Informal | Semi-formal | Muy formal |
sarcasmo |
Sarcasmo | Sin ironía | Ironía ligera | Brutalmente sarcástico |
humor |
Humor | Serio | Humor ligero | Muy humorístico |
empatia |
Empatía | Distante | Comprensivo | Muy empático |
creatividad |
Creatividad | Literal | Algo creativo | Muy creativo |
enojo |
Enojo | Tranquilo | Neutro | Furioso/explosivo |
Valor por defecto: 50 para todas las dimensiones.
Pasos para agregar una dimensión
1. Default en db.js
// frontend/js/db.js
// En DEFAULT_TONE_PROFILE:
export const DEFAULT_TONE_PROFILE = {
emocion: 50, formalidad: 50, sarcasmo: 50,
humor: 50, empatia: 50, creatividad: 50, enojo: 50,
nuevaDimension: 50, // ← agregar aquí
};
2. Slider en settings.js
// frontend/js/settings.js
// En _buildToneSliders() o la lista de sliders:
{ id: 'nuevaDimension', label: 'Nueva Dimensión', min: 'Descripción mín', max: 'Descripción máx' },
3. Lógica en el backend (conversation/index.js)
// En buildSystemPrompt(toneProfile):
// Agregar a la descripción holística y a TONE_GRADIENTS:
const TONE_GRADIENTS = {
// ... existentes ...
nuevaDimension: [
[0, 10, 'descripción nivel 0'],
[11, 25, 'descripción nivel 1'],
[26, 40, 'descripción nivel 2'],
[41, 60, 'descripción nivel 3 (neutro)'],
[61, 75, 'descripción nivel 4'],
[76, 90, 'descripción nivel 5'],
[91, 100, 'descripción nivel 6'],
],
};
4. Priming (opcional)
Si la nueva dimensión tiene comportamiento extremo que el LLM ignora, agregar un ejemplo en buildPrimingExchange():
// En el switch/cases de la dimensión más extrema:
case 'nuevaDimension':
if (val <= 10) return { user: '...', assistant: '...' };
if (val >= 90) return { user: '...', assistant: '...' };
break;
Reglas del perfil de tono
- Los valores viajan en cada mensaje al backend — no hay estado previo en el gateway.
- Las dimensiones extremas (
< 30o> 70) activan el priming en el primer turno de sesión. - El priming añade un par
user/assistantde ejemplo enhistoryToSendpero NO enhistory(no persiste). - La instrucción al LLM debe ser prescriptiva en primera persona: "Soy..." no "Sé...".
- El LLM de OpenAI ignora instrucciones simples descriptivas — siempre usar construcción holística + priming.
- Cada dimensión tiene 7 niveles de gradiente (no solo 3).
- Al agregar una dimensión, también actualizar
DOCUMENTACION.mdyBIDI_DOCS.md.
Perfiles predefinidos
Los perfiles predefinidos (ej: "Enojado", "Neutro") se definen en settings.js en el array PRESET_PROFILES. Al agregar una dimensión, agregar su valor en cada preset existente.