Максим
Туториалы

ЧАТ-БОТ ДЛЯ ПОДСЧЕТА КБЖУ: КАК ПОДКЛЮЧИТЬ НЕЙРОСЕТЬ ВМЕСТО БАЗЫ ДАННЫХ

Приложения для подсчёта калорий удобны, но у них есть общая боль - ограниченная база данных. Введёшь "котлета по-домашнему" или творог конкретного производителя - и получишь в лучшем случае приблизительный аналог. В этой статье разберём, как собрать чат-бот для учёта КБЖУ в конструкторе Watbot, который вместо базы данных использует нейросеть. Она найдёт любое блюдо, любой продукт и вернёт точные числа.
Мессенджер для демонстрации - Max, но логика сборки универсальна.

Как устроен сценарий

В начале работы у вас есть один стартовый блок. Чтобы добавить следующий, наведите курсор на точку у блока - появится стрелка "продолжить". Зажмите курсор и потяните стрелку в любое пустое место, затем отпустите мышь. Появится меню выбора блока. Выбираете нужный тип - блок создаётся вместе со связью автоматически.
Удалить блок можно через три точки на нём: нажимаете "удалить", подтверждаете - удаляется и блок, и связь.
Справа посередине есть кнопки масштаба. По клику на цифру в центре можно задать масштаб вручную.
Перед сборкой бота подключите мессенджер. В правом верхнем углу нажмите на иконку управления мессенджерами и выберите Max. Если токена ещё нет - нажмите "получить токен" и пройдите регистрацию. После подключения можно приступать к сборке.

Шаг 1. Приветствие и запрос продукта

От стартового блока тяните стрелку в пустое место и выбираете "цепочка сообщений". Нажимаете на созданный блок - справа открывается панель редактирования.
Нажимаете на "текст" и вставляете первое сообщение:
"Привет, я бот подсчёта калорий. Чтобы начать, нажми на кнопку ниже."
Затем нажимаете "добавить ответ" и пишете слово "Начать". Блок готов, закрываете его.

Шаг 2. Блок запроса продукта

От кнопки "Начать" тяните стрелку в пустое место и снова выбираете "цепочка сообщений". Текст блока:
"Напиши блюдо или отдельный продукт, чтобы посчитать КБЖУ. Не забудь указать вес продукта."
Кнопок здесь нет - пользователь просто пишет свой продукт в ответ. Этот ответ нужно сохранить: включаете запись пользовательского ввода в переменную и называете её "продукт".

Шаг 3. Получение API-ключа

Прежде чем добавлять HTTP-запрос, нужно получить API-ключ нейросети. Регистрируетесь на платформе - можно через Google. Принимаете все разрешения и юридические согласия, затем покупаете кредиты и создаёте ключ.
OpenRouter The unified interface for LLMs. Find the best models & prices for your prompts openrouter.ai
При создании ключа задаёте: имя, кредитный лимит, ограничение и срок действия.
Чтобы понять, как правильно заполнить HTTP-запрос, переходите в документацию. Раздел с API-референсами для этого неудобен - лучше найти раздел "чат" и посмотреть пример запроса справа. Там видно: метод POST, URL-ссылка, три заголовка и тело в виде небольшого массива. По этому примеру и собирается запрос в конструкторе.

Шаг 4. Первый HTTP-запрос - калории

Возвращаетесь в сценарий. От ветки "любая другая фраза" второго блока тяните стрелку и выбираете блок "HTTP-запрос".
Заполняете его так:
  • Метод: POST
  • URL: копируете из документации
  • Заголовки: три штуки. В заголовке Authorization пишете: Bearer [пробел] [ваш API-ключ из личного кабинета]
  • Тело: JSON. Вставляете массив с промтом. Промт просит нейросеть написать, сколько калорий приходится на продукт из переменной "продукт", и уточняет: ответить только цифрой, без текста и лишних символов. Также указываете модель
  •  Тайм-аут: максимальный
  • Сервер запросов: Европа
  • Включаете "выводить тело ответа в чат" - это нужно для первичной проверки.
Запускаете бота в мессенджере Max, нажимаете "Начать", пишете продукт - например, "капуста". Бот возвращает сырой ответ в виде JSON.
Копируете этот ответ и вставляете в JSON-форматтер.
Best Online JSON Formatter, Validator, Viewer, Beautifier Free online JSON formatter and validator. Also works as a JSON viewer, beautifier, and converter to XML or CSV instantly. 100% private, browser-side, and safe. jsonformatter.net
Ставите режим отображения "дерево" и находите нужный путь к ответу - он лежит в строке content. Путь к значению выглядит так: choices.0.message (угловые скобки из исходного пути заменяются на точки).
Возвращаетесь в блок HTTP-запроса:
  • Отключаете "выводить тело ответа в чат"
  • Включаете "записать ответ JSON в переменную"
  • Добавляете переменную "калории"
  • Вставляете найденный путь

Шаг 5. Ещё три HTTP-запроса - белки, жиры, углеводы

Копируете блок HTTP-запроса три раза. Зачем четыре отдельных запроса, а не один? Если спросить всё сразу, нейросеть вернёт текст с числами - и его нельзя будет суммировать. Чтобы считать дневной итог по каждому показателю, нужны отдельные числовые значения в отдельных переменных.
В каждой копии меняете только одно: вопрос в промте.
  • Второй запрос: сколько белков в [продукт]? Ответить только цифрой. Переменная - "белки".
  • Третий запрос: сколько жиров. Переменная - "жиры".
  • Четвёртый запрос: сколько углеводов. Переменная - "углеводы".

Шаг 6. Блок с результатом

После четырёх HTTP-запросов добавляете ещё одну "цепочку сообщений". В ней собираете итоговое сообщение с подстановкой переменных:
Твой продукт: [переменная: продукт] КБЖУ продукта: Калорий: [переменная: калории] Белков: [переменная: белки] Жиров: [переменная: жиры] Углеводов: [переменная: углеводы]

Шаг 7. Запись в Google Таблицу

Чтобы суммировать данные за день, результаты записываются в Google Таблицу. В настройках конструктора переходите в раздел "Интеграции" и подключаете Google-аккаунт - достаточно авторизоваться через Google.
Возвращаетесь в сценарий и добавляете блок "Запись в Google Таблицу" после последней цепочки сообщений. Связь идёт от ветки "продолжить".
В блоке создаёте новую таблицу - например, "БЖУ". Добавляете:
  • Константу: ID пользователя
  • Переменные: калории, белки, жиры, углеводы
При желании можно добавить и переменную "продукт" - тогда в таблице будет видно, в каком продукте сколько чего.
Следите, чтобы каждая переменная записывалась в отдельную ячейку своего столбца.

Проверка работы

Запускаете бота в Max, пишете продукт - например, "капуста". Бот быстро возвращает карточку с данными. Переходите в Google Таблицы - там автоматически создалась таблица "БЖУ" и появилась первая строка с данными.
Чтобы видеть дневной итог, достаточно один раз добавить формулу суммы в ячейку под каждым столбцом. При каждой новой записи сумма обновляется автоматически. Для проверки пишете боту ещё один продукт - например, "два варёных яйца" - и видите, как в таблице появляется вторая строка.

Что можно добавить

Заходить в таблицу вручную не обязательно. Можно расширить сценарий: добавить блок с вопросом "сколько я съел сегодня" и блок "Чтение записи в Google Таблице", который выведет суммы прямо в чат. Настраивается один раз - и бот сам покажет дневной итог по запросу пользователя.

Полезные ссылки

Документация нейросети:
OpenRouter The unified interface for LLMs. Find the best models & prices for your prompts openrouter.ai
 JSON FORMATTER:
Best Online JSON Formatter, Validator, Viewer, Beautifier Free online JSON formatter and validator. Also works as a JSON viewer, beautifier, and converter to XML or CSV instantly. 100% private, browser-side, and safe. jsonformatter.net
Наш Телеграмм канал:
Watbot Community You can view and join @watbotcommunity right away. t.me
Наше комьюнити в Мах:
MAX – быстрое и легкое приложение для общения и решения пов… MAX позволяет отправлять любые виды сообщений и звонить даже на слабых устройствах и при низкой скорости интернета. max.ru
Видео инструкция ЧАТ-БОТ С ПОДСЧЁТОМ КАЛОРИЙ И БЖУ В MAX
ЧАТ-БОТ С ПОДСЧЁТОМ КАЛОРИЙ И БЖУ В MAX В этом видео пошагово собираем чат-бота с интеграцией нейросети для подсчёта КБЖУ по продуктам. Все полученные данные автоматически сохраняем в таблицу, чтоб... www.youtube.com