Знания и память (Knowledge and Memory)
Теперь, когда ваш агент имеет инструменты и оркестрацию, он более чем способен предпринимать действия для выполнения реальной работы. Однако в большинстве случаев вы захотите, чтобы ваши агенты помнили, что произошло, и знали дополнительную информацию помимо того, что содержится в весах модели. В этой главе мы сосредоточимся на знаниях и памяти — двух взаимодополняющих, но различных способах обогащения контекста вашего агента.
Знания (часто реализуются через retrieval-augmented generation) извлекают фактический или доменно-специфичный контент — технические спецификации, политические документы, каталоги продуктов, логи клиентов или систем — во время генерации, чтобы агент "знал" проверяемую информацию помимо непосредственного разговора, дополняя информацию, хранящуюся в самой модели, конкретно в её весах и смещениях.
Память, с другой стороны, захватывает собственную историю агента: прошлые обмены с пользователями, выходы инструментов и обновления состояния. Она позволяет вашему агенту поддерживать непрерывность между ходами и сессиями, так что он "помнит" прошлые взаимодействия и использует эту историю для информирования будущих решений.
В главе 5 мы представили инженерию контекста как дисциплину динамического выбора, структурирования и сборки всех входов в окно контекста модели для получения наилучших результатов. Память является фундаментальным инструментом инженерии контекста: она предоставляет знания, историю и факты, которые могут быть выбраны и собраны в эффективные промпты. Другими словами, память — это место, где хранятся знания, в то время как инженерия контекста — это то, как эти знания используются для производства интеллектуального поведения.
Эта глава предложит примеры в LangGraph, низкоуровневом фреймворке оркестрации для построения агентных рабочих процессов с состоянием, который был представлен в главе 1. LangGraph определяет ваше приложение как направленный граф узлов (чистые функции, такие как вызовы базовых моделей, обновления памяти или вызовы инструментов) и ребер (переходы потока управления), позволяя разработчикам моделировать сложные многошаговые процессы декларативно.
LangGraph обрабатывает все состояние вашего приложения как единый, строго типизированный объект Python (часто TypedDict), который течет через граф во время выполнения, сохраняя управление данными как явным, так и типобезопасным. В отличие от инструментов оркестрации только DAG (направленный ациклический граф), он нативно поддерживает циклы и условные ветви, делая простым реализацию циклов, повторов и динамических путей принятия решений без специализированного кода. Он также предоставляет встроенную потоковую передачу — испускание частичных результатов по мере их генерации — и контрольные точки, так что долго работающие агенты могут сохраняться и возобновляться точно там, где они остановились.
Обрабатывая механизмы памяти (скользящие окна контекста, извлечение ключевых слов, семантическое извлечение и т.д.) как первоклассные узлы графа, LangGraph сохраняет логику памяти модульной и тестируемой. Ребра обеспечивают, чтобы обновления памяти происходили в правильной последовательности относительно вызовов LLM, так что ваш агент всегда имеет правильный контекст, введенный в правильное время. И поскольку состояние — включая содержимое памяти — может быть сохранено в контрольной точке и возобновлено, ваши агенты поддерживают непрерывность между сессиями и выдерживают сбои, все в рамках того же единого фреймворка графа.
В этой главе мы сначала рассмотрим основы памяти для агентных систем, от простых скользящих окон контекста до семантической памяти, retrieval-augmented generation и продвинутых подходов к графам знаний. На протяжении всего изложения мы подчеркнем, как эти системы памяти интегрируются в конвейеры инженерии контекста для построения агентов, которые обоснованы, способны и выровнены с вашими конкретными целями и окружением.