惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
WordPress大学
WordPress大学
Google DeepMind News
Google DeepMind News
T
The Exploit Database - CXSecurity.com
阮一峰的网络日志
阮一峰的网络日志
F
Fox-IT International blog
The GitHub Blog
The GitHub Blog
Engineering at Meta
Engineering at Meta
I
Intezer
P
Privacy & Cybersecurity Law Blog
B
Blog RSS Feed
Latest news
Latest news
小众软件
小众软件
A
Arctic Wolf
Attack and Defense Labs
Attack and Defense Labs
L
LINUX DO - 热门话题
博客园 - 聂微东
B
Blog
T
Troy Hunt's Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
Malwarebytes
Malwarebytes
爱范儿
爱范儿
Recorded Future
Recorded Future
Apple Machine Learning Research
Apple Machine Learning Research
人人都是产品经理
人人都是产品经理
D
Docker
T
Threat Research - Cisco Blogs
MyScale Blog
MyScale Blog
Martin Fowler
Martin Fowler
E
Exploit-DB.com RSS Feed
F
Fortinet All Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
PCI Perspectives
PCI Perspectives
Scott Helme
Scott Helme
N
Netflix TechBlog - Medium
博客园 - 三生石上(FineUI控件)
T
True Tiger Recordings
C
Check Point Blog
Microsoft Azure Blog
Microsoft Azure Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
K
Kaspersky official blog
Security Latest
Security Latest
The Hacker News
The Hacker News
Microsoft Security Blog
Microsoft Security Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
Stack Overflow Blog
Stack Overflow Blog
S
Security @ Cisco Blogs
C
CXSECURITY Database RSS Feed - CXSecurity.com
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
M
Microsoft Research Blog - Microsoft Research

Все публикации подряд на Хабре

preIPO Anthropic, OpenAI, SpaceX. Разбираемся — стоит ли участвовать? Entaxy ION + OPC UA: два способа получить данные с промышленного оборудования РСЯ, AdSense или myTarget: что на самом деле в 2026 приносит больше денег сайту и причем тут монетизаторы Практическое построение сервисов на Go под реальный трафик PostgreSQL и аналитика: что меняется, когда хранилище становится общим Codex за 5 месяцев 2026: мой топ-5 релизов, что не зашло и где OpenAI обогнал Anthropic Как создать короткое видео с помощью нейросетей: Полный гайд по Veo 3.1, Kling 3.0 и Happy Horse 1.0 Алгоритм проверок физлиц от экс сотрудника ФНС Как ИИ портит резюме студентам Системные вызовы в сфере ИТ в 2026: стратегический взгляд для ИТ-руководителей Вайбкодинг заканчивается на localhost: как я строю SaaS для цифровизации коттеджных поселков с Codex Производственные риски в небольшом кастомном производстве. С чем я сталкивалась и как научилась это учитывать Подключаем ИИ органы чувств: bash-демон, пайка и самосознание на Raspberry Pi Я хотел повторить Growing Neural CA за вечер. Ушёл месяц Промт для генерации текста без ИИ следа — как писать уникальные тексты через нейросеть От capabilities к AppArmor: что реально остановит атакующего в контейнере CactOS Вектора интересов: как находить настоящую мотивацию и усиливать команды Цена безопасности [Перевод] Цена безопасности “Рубик” от пет-проекта до прода или ITIL 4 для строительно-торговых центров Чего ждать (и не ждать) от ремейка AC4 Black Flag Архитектурный тупик корпоративного хранения: почему смена модели не снимает ограничений и что с этим делать Атаки через подрядчиков, дефицит кадров и квест с импортозамещением: главные вызовы ИБ в 2026 году Я не оставлю детям наследства Почему порты стали «дверями» в сервер, и кто решил, что SSH будет 22 Почему зарубежные разработчики чипов возвращаются на китайские фабрики Как у меня НЕ получился торговый бот на Polymarket Проектирование архитектуры в нотации ArchiMate с использованием ИИ. Часть 2 Как превратить домашнюю файлопомойку в умную AI-галерею на основе сборки из x99+Xeon и видеокарты за 2 тыс рублей Перспективы заселения нашей галактики Кризис менеджмент в ИТ Reactive Programming не спасёт вас. Если вы не решили эти 5 проблем — у вас просто медленный монолит с Flux Как я делаю DIY-контроллер для ПК: громкость, приложения, MIDI, OBS Миграция микросервисов на Python с помощью LLM: экономим месяцы для разработчиков Программирование микросхем GAL и им подобных Почему таск-трекер не заменяет ИСУП: из чего состоит полноценный контур управления проектами Всё об информационной безопасности. Кибербезопасность. DevOps, CI/CD. Хакеры. Алексей Федулаев Как импортировать базу клиентов в amoCRM и навести порядок в контактах Как мы четыре раза переписали Outbox Google предлагает единый «водяной знак» для изображений, видео и текста, созданных ИИ Сексизм в IT: данные вместо домыслов Один фронтенд, чтоб править всеми, один фронтенд, чтоб всех найти: 1 точка входа, разные BI ИИ в тестировании: зачем мы пошли в пилот и почему начали с чата, а не с агентов Как я научила Telegram-бота наводить порядок в чате с мемами: пересылка по хештегам в соответствующую тему Как мы сделали внутреннюю CRM для управления студией – опыт Doubletapp Десятипальцевый метод — как печатать цифру " Шесть "? Партнерская программа по нейросетям: зарабатывай на ИИ, приводя клиентов в AI-сервис Как я сделал «клик по элементу → открыть в VS Code» за один вечер Эволюция Telegram‑бота на C++: от «лапши» в main() до ООП, in‑memory кэша и мутов по Фибоначчи Как я (внезапно) стал адвокатом вайб‑кодинга в корпорации Дизайн за 5 минут. Дайджест мая 2026 Только 17% всех 64-битных целых чисел можно разложить на два 32-битных 0,000000001% × ∞ = 100%. Вы осознаёте что любое событие неизбежно? «Вы либо трусы наденьте, либо крестик снимите». Как мы выиграли еще один суд против PR-агентства PRslon Почему вы тратите время не на переговоры, а на чужую внутреннюю драму. Как проходят переговоры с крупными компаниями Как приоритизировать регрессионные проверки, когда сжаты сроки релиза Электронные транспортные накладные: технический разбор нововведений 2026 года для логистов, разработчиков и бизнеса Как определить LLM под капотом чат-бота: учебный эксперимент по black-box fingerprinting Хабру 20 лет — зовём вас отметить это к нам Домой iPad как инструмент разработчика в эпоху агентного программирования Inspector v3: как я сделал свой центр управления Kubernetes на старом ноутбуке Как мы осваивали производство гибко-жёстких печатных плат: от проб и ошибок к рабочей технологии 30 лет мы внедряли в России Ansys. А потом он ушёл — и пришлось садиться писать собственный CAE для аддитивной печати Цифровой рубль и цифровой чек Облако под защитой от DDoS: чем On-Demand отличается от Always-On Распродажа в издательстве «Питер» Почему современный стадион больше похож на ЦОД, чем на арену Машина, которая учится думать Запихнули игровую приставку в короб и в первый же месяц продали на 3 млн Игровой ноутбук vs игровой ПК за те же деньги: что изменилось в 2026 году ГИС для Minecraft. Часть 1 Смена старого оборудования на новое убирает огромные затраты на его эксплуатацию — но куда девать всё это старое? Project Manager 2026: как AI-инструменты меняют профессию SLA как инструмент, а не отчёт. Часть 1. Как подружить бизнес и инженеров через общие цифры Послания от ангелов и первый шаг к компьютерам: стеганография Средневековья и Ренессанса Что новенького есть в CSS в 2026 году? Хватит мучить ChatGPT. Почему ваш промпт не сработает Как и зачем мы писали семантический слой для ИИ аналитики – SLayer Маленькая EVPN/VXLAN-фабрика без тупика: как мы запускали площадку в Амстердаме Репликация по DDIA: что я понял, только когда сам сломал прод RAG без downtime: настраиваем инкрементальное обновление документов на Qdrant и LangChain Тени истории: война машин. Как «Энигма» и «Фиалка» определили исход Второй мировой войны Как ускорить распознавание объектов нейросетями среди множества классов, не жертвуя памятью и точностью Как я хотел две странички для SAMBA и NFS, а сделал полноценную панель управления NAS на 20+ страницах Kubernetes для баз данных? CloudNativePG делает PostgreSQL по-настоящему Cloud-Native Как мы анализировали поведение пользователей Яндекс Музыки на 50 млн событий Как я разработал PoC-конструктор для приложений Android Стек российского сисадмина в 2026 Как я сделал обычную посудомоечную машину умной, с Home Assistant/ESPHome Контент-завод в 2026 году: разбор автономных систем, который отговорит вас это покупать I just want an agent. Часть 2. Как мы построили виртуальную команду для разработки ИИ-агентов Прототип игры с помощью Flowith: личный опыт и ограничения AI-инструмента Что вы не знаете об альтернативных документах, удостоверяющих личность Программные модули в DATAREON Platform: выносим повторяющуюся логику в C# функции Не прячьте интерфейс в код: защищаем внешний вид как промобразец, изобретение и товарный знак Могут ли взрослые учить язык как дети? Технология многовидового представления в nanoCAD BIM Строительство DRAйверы для GPU: как Kubernetes научился выделять устройства через стандартный API Рубрика эксперименты (в дизайне): наш опыт генерации и проверки гипотез
Память на миллион, а толку ноль: как мы спасали ИИ-агента от «тупости»
smirnoff_ai · 2026-05-26 · via Все публикации подряд на Хабре

Память на миллион, а толку ноль: как мы спасали ИИ-агента от «тупости»

Уровень сложностиПростой

Время на прочтение11 мин

Охват и читатели637

Кейс

Контекст-инжиниринг: как очистить память ИИ-агента от мусора

Память на миллион токенов: почему контекст забивается и как его чистить

На связи Сергей Смирнов, AI-инженер и основатель LLMStart.ru. Мы делаем AI-системы для бизнеса, и эта статья — про то, как мы управляем памятью в нашем ИИ-консультанте по 1С:УНФ для компании Айтон. О том, как этот бот прошёл путь от кривого прототипа до реального продукта, я рассказывал в первой статье серии. А здесь мы поговорим про одну конкретную боль — контекст (он же память нейросети).

Контекстные окна моделей доехали до миллиона токенов. На бумаге это звучит как магия: кажется, что в один запрос можно положить всю годовую историю переписки с пользователем, добавить сверху все инструкции компании — и ещё останется место. На практике так не работает. Большое окно — не значит «работающее» окно. Качество и стоимость ответов зависят не от размера окна, а от того, какой мусор мы туда кидаем и как вовремя мы его оттуда вычищаем.

Прежде чем лезть в цифры и инженерию, давайте коротко познакомимся с пациентом — что это за бот и как он работает. Без этого вся дальнейшая магия будет непонятна.

Поехали…

Знакомьтесь, пациент: корпоративный ИИ-консультант по 1С

Наш «пациент» — это корпоративный бот, который помогает людям работать в программе «1С:Управление нашей фирмой». Пользователь может написать ему текстовый вопрос или просто скинуть скриншот из 1С — бот всё поймёт. Под капотом это классический агент, который умеет пользоваться разными инструментами (например, поиском по базе знаний).

У агента две группы пользователей:

  1. Внутренние консультанты. Для них бот работает как быстрый справочник. Вопросы чёткие, диалоги короткие.

  2. Реальные клиенты (бухгалтеры, владельцы бизнеса). Они общаются с ботом в групповых чатах. Диалоги у них длинные, запутанные, они часто прыгают с темы на тему и возвращаются к старым вопросам.

Чтобы просто ответить на один вопрос пользователя, боту приходится попотеть. Сначала он расшифровывает вопрос (термины в 1С хитрые: слово «счёт» может означать и счет на оплату, и банковский счет). Затем он лезет в базу знаний искать нужные инструкции. Если сомневается, зовет на помощь субагента, который пойдет гуглить свежую инфу в интернете. И только потом собирает итоговый ответ.

Из-за этого на каждый вопрос клиента бот делает по 2–4 тяжелых поисковых запроса в базу. Запомните этот факт — именно он станет главной проблемой дальше.

Стек коротко:

  • Python, FastAPI на бэкенде

  • LangChain для управления агентом

  • Qdrant как векторная база данных (там лежат инструкции)

  • Langfuse для аналитики и метрик

  • OpenRouter как провайдер нейросетей. Основной мозг — Gemini 3.1 Pro, для лёгких задач (например, сделать краткий пересказ) — дешёвая Gemini 3 Flash.

На этом про архитектуру всё. Дальше мы будем говорить только про память.

Проблема 1M токенов: как нейросети забывают всё на ходу

С пациентом разобрались. Теперь давайте посмотрим на нейросети, которые работают у него под капотом, и обсудим ту самую страшную цифру — миллион токенов.

У всех современных топовых моделей заявлено гигантское окно памяти (от миллиона токенов и больше). Звучит круто: закинул туда всё что было под рукой и пошел пить кофе. Но возникает вопрос — а что модель реально сделает с этой горой текста? Сможет ли она найти нужную информацию или забудет половину, перепутает ссылки и потеряет суть разговора?

Парадокс в том, что миллион токенов в окне не означает, что модель реально способна работать с этим миллионом. У разных нейросетей память «протухает» по-разному.

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

Посмотрим на сводные результаты этого теста для окна в 1 миллион токенов (данные из обзора yage.ai, март 2026):

fig-02-mrcr-comparison

Бенчмарк MRCR v2 8-needle на 1M токенов: трёхкратный разрыв между актуальными фронтирами (Opus 4.6 vs Gemini 3 Pro), почти пятикратный — с учётом устаревших на 1M моделей

Если взять актуальные модели, разрыв просто гигантский — трёхкратный! Claude Opus 4.6 находит 76% спрятанных фактов, а наша Gemini 3.1 Pro — только 24.5%. А если посмотреть на чуть более старые модели, то там вообще слёзы (16-18%). И заметьте, задача одна и та же, длина текста одна и та же, и у всех заявлено окно в миллион токенов! Создатели моделей из Anthropic честно называют это явление context rot («гниение контекста»).

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

Что это значит для нас с вами — людей, которые создают реальных ботов?

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

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

Вскрытие показало: 93% памяти забито мусором

Это были синтетические бенчмарки. А теперь посмотрим на реальные данные нашего агента. Спойлер: интуиция нас обманывает. Кажется, что память (контекст) забивается историей диалога — вопросами пользователя и ответами бота. На практике это не так: к 15-му циклу диалога 83% контекста занимают устаревшие результаты поиска.

Чтобы понять, как так выходит, мы разобрали более 300 реальных сессий. Мы посмотрели, из чего состоит каждый цикл «вопрос-ответ» (один шаг диалога основного агента). Для объективности взяли среднее значение (avg), медиану (p50) и 95-й перцентиль (p95 — это показатель для самых тяжелых и длинных сценариев).

Вот из чего складывается стоимость (в токенах) одного шага:

Элемент

avg

p50

p95

Системный промпт

1 513

1 513

1 513

Вопрос пользователя

45

48

70

Ответ агента

109

33

446

Результат поиска по базе

950

1 051

1 447

Результат вызова эксперта

622

688

1 115

Вызовы инструментов на цикл

2

2

5

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

fig-03-context-anatomy

Анатомия одного цикла вопрос-ответ: результаты поиска занимают 93%, диалог — 2%

В среднем один цикл забирает около 2000 токенов, и 93% из них — это результаты вызова поиска, а не переписка. Даже в самых длинных диалогах картина та же: выгрузки из базы — это главный потребитель памяти. Это первый неочевидный поворот: на архитектурных схемах блоки «чат» и «инструменты» выглядят равноправными, но в реальности инструменты тяжелее в десятки раз.

Дальше срабатывает эффект снежного кома. Агент помнит всю историю сессии. С каждым новым вопросом модель тащит за собой не только предыдущие реплики, но и все те огромные куски текстов, которые она искала раньше. Доля «мусора» — старых результатов поиска, уже не нужных для текущего ответа — растет стремительно:

Циклов диалога (в среднем)

Доля устаревших результатов поиска

5

65%

15

83%

30

88%

50

90%

К пятнадцатому шагу диалога больше 80% информации, которую мы отправляем в модель, — это старые результаты поиска. Скорее всего, пользователь на 15-м шаге обсуждает уже совсем не ту тему, что на первом, но агент продолжает упорно тащить за собой старые данные.

Объем контекста раздувается моментально. Даже с заявленным окном в 1 миллион токенов это становится проблемой. Без оптимизации самые тяжелые сессии упираются в 200 тысяч токенов уже на 19-м шаге. Формально место в окне ещё есть, но из-за гигантского объема “шума” контекст начинает разваливаться. Практика смыкается с выводами бенчмарков: большое окно не спасет, если бездумно заливать в него всё подряд.

Три способа не сойти с ума: как мы чистим память

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

Главное отличие — что именно они удаляют. Первые два (обрезка и суммаризация) работают со всей историей переписки. Третий (очистка) работает только с гигантскими выгрузками из базы знаний.

fig-04-mechanisms-axes

Три механизма наглядно: что остаётся в истории сообщений после обрезки, суммаризации и очистки результатов поиска

Обрезка и суммаризация — это два способа укоротить начало переписки, поэтому они взаимоисключают друг друга (выбираем что-то одно). А вот очистка результатов поиска работает точечно: она не трогает историю чата, а вырезает только тяжелые тексты. Поэтому она работает всегда, независимо от того, что мы выбрали в первом случае.

Вот как они устроены:

Механизм

Что делает

В чём минус

Обрезка истории

Просто отрубает старые сообщения

Теряем историю переписки, ломаем кэш (об этом ниже)

Суммаризация

Делает краткий пересказ старых сообщений

Платим за дополнительный вызов дешевой нейросети ради пересказа

Очистка результатов поиска

Меняет старые тексты из базы на заглушку

Если боту снова понадобится эта информация, он пойдет искать её заново

Обрезка истории (Trimming) — самый простой и грубый метод. Мы просто отбрасываем старые сообщения, оставляя только свежие.

Очистка результатов поиска (Clearing) — работает умнее. Она находит в истории огромные куски текстов, которые бот вытаскивал из базы, и заменяет их на короткую заглушку [cleared]. Модель видит: «тут я что-то искала в базе», но сам текст в память уже не грузится.

Суммаризация (Summary) — срабатывает, когда история становится слишком длинной. Старые сообщения отправляются в отдельную, дешевую нейросеть (Gemini 3 Flash), которая делает из них короткий пересказ. Этот пересказ и подставляется вместо простыни сообщений. Минус очевиден — мы платим за дополнительный вызов нейросети.

В настройках проекта мы переключаемся между обрезкой и суммаризацией в зависимости от задачи: для коротких диалогов — обрезка, для длинных — суммаризация. Очистка результатов поиска при этом включена всегда.

Парадокс кэша: почему удалять сообщения оказалось дороже

Как эти механизмы работают на практике? Чтобы это проверить, мы прогнали бота по тестовому сценарию из 40 реальных вопросов по 1С.

Мы сделали 4 прогона с разными настройками:

  1. baseline (без оптимизаций вообще)

  2. clearing (только очистка результатов поиска)

  3. trimming + clearing (обрезка сообщений + очистка)

  4. summary + clearing (суммаризация + очистка)

И вот тут логика сломалась. Кажется очевидным: чем меньше токенов мы отправляем в модель, тем меньше мы платим провайдеру. На реальных замерах всё оказалось иначе.

fig-05-context-growth-comparison

Рост контекста по 4 стратегиям на 40 вопросах: где срабатывает суммаризация

Вот что получилось на сороковом вопросе:

Стратегия

Потрачено памяти (токенов)

Итоговая стоимость сессии

baseline (ничего не делаем)

31.7K

$1.06

clearing (только очистка)

23.7K (−25%)

$1.13 (+7%)

trimming + clearing (обрезка)

15.1K (−52%)

$1.33 (+26%)

summary + clearing (суммаризация)

12.9K (−59%)

$0.87 (−17%)

Заметили парадокс? Обрезка сжала контекст в два раза, но оказалась самой дорогой! А суммаризация, ради которой мы делаем платные вызовы дополнительной нейросети, оказалась дешевле всех.

Почему так вышло? Причина в одной хитрости провайдеров, которая называется кэш префикса.

fig-05-context-cumulative-cost

Кумулятивная стоимость сессии: trimming сначала идёт ниже baseline, к 40-му вопросу обгоняет — кэш ломается на каждой обрезке

У нейросетей есть скидка на одинаковое начало разговора. Если вы отправляете боту длинную переписку, и её начало полностью совпадает с прошлым вашим запросом, провайдер делает огромную скидку (в 10 раз дешевле!). Это и есть кэш.

И вот что происходит с нашими механизмами:

  • Когда мы ничего не делаем (baseline) — начало переписки всегда одинаковое. Провайдер радостно дает нам огромную скидку. 72% наших текстов идут по дешевке из кэша.

  • Когда мы делаем Обрезку (trimming) — мы постоянно отрубаем старые сообщения. Начало переписки всё время меняется! Провайдер видит «новый» текст и считает его по полному тарифу. Из-за этого кэш падает до 8.6%, и мы платим кучу денег.

  • Когда мы делаем Суммаризацию (summary) — мы заменяем кучу сообщений на один текст-пересказ. Этот пересказ долгое время не меняется. Нейросеть видит одинаковое начало переписки и снова дает нам скидку.

fig-05c-cache-prefix

Префиксный кэш в трёх режимах: у baseline стабильный префикс почти весь из кэша, у trimming срабатывание ломает кэш, у summary префикс из summary снова кэшируется между срабатываниями

А что если просто чистить результаты поиска (clearing) и ничего больше не делать? Казалось бы, идеальный вариант. Но таблица показывает, что это делает только хуже: контекст уменьшился, а стоимость выросла. Почему? Потому что модель перестает видеть старые выгрузки из базы. И если ей снова нужна та же информация, она просто идет искать её заново, делая лишнюю работу. Очистка полезна только в паре с обрезкой или суммаризацией.

Итог эксперимента: Мы решили использовать разные настройки для разных пользователей. Для наших сотрудников (которые задают короткие вопросы) мы оставили Обрезку — там память просто не успевает забиться. А для клиентов (где диалоги длинные) мы включили Суммаризацию — она экономит и память, и деньги. Очистка текстов из базы включена всегда в качестве дополнения.

Четвёртый путь: ничего не помнить, чтобы работать лучше

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

Иногда боту нужно проверить свежую информацию в интернете (например, появилась ли новая кнопка в 1С). Для этой задачи мы сделали отдельного «агента-эксперта» (субагента). Основной бот вызывает этого эксперта, когда сомневается. И вот главная фишка: эксперт вообще не видит историю диалога. Ему дают только один конкретный вопрос, он идет в интернет, ищет ответ и возвращает сухие факты.

fig-06-expert-agent-isolation

Основной агент и эксперт-субагент: длинная история vs пустой контекст при каждом вызове

У такого подхода (когда субагент изолирован от общего разговора) есть четыре плюса:

  1. Это дешевле: эксперт использует дешевую нейросеть. Так как он не тащит с собой длинную историю переписки, запрос к нему весит копейки.

  2. Это точнее: эксперт отвечает ровно на тот вопрос, который ему задали. На него не давит контекст всей предыдущей беседы, и он не пытается «удовлетворить ожидания» пользователя.

  3. Это объективнее: эксперт дает только факты и ссылки. Он не делает выводов за пользователя (существует кнопка или нет) — он просто приносит данные. А выводы делает уже основной агент.

  4. Это спасает от галлюцинаций (феномен [ClashEval](https://arxiv.org/abs/2404. 10198)): нейросети очень любят верить своей встроенной памяти больше, чем реальным фактам из свежего поиска. Если в длинном разговоре пользователь уже пять раз уверенно сказал, что «в 1С есть кнопка Х», то нейросеть может поверить ему, даже если свежий поиск говорит, что такой кнопки нет. Изолированный эксперт с пустой памятью этому давлению не подвержен — он просто верит фактам из интернета.

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

Вместо выводов: почему размер (окна) не имеет значения

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

Обычно очистку контекста обсуждают как способ сэкономить деньги: провайдеры берут плату за каждый отправленный токен, поэтому выгодно отправлять меньше. Но наши данные показывают другое: главная проблема засорённой памяти — это не счёт от провайдера, а тупость бота.

Когда на 15-м шаге диалога мы отправляем нейросети 34 тысячи токенов, из которых 28 тысяч — это старый мусор из поиска, она начинает работать хуже. Шум сбивает её с толку, и ей сложнее сосредоточиться на текущем вопросе. Большое окно не спасет от каши в голове.

В нашем боте мы собрали такой коктейль:

  • Обрезка сообщений — для коротких диалогов (сотрудники).

  • Суммаризация — для длинных диалогов (клиенты).

  • Очистка результатов поиска — включена всегда фоном.

  • Эксперт-субагент — решает отдельные задачи вообще без общей памяти.

Даже если в будущем в окно памяти поместится вся годовая переписка с клиентом и все инструкции компании разом, просто заливать всё это в модель — плохая идея. Качество работы вашего бота зависит не от того, насколько огромное окно сделал провайдер, а от того, как вы управляете памятью.

Если вы просто бросаете всё в окно, вы ставите качество своего продукта в зависимость от конкретной модели. А мы уже видели на бенчмарках, что разные модели по-разному справляются с длинными текстами: смена провайдера может уронить вам качество в 3-4 раза.

За рамками статьи остались две большие темы. Во-первых, мы не замеряли, как именно обрезка или суммаризация влияют на качество самих ответов (вдруг пересказ теряет важные факты?). Этому я посвящу следующую статью. Во-вторых, мы не разобрали, как боту помнить вас между разными сессиями (когда вы возвращаетесь к нему через неделю). Там свои хитрости, и к ним мы тоже вернёмся.

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


Мы разобрали реальный пример того, как управление контекстом спасает агента от «тупости» и перерасхода бюджета. Качество бота держится не на размере окна, а на том, как грамотно вы чистите его память.

В LLMStart.ru мы помогаем бизнесу решать такие задачи и получать реальный эффект от ИИ — от прототипа до промышленной эксплуатации. Если вы упёрлись в раздутый контекст и не уверены, что выбрать, обращайтесь, будем рады помочь консультацией или разработкой под ключ.

Если хотите перенять опыт и научиться делать подобные системы самостоятельно, у нас есть онлайн-курсы, а ближайший живой поток курса Deep Agents, где контекст-инжиниринг — один из четырёх ключевых блоков, стартует уже в четверг, 28 мая.

По любым вопросам пишите мне в личку: Telegram или ВК. Приглашаем также в наши соцсети про ИИ-кодинг ИИ-агентов: в ТГ-канал и ВК-сообщество