Содержание
Документация › Руководства

ИИ видит игру

Когда шаблон и распознавание текста не справляются: распознавать состояния локальной моделью, ветвиться и считывать несколько значений одним вызовом.

Обновлено: 2026-09-17

Иногда не работает ни то, ни другое: шаблон ничего не находит, потому что картинка каждый раз другая, — а распознавание текста выдаёт чепуху, потому что текста там нет или фон слишком пёстрый. Именно для этого и есть модули ИИ. Они оценивают изображение, а не сравнивают его.

Сразу о главном, чтобы ожидания были верными: ИИ медленнее поиска по шаблону и не предназначен для каждого щелчка. Он оправдывает себя в тех немногих местах, где нужно понимание, — «идёт бой или я в меню?».

Для этих задач достаточно локальной модели на своём компьютере. Ни провайдера, ни банковской карты, и ни один пиксель не покидает машину.

Шаг 1 — Настроить локальную модель

  1. Установить Ollama и запустить её.

  2. Скачать модель, умеющую читать изображения. В терминале:

    ollama pull qwen2.5vl:7b
    
  3. В FlowBotCommander: Инструменты → Профили провайдеров, затем нажать «Найти локальные модели».

Это не обязательно Ollama. Поиск точно так же опрашивает llama.cpp (порт 8080) и LM Studio (порт 1234) — все три отвечают на один и тот же вызов, и приложение говорит со всеми одинаково.

А вот что действительно важно — это модель: чисто текстовая модель не видит изображений. В llama.cpp это значит, что рядом с файлом модели должен быть загружен файл mmproj — без него сервер всё равно запустится, но возьмёт только текстовую часть, и ИИ ответит на любое изображение общими фразами. Выглядит как ошибка распознавания, но ею не является.

llama-server -m qwen2.5-vl-7b-q4_k_m.gguf --mmproj mmproj-qwen2.5-vl-7b-f16.gguf --port 8080

Поиск опрашивает обычные адреса (Ollama, llama.cpp, LM Studio), создаёт готовый профиль для каждой находки и заранее выбирает модель, умеющую читать изображения. Затем Сохранить — вот и вся настройка.

Если поиск ничего не находит, почти всегда сервер просто не запущен. Это не догадка, а самый частый случай — поэтому сообщение прямо об этом и говорит.

Шаг 2 — Самая быстрая проверка: вопрос «да/нет»

Возьми Спросить по изображению (ИИ), инструментом области очерти узкую область вокруг главного и задай вопрос с двумя возможными ответами:

Есть ли на изображении диалог ошибки? Ответь только «да» или «нет».

Модуль выдаёт ответ в трёх видах: как текст (answer), как число (zahl) и как да/нет (jaNein). Для ветвления подключи jaNein к модулю Если/Тогда.

Шаг 3 — Ветвление через «ИИ решает»

Как только случаев больше двух, нужный модуль — «ИИ решает». Варианты пишутся по одному в строке:

бой
меню
экран загрузки

После этого у модуля появляются выходы wahl1, wahl2, wahl3 — а также unklar (неясно) и fehler (ошибка).

Скачать пример бота

Две детали здесь важнее, чем кажется:

  • «unklar» вписывать не нужно. Модуль сам добавляет этот вариант к вопросу. Причина — наблюдение из практики: без такого выхода модель скорее выберет неверно, чем воздержится. В опыте с фрагментом 40×64 пикселя, где вообще ничего не было видно, она уверенно назвала один из вариантов. С выходом «неясно» она ответила верно.
  • Ответ сверяется с твоим списком. Если модель придумает своё или ответит двусмысленно («бой или меню»), поток уйдёт к unklar. Он никогда не уходит куда-то лишь потому, что слово примерно подходит.

К unklar лучше подключить короткое ожидание и повторную попытку — не то же действие, что к выходу выбора. «Я не знаю» — полезный ответ, если бот его уважает.

Шаг 4 — Несколько значений одним вызовом

Для чисел и имён возьми Считать значения с изображения. По одному имени поля в строке:

золото
уровень
имя_противника

Каждое поле становится одноимённым выходом данных. Это один вызов для трёх значений — со «Спросить по изображению» их было бы три.

Называй поля так, как сказал бы человеку: «золото» понятно, «значение1» — нет. Модель читает то, что подсказывает имя. Если значение находится в необычном месте, помогает дополнительная подсказка: «Числа в верхней панели. Чат игнорировать.»

Область важнее модели

Самый действенный приём — не более крупная модель, а узкая область. Измерено на реальном игровом скриншоте 3440×1474, тот же вопрос, та же модель:

Что спрашивали Результат
всё окно, уменьшенное до 1024 px неверно — значения из другого окна, 4,4 МБ без масштабирования
фрагмент вокруг значений (750×385) верно — 54 КБ, 0,2 с

Узкая область, таким образом, одновременно дешевле, быстрее и точнее. Потрать полминуты на инструмент области — это даёт больше, чем любая другая настройка.

Сколько это стоит — и сколько длится

локально провайдер (Claude, GPT)
деньги за вопрос ничего по площади изображения и длине текста
длительность 0,2–0,6 с, пока модель в памяти зависит от связи, обычно 1–3 с
первый вызов около 15 с, модель загружается как обычно
данные остаются на компьютере фрагмент уходит провайдеру

Это время загрузки и объясняет щедрое ограничение времени по умолчанию. А поскольку цикл иначе сделал бы сотню вызовов на один и тот же вопрос, есть «Помнить ответ»: тот же вопрос к тому же изображению — и возвращается запомненный ответ. Любое изменение изображения считается новым вопросом.

Если не получается

Что видно В чём обычно дело
Подсказка «ИИ ещё не настроен» у модуля Нет профиля провайдера. Нажми Настроить ИИ….
«Найти локальные модели» ничего не находит Сервер не запущен. Запусти Ollama и повтори поиск.
Поток всегда уходит к unklar Область показывает слишком много или не то. Сузь её — и проверь, действительно ли варианты подходят к изображению.
Поток всегда уходит к fehler Неверное имя модели или модель не умеет работать с изображениями. Выбери такую, где в имени есть vl, vision или llava.
Значения путаются Область слишком велика — см. выше. Дополнительная подсказка тоже помогает.
Ответ обрезан Увеличь максимальную длину ответа в профиле провайдера.
Всё работает медленно Первый вызов загружает модель. Потом она остаётся в памяти — а «помнить ответ» делает цикл значительно дешевле.

Что дальше?

Готовы попробовать?

FlowBotCommander бесплатен для старта — без аккаунта.

Начать бесплатно