Context engineering представляет собой значительный сдвиг в искусственном интеллекте, отходя от отдельных подсказок и переходя к построению всеобъемлющих информационных экосистем вокруг больших языковых моделей (LLM). По мере того как приложения AI развиваются от базовых чат-ботов до сложных агентов, способных выполнять сложные, многоступенчатые задачи, качество выходных данных модели все больше зависит от предоставляемой информации. Поэтому context engineering стал необходим для создания надежных и мощных приложений AI, которые обеспечивают впечатляющий пользовательский опыт.
Сдвиг парадигмы: от подсказок к системам
Основное внимание переключается с разработки отдельных подсказок на систематическое построение полной информационной экосистемы вокруг больших языковых моделей (LLM). По мере развития приложений AI от простых чат-ботов до интеллектуальных агентов, способных выполнять сложные, многоступенчатые задачи, качество выходных данных модели становится все более зависимым от качества предоставляемой информации. Лидеры отрасли и исследователи AI признают важность этого сдвига, подчеркивая необходимость предоставления LLM всестороннего контекста для эффективного решения задач. Context engineering включает в себя искусство и науку заполнения окна контекста правильной информацией, позволяя моделям принимать точные решения.
Центральный аргумент заключается в том, что неудача большинства интеллектуальных агентов проистекает из-за дефицита контекста, а не из-за неисправности модели. Это утверждение переопределяет основную задачу AI engineering, переключая внимание с настройки модели на разработку систем поддержки информации. Понимание и освоение context engineering стало необходимым условием для построения надежных, устойчивых приложений AI.
Определение Context Engineering
Context engineering - это не просто улучшенная версия prompt engineering; это уникальная дисциплина engineering на системном уровне, ориентированная на создание динамической системы доставки информации, а не просто на оптимизацию текстового ввода.
Context engineering можно определить как engineering дисциплину, ориентированную на проектирование и построение динамических систем, которые предоставляют LLM информацию и инструменты, необходимые для правильного выполнения задач, в правильном формате и в нужное время.
Ключевые компоненты:
- «Проектирование и построение динамических систем»: это подчеркивает, что context engineering - это engineering деятельность, ориентированная на архитектуру системы, а не просто на формулировку. Контекст - это результат работы системы, которая выполняется перед основным вызовом LLM. Инженерам необходимо создавать конвейеры данных, модули памяти и механизмы поиска информации для подготовки рабочей памяти LLM.
- «Правильная информация и инструменты»: охватывает факты, данные, содержимое базы знаний (через RAG) и пользовательские предпочтения. Инструменты относятся к таким возможностям, как интерфейсы API, функции или запросы к базам данных. Предоставление как знаний, так и возможностей имеет основополагающее значение для сложных задач.
- «Правильный формат, в нужное время»: подчеркивает важность представления информации и сроков. Краткое резюме часто лучше, чем необработанные данные, а четкая схема инструментов более эффективна, чем расплывчатые инструкции. Предоставление контекста по требованию имеет решающее значение для того, чтобы не отвлекать модель нерелевантной информацией.
- «Надежное выполнение задачи»: это конечная цель context engineering. Он превращает приложения AI в надежные системы, которые могут последовательно производить высококачественные выходные данные. Благодаря точному управлению контекстом выходные данные становятся более согласованными, уменьшают галлюцинации и поддерживают сложные, длительные рабочие процессы интеллектуальных агентов.
Эволюция от Prompt Engineering к Context Engineering
Хотя и context engineering, и prompt engineering направлены на оптимизацию выходных данных LLM, они различаются по масштабу, характеру и целям. Системное сравнение подчеркивает эти различия:
- Область применения: Prompt engineering фокусируется на оптимизации отдельных взаимодействий или текстовых строк, в то время как context engineering фокусируется на всей информационной экосистеме, охватывающей полный жизненный цикл задачи.
- Динамизм: Подсказки обычно статичны, в то время как контекст генерируется динамически на основе задачи и развивается во время взаимодействия.
- Композиция ввода: Инженеры Prompt engineering строят входные данные вокруг запросов пользователей, в то время как инженеры context engineering рассматривают запросы пользователей как лишь часть более крупного «пакета контекста», который включает в себя системные инструкции, извлеченные документы, выходные данные инструментов и историю разговоров.
- Аналогия: Если подсказки похожи на одну строку в пьесе, то контекст - это весь набор, предыстория и сценарий фильма, которые вместе обеспечивают глубину и смысл.
В таблице ниже приводится дополнительное сравнение этих двух понятий:
Prompt Engineering против Context Engineering
Измерение | Prompt Engineering | Context Engineering |
---|---|---|
Область применения | Единичное взаимодействие, отдельная входная строка | Весь рабочий процесс интеллектуального агента, полная информационная экосистема |
Характер | Статический или полустатический, на основе шаблонов | Динамический, собранный в режиме реального времени, развивается вместе с задачей |
Цель | Направить LLM для предоставления высококачественного ответа | Предоставить LLM возможность надежно выполнять сложные задачи непрерывно |
Основной продукт | Оптимизированные шаблоны подсказок, наборы инструкций | Конвейеры данных, системы RAG, модули памяти, менеджеры состояний |
Основные навыки | Лингвистика, логическое мышление, разработка инструкций | Системная архитектура, engineering данных, разработка программного обеспечения |
Основная аналогия | Задать точный вопрос | Создание всеобъемлющей библиотеки для исследователя |
Переопределение AI Engineering
Этот переход от prompt engineering к context engineering меняет роль инженеров AI. Prompt engineering фокусируется на совершенствовании входных строк, требуя навыков лингвистики и логики. Однако, когда задача состоит в создании систем, которые динамически собирают эти входные данные из баз данных, API и памяти, основные навыки переходят к engineering программного обеспечения и системной архитектуре.
Фреймворки, такие как LangChain и LlamaIndex, популярны, поскольку они поддерживают context engineering, предлагая архитектурные шаблоны для построения динамических систем компоновки контекста, таких как Chains, Graphs и Agents.
Появление context engineering знаменует собой переход в разработке AI от узкоспециализированной области, ориентированной на модели, к основной инженерной дисциплине программного обеспечения. Основная проблема заключается не только в самой модели, но и во всем стеке приложений, построенном вокруг нее.
Контекст: вскрытие и принципы
В этом разделе подробно описаны компоненты «контекста» и изложены принципы эффективного управления.
Деконструкция окна контекста
Окно контекста - это общий объем информации, которую модель может «видеть» или «помнить» при создании ответа. Полный «пакет контекста» - это сумма всей предоставленной информации.
- Инструкции / Системная подсказка: Этот базовый уровень определяет поведение модели, устанавливая ее роль, стиль, правила, ограничения и цели.
- Подсказка пользователя: Прямой вопрос или инструкция задачи, запускающая интеллектуального агента.
- История разговоров / Кратковременная память: Предыдущие обмены предоставляют прямой контекст, управляемый посредством обрезки или обобщения из-за ограничений окна контекста.
- Долгосрочная память: Постоянная база знаний, которая записывает информацию, полученную из взаимодействий, такую как пользовательские предпочтения, сводки проектов или факты, явно указанные для запоминания.
- Извлеченная информация / RAG: Чтобы преодолеть отсечение знаний и обеспечить ответы, основанные на фактах, система динамически извлекает релевантную информацию из внешних источников знаний.
- Доступные инструменты: Определите схемы и описания вызываемых функций или встроенных инструментов, предоставляя модели возможность действовать, а не просто знать.
- Выходные данные инструментов: Результаты вызовов инструментов необходимо повторно внедрить в контекст, чтобы модель могла использовать их в последующих рассуждениях и действиях.
- Структурированная схема вывода: Определяет ожидаемый формат вывода (например, схема JSON) для управления структурированными, предсказуемыми результатами.
Фреймворк «LLM как операционная система»
Эта аналогия обеспечивает прочную теоретическую основу для понимания и применения управления контекстом.
LLM как CPU, Окно контекста как RAM: Эта аналогия позиционирует окно контекста как ограниченный и ценный ресурс. Context engineering похож на управление ОС, эффективно загружая правильную информацию в нужное время в рабочую память.
Контекст ядра vs. Контекст пользователя: Эта структура разделяет контекст на два уровня; аналогично пространству ядра и пространству пользователя.
- Контекст ядра: Представляет собой управляемое, переменное, постоянное состояние интеллектуального агента. Он включает в себя основные блоки памяти и файловые системы, которые LLM может наблюдать, но изменять только посредством контролируемых «системных вызовов».
- Контекст пользователя: Представляет собой «пространство пользователя» или буфер сообщений, где происходят динамические взаимодействия. Он включает в себя сообщения пользователей, ответы помощника и вызовы непривилегированных инструментов «пользовательской программы».
Системные вызовы и пользовательские инструменты: Это различие поясняет, как агент взаимодействует со своим внутренним состоянием и внешним миром. Системные вызовы изменяют контекст ядра, изменяя постоянное состояние агента, в то время как пользовательские инструменты вносят внешнюю информацию в контекст пользователя.
Руководящие принципы Context Engineering
Эффективный context engineering следует основным принципам, полученным от практиков, для построения надежных интеллектуальных агентских систем.
- Непрерывный и всесторонний контекст: Также известен как «Видеть все», этот принцип требует, чтобы агент имел доступ ко всей своей операционной истории, включая предыдущие взаимодействия с пользователем, выходные данные вызовов инструментов, внутренние процессы мышления и промежуточные результаты.
- Избегайте некоординированного параллелизма: Разрешение нескольким субагентам или подзадачам работать параллельно без общего, постоянно обновляемого контекста почти неизбежно приводит к несогласованности выходных данных, конфликтующим целям и сбоям.
- Динамический и развивающийся контекст: Контекст не должен быть статическим информационным блоком. Он должен собираться и развиваться динамически на основе хода выполнения задачи, приобретая или обновляя информацию во время выполнения.
- Полное контекстное покрытие: Модели необходимо предоставить всю информацию, которая может ей понадобиться, а не только последний вопрос пользователя. Весь входной пакет (инструкции, данные, история и т. д.) должен быть тщательно разработан.
Стратегии управления контекстом:
Запись: Сохранение контекста:
Это включает в себя хранение информации за пределами непосредственного окна контекста для использования в будущем, создание возможностей памяти агента.
- Черновики: Используются для хранения кратковременной памяти в течение сеанса.
- Системы памяти: Используются для создания долговременной памяти между сеансами.
Выбор: Извлечение контекста:
Это включает в себя извлечение правильной информации из внешнего хранилища в окно контекста в нужное время.
- Выбор из памяти/черновиков: Агент должен иметь возможность эффективно запрашивать свою сохраненную память и черновики, когда ему необходимо вспомнить прошлые знания.
- Выбор из инструментов: Когда агент имеет много доступных инструментов, эффективно применять методы RAG к самим описаниям инструментов, динамически извлекая и предоставляя только наиболее релевантные инструменты на основе текущей задачи.
- Выбор из знаний: Это основная функция Retrieval-Augmented Generation (RAG), динамически приобретающая фактическую информацию из внешних баз знаний для повышения возможностей ответов модели.
Сжатие: Оптимизация контекста:
Это включает в себя уменьшение количества токенов, используемых в контексте, при сохранении основной информации.
- Обобщение: Использование LLM для обобщения длинной истории разговоров, документов или выходных данных инструментов, извлечения ключевой информации.
- Усечение: Использование эвристических правил для сокращения контекста, таких как простое удаление самых ранних раундов диалога, когда история разговоров слишком длинная.
Изоляция: Разделение контекста:
Это включает в себя декомпозицию контекста на разные части для улучшения внимания модели и управления сложностью задачи.
- Системы с несколькими агентами: Большие задачи можно разделить между несколькими субагентами, каждый со своим выделенным, изолированным контекстом, инструментами и инструкциями.
- Песочницы: Операции, которые потребляют большое количество токенов, можно запускать в изолированной среде, возвращая только окончательные ключевые результаты в контекст основной LLM.
Расширенные архитектуры памяти
Память является ключом к построению интеллектуальных агентов, которые могут учиться и адаптироваться. Ключевые компоненты включают кратковременную память посредством буферов истории диалогов и черновиков, а также долговременную память для сохранения и персонализации.
Методы реализации:
- Автоматизированное создание памяти: Система может автоматически генерировать и сохранять воспоминания на основе взаимодействий с пользователем.
- Механизмы отражения: Агент может самоанализировать свое поведение и результаты после выполнения задач, синтезируя усвоенные уроки в новые воспоминания.
- Обобщение диалогов: Регулярно обобщайте прошлые разговоры и сохраняйте сводки как часть долговременной памяти.
Структурированная память (графы временных знаний): Более продвинутая архитектура памяти, которая хранит не только факты, но и отношения между фактами и временные метки для каждого фрагмента информации.
Retrieval-Augmented Generation (RAG): Краеугольный камень Context Engineering
RAG - это основная техника для «выбора» внешних знаний в context engineering, соединяющая LLM с внешними базами знаний. Типичная система RAG состоит из трех этапов:
- Индексация: Документы разделяются на семантические фрагменты, а затем преобразуются в многомерные векторы с использованием модели внедрения. Эти векторы и исходные тексты хранятся в векторной базе данных.
- Извлечение: Пользователь преобразует запрос в вектор с той же моделью внедрения и ищет в векторной базе данных другие близкие векторы с аналогичными запросами.
- Генерация: Система объединяет исходный запрос и связанные текстовые фрагменты в подсказку, а затем отправляет ее в LLM для создания подходящего ответа.
Расширенные стратегии извлечения и ранжирования
Базовая архитектура RAG часто нуждается в более сложных стратегиях для улучшения качества извлечения в реальном мире. Сочетание семантического поиска с ключевыми индексными и ранжированием имеет решающее значение для улучшения качества поиска. Контекстное извлечение информации Anthropic улучшит контекст LLM.
- Гибридный поиск: Объединяет семантический поиск (на основе векторов) и поиск по ключевым словам для использования дополнительных сильных сторон.
- Контекстное извлечение: Использует LLM для создания краткого обзора контекста каждого текстового блока.
- Повторное ранжирование: Добавляет шаг повторного ранжирования, используя более сильную модель для повторной сортировки результатов на основе релевантности.
RAG vs. Тонкая настройка: Структура стратегического принятия решений
Выбор между RAG (Retrieval Augmented Generation) и тонкой настройкой (Fine-tuning) — это ключевое решение. Выбор зависит от требований проекта.
Преимущества RAG:
- Подходит для интеграции знаний в реальном времени.
- Уменьшает галлюцинации, предоставляя проверяемые факты.
- Позволяет предприятиям хранить конфиденциальные данные в безопасных внутренних базах данных.
Преимущества тонкой настройки:
- Лучше всего подходит для обучения модели новому поведению, стилю речи или специализированной терминологии.
- Может согласовать выходные данные модели с имиджем бренда организации.
Гибридные подходы: Чтобы добиться наилучшей производительности с моделями, следует использовать как тонкую настройку для повышения производительности, так и RAG для повышения точности.
Оптимизация и фильтрация контекста
Даже при использовании мощных механизмов извлечения, управления окном контекста и избежания распространенных сбоев вы все равно столкнетесь с ошибками.
Распространенные режимы отказа:
- Отравление контекста: Когда представлена кажущаяся фактическая ошибка, она искажает всю систему с этого момента.
- Отвлечение контекста: Модели отвлекаются, когда им предоставляется нерелевантная информация.
- Путаница контекста: Контекстная информация может быть ошеломляющей для модели, уводя ее от правильного ответа.
- Конфликт контекста: Модели путаются от противоречивой информации и могут дать противоречивый ответ.
Решения:
Инженерам необходимо применять методы фильтрации для смягчения этих сбоев. Обеспечение того, чтобы рабочая память модели была заполнена очень релевантной и полностью оптимизированной информацией, становится важным для практики и теории.
Context Engineering на практике: Тематические исследования
Анализ различных приложений дает более глубокое понимание ценности и реализации context engineering.
AI-помощники по программированию
- Проблема: Ранние AI-попытки программирования часто были хаотичными, основанными на расплывчатых подсказках с небольшим пониманием более крупной кодовой базы.
- Решение: Относитесь к проектной документации, руководствам по коду, шаблонам проектирования и требованиям как к любому инженерному ресурсу.
Корпоративный поиск и управление знаниями
- Проблема: Традиционные корпоративные поисковые системы основываются на сопоставлении ключевых слов, не понимая намерений пользователя, роли работы или причины их поиска.
- Решение: Создавайте интеллектуальные поисковые системы, используя контекст для понимания каждого поиска.
Автоматизированная поддержка клиентов
- Проблема: Общие LLM не знают специфи