Инженерия контекста - парадигмальная статья от китайских исследователей из Шанхая и других университетов. Context Engineering 2.0: The Context of Context Engineering. Начинается вообще круто, с Карла Маркса!
Карл Маркс однажды написал, что «сущность человека – это совокупность социальных отношений», предполагая, что индивиды не являются изолированными сущностями, а в своей основе формируются взаимодействием с другими сущностями, в рамках которого контексты играют определяющую и существенную роль. С появлением компьютеров и искусственного интеллекта эти контексты больше не ограничиваются исключительно взаимодействием человека с человеком: сюда также входит взаимодействие человека с машиной. Возникает центральный вопрос: как машины могут лучше понимать наши ситуации и цели? Для решения этой проблемы исследователи недавно ввели концепцию контекстной инженерии. Хотя её часто считают недавним нововведением эпохи агентов, мы утверждаем, что подобные практики существуют уже более двадцати лет. С начала 1990-х годов эта область развития прошла через различные исторические этапы, каждый из которых определялся уровнем интеллекта машин: от ранних фреймворков взаимодействия человека с компьютером, построенных на примитивных компьютерах, до современных парадигм взаимодействия человека с агентом, управляемых интеллектуальными агентами, и, возможно, до интеллекта человеческого или сверхчеловеческого уровня в будущем. В данной статье мы рассматриваем контекстную инженерию, даём её систематическое определение, описываем её исторический и концептуальный ландшафт, а также рассматриваем ключевые аспекты проектирования, которые необходимо учитывать при разработке на практике.
Определение 1 (Сущность и характеристика). Пусть E — пространство всех сущностей (пользователей, приложений, объектов, окружений и т.д.), F — пространство всей возможной характеризующей информации. Через P(F) обозначим булеан (множество всех подмножеств) множества F. Для любой сущности e ∈ E определим функцию ситуационной характеристики: Char : E → P(F) (1) где Char(e) возвращает множество информации, характеризующей сущность e. Простое объяснение (что это значит на человеческом языке) Это базовое математическое определение из какой-то научной статьи (скорее всего, по информационной безопасности, контекстно-зависимому доступу или AI-сafety).
Представьте, что у вас есть огромный мир, в котором существуют самые разные «вещи»: люди (пользователи), программы, файлы, комнаты, устройства, даже целые здания или виртуальные миры. Все эти «вещи» автор называет сущностями (entities) и собирает их в одно большое множество E.
У каждой такой сущности есть куча информации, которая её описывает в данный момент: кто сейчас вошёл в систему, где находится человек, в каком состоянии устройство, какой у пользователя уровень доступа, какой сейчас день недели, время суток и т.д.
Например, когда пользователь вводит в Gemini CLI¹ команду «Search related documentation for me», множество релевантных сущностей может включать: самого пользователя, приложение Gemini CLI, терминальную среду, внешние инструменты, модули памяти и backend-сервисы модели. В этом случае функция Char(e) может описывать: пользователя (например, введённый промпт, его предпочтения, история запросов), приложение (например, системные инструкции, конфигурация Gemini CLI), среду выполнения (например, текущая рабочая директория, переменные окружения), внешние инструменты (например, доступные плагины, инструменты поиска, код-интерпретатор), модули памяти (краткосрочная память — история текущей сессии; долгосрочная — сохранённые пользователем знания или документы), сервис модели (например, какие возможности поддерживает текущая модель Gemini, ограничения по длине ответа, формат вывода и т.д.).