Контекстная инженерия: руководство по LLM

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 состоит из трех этапов:

  1. Индексация: Документы разделяются на семантические фрагменты, а затем преобразуются в многомерные векторы с использованием модели внедрения. Эти векторы и исходные тексты хранятся в векторной базе данных.
  2. Извлечение: Пользователь преобразует запрос в вектор с той же моделью внедрения и ищет в векторной базе данных другие близкие векторы с аналогичными запросами.
  3. Генерация: Система объединяет исходный запрос и связанные текстовые фрагменты в подсказку, а затем отправляет ее в LLM для создания подходящего ответа.

Расширенные стратегии извлечения и ранжирования

Базовая архитектура RAG часто нуждается в более сложных стратегиях для улучшения качества извлечения в реальном мире. Сочетание семантического поиска с ключевыми индексными и ранжированием имеет решающее значение для улучшения качества поиска. Контекстное извлечение информации Anthropic улучшит контекст LLM.

  • Гибридный поиск: Объединяет семантический поиск (на основе векторов) и поиск по ключевым словам для использования дополнительных сильных сторон.
  • Контекстное извлечение: Использует LLM для создания краткого обзора контекста каждого текстового блока.
  • Повторное ранжирование: Добавляет шаг повторного ранжирования, используя более сильную модель для повторной сортировки результатов на основе релевантности.

RAG vs. Тонкая настройка: Структура стратегического принятия решений

Выбор между RAG (Retrieval Augmented Generation) и тонкой настройкой (Fine-tuning) — это ключевое решение. Выбор зависит от требований проекта.

  • Преимущества RAG:

    • Подходит для интеграции знаний в реальном времени.
    • Уменьшает галлюцинации, предоставляя проверяемые факты.
    • Позволяет предприятиям хранить конфиденциальные данные в безопасных внутренних базах данных.
  • Преимущества тонкой настройки:

    • Лучше всего подходит для обучения модели новому поведению, стилю речи или специализированной терминологии.
    • Может согласовать выходные данные модели с имиджем бренда организации.
  • Гибридные подходы: Чтобы добиться наилучшей производительности с моделями, следует использовать как тонкую настройку для повышения производительности, так и RAG для повышения точности.

Оптимизация и фильтрация контекста

Даже при использовании мощных механизмов извлечения, управления окном контекста и избежания распространенных сбоев вы все равно столкнетесь с ошибками.

Распространенные режимы отказа:

  • Отравление контекста: Когда представлена кажущаяся фактическая ошибка, она искажает всю систему с этого момента.
  • Отвлечение контекста: Модели отвлекаются, когда им предоставляется нерелевантная информация.
  • Путаница контекста: Контекстная информация может быть ошеломляющей для модели, уводя ее от правильного ответа.
  • Конфликт контекста: Модели путаются от противоречивой информации и могут дать противоречивый ответ.

Решения:

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

Context Engineering на практике: Тематические исследования

Анализ различных приложений дает более глубокое понимание ценности и реализации context engineering.

AI-помощники по программированию

  • Проблема: Ранние AI-попытки программирования часто были хаотичными, основанными на расплывчатых подсказках с небольшим пониманием более крупной кодовой базы.
  • Решение: Относитесь к проектной документации, руководствам по коду, шаблонам проектирования и требованиям как к любому инженерному ресурсу.

Корпоративный поиск и управление знаниями

  • Проблема: Традиционные корпоративные поисковые системы основываются на сопоставлении ключевых слов, не понимая намерений пользователя, роли работы или причины их поиска.
  • Решение: Создавайте интеллектуальные поисковые системы, используя контекст для понимания каждого поиска.

Автоматизированная поддержка клиентов

  • Проблема: Общие LLM не знают специфи