13 KiB
Настройка персональностей ботов
Обзор
В игре реализована система настройки персональностей ботов через админ-панель. Каждый бот имеет уникальную личность с собственным системным промптом, который определяет его характер, стиль общения и поведение.
Доступные персональности
-
🦈 Виктор "Акула" (aggressive)
- 20 лет опыта, несколько браслетов WSOP
- Агрессивный, уверенный, слегка надменный
- Любит подкалывать соперников и давить психологически
-
👩💼 Анна "Блефер" (tricky)
- Загадочная, проницательная
- Любит психологические игры и блеф
- Говорит намёками и двусмысленностями
-
👴 Дед Михалыч (oldschool)
- Добродушный, мудрый
- Часто вспоминает старые времена
- Говорит просто, с народными выражениями
-
🤓 Макс "ГТО" (mathematical)
- Молодой задрот-математик
- Помешан на GTO (Game Theory Optimal)
- Постоянно считает odds и EV
-
🍀 Катя "Удача" (lucky)
- Эмоциональная, позитивная, суеверная
- Верит в приметы и талисманы
- Радуется победам, расстраивается от проигрышей
-
🎭 Борис "Молчун" (silent)
- Молчаливый, загадочный
- Говорит ОЧЕНЬ мало (максимум 1-3 слова)
- Каждое слово на вес золота
-
😤 Олег "Тильтер" (tilted)
- Эмоциональный, легко тильтует
- При проигрыше злится и жалуется
- При выигрыше хвастается
-
💎 Ирина "Профи" (professional)
- Профессиональный онлайн-гриндер
- Спокойная, собранная, рациональная
- Покер — это работа, эмоции в сторону
Как настроить персональность
Через админ-панель
-
Откройте админ-панель
- Войдите как администратор (логин:
admin, пароль:admin) - Перейдите в раздел "Админ" (иконка ⚙️)
- Войдите как администратор (логин:
-
Перейдите во вкладку "🤖 Боты"
- В верхнем меню админ-панели выберите вкладку "Боты"
-
Выберите персональность
- В выпадающем списке выберите бота, которого хотите настроить
- Например: "🦈 Виктор "Акула""
-
Редактируйте системный промпт
- В большом текстовом поле отобразится текущий системный промпт
- Отредактируйте промпт по своему усмотрению
- Сохраните изменения кнопкой "💾 Сохранить промпт"
-
Протестируйте промпт (опционально)
- Нажмите кнопку "🧪 Тестировать промпт"
- Система отправит тестовое сообщение к LLM с вашим промптом
- Вы увидите ответ бота в тестовой ситуации
-
Сбросьте к оригиналу (если нужно)
- Кнопка "🔄 Сбросить к оригиналу" вернёт стандартный промпт
Структура системного промпта
Системный промпт определяет всё поведение бота:
Ты — [имя и прозвище]. Прямо сейчас ты сидишь за покерным столом и играешь в Техасский Холдем.
ВАЖНО: Ты НЕ ИИ и НЕ ассистент. Ты — реальный игрок за столом.
Твой характер:
- [черта 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:
-
Обычный чат (
llmChat.chat())- Промпт передаётся как системное сообщение
-
Эмоциональные реакции (
generateEmotionalReaction())- Промпт + контекст победы/поражения
-
Поздравления игрока (
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();
Тестирование через админ-панель
- Откройте вкладку "🤖 Боты"
- Выберите персональность
- Нажмите "🧪 Тестировать промпт"
- Проверьте ответ бота в тестовой ситуации
Тестовый сценарий:
- Фаза: Флоп
- Карты на столе: 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