🤖Запусти cвой ИИ Телеграм Бот: AI Text Adventures (ИИ Текстовые Приключения)🎲
#145 вторник, 17 декабря 2024 г. четверг, 16 января 2025 г. 18 минут(ы) 1691 слово
Пример работы этого ИИ Телеграм Бота: - AI Text Adventures (ИИ Текстовые Приключения)
Telegram-бота для текстовых приключений с ИИ
Основная цель: Бот предоставляет пользователю интерактивный текстовый игровой опыт, где он может влиять на развитие сюжета своими командами. Игра управляется ИИ.
Функционал:
- Настройка игры:
- Бот запрашивает у пользователя:
- Тему игры (например, фэнтези, космос, детектив).
- Условие победы.
- Условие поражения.
- На основе введенных данных бот формирует контекст игры.
- Бот запрашивает у пользователя:
- Игровой процесс:
- Бот генерирует описание начальной сцены на основе заданных параметров.
- Пользователь вводит текстовые команды либо отправляет голосовые сообщения, описывающие его действия.
- Бот обрабатывает ввод пользователя с помощью ИИ (LLM), интерпретируя действие пользователя и генерирует ответ, который продолжает историю.
- Бот формирует список возможных вариантов действий для пользователя на основе текущей ситуации. Эти действия отображаются в виде интерактивных кнопок.
- История игры (действия пользователя и ответы бота) сохраняются.
- Автоматические действия:
- Автогенерация изображений: Бот может автоматически генерировать изображения по последнему описанию из игры и отправлять их пользователю (опционально).
- Автоматическое озвучивание: Бот может автоматически озвучивать текстовый вывод через TTS (Text-to-Speech) (опционально).
- Команды:
/help
- Показывает список доступных команд./balance
- Проверяет баланс пользователя (используется для онлайн версии)./look
- Генерирует изображение на основе последней сцены./toggle_auto_look
- Включает/выключает автоматическую генерацию изображений./toggle_auto_tts
- Включает/выключает автоматическую озвучку./get_game_history
- Получает историю игры в виде текстового файла./rest
- Начинает новую игру, сбрасывая текущую.
- Интерактивность:
- Использование кнопок для выбора действий.
- Поддержка текстового и голосового ввода пользователя (транскрибация аудио).
- Условия победы и поражения:
- Бот отслеживает состояние игры и проверяет, не выполнились ли условия победы или поражения.
- По окончании игры (победа/поражение) игра сбрасывается, и предлагается начать новую.
Технические особенности:
- Использует Telegram API для взаимодействия с пользователями.
- Использует LLM (Large Language Model) для генерации текстового контента (сюжет, ответы на действия пользователя, описания, список действий).
- Использует дополнительные сервисы для генерации изображений и TTS / транскрибация аудио.
- Сохраняет историю игры и пользовательские настройки в сессии.
В заключение:
Этот бот предоставляет простой, но интересный способ погрузиться в текстовые приключения, используя ИИ. Функционал достаточно гибкий, с возможностью настройки через текстовые команды, автогенерацию изображений и озвучивание.
Конфигурация игры
Этот бот имеет общие настройки с ИИ Телеграм Бот: ChatGPT, Claude 3.5, Локальные Нейросети
Откройте файл конфигурации ИИ-бота config\_bot_ai_game_config.json в удобном для вас текстовом редакторе (например Notepad или Notepad++).
Основные игровые опции:
1. game_history_last_msg
: (Числовое значение, например, 30)
- Назначение: Эта настройка определяет, сколько последних сообщений из истории игры будет использовано при формировании запросов к языковой модели (LLM).
- Как работает: Когда бот генерирует новый ответ на действие пользователя, он отправляет запрос в LLM, чтобы получить следующее описание в игре, варианты действий и прочее. Для предоставления LLM контекста, бот добавляет в запрос историю прошлых взаимодействий.
game_history_last_msg
указывает, сколько последних сообщений (пары "запрос пользователя" - "ответ бота") будет включено в этот контекст. - Значение:
30
означает, что в контекст для LLM будут включены 30 последних пар "запрос-ответ" из истории игры.
- Зачем это нужно:
- Контекст: LLM нужно понимать прошлые действия игрока и состояние игры, чтобы генерировать релевантные ответы. Чем больше истории предоставляется LLM, тем лучше оно может понять контекст.
- Экономия токенов: Отправка всей истории игры каждый раз может быть неэффективной и затратной, т.к. у LLM есть лимиты на длину запроса.
game_history_last_msg
позволяет ограничить объем истории, снижая затраты и повышая скорость обработки. - Баланс: Необходимо найти баланс между предоставлением достаточного контекста и экономией ресурсов.
- Влияние:
- Меньшее значение: Меньший контекст, LLM может "забывать" прошлые события.
- Большее значение: Больший контекст, LLM может давать более связные ответы, но увеличивается нагрузка на LLM и затраты.
2. game_status_tag
: (Строковое значение, например, "game-inventory")
- Назначение: Эта настройка определяет XML-тег, который используется для обрамления информации о статусе игры (например, инвентарь игрока) при передаче ее в LLM.
- Как работает: Когда бот формирует контекст для запроса к LLM, он помещает информацию о текущем статусе игры (например, список предметов в инвентаре игрока) внутрь XML-тега, заданного в
game_status_tag
. - Значение:
"game-inventory"
означает, что тег<game-inventory>
будет использоваться для обрамления информации о статусе.
- Зачем это нужно:
- Структурирование данных: XML-теги помогают LLM лучше понимать, какая информация содержится в контексте. LLM лучше понимает, что именно в этом блоке данных находится статус игры.
- Соответствие системному промту: Системный промт (описан ниже) может использовать этот тег для конкретной обработки информации о статусе.
- Влияние:
- Изменение значения: Нужно будет изменить код, который добавляет и извлекает статус из XML, а также обновить системный промт.
3. texts
: (Словарь текстовых сообщений)
- Назначение: Этот словарь содержит текстовые строки, которые бот использует для общения с пользователем.
- Как работает: Бот обращается к этим ключам словаря, чтобы вывести текстовые сообщения в разных ситуациях.
- Ключи и их значения:
"welcome_prompt"
: Приветственное сообщение, запрашивающее тему игры."theme_set"
: Сообщение, подтверждающее выбор темы игры, и запрос условия победы."victory_set"
: Сообщение, подтверждающее условие победы, и запрос условия поражения."defeat_set"
: Сообщение, подтверждающее условие поражения."game_start"
: Сообщение о начале игры."describe_first_action"
: Сообщение с просьбой описать первое действие игрока."game_end_win"
: Сообщение о победе в игре."game_end_lose"
: Сообщение о поражении в игре."error_no_text"
: Сообщение об ошибке, когда пользователь не вводит текст."error_processing"
: Сообщение об ошибке при обработке ввода."player_prompt"
: Шаблон для вывода текста, введенного игроком."game_summary"
: Сообщение с текущим статусом игры (например, инвентарь)."victory_debug"
: Сообщение отладки для победы."defeat_debug"
: Сообщение отладки для поражения."continue_game"
: Сообщение-ответ, когда условия победы и поражения не выполнены (в промтах)."you_win_game"
: Сообщение для идентификации условия победы."you_lose_game"
: Сообщение для идентификации условия поражения.
- Зачем это нужно:
- Централизованное управление текстом: Все текстовые сообщения собраны в одном месте, что облегчает их изменение и перевод на другие языки.
- Гибкость: Можно легко изменять формулировки сообщений без изменения кода бота.
- Персонализация: Можно адаптировать текст под стиль и тематику игры.
- Влияние:
- Изменение значений: Позволяет менять фразы, используемые ботом при общении с пользователем, не меняя логику работы бота.
4. llm
: (Словарь с системными и общими промтами)
- Назначение: Этот словарь содержит системные промты, которые направляют языковую модель (LLM) при выполнении различных задач. Системные промты помогают LLM понимать свою роль и ограничения в контексте игры.
- Как работает: Эти промты передаются в LLM вместе с пользовательскими запросами, чтобы задать "тон" и направление для генерации ответов.
- Ключи и их значения:
system_prompt_setup
: Промпт для создания начального описания игры.- Указывает LLM быть рассказчиком (нарратором), который должен сгенерировать описание начальной сцены игры, не предлагая вариантов действий.
system_prompt_action_options
: Общий промпт для получения вариантов действий.- Устанавливает LLM в роли игрового ассистента.
user_prompt_action_options
: Шаблон для генерации вариантов действий.- Использует последней результат игры, запрашивает список возможных действий (3-5) в виде коротких фраз, начинающихся с глагола, на русском языке.
system_prompt_process_action
: Промпт для обработки действий игрока и генерации ответа.- Задает LLM роль мастера игры, обрабатывающего последнее действие игрока. Он должен учитывать инвентарь, вес, объем, а также не делать предположений о будущих действиях.
system_prompt_game_status_summary
: Промпт для формирования сводки о состоянии игры (например, инвентаря).- Задает LLM роль мастера игры, который должен отслеживать и обновлять только предметы, которые игрок активно приобретает или теряет. LLM формирует список предметов в инвентаре, не включая нарратив.
system_prompt_condition_process
: Общий промпт для проверки условий победы/поражения.- Устанавливает LLM в роли мастера игры и приказывает не думать о будущем, а давать ответы на основе текущей ситуации.
victory_condition_prompt
: Промпт для проверки условия победы.- Анализирует текущий контекст и состояние игры, проверяет, выполнено ли условие победы и при выполнении возвращает строку
YOU WIN GAME
.
- Анализирует текущий контекст и состояние игры, проверяет, выполнено ли условие победы и при выполнении возвращает строку
defeat_condition_prompt
: Промпт для проверки условия поражения.- Анализирует текущий контекст и состояние игры, проверяет, выполнено ли условие поражения и при выполнении возвращает строку
YOU LOSE GAME
.
- Анализирует текущий контекст и состояние игры, проверяет, выполнено ли условие поражения и при выполнении возвращает строку
- Зачем это нужно:
- Контроль поведения LLM: Промты направляют работу LLM, заставляя его действовать в рамках определенной роли и следовать заданным правилам.
- Улучшение результатов: Хорошо сформулированные промпты помогают LLM генерировать более точные и релевантные ответы.
- Влияние:
- Изменение промтов: Сильно влияет на поведение бота, т.к. определяет, как LLM интерпретирует игру и взаимодействует с пользователем.
5. llm_parameters
(Словарь с параметрами LLM)
- Назначение: Этот словарь содержит параметры, которые используются для управления работой языковой модели.
- Как работает: Эти параметры устанавливают "температуру" ответов, максимальное количество токенов в ответе и прочее.
- Ключи и их значения:
LLM_MAX_TOKENS
: Максимальное количество токенов, которое LLM может сгенерировать в ответе.LLM_TEMPERATURE
: Температура (случайность) ответов LLM.- Меньшие значения: Более детерминированные и предсказуемые ответы.
- Большие значения: Более случайные и творческие ответы.
- Зачем это нужно:
- Точная настройка: Параметры LLM позволяют точно настроить работу бота для достижения желаемого качества и стиля ответов.
- Ограничение ресурсов: Параметр
LLM_MAX_TOKENS
позволяет контролировать использование токенов и затраты на LLM.
- Влияние:
- Изменение значений: Может значительно изменить стиль и характер ответов LLM.
В целом, эти настройки определяют ключевые аспекты работы бота, включая его взаимодействие с пользователем, интерпретацию игрового контекста и использование языковой модели.
Задайте список команд через BotFather
- Отправьте следующую команду @BotFather:
/setcommands
. - Выберите вашего бота из списка.
- Введите команды в формате:
команда1 - описание первой команды
команда2 - описание второй команды
Пример набора команд для данного ИИ Телеграм Бота:
help - Показывает список доступных команд.
balance - Проверяет баланс пользователя (используется для онлайн версии).
look - Генерирует изображение на основе последней сцены.
toggle_auto_look - Включает/выключает автоматическую генерацию изображений.
toggle_auto_tts - Включает/выключает автоматическую озвучку.
get_game_history - Получает историю игры в виде текстового файла.
rest - Начинает новую игру, сбрасывая текущую.
Установка и запуск бота
Установка и запуск Telegram-бота:
- Загрузить собственный Telegram-бот как архив telegram_ai_text_adventure_bot.zip
- Распакуйте содержимое архива в корень диска C: (или в другое место, но не слишком глубоко и без пробелов).
- Откройте файл
config\_tgbot_ai_config.json
в удобном для вас текстовом редакторе (например Notepad или Notepad++). - Найдите поле "token" и замените его значение на ваш Telegram HTTP API токен полученый ранее в @BotFather
- Сохраните изменения в файле
config\_tgbot_ai_config.json
- Откройте командную строку
cmd.exe
.- Перейдите в каталог C:\telegram_ai_text_adventure_bot:
cd C:\telegram_ai_text_adventure_bot
- Запустите файл запуска Telegram-бота _tgbot.bat:
_tgbot.bat
- Перейдите в каталог C:\telegram_ai_text_adventure_bot:
Запуск локального сервера с ИИ-ботом:
- Сохраните изменения в файле config_bot_ai_game_config.json
- Откройте командную строку
cmd.exe
. - Перейдите в каталог C:\telegram_ai_text_adventure_bot:
cd C:\telegram_ai_text_adventure_bot
- Запустите файл запуска Telegram-бота _bot_ai_game.bat:
_bot_ai_game.bat
Позже будут и другие ИИ Телеграм Боты. Следите за обновлением!