AI Coder 🦾
106 subscribers
47 photos
1 video
45 links
О программировании с использованием ИИ от Senior Fullstack

Также пилю свой продукт с ИИ и пишу об этом тут - @build_saas_in_public
Download Telegram
Бери (у ИИ) как Есть

В соседнем канале мысль, что не надо стремиться контролировать каждый винтик в своей жизни, лучше, наоборот, аутсорсить по максимуму. Так вот, это касается и программирования с ИИ!

Вершина vibe-coding это когда вы не пишете ни строчки кода руками. Понять, там вы или нет легко - задайте себе вопрос, приходится ли вам думать над неймингом?

Все чаще в последнее время я ловлю себя на мысли, что я не исправляю/улучшаю/уточняю код, который для меня сгенерировал ИИ. Зачастую он достаточно неплох, (да еще и снабжен комментариями, как правило).

Сегодня я обсуждал в ChatGPT архитектуру своего Chrome-расширения, конкретно, логику логина через Google. Мы пришли к конкретному набору сущностей, целые классы и методы будут вставлены в репозиторий как есть. Раньше мне часто хотелось добавить что-то от себя. Я мог немного модифицировать сгенерированный код, просто чтобы он стал чуть-чуть лучше, но теперь я нахожу удовольствие в том, чтобы, напротив, вообще ничего не трогать.

Мысль все та же - контроль это не благо, а необходимость. Необходимо ли мне контролировать этот код? Не прикасаясь к нему лишний раз я освобождаю себя от необходимости думать, как назвать ту или иную переменную или функцию. ИИ предложил так, значит, так оно и будет. Кстати, он предложил не просто так, а потому что у него огромная “насмотренность”, и его вариант, скорее всего, как минимум не плох.

Разумеется, здравый смысл должен быть всегда. Я всегда пробегаюсь, хотя бы бегло, по сгенерированному коду. Годы опыта дали мне интуицию, которая позволяет понимать, где мне надо вникать, а где достаточно пробежаться по диагонали.
График интеллекта и скорости GPT

Если еще не видели, картинка из официального блога

Интеллект/Скорость: Получается, что 4.1 самая умная, по скорости как 4o, 4.1 mini - лучший баланс между скоростью и интеллектом, а 4.1 nano тупая и быстрая

Цена: 4.1 дешевле чем 4o, но 4.1-mini дороже чем 4o-mini. Подробнее тут

P.S. - если я все правильно понимаю, то`4.1` это не reasoning модель, как она соотносится с o1/o3 пока не разбирался.
Как streaming mode может ухудшить качество генераций

Пост для LLM-engineers, то есть тех, кто внедряет ЛЛМы в продукты.

Для тех, кто, вдруг, не в курсе - стриминг-режим, это когда модель вместо того чтобы подумать, а затем выплюнуть готовый ответ, отдает генерацию по кускам (чанками). Например, когда ChatGPT печатает для вас ответ, он делает это именно в стриминговом режиме, чтобы вы могли начать читать текст сразу, не дожидаясь окончания генерации.

Это классная штука с точки зрения UX и до сегодняшнего дня я думал, что на качество она не влияет. Оказывается, я ошибался! Streaming может ухудшить качество генерации и вот почему:

Как известно, LLM это “T9 на максималках”. Люди, которые не верят в скорое пришествие AGI часто говорят что-то вроде: “эта штука просто предсказывает следующее слово”. И в этом есть доля правды! Суть ЛЛМов действительно в том, что они вероятностно подбирают токен за токеном. Но это лишь половина правды, сегодняшние ЛЛМы устроены несколько сложнее.

Вам никогда не казалось, что это какая-то гребаная магия - продолжатель токенов каким-то волшебным образом дает правильные ответы на вопросы, где явно надо подумать, а не угадать? Я, к сожалению, не ML-специалист (хотя вот это видео, может подраскрыть завесу тайны), но вот что я знаю - современные модели, перед тем как выдать ответ, могут “подумать” про себя, и уже только после этого отправить вам текст.

“Подумать” в данном контексте означает, составить некий план ответа, а затем, начать генерацию, но не “вслух” а “про себя”, и в этом внутреннем процессе у модели есть возможность “вернуться назад” и изменить что-то. Так ЛЛМ может, например, понять что ее понесло куда-то не в ту степь, и она может откатиться к предыдущим токенам и отредактировать их. То есть, когда она генерирует токены про себя, она наблюдает свой промежуточный результат, и это влияет не только следующий токен, но и на предыдущие!

И, угадайте, как это работает в режиме стриминга? Никак. Ведь потоковая выдача затем и нужна, чтобы не ждать, пока ЛЛМ “подумает”, а дать пользователю увидеть результат ее мыслительной деятельности в реальном времени.

Вывод:

- Стриминг это исключительно улучшалка UX, качество генерации с ней не может стать лучше, а хуже может
- Обычный режим не может быть хуже стримингового по качеству, но может быть лучше

Нужен realtime-UX? Используй стриминг. Качество на вес золота? Выключай его и юзай обычный режим.

Только убедитесь, что у вас именно та задача, где каждый процент качества важен. Например, когда генерация влияет на финансовые показатели, или нужно генерировать документы в строгом формате - большинство кейсов ОК для стриминга!
Хочешь мира, готовься к войне.

Уж как бы я не хотел согласиться с Денисом, к сожалению, я считаю иначе. За последние месяцы я:

1️⃣ Лично познакомился с бэкендером-предпринимателем, который по его собственным словам, раньше, разрабатывая продукт с нуля, отдал бы фронтенд на аутсорс/фриланс, но сейчас просто генерирует его в v0/cursor (кстати, об этом был пост)

2️⃣ Сгенерировал себе сложную анимацию, чтобы оформить README в open-source проекте (если что, вот она). Почти написал дизайнерке, которую до этого нанимал для разработки логотипа, но решил попробовать сэкономить. И сэкономил! Получил именно то, что хотел, и очень быстро.

3️⃣ Видел новости вроде этой (СЕО крупной американской компании прекратил найм и заставляет внедрять ИИ). Сюда можно было бы добавить прогнозы СЕО Атропика и иже с ними, но так уж и быть, не будем.

Очень приятно верить, что ты не заменим, не так ли? Но история знает достаточно примеров, когда целые профессии исчезали как класс. И мы любим говорить, что на смену им приходили другие профессии, но, знаете, что не так с этим тезисом?

- Во-первых, это происходило не плавно, а через социальные и/или экономические проблемы (безработица, протесты, нищета и проч.)
- Во-вторых, то, что происходит сейчас это действительно другое - изобретение машины, которая способна автоматизировать когнитивные функции, вплоть до разработки собственной модификации — такого еще не было, и сравнивать это с условной промышленной революцией и даже интернетом не совсем честно.

Так что, если хочешь мира, то готовься к войне.

Тогда для тебя это будет win/win — если я не прав, то нас ждет еще десяток-другой лет стабильности, ну а если нет, то у тебя было время подготовиться, и ты это сделал.

То есть ушел из найма.
Отдельный вид удовольствия — сёрфить Cursor VSCode расширения 👏
Please open Telegram to view this post
VIEW IN TELEGRAM
Для разработчиков (расширений)

Оказывается, у хрома есть AI-API. Если, вдруг, вы хотели построить AI-расширение для хрома и ждали знака, то вот он.

Я еще не читал толком, но по диагонали ощущение что есть какая-то встроенная в браузер nano-ллмка + интеграция с Gemini (уже через запросы по сети).

Для меня это супер вовремя, потому что я как раз такую штуку и собираюсь строить, только интегрировать думал OpenAI, но теперь уже не уверен.

Кстати, вы работали с Gemini? Как вам? А то я что-то все OpenAI да Claude…
Почему JS это плохой язык?

Написал коротенькую статью на Хабр (кстати, у кого есть инвайт, плюсаните плиз).

Спойлер: статья скорее для разработчиков, но никакого хардкора в ней нет. В ней даже кода нет.
Агенты Наступают

Чел с твиттера билдит апку за 20 мин. На входе один промпт: “простой мне бизнес на миллион долларов про AI и writing”. Больше он в процесс не вмешиваться. На выходе рабочее приложение, но и это ещё не всё.

Штука, которую он юзал называется Manus. Она в закрытой бете, попасть можно только через waitlist. Об этих ребятах уже писали, потом про них все забыли, а зря. Если видео правда, то никакой курсор рядом не стоит.

На деле сравнивать с курсором не совсем корректно. Мне пока что кажется что они занимают разные ниши. Курсор это помощник разработчика (даже если этот разработчик вайб-кодер), а Манус это «Devin здорового человека». То есть штука, которая должна программиста (точнее it специалистов в широком смысле, об этом ниже) заменить.

Что сделал Манус и почему это круто: он не просто написал (рабочий) код, а провел маркетинговое исследование, проанализировал нишу и конкурентов, прошерстил твиттер и реддит на предмет болей и придумал целый план, какие проблемы и как надо решить, чтобы выделиться на фоне конкурентов.

Это “press X to win”. Если конечно оно работает…

Да, приложение на выходе функционирует и даже выглядит неплохо, но справился ли ИИ агент действительно хорошо на предыдущих шагах? И насколько бы хорошо у него получилось сделать что-то технически посложнее? В его поделке кажется даже базы данных нет.

Мне мнение: чел дал слишком абстрактную задачу. ИИ всё ещё нуждаются в том, чтобы мы разбивали для них задачи на куски, с четко понятным входом и выходом. Так и нам спокойнее, больше контроля за качеством.

Понятно, его цель хайп и охваты (что он и достиг, а вот мне бы поучиться), но момент важный, стоило прокомментировать.

Финальный аккорд: ИИ агенты наступают, с Манусом придут похожие на него. Специалисты все в большей опасности, у фаундеров все больше инструментов для создания и масштабирования бизнеса.
Нас сотня! 💯

И каждый — настоящий, живой. Ни одного бота, никакой накрутки. Без рекламы. Только авторский контент.

Много ли это? Нет. Но мы не про количество, а про качество. Качество контента перетекает в качество подписчиков.

Спасибо, что читаете. Для меня это правда важно. Сотня это только начало, когда-нибудь нас будет тысяча. Оставайтесь и будьте в курсе событий в мире ИИ кодинга!
Психотерапия и аффирмации - это промпт инжиниринг мясных нейронок 🫠

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

1️⃣ Не стоит лихо рассуждать о вещах, в которых не разбираешься (привет, специалисты по геополитике)

2️⃣ Есть ненаучные области знания, которые, тем не менее, показывают результаты (кому-то, например, религия помогает)

3️⃣ Что такое промпт-инжиниринг

А теперь по порядку:

Раз. Не стоит лихо рассуждать о вещах, в которых не разбираешься

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

Например, я специалист по программированию и у меня есть мнение, как проектировать реляционные БД. А вот мнения, почему пала Римская империя, у меня нет и быть не может.

Тут можно (и нужно) взять чужое. Остается только попытаться выбрать, чье лучше. Еще можно (вообще респект), изучить полярные мнения и вычислить среднее арифметическое. Но и это будет не ваше мнение, а лишь компиляция из чужих. И это нормально! Не нормально принимать чужое мнение за свое и, тем более, отстаивать его как свое собственное.

Два'с. Есть ненаучные области знания, которые, тем не менее, показывают результаты

Религия, духовные практики, нейро-лингвистическое программирование, даже физиогномика. Все это может приносить реальную пользу.

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

Очень часто есть некий процент истины. Просто он спрятан. Человеку с критическим мышлением, мне кажется, не опасно (а даже полезно) попытаться познакомиться поближе с чем-то подобным.

Так вот, психотерапия и аффирмации (объединяю их тут потому что оба направлены на некий разговор с самим собой, в одном случае "об другого", в другом сразу об себя) даже если и являются чем-то ненаучным (что само по себе не факт, к слову), не должны отрицаться по причине вышеописанной.

Три'с. Что такое промпт-инжиниринг

Наконец, к сути поста.

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

- Не может быть двусмысленности (инструкция всегда абсолютно однозначна);

- Программа всегда состоит из формального языка, грамматика которого может быть непротиворечиво описана набором (четких) правил;

Но с приходом ChatGPT я понял, что это все равно что думать, будто программы могут быть написаны только на ассемблере!

Мы же можем программировать на высокоуровневых языках, например, на Питоне, и здесь нет противоречия? То же самое и с LLM - да, под капотом там все тот же бинарный код, инструкции и электричество. Ну так и у нас там, если что, нейронные сигналы и электричество. И никому, при этом, не кажется странным пытаться убедить кого-то, воздействуя на него словами, а не ковыряясь отверткой в его нервной системе, верно? (Ведь верно???)

От машины, которая не понимает нас, если не там стоит запятая, мы приходим к машинам, что понимают нас лучше нас самих - строгий и четкой ввод (код) стал не строгим и не четким (промпт), но в остальном суть осталась той же - есть набор инструкций, и машина его интерпретирует.

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

На самом деле много что промпт-инжиниринг, даже просто чтение книг и просмотр сериалов, но это уже тема для отдельного поста.

Да и надо ли вообще окунаться в эти дебри?
Code Review в 2025

Осторожно: пост для айтишников! В тексте содержится нецензурная лексика LLM-Engineering терминология.

Пришло в голову, как можно было бы улучшить код-ревью с помощью LLM. По сути, идея для стартапа, но я уверен, в этом направлении уже копают.

1️⃣ Берём сначал укропа вектора (embeddings) кодовой базы, актуальные, конечно же. Такие строит курсор и его аналоги, на GitHub наверняка куча тулов которые могут высрать вам это прямо в репу.

2️⃣ Потом кошачью жопу что-то типа repomix, чтобы у нас было markdown описание репы (пригодится для RAG на следующем этапе). Тут главное не переусердствовать, чтоб у ЛЛМ контекстное окно не треснуло. В идеале это текстовое описание кодовой базы, но без настоящего кода (он занимает много токенов). Быть может текст + псевдокод или что-то вроде outline view (сигнатуры функций, но без имплементаций)

3️⃣ 25 картошек в момент запуска CI/CD пайплайна берем ЛЛМ с контекстным окном потолще и кормим её фирменным блюдом по рецепту: diff коммита/PR'а + текстовое описание кодовой базы. Просим ответить на вопрос: "Глядя на этот пиздец, скажи, на какие места в коде стоит взглянуть внимательнее, чтобы проанализировать их на предмет возможной поломки?". Тут еще можно попросить сформулировать суть изменений, полезно для шага 5.

4️⃣ 17 мандовошек собственно RAG, иначе зачем нам вектора? Векторизируем ответ с предыдущего шага, через него находим релевантные куски кода и, наконец, билдим идеальный контекст для финального, пятого шага.

5️⃣ Ведро воды и хуй туды! Снова идем в ЛЛМ (результаты предыдущих шагов надо отбросить, они больше не нужны и лишь займут место в окне) и просим: "Смотри, вот описание наших изменений + diff PRа + куски кода, которые могут быть затронуты этим изменением; Твоя задача тщательно проанализировать и оценить вероятность поломки от 0 до 100".

Охапка дров и плов готов! Остается только настроить пайплайн условием типа "если вероятность фэйла > 5%, то завали пайплайн".

Тут, конечно, есть над чем поразмыслить, это просто очерк, чтобы мысль не растворилась в воздухе. Наверняка тут найдется место и Structured Output и, может, каким-нибудь Chain of Thought, и без Evaluations вряд-ли обойдется. И может количество шагов нужно уменьшить или увеличить. Над этим уже пускай думает тот, кто будет это имплементить.

P.S. - перекликается с тезисом про статическую типизацию ("явное лучше чем неявное" тут играет очень важную роль).
AI Coder 🦾
Агенты Наступают Чел с твиттера билдит апку за 20 мин. На входе один промпт: “простой мне бизнес на миллион долларов про AI и writing”. Больше он в процесс не вмешиваться. На выходе рабочее приложение, но и это ещё не всё. Штука, которую он юзал называется…
Утро началось с письма от разработчиков Мануса. Дали доступ к закрытой бете, будем пробовать!

Кстати, на этой неделе будет видео, мастер-класс по вайб-кодингу. Покажу, как сделать за 15 минут рабочего бота в телеграмме с привязкой к OpenAI вообще не трогая код.
Благодарю за подсказку, господин Cursor 🙏 Если бы не вы, написал бы сейчас неграмотный текст для пэйвола!

ИИ все таки на больших датасетах нынче обучают, он лучше знает, на каком языке нужно общаться с юзерами.

(Скоро будет полезный контент, обещаю. Да, еще полезнее, чем этот.)
ИИ который работает в браузере за вас

Зацените какое расширение для браузера нашел, называется "Do Browser". Посмотрите короткое видео на главной, автор показывает, как приблуда сама пишет и публикует пост в линкедине.

Еще несколько месяцев назад я понял, что опыт из этих ваших "Курсоров" надо тащить в браузер, повышать уровень абстракции и там тоже. Так вот, первой моей идеей для микропродукта было именно это - автоматизация действий в браузере.

В итоге решил делать сузить скоуп задачи и сосредоточиться на работе с текстом . Упоминал вскольз тут.
Управляем базой данных через LLM

Вот уже несколько месяцев я то и дело задаюсь вопросом, да кто такой этот ваш MCP? Да-да, понятно, какой-то протокол для подключения клиентов к ИИ-серверу. Но как? Зачем? Короче, как сказал Ричард Фэйнман: "What I cannot create, I do not understand."

MCP я руками так и не реализовал, зато наконец-то воспользовался им как юзер. И мне наконец-то стало ясно, в чем сыр бор!

MCP это штука, которая позволяет подключить программу-клиент (например, Claude Desktop или Cursor) к программе-серверу. Снова клиент-серверная архитектура, как в Rest, но на этот раз клиент посылает на сервер человекочитаемый текст, а сервер этот интерпретирует его с помощью LLM и принимает решение вызвать какую-то функцию с какими-то параметрами.

Есть такой database as a service "Neon" (компания, которая администрирует базу данных за вас, чтобы вы сами не марали руки об Linux), и они такие молодцы, что реализовли MCP, вот статья, как подключить его к курсору. Все подключение это буквально создать файлик mcp.json и скопипастить туда пару строк. Что же в итоге?

А в итоге ваш чат в курсоре, где вы общаетесь с ИИ, начал понимать больше команд, и теперь способен выполнять запросы вроде:

- Сколько у меня таблиц в БД?
- Добавь колонку created_at в табличку users
- Удали всех юзеров младше 18 лет

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

Но вы только вдумайтесь, вы можете общаться с базой данных! Не просто генерировать SQL из текста, чтобы потом выполнить его руками, а прям общаться текстом с самой базой, а она будет вас понимать, будто живая.

MCP универсален и способен подключить к курсору вообще все, что угодно. Даже пульт управления дверьми от гаража, если они достаточно умны.

Будущее наступает! По крайней мере, будущее разработки.
Навайбкодил в Курсоре за 3 часа с BabylonJS, даже доку не открывал, че в коде происходит абсолютно хз 🫠

Паук агрится если подойти и атакует, хп минусится, выносливость тратится во время спринта и восстанавливается если встать смирно О_о

1 TypeScript файлик <500 строк кода

P.S. моделька паука отсюда

#gamedev
AI Coder 🦾
Навайбкодил в Курсоре за 3 часа с BabylonJS, даже доку не открывал, че в коде происходит абсолютно хз 🫠 Паук агрится если подойти и атакует, хп минусится, выносливость тратится во время спринта и восстанавливается если встать смирно О_о 1 TypeScript файлик…
Геймдев в Cursor

Так, все хорошо. Канал не превращается в дневники инди-разработчика, честно. Выходные кончились, и уже завтра придется вернуться к делам насущным. Но пока поделюсь, чего удалось добиться за еще один день.

Да, процесс затянул, а я решил побаловать себя и позволить поразвлечься. Геймдев меня, как и каждого, наверное, программиста, всегда интересовал но казался сложным и не хватало мотивации разобраться. Ответственно заявляю что связка Cursor + BabylonJS эту проблему решает. 3D в браузере на тайпскрипте с ИИшкой которая все за тебя делает? Я не устоял.

Конечно, навайбкодил я полные штаны, на второй день файлик распух на полторы тыщи строк и ЛЛМка перестала справлятся с моими запросами. Нет-нет да пришлось вникнуть в некоторые аспекты: что такое сцена, камера, скайбокс, иллюминация. Начинали за здравие а кончили за упокой. Но результатом я доволен! За один день была добавлена куча механик:

- У паука есть настоящее ХП, его можно бить и оно отнимается, а когда оно падает ниже нуля, он умирает (неожиданно, правда?) и исчезает
- Разобрался как загружать 3d модельки, в интернете полно low-poly бесплатных, бери не хочу
- Смена дня и ночи, skybox с текстурами звездного неба (см последний скрин)
- Консоль аж с одним читом set_time чтоб устанавливать время (надо было для дебага солнца… странная фраза)
- Задел под инвентарь и наверно еще какие-то мелочи, которых не упомнишь

#gamedev