Workflow as a YAML: детерминированная песочница для агента поверх Pydantic AI
Агент уже пишет код за нас, но с автоматизацией для бизнеса всё иначе: он косячит на каждом шаге, в JSON-трейсе тысячи вызовов, а переписанный промпт вы даже не заметите. Я перестал перепроверять агента вручную — загнал его в жёсткие рамки: wrapper над Pydantic AI, MCP-инструменты, скиллы и Studio с отладчиком. Рассказываю, почему иначе нельзя, и показываю код.Проблема
Измеряя незримое: что и как измерять в мобильной разработке (часть 2)
Всем привет! Меня зовут Алексей, я техлид Android-направления в компании Домклик.В прошлой статье мы рассмотрели несколько базовых метрик. В этой части поговорим о менее очевидных, но не менее полезных критериях и способах измерения различных аспектов мобильной разработки. Тема не новая, однако получила новый импульс благодаря развитию и широкому внедрению искусственного интеллекта (ИИ). Lead Time
Почему JSON Schema не делает ответ LLM надёжным
После того как LLM начинает возвращать structured output, интеграция внезапно становится очень похожей на обычный backend.Больше не нужно вырезать JSON из Markdown, надеяться, что модель не добавит перед ним «Конечно, вот результат», чинить потерянные кавычки и повторять запрос из-за случайной запятой.Мы описываем схему, модель возвращает объект, десериализуем его в Go-структуру — и кажется, что самая неприятная часть интеграции закончилась.Например:type Invoice struct { Number string `json:"number"` Currency string `json:"currency"` Total int64 `json:"total"` }На выходе получаем:{ "number": "INV-2026-1842", "currency": "USD", "total": 148000 }JSON валиден.
Почему fallback между LLM может сломать семантику ответа
Когда проектируешь обычный backend, fallback обычно воспринимается как довольно понятный механизм.Есть основной upstream. Если он недоступен, переключаемся на резервный. Если один pod умер, запрос обслужит другой. Если один PostgreSQL read replica недоступен, читаем с другой. Если основной endpoint партнёра отвечает ошибкой, можно попробовать резервный.В большинстве таких случаев мы предполагаем, что резервный исполнитель реализует тот же контракт.С LLM это предположение начинает ломаться.Две модели могут принимать один и тот же JSON, возвращать JSON по одной и той же схеме и при этом фактически выполнять задачу по-разному.
LLM предлагает, код исполняет: как разделить reasoning и side effects в production‑пайплайне
Привет! Я Андрей Непряхин — директор департамента разработки в AGIMA.
Почему LLMProvider недостаточно: проектируем AI Gateway для SaaS на Go
Когда начинаешь делать AI-фичу в backend-приложении, первая архитектурная идея обычно выглядит очень здраво: спрятать конкретного провайдера за интерфейсом.Что-то вроде:type LLMProvider interface { Generate(ctx context.Context, req Request) (Response, error) }Сегодня за ним OpenAI-compatible API, завтра другой провайдер, послезавтра локальная модель. Код бизнес-логики от конкретного SDK не зависит, значит архитектурная задача вроде бы решена.
Как мы внедрили AIOps для контроля GPU‑утилизации и повысили её на 60%
Привет, Хабр! На связи Даниил Понизов и Роман Лазовский, руководитель и MLOps‑инженер команды ML‑платформы в RWB. Мы занимаемся разработкой платформы машинного обучения, в том числе — контролируем инфраструктуру и эффективное использование ресурсов.Недавно проходил Inside AI Meetup, где мы рассказали про внедрение AIOps практик в нашей команде — видеозапись вы найдете тут.
Звонок голосовому ИИ-агенту стоит 8 рублей: поставил счётчик и посчитал до копейки
В понедельник в 13:24 человек позвонил в небольшую производственную компанию, не дождался ответа и попал на голосового бота. Поговорил 27 секунд и положил трубку. Через пару минут перезвонил и на этот раз договорил до конца: рассказал, что нужно и в какой город, бот попрощался, а владельцу компании улетела SMS с карточкой заявки.
Поставил счётчик на каждый звонок голосового ИИ-агента: 13 сценариев экзамена и себестоимость до копейки
В понедельник в 13:24 человек позвонил в небольшую производственную компанию, не дождался ответа и попал на голосового бота. Поговорил 27 секунд и положил трубку. Через пару минут перезвонил и на этот раз договорил до конца: рассказал, что нужно и в какой город, бот попрощался, а владельцу компании улетела SMS с карточкой заявки.

