Как LangChain DeepAgents добавляют планирование и память в LLM-воркфлоу

Почему “плоские” агенты не справляются

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

Архитектура DeepAgents: глубина вместо реактивности

Библиотека deepagents решает эти проблемы, предлагая архитектуру, вдохновлённую системами вроде Deep Research и Claude Code. Она даёт агентам четыре ключевых возможности:

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

Ключевые возможности на практике

Планирование и дробление задач

DeepAgents включают инструменты планирования (аналогичные write_todos), которые превращают общий запрос в последовательность подзадач. По мере выполнения или получения новой информации агент может обновлять план.

Управление контекстом и файловые инструменты

Вместо того чтобы перегружать кратковременную память модели, DeepAgents используют файловые операции (ls, read_file, write_file, edit_file) для сохранения промежуточных данных. Это предотвращает переполнение контекста и позволяет работать с большими и подробными проектами.

Оркестрация субагентов

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

Долговременная память

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

Настройка и зависимости

Установите необходимые пакеты перед запуском примера:

!pip install deepagents tavily-python langchain-google-genai langchain-openai

Переменные окружения

В примере используется OpenAI API key, но DeepAgents совместимы с другими провайдерами (Gemini, Anthropic и т.д.). Установите переменные окружения для используемых сервисов:

import os
from getpass import getpass
os.environ['TAVILY_API_KEY'] = getpass('Enter Tavily API Key: ')
os.environ['OPENAI_API_KEY'] = getpass('Enter OpenAI API Key: ')
os.environ['GOOGLE_API_KEY'] = getpass('Enter Google API Key: ')

Импорт библиотек

Загрузите Python-библиотеки и создайте экземпляр TavilyClient, который потребуется в примере:

import os
from typing import Literal
from tavily import TavilyClient
from deepagents import create_deep_agent


tavily_client = TavilyClient()

Инструменты: веб-поиск

Deep Agents могут использовать инструменты, как и обычные агенты. В примере агент получает функцию internet_search на базе Tavily для сбора актуальных источников:

from typing import Literal
from langchain.chat_models import init_chat_model
from deepagents import create_deep_agent


def internet_search(
    query: str,
    max_results: int = 5,
    topic: Literal["general", "news", "finance"] = "general",
    include_raw_content: bool = False,
):
    """Run a web search"""
    search_docs = tavily_client.search(
        query,
        max_results=max_results,
        include_raw_content=include_raw_content,
        topic=topic,
    )
    return search_docs

Субагенты: специализированные исполнители

Главное преимущество DeepAgents — возможность создавать субагентов с собственными ролями, инструментами и промптами. В примере определены два субагента:

Примеры промптов и определений субагентов:

sub_research_prompt = """
You are a specialized AI policy researcher.
Conduct in-depth research on government policies, global regulations, and ethical frameworks related to artificial intelligence.

Your answer should:
- Provide key updates and trends
- Include relevant sources and laws (e.g., EU AI Act, U.S. Executive Orders)
- Compare global approaches when relevant
- Be written in clear, professional language

Only your FINAL message will be passed back to the main agent.
"""

research_sub_agent = {
    "name": "policy-research-agent",
    "description": "Used to research specific AI policy and regulation questions in depth.",
    "system_prompt": sub_research_prompt,
    "tools": [internet_search],
}


sub_critique_prompt = """
You are a policy editor reviewing a report on AI governance.
Check the report at `final_report.md` and the question at `question.txt`.

Focus on:
- Accuracy and completeness of legal information
- Proper citation of policy documents
- Balanced analysis of regional differences
- Clarity and neutrality of tone

Provide constructive feedback, but do NOT modify the report directly.
"""

critique_sub_agent = {
    "name": "policy-critique-agent",
    "description": "Critiques AI policy research reports for completeness, clarity, and accuracy.",
    "system_prompt": sub_critique_prompt,
}

Системный промпт и рабочий процесс

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

policy_research_instructions = """
You are an expert AI policy researcher and analyst.
Your job is to investigate questions related to global AI regulation, ethics, and governance frameworks.

1️⃣ Save the user's question to `question.txt`
2️⃣ Use the `policy-research-agent` to perform in-depth research
3️⃣ Write a detailed report to `final_report.md`
4️⃣ Optionally, ask the `policy-critique-agent` to critique your draft
5️⃣ Revise if necessary, then output the final, comprehensive report

When writing the final report:
- Use Markdown with clear sections (## for each)
- Include citations in [Title](URL) format
- Add a ### Sources section at the end
- Write in professional, neutral tone suitable for policy briefings
"""

Определение главного агента

create_deep_agent объединяет модель, инструменты, системный промпт и субагентов. В примере модель инициализируется через OpenAI gpt-4o, но код показывает, как переключиться на Google Gemini. По умолчанию DeepAgents используют Claude Sonnet 4.5, если модель не задана, и при этом поддерживают множество бэкендов через LangChain.

model = init_chat_model(model="openai:gpt-4o")
# model = init_chat_model(model="google_genai:gemini-2.5-flash")
agent = create_deep_agent(
    model=model,
    tools=[internet_search],
    system_prompt=policy_research_instructions,
    subagents=[research_sub_agent, critique_sub_agent],
)

Запуск агента

После настройки вызовите агента с пользовательским запросом — он сам спланирует работу, вызовет субагентов, сохранит файлы и вернёт итог:

query = "What are the latest updates on the EU AI Act and its global impact?"
result = agent.invoke({"messages": [{"role": "user", "content": query}]})

Что дальше

Этот пример показывает, как DeepAgents позволяют строить модульные, с сохранением состояния и планированием рабочие процессы на базе LLM. Для адаптации под свои задачи настраивайте системный промпт, добавляйте или заменяйте инструменты и проектируйте специфичных субагентов для домена.