ГлавнаяБлогИзоляция контекста: как разделять задачи в AI-агентах
AI / Нейросети

Изоляция контекста: как разделять задачи в AI-агентах

Узнайте, как изоляция контекста улучшает работу AI-агентов. Разделяйте задачи, избегайте загрязнения промптов и повышайте точность. Попробуйте на практике!

Al
Редакция Algolitalgolit.ru
8 мин чтения16 июня 2026 г.

Зачем изолировать контекст AI-агента?

Вы когда-нибудь просили AI-агента написать код и тут же составить письмо клиенту, а в результате получали SQL-запрос с извинениями? Знакомая проблема: один агент пытается делать всё, но ничего не получается хорошо. Изоляция контекста — это принцип, который даёт каждой задаче свой «чистый стол»: отдельные инструкции, инструменты и информацию. В этой статье я покажу, как реализовать изоляцию на Python, и вы сразу сможете применить это в своих проектах.

Проблема общего контекста

Представьте, что вы даёте агенту один гигантский системный промпт, десятки инструментов и полную историю диалога. Агент путается: инструкции для SQL просачиваются в генерацию писем, нужный инструмент теряется среди девяти ненужных, а информация из одной задачи загрязняет другую. В результате агент становится посредственным во всём. Изоляция решает это радикально: каждому заданию — свой контекст.

Тяжёлый способ: суб-агенты

Самый очевидный вариант — создавать суб-агентов с собственным окном контекста. Оркестратор даёт суб-агенту сжатое задание (например, «найди все API-эндпоинты, которые изменяют данные пользователя»), а не всю историю беседы. Суб-агент получает свежий контекст, исследует код, читает файлы, делает запросы — и возвращает только краткий ответ. Оркестратор видит лишь 500 токенов результата, а не 30 файлов. Шумные, дорогие исследования остаются внутри контекста, который потом выбрасывается.

Пример на Python с использованием библиотеки openai:

import openai

# Функция-суб-агент для поиска эндпоинтов
def find_user_data_endpoints(codebase_files):
    """Анализирует файлы и возвращает список эндпоинтов."""
    # Собираем контекст только из файлов, без истории
    context = "Проанализируй следующий код и найди все эндпоинты, " \
              "которые изменяют данные пользователя (POST, PUT, DELETE). " \
              "Верни только список имён эндпоинтов."
    for file_name, content in codebase_files.items():
        context += f"\nФайл {file_name}:\n{content}"
    response = openai.ChatCompletion.create(
        model="gpt-4",
        messages=[{"role": "user", "content": context}]
    )
    # Возвращаем только короткий ответ
    return response.choices[0].message.content

# Оркестратор: вызывает суб-агента и использует результат
files = {"routes.py": "@app.post('/users')\ndef create_user(): pass\n@app.get('/users')\ndef get_users(): pass"}
endpoints = find_user_data_endpoints(files)
print("Найденные эндпоинты:", endpoints)
# Вывод: Найденные эндпоинты: POST /users

В этом примере суб-агент получает только код, а не всю историю чата. Результат — чистый список эндпоинтов, без лишнего шума.

Лёгкий способ: изолируйте данные, а не агента

Не всегда нужно создавать отдельного агента. Иногда достаточно просто убрать тяжёлые объекты из поля зрения модели. Вместо того чтобы передавать модели 5 МБ изображение или гигантский лог, дайте ей ссылку или дескриптор. Например, в HuggingFace CodeAgent вызовы инструментов выполняются в песочнице, а модель получает только handle на данные.

Реализация на Python с использованием runtime-объекта:

class RuntimeState:
    """Хранит тяжёлые данные, но модель видит только нужные поля."""
    def __init__(self):
        self._large_data = {}  # скрыто от модели
        self.visible = {}      # то, что видит модель

    def store_large(self, key, data):
        """Сохраняет большой объект, не показывая его модели."""
        self._large_data[key] = data
        # Модель получает только короткое описание
        self.visible[key] = f"[Large data: {len(data)} bytes stored]"

    def get_large(self, key):
        """Может быть вызвано инструментом, но не моделью напрямую."""
        return self._large_data.get(key)

# Пример использования
state = RuntimeState()
# Допустим, у нас есть большой JSON-лог
log_data = {"entries": [{"id": i} for i in range(10000)]}
state.store_large("log", str(log_data))
# Модель видит только: "[Large data: 123456 bytes stored]"
print(state.visible["log"])

Таким образом, модель не отвлекается на гигантские данные, а при необходимости инструмент может их обработать.

Когда изоляция вредит

Изоляция — мощный инструмент, но у неё есть цена. Во-первых, она расходует больше токенов: исследование Anthropic показало, что мульти-агентные системы могут жечь до 15× больше токенов, чем один чат. Во-вторых, нужна координация: оркестратор должен планировать работу суб-агентов и склеивать результаты. И главное: изоляция отлично работает для независимых задач, но ломается для взаимозависимых. Если два суб-агента пишут код, который должен стыковаться, и каждый не видит решений другого, на этапе интеграции возникнет конфликт.

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

Практический вывод

Прямо сейчас вы можете применить изоляцию в своих AI-агентах. Начните с малого: выделите в отдельный контекст задачи, которые не влияют друг на друга. Например, если ваш агент и пишет код, и отвечает на вопросы по документации — создайте два отдельных промпта с разными наборами инструментов. Используйте суб-агентов для дорогих операций (поиск по коду, анализ логов) и возвращайте только краткие результаты. А для тяжёлых данных применяйте runtime-объекты, скрывая их от модели. Попробуйте прямо сейчас — и вы увидите, как повысится качество ответов.

#изоляция контекста#AI-агенты#промпт-инжиниринг#мульти-агентные системы
Al
Редакция Algolit

Пишем про алгоритмы, подготовку к собеседованиям и карьеру в IT — так, чтобы было понятно и полезно.

Хочешь закрепить знания на практике?

Решай задачи на Algolit — интерактивная платформа для обучения

Начать бесплатно →