Галоўная / Артыкулы

LangChain Deep Agents: убудаванае планаванне, файлы і субагенты

LangChain Deep Agents па-над LangGraph: планаванне праз write_todos, віртуальная файлавая сістэма, субагенты, аўтападсумаванне і памяць — і калі ад іх лепш адмовіцца.

Выдавец: REACTAPP.TOP8 хв чытання1742 слоў

Крыніцы: LangChain Deep Agents AI Systems

Команды, які серйознае ставяцца дае агентаў, зазвычай ідуць тым самым шляхам. Яны пачынаюць з ланцоў LangChain, якія добра справляюцца з простымі пайплайнамі. Потым задача стае сложнейшай: патрабуецца выкананне інструментаў, ціклы, выходныя даны неперакладныя за дужынай. Ланцоў вядома станавіцца недастатнек, таму яны пераходзяць на LangGraph, і тады яны пішуць схемы стану, умовныя рэшткі і код для складання графа, прычым не трапіўшыся да самай проблемы.

LangGraph не ўсё. Ён моцны. Але ён — гэта рантайм, прымітыва нізкага рэвэля, і людзі часта ставяцца да яго як да фрэймворку для аплікацыяў. deepagents — гэта адпаведнае рашэнне LangChain на гэта несасвядомленне.

Што ён такое

„Глыбокія агенты“ можа значыць практычна ўсё, таму, каб было точна: deepagents — гэта самастоятэльны пакет на Python, які інсталюецца за дапамою pip install deepagents і які працюе на базе LangChain і LangGraph. У дасведчэннях LangChain яго называюць інструментам для керавання агентамі. Ён відтворае той самы цыкл вызову інструментаў, як і іншыя фрэймворкі, але мае вбудованы дадатковыя можлівасці, таму не трэба ўсё практычна перастраіваць занова кожны раз.

Точка запуску — create_deep_agent(). Спачатку яго трэба імпортуваць:

from deepagents import create_deep_agent

Потым прайсь інструмент і запрос:

def get_weather(city: str) -> str:
    """Get weather for a given city."""
    return f"It's always sunny in {city}!"
agent = create_deep_agent(
    tools=[get_weather],
    system_prompt="You are a helpful assistant",
)
agent.invoke(
    {"messages": [{"role": "user", "content": "What is the weather in Mumbai?"}]}
)

Гэта ўсё. Бібліятэка абавяраецца керуваннем графамі LangGraph, станам, стрымінгам і вікнам кантэксту, і вам няма чаго з гэтага робіць. Яшчэ цікавейша частка — гэта тое, што ўключаецца разам.

Пяць вбудованых можлівасцей

Планаванне за дапамою write_todos

Кожны глыбокі агент автаматычна отрымае інструмент write_todos. Калі ёсць складная задача, ён дзельніць яе на крокі, пазначае кожны з іх як незавершаны, у працэсе або завершаны, і корэктуе план па меры змян. Гэта не трук з запітамі. Спіс знаходзіцца ў стане агента, таму агент можа даўаць да яго рэферэнсы, апдэйтаваць яго і вжываць яго працуючы ў сесіі. Ніхто не павінен прыказваць модэлю думаць крок за крокам, таму што такая структура ёсць часткай самага інструментарыя.

Віртуальная файлавая сістэма

Гэта можа быць самым большым сюрпрызам. По замовчэнню агент распаўляе ls, read_file, write_file, edit_file, glob і grep. За чым агенту патрэбны файлы? Для кантэкстнага керавання.

Вікна кантэксту ўскораюцца, і длігія працэсы даследжэння, выкананне коду чылькія рэзультаты інструментаў шырока расшырваюць історыю. Агенты глыбокага рангу перакладаюць вялікі контэнт у віртуальную файлавую сістэму замест таго, каб заставіць усё ў запітаўніку. Калі рэзультат інструмента перасягае 20 000 токенав, бібліятэка зберагае яго ў настаўленым бэкендзе і залічвае шлях да файла плюс 10-радковы прэвью ў кантэксце. Калі агенту патрэбен цэлы контэнт, ён вызывае read_file чы grep. Гэта не часткаванне і не скрацанне, а цяжкаванне з выкарыстоўваннем дадзеных за патрэбай.

Функцыя кэшавання дадзеных у файлавой сістэме ўможліва падключэння: за замовчаннем — стан у памяці, локальны дыск, LangGraph Store для зберагчэння дадзеных між потакамі, або сандбоксы на кшталт Modal і Daytona.

Падагенты

Вбудованы інструмент task дазволяе галоўнаму агенту ствараць спецыялізаваныя падагенты для ізольаваных падзаданняў. Гэта мае большое значэнне, чым можа здавацца. У длігім доследчым заданні агент, які керуе всім, заполняе свой кантэкст проміжнымі крокамі, рэзультатамі пошуку і частковым выходам. За дапамогою падагентаў галоўны агент перадае падзаданне чыстаму экземпляру з чыстым кантэкстам. Штырэні працюе сама, завершае заданне і прысылае адзін падсумак, тады кантэкст галоўнага агента застаецца апранутым.

Вы можэце задаць сваіх падагентоў з іх сабой інструментамі і сістэмнымі запросамі. Пачніце з імпорту:

from deepagents import create_deep_agent, Subagent

Потым задаце адміністратара і прыўяжыце яго:

code_reviewer = Subagent(
    name="code-reviewer",
    system_prompt="You are an expert code reviewer. Analyze code for bugs, style, and performance.",
    tools=[read_file_tool],
)
agent = create_deep_agent(
    tools=[internet_search],
    subagents=[code_reviewer],
    system_prompt="You are a research and engineering assistant.",
)

Універсальны сабагент з інструментамі файловай сістэмы завжды ў наявнасці без жадных налаштаванняў.

Автаматычнае стыканне

Для дзейнасцей длігага характэру самэ гэтае ўзелка ўтварае сваю цэннасць. Калі кантэкст досягае 85% вікна мадэлі і больш няма чаго пераказваць у файлы, сістэма запускае працэс стыкання. LLM пішае структураванае стыканне, якое охопляе мету сесіі, створаныя матэрыялы і наступныя крокі, і гэтае стыканне заменяе цэлую історыю ў рабочай памяці. Автэнтычныя паведамленні зберагаюцца ў файловай сістэме як канонічныя запісы, таму пазней можна вярнуцца да конкрэтных дэтаў. Фактычна, глыбокія агенты можаць продаваць працу над складнымі задачамі без перасягнення лімітав кантэксту, што інакш давялося б рэалізаваць вручную на чыстым LangGraph.

Памяць між размовамі

Зазвычай стан трымаецца ў ўзеўзе. Аднак, настроўванне CompositeBackend з LangGraph Store дазволяе агенту зберагаць памяць між сесіямі і узеўзамі. Файлы, якія зберагліся пад шляхам /memories/ або будзь-якім іншым шляхам, які вы выберазе, застаюцца пасля перзапуску і можна ўзяць з іх інфармацыю з будзь-якай розмовы. Іспользуйце гэта, каб агент могаў прыгадаць вашы прагаперкі, прычыны кодавання ў вашым рэпазітарыі або тое, дзе застаўся доследжэнне, якое трывае калькі дзён. Спачатку імпорт:

from deepagents import create_deep_agent
from deepagents.backends import CompositeBackend, StateBackend, StoreBackend
from langgraph.store.memory import InMemoryStore

А тады прыёмы:

store = InMemoryStore()
backend = CompositeBackend(
    routes={"/memories/": StoreBackend(store=store)},
    default=StateBackend(),
)
agent = create_deep_agent(
    tools=[...],
    backend=backend,
    memory=["path/to/AGENTS.md"],  # persistent context file
)

Як взаімаюцься эты элементы

Людзі часта плутаюць іх, таму варта будзе все чытра адзначыць.

  • LangChain з’яўляецца як базовыя элементы: мадэлі, інструменты, запросы і ланцюгі. Бн являе сабою фундамент.
  • LangGraph — гэта асяроддзе выканання для стойкага, з станамі, графавага адкрыцця задач, якая керуе зберэжэнням дадзэнняў, стрымінгам, перэрывамі і складнымі умовнымі логікамі. Ён являе сабою двыгун.
  • Deep Agents — гэта інструмент, які выкарыстоўвае аба падходы. Ён не заменяе LangGraph; ён выкарыстоўвае LangGraph для всіх задач і додае API вышэйшага рэвэру з усталенымі значэннямі, тады як вам не трэба самім ствараць механізм планавання, шар файловай сістэмы, алгорытмы стыснення кантэксту і інфраструктуру падагентаў.

Можна так уявіць: LangGraph дае вам двыгун і трансмісію, а Deep Agents — автомабіль.

Для простых агентаў, верагодна, дастатнека будзе функцыя create_agent з LangChain. Калі задачы ўскладненыя, трывалыя і выклікаюць патрэбу ў велікай колькасці кантэксту, тады саме deepagents прадае свою цэну за абстракцыю.

Рэалістычны швыдкі старт: агент для даследжэння

Ёсць агент для даследжэння, які шукае інфармацыю ў Інтэрнэце і піша структураваны атлас. Спачатку трэба адмастыраваць все неабходнае:

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

Потым інструмент, інструкцыі і сам агент:

tavily_client = TavilyClient(api_key=os.environ["TAVILY_API_KEY"])
def internet_search(
    query: str,
    max_results: int = 5,
    topic: Literal["general", "news", "finance"] = "general",
    include_raw_content: bool = False,
):
    """Run a web search and return results."""
    return tavily_client.search(
        query,
        max_results=max_results,
        include_raw_content=include_raw_content,
        topic=topic,
    )
research_instructions = """You are an expert researcher.
Your job is to conduct thorough research and then write a polished report.
Use internet_search to gather information.
Write your findings to files as you go to avoid losing context.
Use write_todos to plan your research steps before starting.
"""
agent = create_deep_agent(
    model="anthropic:claude-sonnet-4-6",  # default model
    tools=[internet_search],
    system_prompt=research_instructions,
)
result = agent.invoke({
    "messages": [{
        "role": "user",
        "content": "Research the current state of agentic AI frameworks in 2025 and write a structured report."
    }]
})
print(result["messages"][-1].content)

Яго запуск пачатвае пэўную апэратуру дзеяння. Агент вызывае write_todos, каб спланаваць даследжэнне. Ён выконвае пошукі і аўтаматычна пераказвае вялікія рэзультаты у віртуальную файловую сістэму. Калі работа вяліка, ён запускае падагента для аднаго з раздэлаў. Калі трэба, ён чытае файлы знову і аб’еднвае ўсё ў фінальны атлас. Усё гэта час апаратура керуе кантэкстам, тады модэль ніколі не перакрое свой ліміт памяці. Вы не пісалі нічога з гэтай інфраструктуры, адколі яна ўжо была ўключана ў апаратуру.

Агент у команднай лініі

Пакет таксама уключае тэрмінальнага агента, створанага на аднай і той жа SDK:

pip install deepagents
deepagents  # launches the interactive CLI agent

Гэта агент для програмавання, падобны Claude Code чым Aider, але які працюе на платформе Deep Agents SDK. Ён адказвае інтэрактыўным рэжымам, нінтэрактыўным рэжымам у віглядзе «трубы» для напісання скрыптавання (флаг -n), дазволяе настаўляць спецыяльныя навыкі і выкарыстоўваць стойкую памяць. Калі вы навучыце яго правілам вашага праекту, ён будзе ўспамінаць іх з адной сесіі ў іншую. Такім чынам, SDK, які керуе агентам для доследжэнняў, таксама негайна даўае вам практычны інструмент для распрацоўшчыка.

Калі яго варта выкарыстоўваць

deepagents падходзіць вам, калі:

  • Задача выклікае патрэбу ў планаванні і многах кроках.
  • Рэзультаты працы інструмента ёсць велікімі і трэба іх кераваць працэсам дліжнай сесіі.
  • Вы хочаце дэлегавацыю задач саб-агентам без неабходнасці стварання додатковых механізмаў.
  • Вам патрэбна памяць, якая застаецца стойкай праз розныя тэксты размовы.
  • Вы ствараеце агента для програмавання чым автонамную сістэму для доследжэнняў.

Застаўцеся на create_agent або простым LangGraph, калі:

  • Агент ў простай форме, з аднім або двумя вызовамі інструментаў і короткімі адпаведзямі.
  • Вам патрэбна точная контроль над топалогіяй графа.
  • Вы ужо далекая працавалі з персоналізаваным праблемам LangGraph і не хачаце стандартных настройкаў.

Самыя дакументы гэта падтверджваюць: простыя агенты выкалікаюць простыя інструменты.

Чаму гэта важна

Час розпаведзае нам пра ўсё. Базовыя шаблоны агентаў, вызовы інструментаў, цыклы ReAct і простыя методы RAG зараз ужо добра вядомы. Але галузь яшчэ шукае спосабы забезпечыць надзею ў дзейнасці на далёкую перспектыву, у задачах, якія выкалікаюць патрэбу ў планаванні, велікім кантэксце, стабільнасці і дэлегаванні. Кожная команда, якая стварае агентаў для практычнага вжытку, была змушана рашаць гэтыя ж проблемы з нуля, а стратэгіі кантэкста, шаблоны падагентаў і прыемы зберагання інформацыі продовжваюць перадзначацца ў аднойчынныя формы.

deepagents — гэта спроба LangChain падзіць на тое, што такі рашэнні ўжо дастаткова распрасраныя, каб іх можна было стандартызаваць. Комплект з усталенымі значэннямі, вбудованай інфраструктурой і можлівасцю падключэння задніх частэй прагне перакрысці пытанне з "як нам пабудаваць апаратную базу?" на "што на самай працэўнай стадыі павінен рабіць агент?" Успех гэтага падходу залежыць ад таго, чы рэшыцціі, усталеныя з самага пачатку, застойдуць у рэальных умовах. Аднак як напрамак гэта мае сэнс.

Пачатак работы

З’явіце пакет і кліента для пошуку:

pip install deepagents tavily-python

Пасуюць, задаюце свае ключы:

export ANTHROPIC_API_KEY="your-key"
export TAVILY_API_KEY="your-key"
export LANGSMITH_TRACING=true  # optional, for debugging
export LANGSMITH_API_KEY="your-key"

У адміністрацыі дакументаў LangChain ёсць аптака пра Deep Agents, якая раскрывае тэмы бэкэндаў, сабагентаў, сэндбоксаў, удзеле чалавека у працэсе і кліентскага інтэрфейсу. Калі вы ствараеце ўсё-такі серйозны продукт з вікорыстаннем агентаў, выдзейце сабе калькі часу, каб з’ясаваць, як гэта паслужыць вашай структуры, нават калі вы не будзеце вжываць гэты падход адразу.