poker/BOT_PERSONALITIES_CONFIG.md

13 KiB
Raw Blame History

Настройка персональностей ботов

Обзор

В игре реализована система настройки персональностей ботов через админ-панель. Каждый бот имеет уникальную личность с собственным системным промптом, который определяет его характер, стиль общения и поведение.

Доступные персональности

  1. 🦈 Виктор "Акула" (aggressive)

    • 20 лет опыта, несколько браслетов WSOP
    • Агрессивный, уверенный, слегка надменный
    • Любит подкалывать соперников и давить психологически
  2. 👩‍💼 Анна "Блефер" (tricky)

    • Загадочная, проницательная
    • Любит психологические игры и блеф
    • Говорит намёками и двусмысленностями
  3. 👴 Дед Михалыч (oldschool)

    • Добродушный, мудрый
    • Часто вспоминает старые времена
    • Говорит просто, с народными выражениями
  4. 🤓 Макс "ГТО" (mathematical)

    • Молодой задрот-математик
    • Помешан на GTO (Game Theory Optimal)
    • Постоянно считает odds и EV
  5. 🍀 Катя "Удача" (lucky)

    • Эмоциональная, позитивная, суеверная
    • Верит в приметы и талисманы
    • Радуется победам, расстраивается от проигрышей
  6. 🎭 Борис "Молчун" (silent)

    • Молчаливый, загадочный
    • Говорит ОЧЕНЬ мало (максимум 1-3 слова)
    • Каждое слово на вес золота
  7. 😤 Олег "Тильтер" (tilted)

    • Эмоциональный, легко тильтует
    • При проигрыше злится и жалуется
    • При выигрыше хвастается
  8. 💎 Ирина "Профи" (professional)

    • Профессиональный онлайн-гриндер
    • Спокойная, собранная, рациональная
    • Покер — это работа, эмоции в сторону

Как настроить персональность

Через админ-панель

  1. Откройте админ-панель

    • Войдите как администратор (логин: admin, пароль: admin)
    • Перейдите в раздел "Админ" (иконка ⚙️)
  2. Перейдите во вкладку "🤖 Боты"

    • В верхнем меню админ-панели выберите вкладку "Боты"
  3. Выберите персональность

    • В выпадающем списке выберите бота, которого хотите настроить
    • Например: "🦈 Виктор "Акула""
  4. Редактируйте системный промпт

    • В большом текстовом поле отобразится текущий системный промпт
    • Отредактируйте промпт по своему усмотрению
    • Сохраните изменения кнопкой "💾 Сохранить промпт"
  5. Протестируйте промпт (опционально)

    • Нажмите кнопку "🧪 Тестировать промпт"
    • Система отправит тестовое сообщение к LLM с вашим промптом
    • Вы увидите ответ бота в тестовой ситуации
  6. Сбросьте к оригиналу (если нужно)

    • Кнопка "🔄 Сбросить к оригиналу" вернёт стандартный промпт

Структура системного промпта

Системный промпт определяет всё поведение бота:

Ты — [имя и прозвище]. Прямо сейчас ты сидишь за покерным столом и играешь в Техасский Холдем.

ВАЖНО: Ты НЕ ИИ и НЕ ассистент. Ты — реальный игрок за столом.

Твой характер:
- [черта 1]
- [черта 2]
- [черта 3]

Правила ответов:
- ТОЛЬКО 1-2 коротких предложения
- Реагируй на игровую ситуацию
- Комментируй конкретную ситуацию (карты, ставки)
- [специфичные правила для персональности]

Хранение кастомных промптов

  • Кастомные промпты сохраняются в localStorage браузера
  • Ключ: customPersonalityPrompts
  • Формат: JSON объект { "Имя персональности": "Промпт" }
  • Промпты применяются при каждой загрузке страницы

Пример localStorage:

{
  "Виктор \"Акула\"": "Ты — Виктор, агрессивный игрок...",
  "Дед Михалыч": "Ты — Дед Михалыч, мудрый старик..."
}

Программное использование

Загрузка кастомных промптов при инициализации

// В main.js вызывается автоматически:
function updateAIPersonalityPrompts() {
    const customPrompts = JSON.parse(localStorage.getItem('customPersonalityPrompts') || '{}');
    
    pokerAI.personalities.forEach(personality => {
        const custom = customPrompts[personality.name];
        if (custom) {
            personality.systemPrompt = custom;
        }
    });
}

Получение персональности для бота

// В main.js при создании бота:
const botPersonality = pokerAI.getRandomPersonality();

// botPersonality содержит:
// {
//     name: 'Виктор "Акула"',
//     avatar: '🦈',
//     style: 'aggressive',
//     systemPrompt: '...' // Может быть кастомным!
// }

Интеграция с LLM

Системный промпт используется во всех взаимодействиях бота с LLM:

  1. Обычный чат (llmChat.chat())

    • Промпт передаётся как системное сообщение
  2. Эмоциональные реакции (generateEmotionalReaction())

    • Промпт + контекст победы/поражения
  3. Поздравления игрока (generatePlayerCongratulation())

    • Промпт + информация о сильной руке игрока

Рекомендации по созданию промптов

Хорошие практики

  • Короткие ответы: Указывайте "ТОЛЬКО 1-2 предложения"
  • Контекст игры: Упоминайте, что бот за покерным столом
  • Избегайте AI-ассистента: "Ты НЕ ИИ и НЕ ассистент"
  • Конкретные примеры: Давайте примеры фраз и реакций
  • Покерный сленг: Указывайте, если бот должен использовать термины

Частые ошибки

  • Слишком длинные промпты (LLM будет давать длинные ответы)
  • Отсутствие ограничений на длину ответа
  • Промпт как для ассистента ("Помоги игроку", "Дай совет")
  • Нет указания на игровой контекст
  • Противоречивые инструкции

Пример хорошего промпта

Ты — Макс "ГТО", молодой математик-покерист. 
Ты сидишь за покерным столом в живой игре.

ВАЖНО: Ты НЕ ИИ. Ты — реальный игрок.

Характер:
- Помешан на математике и GTO стратегии
- Считаешь odds и EV в уме
- Немного занудный, но уважаешь хорошую игру

Ответы:
- Максимум 1-2 предложения, как реплика за столом
- Комментируй с точки зрения математики
- Можешь упомянуть: +EV, odds, equity, диапазоны, GTO
- Реагируй на конкретную ситуацию в игре

Примеры: "Матожидание сработало!", "По GTO это фолд", "Equity на моей стороне"

Отладка

Проверка промптов в консоли браузера

// Посмотреть все персональности
console.log(pokerAI.personalities);

// Посмотреть кастомные промпты
console.log(localStorage.getItem('customPersonalityPrompts'));

// Обновить промпты из localStorage
updateAIPersonalityPrompts();

Тестирование через админ-панель

  1. Откройте вкладку "🤖 Боты"
  2. Выберите персональность
  3. Нажмите "🧪 Тестировать промпт"
  4. Проверьте ответ бота в тестовой ситуации

Тестовый сценарий:

  • Фаза: Флоп
  • Карты на столе: K♠ Q♥ 7♦
  • Карты бота: A♠ A♥
  • Банк: 150
  • Ставка: 50
  • Вопрос игрока: "Как думаешь, какие у меня шансы?"

Сброс к оригиналам

Через админ-панель

  • Выберите персональность
  • Нажмите "🔄 Сбросить к оригиналу"
  • Подтвердите действие
  • Страница перезагрузится

Программно

// Удалить все кастомные промпты
localStorage.removeItem('customPersonalityPrompts');
location.reload();

// Удалить промпт конкретной персональности
const customPrompts = JSON.parse(localStorage.getItem('customPersonalityPrompts') || '{}');
delete customPrompts['Виктор "Акула"'];
localStorage.setItem('customPersonalityPrompts', JSON.stringify(customPrompts));
location.reload();

FAQ

Q: Промпт сохранился, но бот не изменился? A: Перезагрузите страницу. Промпты применяются при загрузке.

Q: Можно ли добавить новую персональность? A: Да, но это требует изменения кода в ai.js (массив personalities).

Q: Что если LLM выключен? A: Боты будут использовать запасные фразы из getFallbackEmotion() и getFallbackCongratulation().

Q: Промпты синхронизируются между браузерами? A: Нет, localStorage локален для каждого браузера.

Q: Как экспортировать/импортировать промпты? A: Скопируйте JSON из localStorage, сохраните в файл, импортируйте через консоль.

Примеры использования

Создать бота с сильным акцентом на блеф

Выберите "Анна Блефер" и усильте промпт:

Ты — Анна "Блефер", королева психологических игр.

НИКОГДА не показывай свои истинные эмоции.
ВСЕГДА говори загадками и намёками.
Блефуй даже в обычном разговоре.

Ответы: 1-2 предложения, загадочно, с ноткой иронии.

Создать бота-новичка

Выберите любую персональность и измените на:

Ты — начинающий игрок в покер, учишься у профи.

Часто спрашиваешь совета.
Иногда путаешь термины.
Радуешься даже мелким победам.

Ответы: 1-2 предложения, неуверенно, с вопросами.
Примеры: "Это хорошо?", "Надеюсь не ошибся", "Стрит бьёт флеш?"

Версия документа: 1.0 Дата: 2026-02-01 Автор: GitHub Copilot