fastapi.

Рентген для нейросетей, или как я перестал понимать собственный ИИ и написал свой APM

Есть одна коварная особенность в разработке сложных систем.Иногда ты месяцами строишь архитектуру. Добавляешь новые возможности, исправляешь ошибки. Всё работает. А потом вдруг понимаешь одну очень неприятную вещь:Ты больше не понимаешь собственную программу.Именно это произошло и со мной во время разработки PAD+ AI. После миллионов тестов я осознал, что потерял контроль.Проблема наблюдаемости в AI-системахPAD+ AI уже умел многое: работал с памятью, пайплайнами, эмоциями, Truth Loop и персонами. Результаты становились всё лучше. Но возникла совершенно неожиданная проблема.

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

RAG для закупок: Qdrant и LlamaIndex в локальном контуре

Привет Хабр! Меня зовут Владимир, и недавно я решил изучить новую (для себя) технологию - LlamaIndex. А тут и задачка подвернулась - надоело копаться в Положении о закупках, поэтому понадобился RAG для ответов по ФЗ-44, ФЗ-223, ну и локальному положению.В этой статье разберу, как создать простенький RAG, не выходящий из локального контура, на базе LlamaIndex + Qdrant, напишем к нему API и UI на Gradio. Поехали.Конфигурация проектаДля сервиса понадобятся LLM, векторная БД Qdrant, эмбеддер и реранкер результатов. Сразу код конфигурации:Код конфигурации

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

PAD+ AI v4.0: исследовательская когнитивная архитектура поверх LLM

Что происходит между запросом пользователя и ответом языковой модели?За последние несколько лет большие языковые модели совершили настоящую революцию. Сегодня они способны писать код, анализировать документы, помогать в исследованиях, создавать тексты и решать сложные задачи.Однако подавляющее большинство современных AI‑приложений имеют практически одинаковую архитектуру:Запрос → Prompt → LLM → ОтветВся интеллектуальная работа фактически сосредоточена внутри языковой модели, а внешняя система лишь подготавливает запрос и отображает результат.

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

Делюсь опытом: ИИ-агент на Claude без LangChain и RAG — разбор архитектуры и развилок

Зачем я это пишуЗапустил недавно прод-агента на Claude — небольшой, для бытовой задачи у знакомой. По дороге понял несколько вещей, которые сначала казались мне очевидными «после интернета», а потом, когда сел и проверил на реальной задаче, начали играть иначе. Хочется поделиться разбором — может, кому-то сэкономит неделю-другую на тех же развилках.Сразу честно: я не «академический» разработчик. До последнего года писал на Python в основном чтобы прочитать чужой скрипт и подправить отступ. То, что вы увидите в коде ниже — собирал руками, лезя в документацию по каждому слою. Поэтому это не «гайд от эксперта», а скорее

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

Почему я перестал слать каждый вопрос в LLM: архитектура предсказуемого конвейера

О проекте. Я разрабатываю систему ИИ-поддержки первой линии — «Финлоджик. Контур Поддержки» (FinlogiQ AI Support). Бот принимает обращения через веб-чат и Telegram, понимает суть вопроса, ищет ответ в базе знаний и передаёт сложные случаи живому оператору. Делаю один: начиналось как заказная разработка под клиента, затем выросло в самостоятельный продукт. Это первая статья из цикла о внутреннем устройстве системы.Пара терминов: LLM (large language model) — большая языковая модель, нейросеть вроде YandexGPT или DeepSeek; RAG

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

Как мы строим корпоративную экзаменационную платформу с AI: архитектура, дубли, мульти-tenant и продовые шишки

Привет, Хабр.Хочу рассказать про наш проект Exam AI

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

Где заканчивается вызов 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 может давать странное поведение;

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

Как мы автоматизировали отдел продаж в Bitrix24 с помощью ИИ

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

Как я сделал локальный RAG-сервис для SRE: ищем по документации, ранбукам и коду через Ollama

Недавно я делал учебный проект про автоматизацию документирования инцидентов. Поначалу планы были грандиозными: инциденты, таймлайны, интеграции с мониторингами, чатами, постмортемы, подсказки дежурным инженерам.Но довольно быстро стало понятно, что с временными и ресурсными ограничениями лучше не пытаться написать маленький PagerDuty. Поэтому я сузил задачу до более реалистичного ядра: локального RAG-сервиса, который ищет по документации, ранбукам и коду, а затем передаёт найденный контекст в LLM.Так появился llmortem — FastAPI-сервис, который можно подключить к OpenWebUI как OpenAI-compatible backend.

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