Мой первый AI-first проект

После сокращения с работы прошло уже довольно много времени. Но почти с самого начала я потихоньку стал углубляться в тему AI-first-разработки. Так что будет небольшая серия постов про это.

Начал я с совсем простенького проекта. Тут и идея сама собой подвернулась. У нас с девушкой регулярно возникает вопрос: «Что приготовить?»… и начинаются муки вспоминания: «А что мы вообще умеем?», «А когда мы это делали в последний раз?» и всё такое))

Так появилась идея задавать эти вопросы тг-боту, а он пусть всё помнит и советует.

С этой идеей я пошёл в ChatGPT и сказал, что мне нужно что-то максимально простое и быстрое. И он предложил просто охрененную штуку, о которой я до этого даже не слышал под названием Cloudflare Workers.

Это serverless-платформа: JS исполняется на V8, рядом есть Cloudflare D1 serverless SQL-база, а всем этим очень удобно рулить через CLI под названием Wrangler. В итоге никакого своего сервера, контейнеров, мучительного деплоя и вот этого вот всего.

После того как определились с технологиями, создали с ИИ AGENTS.md и IMPLEMENTATION_PLAN.md, и вперёд. Двигались по плану короткими контролируемыми итерациями с проверкой результата. Всё шло хорошо.

Но сделать просто бота было всё-таки скучновато, поэтому я добавил ИИ, подсказки похожих блюд, ротацию существующих и очень мягкий уклон в сторону разнообразного и более-менее сбалансированного рациона. Строгого контролёра по ПП делать не хотелось.

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

А ещё выбранный мной российский провайдер LLM почему-то не принимал запросы из Cloudflare. Почему именно достоверно не знаю. Возможно, где-то между ними очень старательно работала наша инфраструктура блокировок)). В итоге пришлось искать другого провайдера. Увы, напрямую платить владельцам моделей я не могу из-за отсутствия иностранных карт.

Зато благодаря этому появился нормальный fallback: если ИИ не ответил, ничего страшного - основная логика бота не ломается.

Ну и в итоге всё работает. И работает хорошо)

Более того, если у кого-то есть такая же головная боль, можете сами попробовать моего бота и развернуть себе копию. Для этого нужен аккаунт Cloudflare с Workers и D1, тг-бот от BotFather, доступ к OpenAI-compatible API и свой system prompt. Остальное расписано в README.

Подробная инструкция и сам бот тут, дарю: https://github.com/Zorii4/meal-memory-bot/tree/master =))

Мой первый AI-first проект | Сетка — социальная сеть от hh.ru Мой первый AI-first проект | Сетка — социальная сеть от hh.ru