🤖Запусти cвой ИИ Телеграм Бот: AI Text Adventures (ИИ Текстовые Приключения)🎲

#145  вторник, 17 декабря 2024 г.  четверг, 16 января 2025 г.  18 минут(ы)  1691 слово

Пример работы этого ИИ Телеграм Бота: - AI Text Adventures (ИИ Текстовые Приключения)

Telegram-бота для текстовых приключений с ИИ

Основная цель: Бот предоставляет пользователю интерактивный текстовый игровой опыт, где он может влиять на развитие сюжета своими командами. Игра управляется ИИ.

Функционал:

  1. Настройка игры:
    • Бот запрашивает у пользователя:
      • Тему игры (например, фэнтези, космос, детектив).
      • Условие победы.
      • Условие поражения.
    • На основе введенных данных бот формирует контекст игры.
  2. Игровой процесс:
    • Бот генерирует описание начальной сцены на основе заданных параметров.
    • Пользователь вводит текстовые команды либо отправляет голосовые сообщения, описывающие его действия.
    • Бот обрабатывает ввод пользователя с помощью ИИ (LLM), интерпретируя действие пользователя и генерирует ответ, который продолжает историю.
    • Бот формирует список возможных вариантов действий для пользователя на основе текущей ситуации. Эти действия отображаются в виде интерактивных кнопок.
    • История игры (действия пользователя и ответы бота) сохраняются.
  3. Автоматические действия:
    • Автогенерация изображений: Бот может автоматически генерировать изображения по последнему описанию из игры и отправлять их пользователю (опционально).
    • Автоматическое озвучивание: Бот может автоматически озвучивать текстовый вывод через TTS (Text-to-Speech) (опционально).
  4. Команды:
    • /help - Показывает список доступных команд.
    • /balance - Проверяет баланс пользователя (используется для онлайн версии).
    • /look - Генерирует изображение на основе последней сцены.
    • /toggle_auto_look - Включает/выключает автоматическую генерацию изображений.
    • /toggle_auto_tts - Включает/выключает автоматическую озвучку.
    • /get_game_history - Получает историю игры в виде текстового файла.
    • /rest - Начинает новую игру, сбрасывая текущую.
  5. Интерактивность:
    • Использование кнопок для выбора действий.
    • Поддержка текстового и голосового ввода пользователя (транскрибация аудио).
  6. Условия победы и поражения:
    • Бот отслеживает состояние игры и проверяет, не выполнились ли условия победы или поражения.
    • По окончании игры (победа/поражение) игра сбрасывается, и предлагается начать новую.

Технические особенности:

  • Использует 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

  1. Отправьте следующую команду @BotFather: /setcommands.
  2. Выберите вашего бота из списка.
  3. Введите команды в формате:
команда1 - описание первой команды
команда2 - описание второй команды

Пример набора команд для данного ИИ Телеграм Бота:

help - Показывает список доступных команд.
balance - Проверяет баланс пользователя (используется для онлайн версии).
look - Генерирует изображение на основе последней сцены.
toggle_auto_look - Включает/выключает автоматическую генерацию изображений.
toggle_auto_tts - Включает/выключает автоматическую озвучку.
get_game_history - Получает историю игры в виде текстового файла.
rest - Начинает новую игру, сбрасывая текущую.

Установка и запуск бота

Установка и запуск Telegram-бота:

  1. Загрузить собственный Telegram-бот как архив telegram_ai_text_adventure_bot.zip
  2. Распакуйте содержимое архива в корень диска C: (или в другое место, но не слишком глубоко и без пробелов).
  3. Откройте файл config\_tgbot_ai_config.json в удобном для вас текстовом редакторе (например Notepad или Notepad++).
  4. Найдите поле "token" и замените его значение на ваш Telegram HTTP API токен полученый ранее в @BotFather
  5. Сохраните изменения в файле config\_tgbot_ai_config.json
  6. Откройте командную строку cmd.exe.
    • Перейдите в каталог C:\telegram_ai_text_adventure_bot: cd C:\telegram_ai_text_adventure_bot
    • Запустите файл запуска Telegram-бота _tgbot.bat: _tgbot.bat

Запуск локального сервера с ИИ-ботом:

  1. Сохраните изменения в файле config_bot_ai_game_config.json
  2. Откройте командную строку cmd.exe.
  3. Перейдите в каталог C:\telegram_ai_text_adventure_bot: cd C:\telegram_ai_text_adventure_bot
  4. Запустите файл запуска Telegram-бота _bot_ai_game.bat: _bot_ai_game.bat

Позже будут и другие ИИ Телеграм Боты. Следите за обновлением!

https://t.me/d00m4ace_blog