Контекстное окно для AI-агентов: как сократить расходы на память и ускорить цепочки задач

Я — Денис Шохирев, архитектор агентных AI-систем из Фрайбурга, Германия. В DennisCraft AI Studio я внедряю автономные multi-agent системы для B2B-клиентов из DACH (логистика, финтех, индустриальная автоматизация). Мой стек: Claude, Supabase, n8n, Doppler, self-hosted Postgres. Недавно у клиента в финтехе один агент “съел” месячный бюджет OpenAI за 3 дня — и вся проблема оказалась в контекстном окне.

Контекстное окно: реальный лимит, а не абстракция

В продакшене токеновый лимит LLM — не просто техническая деталь. На практике именно размер и управление контекстом определяют, сколько денег вы потратите на inference, как быстро будет идти цепочка задач, и как часто агент “забывает” важные детали. Например, Claude 3 Opus (Anthropic, 2024) поддерживает до 200K токенов, но каждый запрос такого объема стоит дорого — и latency растет в разы.

Стратегии оптимизации памяти в цепочках агентов

1. Фильтрация и дедупликация перед отправкой в LLM

Без фильтра агент тянет в prompt всё подряд: логи, старые сообщения, промежуточные вычисления. В одном проекте RAG система с n8n за сутки накопила 12 МБ “истории” — и inference стал стоить в 4 раза дороже. До фильтрации я внедряю функцию, которая удаляет дубликаты и неинформативные куски:


def prepare_context(messages):
    seen, filtered = set(), []
    for msg in messages:
        key = hash(msg['content'])
        if key not in seen and len(msg['content']) > 32:
            filtered.append(msg)
            seen.add(key)
    return filtered[-60:]  # только последние 60 сообщений

В среднем, это сокращает объем контекста на 40-60% — проверено на 3 разных агентах.

2. Tokenizer-aware memory и chunking

Claude и OpenAI SDK позволяют напрямую считать токены через tiktoken (https://github.com/openai/tiktoken). Я всегда считаю токены до отправки, чтобы не превышать лимит — иначе агент “зависает” или возвращает ошибку 413.


import tiktoken

def count_tokens(messages, model="claude-3-opus"):
    enc = tiktoken.encoding_for_model(model)
    return sum(len(enc.encode(m['content'])) for m in messages)

def fit_to_window(messages, window_size):
    total = 0
    result = []
    for msg in reversed(messages):
        tokens = len(tiktoken.encoding_for_model("claude-3-opus").encode(msg['content']))
        if total + tokens > window_size:
            break
        result.insert(0, msg)
        total += tokens
    return result

Это спасло не один продакшн-роллаут: вместо “контекст переполнен” агент просто берет последние 100-500 сообщений, влезающих в лимит.

3. Внешнее хранилище памяти: Supabase/Postgres вместо prompt

Хранить всю историю в prompt — путь к банкротству. Для долговременной памяти я использую Supabase/Postgres: агент пишет ключевые факты и summary в базу, а в prompt попадает только краткое summary и последние 5-10 сообщений. Такая схема снижает расходы на 60-80% при длинных сценариях.


import psycopg2

def get_recent_summaries(agent_id):
    conn = psycopg2.connect("dbname=ai_prod user=agent password=secret")
    cur = conn.cursor()
    cur.execute("SELECT summary FROM memories WHERE agent_id=%s ORDER BY ts DESC LIMIT 3", (agent_id,))
    return [row[0] for row in cur.fetchall()]

RAG-паттерн с retrieval из Postgres стабильно показывает минимальный latency (до 1.2 сек на цепочку) и низкий токеновый расход.

Сравнение подходов — стоимость и скорость

МетодЭкономия токеновLatency (сек)Управляемость
Raw prompt (без фильтра)0%3.0+Низкая
Фильтрация + дедупликация40-60%2.1Средняя
Tokenizer-aware chunking50-70%1.8Высокая
Supabase/Postgres memory60-80%1.2Максимальная

Паттерн “контекстного окна” в цепочках задач

В агентных системах на n8n и Claude цепочки часто ломаются на длинных сценариях: агент забывает цель, повторяет вопросы, или “захлебывается” в собственных логах. Я решаю это за счет явного контроля контекстного окна на каждом этапе цепочки. Пример workflow на n8n:


- name: Fetch recent messages
  type: postgres
  params: {limit: 20}
- name: Summarize
  type: openai
  params: {prompt: "Summarize last 20 messages"}
- name: Build context window
  type: python
  params: {function: prepare_context}
- name: LLM decision
  type: anthropic
  params: {model: "claude-3-opus"}

Контекст никогда не “раздувается” — pipeline стабилен даже после недели работы.

FAQ

Какой оптимальный размер окна?

В большинстве сценариев 4-8K токенов на один prompt достаточно для агента. Всё, что выше — резко увеличивает стоимость и ухудшает latency.

Как хранить долгосрочную память?

Я пишу summary-факты в Supabase/Postgres, а retrieval делаю только по ключевым событиям. В prompt — только краткая выборка.

Как мониторить расходы?

Раз в сутки парсю usage-логи OpenAI/Anthropic и строю отчеты по каждому агенту. Сразу видно, кто “жрет” больше всего.

Что делать, если окно переполнено?

Фильтровать, chunk-ить, убирать “шум” (логи, метаданные). Не пытайтесь влезть всё — лучше summary и ключевые факты.

В каких случаях стоит расширять окно?

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

На каком этапе у вас чаще всего “проседает” производительность агентных цепочек — на обработке памяти, на latency LLM или при retrieval из базы? Я реально интересуюсь.
Я делаю бесплатный 30-мин аудит стека для DACH-команд, которые строят AI в регулируемых рынках. Пишите в LinkedIn или на @ger_dennis_ai.

Read more

Computer-Use-Agenten scheitern an Pixeln: wie Sie auf stabile UI-Referenzen über Accessibility Trees umstellen und fehleranfällige Desktop-Automatisierung nicht mehr ständig reparieren

von Denis Shokhirev, Enterprise AI Architect aus Freiburg im Breisgau Ich bin Denis Shokhirev, Agentic AI Systems Architect in Freiburg im Breisgau, Germany, und bei DennisCraft AI Studio setze ich produktive KI-Systeme für DACH-B2B-Kunden auf Basis von Claude, Supabase, n8n, Doppler und selbst betriebenem Postgres um. Die teuersten Fehler in

By Denis Shokhirev

Компьютерные агенты ломаются на пикселях: как перейти на stable UI refs через accessibility tree и перестать чинить flaky desktop automation

Я Denis Shokhirev, Agentic AI Systems Architect из Freiburg im Breisgau, Germany, и в DennisCraft AI Studio я собираю production AI-системы для DACH B2B на Claude, Supabase, n8n, Doppler и self-hosted Postgres. Самая дорогая поломка в desktop automation, которую я вижу у клиентов, почти никогда не связана с моделью: агент

By Denis Shokhirev