backend.

Где заканчивается вызов LLM и начинается backend система: локальный RAG на FastAPI и Ollama

На практике хотел понять где заканчивается простой вызов локальной LLM и начинается backend система: с API контрактом, логированием, request_id, источниками, индексом документов, диагностикой и честными ограничениями.Сначала проект выглядел просто: frontend отправляет вопрос, FastAPI принимает POST /ask, backend вызывает локальную модель через Ollama и возвращает ответ. Это уже работало, но стало понятно такой вариант ещё нельзя назвать системой по документации. Модель отвечает, но непонятно на что она опирается, откуда взяла ответ, сколько времени занял каждый этап и что делать если документы изменились.

продолжить чтение

Локальный RAG без магии: sources, timings, request_id и отказ от генерации

На практике было интересно не просто вызвать локальную LLM из Python а понять, в какой момент такой вызов превращается в backend-систему: с API-контрактом, логами, request_id, источниками ответа, индексом документов, диагностикой и честным отказом отвечать, если данных в документах нет.В этой статье показываю не теорию RAG, а небольшой локальный проект, где хорошо видно, какие инженерные проблемы появляются вокруг LLM:что попадает в prompt;какие sources были найдены;сколько заняли retrieval и generation;когда backend должен не вызывать LLM;почему stale index может давать странное поведение;

продолжить чтение

SLA как инструмент, а не отчёт

Часть 2. Масштабирование, автоматизация, AI и два компонента надёжностиЭто вторая часть разбора того, как мы выстраивали SLA и инцидент-менеджмент в большом продукте.Меня зовут Дмитрий Химион, я руководитель ML Platform в X5 Digital. В первой части я рассказал, как мы пересобрали инцидент-менеджмент как процесс и внедрили единый алгоритм расчёта потерь, позволивший бизнесу и командам прийти к общему знаменателю.

продолжить чтение

Зачем backend разработчику Python, если он не собирается становиться data scientist

Начал смотреть в сторону Python не потому, что захотел стать data scientist.Мой основной опыт обычный back C#/.NET, банковские системы, REST API, микросервисы, Kafka, PostgreSQL, Docker/OpenShift, CI/CD и сопровождение. Позже добавилась Java/Spring Boot. То есть моя базовая картина мира это не notebooks и не обучение моделей а сервисы, интеграции, продакшен, логи и ответственность за результат.Но когда я начал разбираться с LLM быстро понял, вызвать модель можно почти из любого языка, а вот руками понять RAG, embeddings, локальные модели, чанкинг, evaluation и большинство новых AI инструментов проще всего через Python.

продолжить чтение

Кейс. Zero Bug Policy: как мы снизили бэклог багов в 4 раза за месяц

Баги — неизбежная часть разработки. В этой статье расскажу наш опыт: как мы внедрили Zero Bug Policy в MetaMap (B2B fintech, ~200 человек в IT, распределённая команда, скоринг благонадежности заёмщиков через ML) и за месяц сократили бэклог с 77 до 18 багов. А главное — как это изменило культуру и отношения с клиентами.Проблема: баги по принципу «кто громче»

продолжить чтение

Почему проекты превращаются в спагетти даже у хороших программистов

Когда программист впервые слышит слово «архитектура», он обычно представляет что-то скучное: диаграммы, стрелочки, коробочки, совещания на три часа и человека, который запрещает писать код.А потом проходит несколько лет.И внезапно оказывается, что проект, который «быстро накидали», начинает разваливаться от любого изменения.Добавили одну кнопку — сломался импорт. Поменяли отчёт — умерла авторизация. Обновили библиотеку — перестала открываться половина форм.И начинается археология.Почему так происходит?

продолжить чтение

Федеративное обучение в условиях дефицита памяти на Edge-устройствах. Часть 1

Если ваше устройство думает, что 1 ГБ — это ругательное слово, то этот доклад в двух частях для вас.

продолжить чтение

Возвращение блудного программиста (ч.2)

Предыстория тут. Первые ощущенияПервый шагШаг 2Снова шаг 2ОзарениеПросто ещё один проектЗаключениеПервые ощущения

продолжить чтение

Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы

System prompt — это просьба. Guardrails — это принуждение.1. ВведениеКогда я впервые внедрял LLM в production-сервис, схема безопасности выглядела примерно так: написать хороший system prompt, поставить галочку «мы всё предусмотрели» и жить дальше. Жизнь не дала долго наслаждаться этим спокойствием — первый же тест показал, что пользователи довольно быстро находят способы заставить модель «забыть» всё, что мы написали в системном промпте.Проблема фундаментальная: system prompt — это инструкция, которую LLM старается выполнить, но не обязан

продолжить чтение

AI без Python: как исправить документацию и внедрить RAG в JVM-стеке

Привет, Хабр! Меня зовут Дмитрий Вдовин, я техлид команды Budget Tool. Мы отвечаем за продукт, через который в банке проходят процессы планирования и контроля расходов. Это внутренняя система, в которой формируются бюджеты, согласуются изменения и фиксируются расходы по направлениям. У нас много терминов, правил и нюансов. Например, чем OPEX отличается от CAPEX, зачем нужны кост-центры и группы расходов, что такое аллокация и реаллокация, как заполнять бюджет.

продолжить чтение