1. Главная
  2. Блог
  3. Нейросети (AI)
  4. Контекстная инженерия: Новая парадигма в разработке ИИ-систем

Контекстная инженерия: Новая парадигма в разработке ИИ-систем

5 июля 2025
844

В быстро развивающемся мире искусственного интеллекта постоянно появляются новые концепции и термины, которые меняют подход к разработке. Одним из таких терминов, набирающих популярность, является "контекстная инженерия". Этот термин, который нравится Андрею Карпати и Тоби, генеральному директору Shopify, описывает искусство и науку заполнения окна контекста правильной информацией на каждом шаге траектории агента. В отличие от "вайб-кодинга" (vibe coding), который полагается на интуицию и быструю генерацию кода ИИ, контекстная инженерия подчеркивает необходимость тщательной архитектуры и структуры для достижения надежных результатов.

Что такое контекстная инженерия?

Контекстная инженерия (Context Engineering) — это дисциплина или искусство решения, что именно должно помещаться в контекст крупной языковой модели (LLM) на каждом шаге траектории агента. Андрей Карпати предложил интересную аналогию: LLM подобна центральному процессору (CPU), а окно контекста – оперативной памяти (RAM) или рабочей памяти, которая, что важно, имеет ограниченную емкость. Подобно тому, как операционная система курирует то, что помещается в оперативную память, контекстная инженерия занимается кураторством информации для LLM.

Под "контекстом" подразумевается целый спектр информации, включая:

  • Инструкции: Включая промпт-инженерию, которая является подмножеством контекстной инженерии.
  • Воспоминания (Memory): Кратковременные (scratch pads) и долговременные.
  • Примеры (Few-shot examples): Примеры, демонстрирующие желаемое поведение.
  • Описания инструментов (Tool descriptions): Информация о доступных инструментах.
  • Знания (Knowledge): Факты, внешняя документация, базы данных.
  • Обратная связь от вызовов инструментов (Feedback from tool calls): Информация, поступающая от использования внешних инструментов, API или калькуляторов.

Главная идея состоит в том, чтобы динамически предоставлять наиболее релевантную информацию агенту или модели в нужный момент, чтобы LLM могла правдоподобно выполнить задачу. Это шаг вперед по сравнению с простой промпт-инженерией, которая в основном занимается формулированием запросов для получения одного хорошего ответа.

Почему контекстная инженерия особенно важна для агентов?

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

Длительный контекст может привести к ряду проблем, или "контекстных сбоев":

  • Отравление контекста (Context poisoning): Происходит, когда галлюцинации или другие ошибки попадают в контекст и затем многократно ссылаются на них, что приводит к иррациональному поведению агента.
  • Отвлечение контекста (Context distraction): Возникает, когда контекст становится настолько длинным, что модель чрезмерно фокусируется на нем, пренебрегая тем, что она узнала во время обучения. Это может проявляться в повторяющихся действиях или зацикливании.
  • Контекстная путаница (Context confusion): Случается, когда избыточное содержание в контексте используется моделью для генерации низкокачественных ответов. Например, модель может вызывать нерелевантные инструменты, если их описания находятся в контексте.
  • Контекстный конфликт (Context clash): Происходит, когда новая информация или инструменты в контексте противоречат другой информации, уже присутствующей.

Эти проблемы делают контекстную инженерию особенно важной при создании агентов, поскольку они обычно работают с более длинным контекстом. Некоторые эксперты даже называют контекстную инженерию "работой номер один для инженеров, создающих ИИ-агенты".

Стратегии контекстной инженерии

Источники выделяют четыре основные категории стратегий для управления контекстом:

  1. Запись контекста (Writing Context): Сохранение информации вне окна контекста, чтобы агент мог использовать ее позже.

    • Рабочие записи (Scratchpads): Механизмы для персистентности информации во время выполнения агентом одной задачи, как, например, сохранение плана исследования в многоагентном исследователе Anthropic.
    • Память (Memory): Сохранение информации между различными сессиями агента. Примеры включают генерацию воспоминаний из прошлых взаимодействий, как в Generative Agents или функциях памяти ChatGPT и Cursor.
  2. Выбор контекста (Selecting Context): Избирательное извлечение релевантной информации в окно контекста.

    • Типы памяти: Извлечение конкретных типов памяти, таких как примеры (эпизодическая память), факты (семантическая память) или инструкции (процедурная память/правила).
    • Извлечение знаний (Knowledge retrieval): Часто реализуется с использованием техник RAG (Retrieval Augmented Generation), включающих поиск по встраиваниям (embedding-based similarity search), графовые базы данных, а также более сложные методы, такие как синтаксический анализ для смысловой разбивки и ранжирование на основе LLM.
    • Выбор инструментов (Tool selection): Используется RAG поверх описаний инструментов для избирательного извлечения только релевантных инструментов для данной задачи, что значительно улучшает производительность, поскольку агенты могут испытывать трудности с большим количеством инструментов (например, деградация после 30 инструментов и полный отказ при 100).
  3. Сжатие контекста (Compressing Context): Сохранение только наиболее релевантных токенов.

    • Суммаризация (Summarization): Уплотнение контекста, например, путем суммаризации полной траектории агент-пользователь (как автокомпакт в Claude Code при достижении 95% окна контекста). Также может применяться к завершенным разделам работы или на стыке между различными агентами.
    • Обрезка (Trimming/Pruning): Более избирательное удаление токенов, которые заведомо нерелевантны, например, с использованием эвристик для сохранения только недавних сообщений или обученных подходов на основе LLM.
  4. Изоляция контекста (Isolating Context): Разделение контекста для помощи агенту в выполнении задачи.

    • Многоагентные системы (Multi-agent systems): Наиболее интуитивный пример, где команда агентов имеет свои собственные окна контекста, инструменты и инструкции (например, Swarm от OpenAI, многоагентный исследователь Anthropic). Это позволяет системе обрабатывать больше токенов в целом.
    • Песочницы (Sandboxes): Использование изолированных сред для выполнения кода и инструментов, которые могут сохранять состояние на протяжении нескольких ходов, не передавая все тяжелые токены (изображения, аудио) обратно в окно контекста LLM.
    • Объекты состояния времени выполнения (Runtime state objects): Использование структурированных данных (например, Pydantic моделей) для организации и изоляции различных типов контекста, выборочно передавая только то, что LLM необходимо для принятия следующего решения.

Контекстная инженерия и LangGraph

LangGraph, низкоуровневая среда оркестровки для создания агентов, разработана для поддержки всех этих стратегий контекстной инженерии. Прежде чем приступать к контекстной инженерии, полезно иметь возможность отслеживать токены (через трассировку и наблюдаемость, например, LangSmith) и проводить оценку (чтобы убедиться, что изменения не ухудшают поведение агента).

  • Запись контекста: LangGraph поддерживает концепцию рабочих записей через объект состояния, который доступен в каждом узле графа и позволяет записывать и извлекать информацию. Долговременная память является первоклассным компонентом LangGraph, доступным в каждом узле для сохранения информации между сессиями.
  • Выбор контекста: Можно выбирать информацию из объекта состояния или извлекать данные из долговременной памяти в любом узле. Долговременная память может хранить различные типы данных и использовать поиск на основе встраиваний. LangGraph предлагает встроенные инструменты, использующие поиск по семантическому сходству для выбора инструментов.
  • Сжатие контекста: LangGraph предоставляет утилиты для суммаризации и обрезки истории сообщений, а также позволяет гибко определять логику внутри узлов для постобработки вызовов инструментов.
  • Изоляция контекста: LangGraph хорошо поддерживает многоагентные системы (реализации Supervisor и Swarm). Он также хорошо работает с различными средами и песочницами, позволяя сохранять состояние внутри песочницы для изоляции контекста. Центральный объект состояния в LangGraph, спроектированный со схемой, позволяет легко организовывать и изолировать контекст по различным полям.

Контекстная инженерия против вайб-кодинга и промпт-инженерии

Контекстная инженерия знаменует собой конец вайб-кодинга, который полагается на 100% генерацию кода ИИ с минимальным вводом и без проверки. Исследования показывают, что 76,4% разработчиков не доверяют коду, сгенерированному ИИ, без человеческой проверки из-за частых галлюцинаций и ошибок. Проблема не в том, что ИИ-кодинг плох, а в отсутствии контекста у ИИ-помощников. Контекстная инженерия решает эту проблему, предоставляя необходимую структуру и информацию.

Как отмечалось, промпт-инженерия является подмножеством контекстной инженерии. Если промпт-инженерия сосредоточена на "настройке формулировок и фраз для получения одного хорошего ответа от LLM", то контекстная инженерия - это предоставление всех релевантных фактов, правил, документов, планов и инструментов, чтобы LLM имела целую экосистему контекста. Это означает, что контекст (инструкции, правила, документация и т. д.) должен рассматриваться как инженерный ресурс, требующий тщательной архитектуры.

На практике это означает, что вместо немедленного погружения в кодирование, значительное время уделяется предварительному созданию контекста, аналогично тому, как Авраам Линкольн потратил бы четыре часа на заточку топора из шести, отведенных на рубку дерева. Такой подход приводит к бесконечно лучшим результатам, лучшему коду и значительной экономии времени в конечном итоге, поскольку снижается количество галлюцинаций и ошибок.

Практическое применение

Примером практического применения контекстной инженерии является использование шаблонов для работы с ИИ-помощниками, такими как Claude Code. Это включает в себя создание глобальных правил (например, в claude.md), описание начальных требований к функции (в initial.md), предоставление примеров и ссылок на документацию. Затем ИИ используется для генерации всеобъемлющего плана проекта (Product Requirements Prompt, PRP), который становится основой для дальнейшей реализации. Такой многошаговый процесс, включающий исследования, архитектурное планирование и проверку, значительно повышает надежность и качество генерируемого кода.

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

Комментарии
Name
Email
Phone
Ваше имя
Ваш email
Оставить комментарий