ai-agents-for-beginners

Инжиниринг контекста для AI-агентов

Инжиниринг контекста

(Нажмите на изображение выше, чтобы посмотреть видео этого урока)

Понимание сложности приложения, для которого вы создаёте AI-агента, важно для создания надежного агента. Нам нужно создавать AI-агентов, которые эффективно управляют информацией для решения сложных задач, выходящих за рамки инженерии подсказок.

В этом уроке мы рассмотрим, что такое инжиниринг контекста и какую роль он играет в создании AI-агентов.

Введение

В этом уроке будет рассмотрено:

Что такое инжиниринг контекста и почему он отличается от инженерии подсказок.

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

Распространённые ошибки в контексте, которые могут нарушить работу AI-агента, и как их исправить.

Цели изучения

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

Определять инжиниринг контекста и отличать его от инженерии подсказок.

Определять ключевые компоненты контекста в приложениях с использованием крупных языковых моделей (LLM).

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

Распознавать распространённые ошибки контекста, такие как отравление, отвлечение, путаница и конфликт, и внедрять методы их предотвращения.

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

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

Инжиниринг подсказок vs инжиниринг контекста

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

Виды контекста

Виды контекста

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

Виды контекста, которые AI-агенту, возможно, придется управлять, включают:

Инструкции: Это как “правила” агента — подсказки, системные сообщения, примеры с несколькими образцами (показывающие AI, как что-то делать), и описания инструментов, которые он может использовать. Здесь пересекается инжиниринг подсказок и инжиниринг контекста.

Знания: Это факты, информация, полученная из баз данных, или накопленные агентом долговременные воспоминания. Это включает интеграцию системы Retrieval Augmented Generation (RAG), если агенту нужен доступ к разным хранилищам знаний и базам данных.

Инструменты: Это определения внешних функций, API и MCP-серверов, к которым агент может обращаться, а также обратная связь (результаты), полученная от их использования.

История общения: Текущий диалог с пользователем. Со временем эти разговоры становятся длиннее и сложнее, занимая место в окне контекста.

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

Стратегии эффективного инжиниринга контекста

Стратегии планирования

Лучшие практики инжиниринга контекста

Хороший инжиниринг контекста начинается с хорошего планирования. Вот подход, который поможет вам задуматься о том, как применить концепцию инжиниринга контекста:

  1. Определите чёткие результаты — задачи, которые будут поставлены перед AI-агентами, должны быть чётко определены. Ответьте на вопрос — «Как будет выглядеть мир, когда AI-агент завершит задачу?» Другими словами, какое изменение, информацию или отклик должен получить пользователь после взаимодействия с AI-агентом.
  2. Спланируйте контекст — после определения результатов работы AI-агента нужно ответить на вопрос «Какую информацию AI-агенту необходимо, чтобы выполнить эту задачу?». Так вы сможете начать планировать, где эта информация может находиться.
  3. Создайте каналы контекста — теперь, когда знаете, где находится информация, нужно ответить на вопрос «Как агент будет получать эту информацию?». Это можно сделать разными способами, включая RAG, использование MCP-серверов и других инструментов.

Практические стратегии

Планирование важно, но когда информация начинает поступать в окно контекста агента, необходимы практические стратегии для ее управления:

Управление контекстом

Хотя часть информации добавляется в окно контекста автоматически, инжиниринг контекста предполагает более активное управление этой информацией, что можно сделать с помощью нескольких стратегий:

  1. Черновик агента Это позволяет AI-агенту делать заметки о релевантной информации по текущим задачам и взаимодействиям с пользователем в рамках одной сессии. Это должно храниться вне окна контекста — в файле или объекте во время выполнения, который агент может позже извлечь при необходимости в этой сессии.

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

  3. Сжатие контекста Когда окно контекста растёт и приближается к своему лимиту, можно применять такие техники, как суммирование и обрезка. Это включает либо сохранение только самой релевантной информации, либо удаление старых сообщений.

  4. Мультиагентные системы Разработка мультиагентных систем — это форма инжиниринга контекста, потому что у каждого агента своё окно контекста. Как этот контекст передаётся и используется разными агентами — ещё одна вещь, которую нужно планировать при создании таких систем.

  5. Песочницы Если агенту нужно выполнить код или обработать большой объём информации в документе, это может потребовать много токенов для обработки результатов. Вместо хранения всего этого в окне контекста, агент может использовать песочницу, которая выполняет этот код и передаёт лишь результаты и другую важную информацию.

  6. Объекты состояния во время выполнения Это делается созданием контейнеров информации для управления ситуациями, когда агенту нужен доступ к определённой информации. Для сложной задачи это позволит агенту пошагово сохранять результаты каждого подзадачи, позволяя контексту оставаться связанным только с конкретной подзадачей.

Проверка контекста

После применения одной из этих стратегий стоит проверить, что именно получила следующая модель. Полезный вопрос для отладки:

Загрузил ли агент слишком много контекста, неправильный контекст или пропустил нужный контекст?

Чтобы ответить на этот вопрос, не нужно логировать сырые подсказки, результаты инструментов или содержимое памяти. В продакшене предпочтительны небольшие записи инспекции контекста, которые фиксируют количество, идентификаторы, хэши и метки политики:

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

Пример инжиниринга контекста

Допустим, мы хотим, чтобы AI-агент “Забронировал мне поездку в Париж.”

• Простой агент, использующий только инженерию подсказок, может просто ответить: “Хорошо, когда вы хотите поехать в Париж?” Он обработал только ваш непосредственный вопрос в момент его запроса.

• Агент, используя стратегии инжиниринга контекста из урока, сделает гораздо больше. Прежде чем ответить, его система может:

  ◦ Проверить ваш календарь на доступные даты (получая данные в реальном времени).

 ◦ Вспомнить предпочтения прошлых поездок (из долгосрочной памяти), такие как предпочитаемая авиакомпания, бюджет или предпочтение прямых рейсов.

 ◦ Определить доступные инструменты для бронирования авиабилетов и отелей.

Распространённые ошибки в контексте

Отравление контекста

Что это: Когда в контекст попадает галлюцинация (ложная информация, сгенерированная LLM) или ошибка, которая многократно цитируется, вызывая у агента стремление к невозможным целям либо развитие абсурдных стратегий.

Что делать: Внедрять валидацию контекста и карантин. Проверять информацию перед добавлением в долгосрочную память. Если обнаруживается потенциальное отравление, начинать новые потоки контекста, чтобы предотвратить распространение плохой информации.

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

Решение: Внедрить шаг, который проверяет существование рейса и маршрутов с помощью реального API до добавления детали рейса в рабочий контекст агента. Если проверка неудачна, ошибочная информация помещается в “карантин” и не используется дальше.

Отвлечение контекста

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

Что делать: Использовать суммирование контекста. Периодически сжимать накопленную информацию в короткие резюме, сохраняя важные детали и удаляя избыточную историю. Это помогает “сбросить” фокус.

Пример бронирования: Вы долго обсуждали разные желанные туристические направления, включая подробный рассказ о вашем туристическом походе два года назад. Когда вы наконец просите “найти дешёвый билет на следующий месяц,” агент увязает в старых, неактуальных деталях и постоянно спрашивает о вашем снаряжении для похода или прежних маршрутах, игнорируя текущий запрос.

Решение: После определённого количества ходов или когда контекст становится слишком большим, агент должен суммировать самые последние и релевантные части разговора — сосредотачиваясь на ваших текущих датах и месте назначения — и использовать это сжатое резюме для следующего вызова LLM, отбрасывая менее важный исторический чат.

Путаница контекста

Что это: Когда избыточный контекст, часто в виде слишком большого количества доступных инструментов, заставляет модель генерировать плохие ответы или вызывать нерелевантные инструменты. Меньшие модели особенно подвержены этому.

Что делать: Внедрять управление набором инструментов с использованием техник RAG. Хранить описания инструментов в векторной базе данных и выбирать только наиболее релевантные инструменты для каждой конкретной задачи. Исследования показывают, что количество инструментов стоит ограничить менее чем 30.

Пример бронирования: Ваш агент имеет доступ к десяткам инструментов: book_flight, book_hotel, rent_car, find_tours, currency_converter, weather_forecast, restaurant_reservations и др. Вы спрашиваете: “Как лучше передвигаться по Парижу?” Из-за большого количества инструментов агент путается и пытается вызвать book_flight внутри Парижа или rent_car, хотя вы предпочитаете общественный транспорт, так как описания инструментов могут пересекаться или он просто не может определить лучший.

Решение: Использовать RAG по описаниям инструментов. Когда вы спрашиваете о передвижении по Парижу, система динамически извлекает только самые релевантные инструменты, такие как rent_car или public_transport_info в зависимости от вашего запроса, предоставляя сфокусированный набор инструментов для LLM.

Конфликт контекста

Что это: Когда в контексте содержится противоречивая информация, которая приводит к непоследовательному рассуждению или плохим итоговым ответам. Часто происходит, когда информация поступает поэтапно, а ранние неправильные предположения остаются в контексте.

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

Пример бронирования путешествия: Сначала вы говорите своему агенту: «Я хочу лететь эконом-классом.» Позже в разговоре вы меняете мнение и говорите: «На самом деле, в этой поездке давайте выберем бизнес-класс.» Если обе инструкции остаются в контексте, агент может получить противоречивые результаты поиска или запутаться, какое предпочтение стоит учитывать в первую очередь.

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

Есть еще вопросы по инженерии контекста?

Присоединяйтесь к Microsoft Foundry Discord, чтобы встречаться с другими учащимися, посещать часы консультаций и получать ответы на вопросы по AI-агентам.

Предыдущий урок

Agentic Protocols

Следующий урок

Memory for AI Agents


Отказ от ответственности: Этот документ был переведен с использованием сервиса машинного перевода Co-op Translator. Несмотря на наши усилия по обеспечению точности, имейте в виду, что автоматический перевод может содержать ошибки или неточности. Оригинальный документ на его исходном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется обратиться к профессиональному человеческому переводу. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникшие в результате использования этого перевода.