Написал лонгрид о том, как мы делали app.build, какие дизайн-решения принимали и немного о будущих планах.
Рекомендую тем, кто делает агентские системы, и особенно - близкие к кодогенерации.
Рекомендую тем, кто делает агентские системы, и особенно - близкие к кодогенерации.
Neon
Design Decisions Behind app.build, a Prompt-to-App Generator - Neon
Software architecture decisions behind a code generation system that prioritizes working apps over feature complexity.
👍57🔥16❤7
По мотивам этого поста, запилил бота @ScratchAuthorEgoBot, который умеет почесывать эго авторам телеграм-каналов.
На вход - название канала, на выходе - один из трех видов LLM-based анализа автора (личный/профессиональный/насмешка) по его поста.
Под капотом Rust/Gemini/Neon, и даже прикрутил микроплатежи ⭐️ (первый запрос бесплатно). Больше всего провозился с экранированием и форматированием, потому что telegram API и его markdown довольно особенные.
Через недельку выложу исходники и расскажу, сколько звезд намайнил!
UPD: Уткнулся в лимиты телеграма, все аккаунты, используемые для парсинга, были забанены :(
UPD2: Медленно оживаем, но возможны долгое ожидание и потерянные запросы.
UPD3: В целом все снова работает
На вход - название канала, на выходе - один из трех видов LLM-based анализа автора (личный/профессиональный/насмешка) по его поста.
Под капотом Rust/Gemini/Neon, и даже прикрутил микроплатежи ⭐️ (первый запрос бесплатно). Больше всего провозился с экранированием и форматированием, потому что telegram API и его markdown довольно особенные.
Через недельку выложу исходники и расскажу, сколько звезд намайнил!
UPD: Уткнулся в лимиты телеграма, все аккаунты, используемые для парсинга, были забанены :(
UPD2: Медленно оживаем, но возможны долгое ожидание и потерянные запросы.
UPD3: В целом все снова работает
6🥰41👍19🔥11❤5
Я обещал написать про бота, и добрался только сейчас, потому что этот пет проект вырвался из клетки и чуть меня не сожрал. Было интересно, неожиданный end-to-end опыт от идеи до багфиксов на проде за жалкие три дня.
Все затевалось как локальная шутка для корешей и очередной подход к вайбкодингу, было сделано за пару часов, вброшено в пару чатов и оставлено без внимания. Но в итоге случилась некоторая виральность, и я потратил половину выходных, занимаясь пожаротушением.
Во-первых, парсить телеграм-каналы через bot API нельзя, и потому я парсил через телеграм-клиент, используя собственный основной аккаунт. Когда набежала толпа пользователей, я быстро попал в софт бан, и начал искать обходные пути. Рынок серых аккаунтов оказался недружелюбным, да и банились они примерно за 10 минут, даже если купить премиум и не наглеть с частотой запросов. Даже удивительно: спам-боты в комментариях прекрасно живут, а довольно безобидное чтение каналов оказалось жестко ограничено. В итоге помог рабоче-крестьянский подход - скрапить веб-версию.
Во-вторых, в попытках выстроить систему рейт лимитеров, я накостылял слишком много велосипедов, и их впоследствии пришлось расчищать. Например, из-за кривого набора лимитеров запросы в LLM уходили батчами, и частично отваливались из-за лимита уже на стороне Gemini. Я дебагал практически "на продакшене" с живыми пользователями, которые периодически справедливо жаловались, что ничего не работает. Как следствие, много ранних пользователей так и остались без ответа. К счастью, у меня остались логи в базе данных, и потому я смогу всем написать и предложить попробовать снова сейчас, когда проблемы со стабильностью решены.
В-третьих, к слове о базе данных, я впервые всерьез попробовал Neon (ссылка накинет 5 баксов на аккаунт) для своего проекта и остался очень доволен - все просто работало безо всякой возни, причем на обычном бесплатном аккаунте, это сэкономило мне кучу времени и сил. Всем рекомендую, коллегам респект!
В-четвертых, я впервые что-то сделал end-to-end на расте, и моя жизнь не будет прежней. Писать на нем руками, конечно, сложнее и дольше (skill issue, признаю), чем на каком-нибудь питоне, но если 90+% кода написано агентом, то эта проблема в целом уходит. Зато качество изменилось всерьез: если что-то компилировалось без ворнингов, то оно обычно просто работало. В питоне пришлось бы потратить на порядок больше усилий на тестирование и бесконечные фиксы. Короче, думаю, что всерьез перейду на Rust для одноразовых проектов на выброс. Отдельный кайф наблюдать, как что-то помещается в <40 мегабайт памяти.
В-пятых, аудитория оказалась совершенно за пределами моего пузыря. Я изначально делал это все для корешей-задротов, которые в основном пишут лонгриды про AI, а в итоге набежало очень много людей, у которых, например, контент - это исключительно картинки. Камон, для этого есть инстаграм! И, конечно, на таких каналах ничего не работает.
Статистика: 7500+ юзеров, 200+ плательщиков. Заработано в звездах на ~10% больше, чем потрачено на Gemini API (то есть если бы это был настоящий бизнес, экономика бы едва сошлась; не будь лимитов и платных фичей - я бы наверняка офигел от затрат). Какой-то моментум есть, можно попробовать пилить новые фичи и вообще развивать эту штуку. Для самых любопытных выложил исходники - с нуля я бы сейчас делал слегка иначе (например, надо было использовать каналы, с самого начала делать персистентность для in flight тасков), ну да как есть.
Все затевалось как локальная шутка для корешей и очередной подход к вайбкодингу, было сделано за пару часов, вброшено в пару чатов и оставлено без внимания. Но в итоге случилась некоторая виральность, и я потратил половину выходных, занимаясь пожаротушением.
Во-первых, парсить телеграм-каналы через bot API нельзя, и потому я парсил через телеграм-клиент, используя собственный основной аккаунт. Когда набежала толпа пользователей, я быстро попал в софт бан, и начал искать обходные пути. Рынок серых аккаунтов оказался недружелюбным, да и банились они примерно за 10 минут, даже если купить премиум и не наглеть с частотой запросов. Даже удивительно: спам-боты в комментариях прекрасно живут, а довольно безобидное чтение каналов оказалось жестко ограничено. В итоге помог рабоче-крестьянский подход - скрапить веб-версию.
Во-вторых, в попытках выстроить систему рейт лимитеров, я накостылял слишком много велосипедов, и их впоследствии пришлось расчищать. Например, из-за кривого набора лимитеров запросы в LLM уходили батчами, и частично отваливались из-за лимита уже на стороне Gemini. Я дебагал практически "на продакшене" с живыми пользователями, которые периодически справедливо жаловались, что ничего не работает. Как следствие, много ранних пользователей так и остались без ответа. К счастью, у меня остались логи в базе данных, и потому я смогу всем написать и предложить попробовать снова сейчас, когда проблемы со стабильностью решены.
В-третьих, к слове о базе данных, я впервые всерьез попробовал Neon (ссылка накинет 5 баксов на аккаунт) для своего проекта и остался очень доволен - все просто работало безо всякой возни, причем на обычном бесплатном аккаунте, это сэкономило мне кучу времени и сил. Всем рекомендую, коллегам респект!
В-четвертых, я впервые что-то сделал end-to-end на расте, и моя жизнь не будет прежней. Писать на нем руками, конечно, сложнее и дольше (skill issue, признаю), чем на каком-нибудь питоне, но если 90+% кода написано агентом, то эта проблема в целом уходит. Зато качество изменилось всерьез: если что-то компилировалось без ворнингов, то оно обычно просто работало. В питоне пришлось бы потратить на порядок больше усилий на тестирование и бесконечные фиксы. Короче, думаю, что всерьез перейду на Rust для одноразовых проектов на выброс. Отдельный кайф наблюдать, как что-то помещается в <40 мегабайт памяти.
В-пятых, аудитория оказалась совершенно за пределами моего пузыря. Я изначально делал это все для корешей-задротов, которые в основном пишут лонгриды про AI, а в итоге набежало очень много людей, у которых, например, контент - это исключительно картинки. Камон, для этого есть инстаграм! И, конечно, на таких каналах ничего не работает.
Статистика: 7500+ юзеров, 200+ плательщиков. Заработано в звездах на ~10% больше, чем потрачено на Gemini API (то есть если бы это был настоящий бизнес, экономика бы едва сошлась; не будь лимитов и платных фичей - я бы наверняка офигел от затрат). Какой-то моментум есть, можно попробовать пилить новые фичи и вообще развивать эту штуку. Для самых любопытных выложил исходники - с нуля я бы сейчас делал слегка иначе (например, надо было использовать каналы, с самого начала делать персистентность для in flight тасков), ну да как есть.
Telegram
partially unsupervised
По мотивам этого поста, запилил бота @ScratchAuthorEgoBot, который умеет почесывать эго авторам телеграм-каналов.
На вход - название канала, на выходе - один из трех видов LLM-based анализа автора (личный/профессиональный/насмешка) по его поста.
Под капотом…
На вход - название канала, на выходе - один из трех видов LLM-based анализа автора (личный/профессиональный/насмешка) по его поста.
Под капотом…
❤🔥77🔥40❤23👍10🍓1
partially unsupervised
Вайбкодить на NiceGUI сложнее, чем на стримлите, но мы над этим работаем 👀
Как и обещал, выкатили поддержку генерации NiceGUI приложений в app.build. По-прежнему бесплатно в managed service и полностью опенсорс.
❤23
Продолжаю подрабатывать копирайтером: Six Principles for Production AI Agents.
Этот пост слегка пересекается с предыдущим, но я старался сделать его максимально универсальным, независимым от конкретного домена и вообще сделать так, чтобы эти принципы оставались валидными еще хотя бы год.
Этот пост слегка пересекается с предыдущим, но я старался сделать его максимально универсальным, независимым от конкретного домена и вообще сделать так, чтобы эти принципы оставались валидными еще хотя бы год.
App.Build
Six Principles for Production AI Agents
Practical lessons from building production agentic systems
👍32❤9🔥2