Инженерия контекста: выход за пределы подсказок в ИИ
Контекстная инженерия набирает популярность с тех пор, как Андрэй Карпаты подчеркнул это в своем посте в Twitter. Большинство людей воспринимают подсказки как короткие описания задач, которые вы можете небрежно ввести в языковую модель. Но в реальных промышленных приложениях это лишь поверхностное понимание. Контекстная инженерия — это искусство и наука формирования всего контекстного окна с правильной смесью информации для следующего шага: описания задач, примеры с несколькими выстрелами, результаты RAG, мультимодальные данные, инструменты, состояние, история и многое другое.
Основные выводы:
- Контекстная инженерия выходит за рамки инженерии подсказок, сосредоточившись на управлении и структурировании информации, которую видит модель ИИ.
- Запись контекста вне системы (блокноты, воспоминания) помогает сохранить критически важную информацию, не перегружая окно контекста.
- Выбор контекста гарантирует, что будут извлечены только самые релевантные заметки, инструменты и знания, чтобы уменьшить шум.
- Сжатие контекста с помощью резюмирования и сокращения помогает эффективно управлять бюджетами токенов.
- Изоляция контекста между агентами, окружением или состояниями выполнения улучшает специализацию и уменьшает беспорядок.
- Практические техники включают RAG, динамические контекстные окна, гибридные источники и постоянные подсказки для ролей/систем.
Что такое контекстная инженерия?
Контекстная инженерия может быть понята как продвинутый этап инженерии подсказок. Это практика тщательной структуры и проектирования ввода (контекста) и его предоставления большой языковой модели (БЯМ), чтобы БЯМ предоставила полезные, точные и актуальные результаты. Например,
Слабый запрос:
Write about Paris.
→ Вывод может быть случайным: история, культура, география или просто общее текст.
Лучший запрос (разработанный):
Write a 150-word travel blog post about Paris, focusing on food, local cafés, and romantic spots. Use a friendly and conversational tone.
Вывод становится целенаправленным, полезным и соответствует вашим потребностям.
В отличие от инжиниринга подсказок, который часто сосредоточен на написании clever-однострочных подсказок, инжиниринг контекста касается управления всем контекстным окном, которое представляет собой набор информации (инструкции, примеры, извлеченные документы, системные сообщения, история разговоров, ограничения и т. д.), которые модель видит перед генерацией ответа.
Почему важна контекстная инженерия
Давайте поймем, почему Контекстное Инженерство имеет значение, используя пример Агентов. AI агент — это больше, чем просто система вопрос-ответ на основе LLM. Он может рассуждать, планировать и предпринимать действия, используя внешние инструменты или API.
Представьте себе агента по бронированию путешествий, работающего на основе LLM, и вы просите агента забронировать поездку в Токио на следующий месяц на 5 дней, остановившись в недорогом отеле в центре города. Здесь агент выполнит ряд задач, таких как:
- Использует инструменты (API) для проверки вариантов рейсов.
- Запросы по услугам бронирования отелей.
- Составляет маршрут на основе ваших предпочтений.
- Предоставляет структурированный план с авиарейсами, отелями и предложениями по экскурсиям.
Здесь агент не просто генерирует текст, но размышляет, извлекает внешнюю информацию и принимает действия шаг за шагом самостоятельно.
Для этой задачи агент должен руководствоваться контекстом, специфичным для роли (например, «всегда придавайте приоритет вариантам с минимальным бюджетом в радиусе 10 км от центра Токио»). Кроме того, у агентов часто есть доступ к нескольким API/инструментам. Инженерия контекста помогает модели понять, когда использовать какой инструмент. Информация, такая как бюджет, стиль путешествия или диетические ограничения, должна быть внедрена в контекст, чтобы агент мог корректно индивидуализировать результаты. Также, если возникнет проблема с любым из запросов между шагами, результат может быть неполным или непоследовательным, поскольку агент полагается на контекст каждого шага для определения следующего действия. Модели LLM не помнят прошлые запуски; они только «видят», что находится в окне контекста.
Правильно спроектированный контекст обеспечивает последовательное поведение моделей, соответствие бизнес-требованиям и возможность выполнения сложных задач.
Контекстное окно
Контекстное окно — это максимальное количество текста (токенов), которое модель может «видеть» за раз. Подумайте об этом как о краткосрочной памяти модели. Оно включает:
- Ваш последний запрос
- Предыдущие разговоры (если добавлены)
- Инструкции системы (например, «отвечать вежливо» или «отвечать в формате JSON»)
- Любые извлеченные документы или примеры, которые вы вставляете
Если ваши вводные данные + история + инструкции превышают окно контекста, модель усечет более старые части (обычно с начала), что может привести к потере информации.
Когда вы взаимодействуете с LLM (или агентом ИИ), каждый новый запрос не рассматривается в изоляции. Вместо этого модель помнит историю разговора в пределах своего контекстного окна. Добавление новых сообщений к существующему контексту или дополнение контекста — это процесс, благодаря которому модель видит как прошлое, так и новый ввод вместе. Это позволяет модели поддерживать непрерывность, память и согласованность в разных репликах. Однако, если вы продолжаете добавлять, контекст растет, и в конечном итоге модель столкнется с переполнением контекста или может исчерпать контекстное окно.
Пример:
- Пользователь: “Сделайте краткое содержание этой статьи о этике ИИ. ”
- Модель: (дает резюме)
- Пользователь: “Теперь перепишите это в более формальном академическом стиле. ”
- Модель добавляет эту новую инструкцию к предыдущему диалогу, чтобы понимать, на что она ссылается (на резюме).
Длинный контент в контекстных окнах может не сработать по нескольким ключевым причинам:
- Когда окно контекста содержит чрезмерное количество текста, существует риск разбавления информации, что затрудняет модели приоритизацию ключевой информации. Это может привести к потере фокуса и неспособности выявить самые важные элементы в обширном содержании. Она может воспринимать несущественные части контекста вместо того, чтобы сосредоточиться на ключевых инструкциях.
- Большие языковые модели полагаются на механизмы внимания, чтобы определить, какие части входных данных важны. При очень длинном контенте внимание размывается, что затрудняет модели точное связывание удаленных фрагментов информации.
- Если в контексте появляются несколько инструкций (например, ранние против более поздних), модель может следовать наиболее последней или более настойчиво сформулированной, игнорируя более ранние, но важные детали.
Неудачный пример длинного контекста
Содержание окна контекста (слишком длинное и загроможденное):
- Полная 20-страничная исследовательская работа в сыром виде.
- Инструкции для пользователя находятся в самомверху: “Сделайте краткое содержание этой статьи в 300 слов для нетехнической аудитории. ”
- Зарыто посередине: ссылки, уравнения, необработанные наборы данных, ненужные приложения.
- В самом конце: “Сделайте резюме академическим. ”
Что происходит:
- Модель видит слишком много текста.
- Предыдущая инструкция (“не техническая аудитория”) забыта, поскольку последующая (“сделать академической”) отменяет ее.
- Итог оказывается длинным, техническим и запутанным—не соответствует исходной цели.
Хорошо спроектированный краткий контекстный пример
Содержимое контекстного окна (сфокусированное и структурированное):
- Инструкция вверху:
“Подведите итоги этой научной статьи в 300 словах, нацеливаясь на не техническую аудиторию. Используйте простой язык.” - Вместо вставки полного текста статьи включены только аннотация, ключевые результаты и раздел обсуждения.
Форматирование помогает:
-
[Paper Abstract] … -
[Key Findings] … -
[Conclusion] … -
Модель видит только релевантные части.
-
Ясная инструкция в начале задаёт тон.
-
Вывод: четкое, упрощенное резюме на 300 слов, именно то, что нужно.
Длинный, нефильтрованный контент переполняет окно контекста, тогда как курируемый, структурированный контекст делает модель точной и эффективной.
Поэтому необходимо контекстное проектирование. «+1 за «контекстное проектирование» по сравнению с «инженерией запросов».
Люди ассоциируют запроса с короткими описаниями задач, которые вы даете ИИ в повседневной практике. Однако в каждом приложении ИИ промышленного уровня контекстное проектирование – это тонкое искусство и наука о том, как заполнить контекстное окно нужной информацией для следующего шага. —Андрей Карпаты
Для крупномасштабных приложений LLM жизненно важно достигать последовательных, высококачественных результатов. Это требует точного заполнения контекстного окна оптимальным количеством и высокой качеством правильной информации.
Как получить правильный контент для окна контекста
Задача состоит не в том, чтобы выгрузить всё в контекстное окно, а в том, чтобы отбирать, фильтровать и внедрять только наиболее полезное содержание.
1. Знания (Область или Ссылочные Данные)
Это включает в себя информацию, необходимую вашей модели для правильного рассуждения по данной задаче.
-
Статические знания:
- Политики компании, руководства по продуктам, стилистические руководства или часто задаваемые вопросы.
- Обычно хранится в векторной базе данных (например, Pinecone, Weaviate, FAISS) и извлекается во время выполнения с использованием RAG (Генерация с дополнением извлечения).
- Обеспечивает, чтобы LLM отвечал фактическими и актуальными данными без искажений.
Динамическое Знание:
- Текущий инвентарь, обновленные цены или результаты исследований в реальном времени.
2. Инструкции (Контроль и формирование поведения)
Языковые модели общего назначения, поэтому вы должны ограничивать и направлять их. Инструкции определяют что делать, как отвечать и в каком стиле.
-
Системные подсказки/Определения ролей:
- Пример: “Вы являетесь помощником по путешествиям. Всегда отвечайте в формате JSON. Приоритизируйте бюджетные результаты, если пользователь не укажет иначе. ”
Требования к форматированию:
- Например, вывод должен быть в формате markdown, таблицы или структурированного JSON для последующих приложений.
Примеры (Обучение с малыми выборками):
- Инъекция 2–3 примеров желаемых выходных данных помогает модели имитировать точную структуру.
Инструменты и вызовы API (Динамическое внедрение контекста)
Вместо того чтобы раздувать контекстное окно статическими данными, вы можете запрашивать свежие данные по мере необходимости:
-
API-вызовы для получения данных в реальном времени:
- API погоды → для туристических приложений.
- API акций → для финансовых помощников.
- Поиск API → для summarization новостей.
Запросы к базе данных:
- Данные клиентов из CRM.
Пользовательские инструменты (агенты):
- Агенты решают, какой инструмент использовать (например, API для бронирования рейсов против API для бронирования отелей).
Фильтрация и приоритизация
Даже после сбора знаний, инструкций и выводов инструментов, вы все равно не можете сгрузить все в окно контекста. Вам нужно:
- Приоритизируйте самые актуальные части (основываясь на поиске сходства или ранжировании).
- Сделайте краткое резюме длинных документов перед вставкой.
- Разбейте большие входные данные на меньшие сегменты, соответствующие контексту.
- Добавляйте выборочно (сохраняйте несколько последних важных взаимодействий, а не весь разговор).
Общие стратегии для проектирования контекста
Некоторые из распространенных ключевых стратегий контекстного проектирования включают:
Контекст написания (внешняя информация)
- Когда контекст не помещается в окно, он записывается за его пределами и извлекается позже.
- Заметочные листы: временные заметки для поэтапного планирования, промежуточных расчетов или сохранения планов, которые могут быть обрезаны; часто реализуются как инструмент (запись в файл) или часть состояния выполнения.
- Воспоминания: постоянная информация, которая сохраняется между сессиями, такая как эпизодическая память (прошлые действия), процедурная память (правила/инструкции) и семантическая память (фактические знания); управляется с помощью встраиваний, извлечения или графов знаний для обеспечения долгосрочной персонализации.
Выбор контекста (Выбор того, что загружать)
- Решение о том, какую внешнюю информацию следует вернуть в активное контекстное окно.
- Выбор черновика: получение сохраненных заметок через вызов инструмента или экспозицию состояния.
- Выбор памяти: извлечение только соответствующих фактов, правил или примеров с использованием эмбеддингов/знаний, чтобы избежать неуместных вмешательств.
- Выбор инструментов: использование RAG на метаданных инструментов для загрузки только наиболее релевантных инструментов, что предотвращает путаницу и улучшает точность.
- Выбор знаний: использование гибридных техник RAG (парсинг AST, grep, поиск по встраиванию, переоценка) для навигации по большим кодовым базам или корпоративным наборам данных.
Сжатие контекста (сохранение только важного)
- Управление бюджетами токенов, когда взаимодействия становятся длительными.
- Резюме: Генерированные LLM-ами резюме для снижения нагрузки токенов при сохранении смысла; стратегии включают рекурсивное, иерархическое или передачу агентом резюмирования (например, Claude Code сжимает, когда контекст достигает 95% окна).
- Обрезка/Оченка: удаление неуместного или устаревшего контекста с использованием эвристических методов (например, удаление старых реплик) или обученных методов (например, Provence, очиститель контекста).
Изолирование контекста (разделяй и властвуй)
- Разделение контекста между агентами или средами для уменьшения шума и избыточности токенов.
- Многоагентные системы: распределение задач среди специализированных агентов, каждый из которых имеет свое окно контекста (например, агент исследования → агент планирования → агент письма).
- Изоляция среды (песочница): выполнение структурированных инструкций/кода внешне и передача результатов обратно в LLM, удерживая крупные артефакты вне контекста.
- Изоляция состояния времени выполнения: поддержание схемы, при которой некоторые поля (например, [сообщения]) доступны, в то время как другие ([знания]) остаются скрытыми до явного запроса.
Контекстная инженерия против инженерии подсказок
Вот разбивка двух подходов:
| Аспект | Промпт-инжиниринг | Контекстуальная инженерия |
|---|---|---|
| Определение | Создание инструкций или вопросов для управления поведением LLM. | Проектирование и управление всей информационной средой для LLM. |
| Фокус | Формулировка и структура входного запроса. | Данные, история и внешние знания, связанные с запросом. |
| Ключевые инструменты | Инструкции, форматирование, примеры и подсказки для размышлений. | Системы извлечения, графы знаний, встраивания и инъекция метаданных. |
| Масштабируемость | Ограничено — для каждой задачи часто требуются новые подсказки. | Высококонтекстные конвейеры могут использоваться повторно в разных областях. |
| Надежность | Может привести к галлюцинациям, если запрос лишен оснований. | Снижает галлюцинации, основывая результаты на внешних знаниях. |
| Сценарии использования | Быстрое прототипирование, креативное исследование, разовые запросы. | Предприятия ИИ, системы промышленного уровня, задачи в специфичных областях. |
| Аналогия | Задавать вопрос умно. | Создание правильной библиотеки вокруг модели перед тем, как задавать вопросы. |
Часто задаваемые вопросы
Q1. Чем контекстная инженерия отличается от инженерии запросов? Инженерия запросов сосредоточена на создании единичных, хорошо структурированных инструкций для ЛЛМ. Контекстная инженерия управляет более широким потоком информации — что сохраняется, извлекается, сжимается или изолируется для эффективного рассуждения.
Q2. Почему инженерия контекста важна для реальных приложений ИИ? В производственных условиях задачи часто превышают пределы окна контекста. Инженерия контекста обеспечивает наличие релевантной информации без перегруженности модели, что улучшает точность, персонализацию и эффективность.
Вопрос 3. Что такое черновики и как они используются? Черновики — это временные заметки или промежуточные шаги, хранящиеся вне окна контекста. Они помогают моделям планировать, вычислять или отслеживать прогресс, не теряя из виду инструкции.
Вопрос 4. Как память помогает в контекстной инженерии? Память обеспечивает постоянное знание на протяжении сессий, будь то запоминание прошлых взаимодействий (эпизодическая), сохранение правил (процедурная) или хранение фактов (семантическая). Это поддерживает персонализацию и непрерывность.
Вопрос 5. Можно ли применять контекстное проектирование к кодовым агентам и корпоративным системам? Да. Для кодовых агентов контекстное проектирование гарантирует загрузку файлов правил и соответствующих знаний, в то время как неактуальные данные исключаются. Для предприятий это обеспечивает эффективный доступ к большим наборам данных с использованием RAG и гибридного поиска.
Вопрос 6. Когда использовать инженерное проектирование, а когда использовать контекстное проектирование?
- Используйте инженерии запросов, когда вам нужны быстрые эксперименты, креативность или легкие случаи использования.
- Используйте контекстное проектирование при создании масштабируемых, специализированных по отраслям и надежных AI приложений, которые интегрируются с внешними источниками данных.
На практике обе техники дополняют друг друга: сильный запрос может помочь направить модель, но хорошо разработанный контекст обеспечивает модель необходимыми знаниями и структурой для точного ответа.
Заключение
Контекстная инженерия представляет собой следующее эволюционное развитие того, как мы взаимодействуем с LLM. Она смещает фокус с того, что мы спрашиваем на то, что модель знает и как она интерпретирует. Поскольку внедрение ИИ расширяется по отраслям, контекстная инженерия станет основой масштабируемых, надежных и интеллектуальных систем. Вместо того чтобы рассматривать это как замену инженерии подсказок, подумайте об этом как о большой картине; подсказки — это искра, но контекстная инженерия — это архитектура, которая поддерживает надежную работу.
Ссылки
- Контекстуальная инженерия
- Не строьте многопользовательские агенты
- Как долго контексты терпят неудачу
- Простое объяснение контекстной инженерии





Добавить комментарий