Как посчитать статистику переписки на 500 тысяч сообщений в браузере и не увидеть ни одного
Переписка с близким человеком — одна из самых личных вещей на телефоне. А я делаю сервис, которому нужно её прочитать. Из файла экспорта получаются карточки: кто чаще пишет первым, как быстро отвечает, в какие часы вы на связи, какие словечки появились у пары и кто из вас их придумал. Просьба «загрузите переписку к нам на сервер» убила бы такой проект в день запуска, и правильно.Поэтому у «Чатограммы» одно жёсткое правило: всё считается в браузере, и по умолчанию сервер не видит ни одного сообщения
Каждый LLM-фреймворк описывает инструмент по-своему
Чтобы дать LLM доступ к своему коду, пишут инструменты (tools). Инструмент — это функция и всё, что модели нужно знать, чтобы её вызвать: имя, описание и схема аргументов.Потом те же инструменты приходится писать ещё раз. Первая версия сделана на tool() из AI SDK. В проекте появляется MCP-сервер, и инструменты переписывают под registerTool. Соседняя команда использует Genkit, и те же инструменты пишут в третий раз, через defineTool. Функции остаются прежними, меняется только обёртка.К тому же каждая обёртка привязана к своему фреймворку. tool() берётся из пакета ai, defineTool — метод экземпляра Genkit, registerTool
Наводишь на слово в субтитрах — видишь перевод: расширение на встроенном ИИ Chrome
Я учу английский по сериалам. Смотрю с английскими субтитрами, и каждое незнакомое слово — это пауза, alt‑tab, переводчик, обратно. К десятой паузе за серию хочется просто включить русские сабы и сдаться.Есть Language Reactor и похожие сервисы, но у них жёсткий список площадок: Netflix, YouTube — и всё. Каждый стриминг рисует субтитры своим способом, и под каждый нужен отдельный парсер. А я смотрю где придётся.
Переводчик в браузере, который учит слова: встроенный Translator API Chrome, свой ИИ‑ключ и интервальные повторения
Было популярное китайское расширение Dadda Translate (达达划词翻译): выделяешь слово, получаешь перевод, сохраняешь в словарик, и слово потом всплывает уведомлением, пока не запомнится. Оно перестало работать: API Sogou и Shanbay, на которых держался перевод, изменились или исчезли. К тому же оно было только для Chrome и только для пары английский → китайский.Я переписал его с нуля. Получился WordToast для Firefox, Chrome и Edge (GitHub
LLM уверенно называет шахматные ходы, которых на доске нет. Как я проверяю каждый ее ответ кодом
Движок знает ответ, но говорит числами: -2.7 и стрелка. Модель говорит словами, но врет. Первый же комментарий, который я получил, звучал так: «сильнее было 14.Nf6, конь врывается в лагерь черных». Коня, который может пойти на f6, в той позиции на доске не было.Сразу дисклеймер: это мой первый веб-проект. Я играю в шахматы блиц на 1300 и хотел инструмент, который объясняет мои ошибки словами, а не оценками. Часть того, что ниже, фронтендеру покажется очевидной. Мне пришлось выяснять это руками.
Как мы дописываем оборванные ответы языковой модели и почему склейка оказалась сложнее, чем кажется
Мы делаем русскоязычный сервис с несколькими языковыми моделями в одном чате. Однажды партнёр прислал скриншот: модель начала отвечать списком из ста пунктов и оборвалась на середине слова. В админке лежал тот же обрывок. Ни ошибки, ни предупреждения.Почему ответ обрывается. У каждого запроса есть потолок max_tokens. У нас он был 1200 токенов. На английском это около 900 слов, а на русском кириллица съедает больше токенов, и 1200 токенов оказались примерно полутора тысячами знаков. Длинный список просто не помещался. Модель при этом возвращает finish_reason: "length" (у некоторых поставщиков max_tokens
Промпт не удержал медицинскую границу. Как мы добавили LLM-тренеру страж на регулярках
В 1trAIner ИИ-тренер отвечает спортсменам в чате, пишет планы и разбирает тренировки. Сервис информационный: диагнозов не ставит. В системном промпте с самого начала было правило «при боли и травме — к врачу». Мы считали вопрос закрытым, пока не начали проверять ответы на трёх языках.Ниже — как мы нашли дефект, почему промпт его не лечит и что сделали кодом. С цифрами, в том числе неудобными.Как нашли
ИИ уже умеет собирать микросервисы по одному промпту, но, как разработчик, я всё ещё нужен
Каждые несколько лет разработчиков снова хоронят.Сначала нас должны были заменить визуальные конструкторы. Потом no-code. Потом low-code. Потом автогенерация CRUD. Потом Copilot. Теперь, кажется, пришёл финальный босс в виде больших языковых моделей, которые за вечер могут накидать backend, frontend, Docker Compose, миграции, OpenAPI, Kafka, PostgreSQL, Redis, авторизацию, тесты, README и компилятор на сдачу.
Бесплатный AI-сервер на Google Таблицах: параллельные запросы к Gemini для обработки сотен новостей
Мне потребовался умный анализатор потока новостей на специфичную тему: применение AI в энергосбережении и энергобезопасности. Хотелось получать в Telegram нужные заметки в моем заданном формате: заголовок, суть решения, достигнутые KPI, ссылка на первоисточник… И если материал полезен - нажать кнопку и отправить его в рабочий чат.Важное дополнение: 90% новостей иноязычные, а обработанные сообщения нужны на русском.Два месяца мы с ChatGPT и Gemini дорабатывали этот инструмент. Один из полезных приёмов, небольшой по объёму, я хочу показать в статье: как отправлять несколько независимых запросов к модели параллельно.

