Практычныя прытамулі: Системы AI LangChain Deep Agents
Практычныя прыказкі: LangChain Deep Agents AI Systems — кантракты, перакрыццяі і слоты для коду для команд, якіе викорыстоўваюць гэты патэрн.
Існавайце гэта як перапрацоўаны варыянт ідэй з кніги “LangChain Deep Agents AI Systems” для аператараў: чыстыя этапы, арганізаваныя блакі коду і прыметкі па вяснаванню, якія застаюцца пасля перадачы. Этап “Адгледжэнне” найкраща працюе, калі яго розглядаць як меркаваны об’ект. Запісаўце адна ідеальная транскрыпцыю, адзін прыклад неудачы і прыметкі па атрыбуцыі да пачатку роботы, прычаму расшырюваць масштаб. Дакументаваўце як шлях успеху, так і шлях вяснавання разам. Перапрыбуткі, людзкія контрольныя пункты і обработка некоректных паведамленняў є частью продукту, а не наступным етапам дорабкі.
Што на самай працы ёсць Deep Agents
Для ўрагу «What Deep Agents Actually» неабходна пазначыць вхідныя даны, адпаведальнага за крок і критэрыя завершэння пры перадзмене коду. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю, не прабуючы спадарожваць схованы стан. Валідзіце маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выконваецца, прычына павинна быць асоўваная з адной конкрэтнаяя адпаведальнасцю, а не з заплутаным ланцужкам задач. Заставляйце людзей апраўдваць тыя крокі, якія ведуць да выдаткаў грошаў або зміняюць даны ў працэсе виробніцтва. Компіляцыйныя налашчэння не є гарантыяй полнай адпрацоўкі бізнес-процэса.
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?"}]}
)
Пяць спроможнасцей, якія робяць гэта ўнікальным
Для стадіі «Пяцьх спроможнасцей» неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і критэрыя завершэння пры зміне коду. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю, не падозрываючы схованы стан. Спрыяйце цій стадіі як даговору межаў вхідных і перакананых выходных даных. Даўце назвы артыфактам, узначыце перакананні ў успеху і адмовіцеся ад тыхнай частковай рэалізацыі без паведамлення. Заставьце людзкую апраўду на тых кроках, дзе выкорыстоўваюцца грошы чы зміняюцыся даны для працы. Компіляцыйныя налашчэнні не ўзначаюць павнае выпаненне задачі.
1. Вбудованая планавання з write_todos
Для функцыі «1 Built-in Planning with stage» неабяжна прадзефінаваць вхідныя даны, адпраўніка крока і крэтарыя выходу пры перадзмене коду. Аператары должны магчыма было перзапускаць крок з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Запісвайце час выконання і кост токенаў або запытаў разам з функцыйнаімі рэзультатамі. Відразлівае прадставленне костоў запобегае неспакойным рахункам, калі процес пераходзіць з дэмовай среды ў спяльнаныя сераўеры. Заставіце людзкую апраўдку для тых крокаў, якія витрачаюць грошы або зменяюць даны ў працэсе виробніцтва. Праця ў час компілявання не є падставай для стверджэння, што продукт ўсё завершаны. Для функцыі «1 Built-in Planning with stage» неабяжна прадзефінаваць вхідныя даны, адпраўніка крока і крэтарыя выходу пры перадзмене коду. Аператары должны магчыма было перзапускаць крок з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Дакументавайце як «шчаслівы» шлях, так і шлях вяснавання проблем. Перапрыбуткі, людзкія контрольныя пункты і обработка некоректных запытаў є частью самага продукту, а не чымсь, што дадаецца пазней.
2. Вяртуальная файлавая система
Калі працуеце над стадзіяй «2. Вяртуальная файлавая система», спачатку запісайце умовы: неабяжлівыя данні, сигнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі список контроля дапамагае заліцвачыць змяны ў кодзе. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшоў, прычына нявыпання павінна вказываць на адную адпаведальнасць, а не на заплутаны ланцюг задач. Зробіце перапактаванне пасля дорогіх крокаў. Програма не павінна зноў ставіць плату за той самы вызов LLM, калі аператар праканае пазнейшы вузел.
3. Стварэнне падагентаў
Калі працюеце над 3-й стадзіяю стварэння падрабандзёў, спачатку запісайце кантракт: неабходныя вхідныя даны, сигнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі список перакладоў дапамагае заліцвачыць пазнейшыя змены ў кодзе. Спрэцьвачайце гэтую стадзію як кантракт межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Дайце назвы артыфактам, задаць правіла пераканання успеху і не падтрымайце тыхія частковыя завершэння. Зробіце перакладоў пасля дорогіх крокаў. Програма не должна занова ставіць плату за той самы вызыв LLM, калі аператар прабуе зноў выконаць пазнейшы вузел.
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.",
)
4. Автаматычная стисненне і структуруванне контэксту
Калі працуеце з 4 стадзямі Аўтаматычнага стыснення контэксту, спачатку запішыце умовы вярбавання: неабходныя данні, сігнал успеху і тое, што выходзіць пад частковым нявыпаннем. Такі список дапамагае заліцвачыць пазнейшыя змены ў кодзе. Запісвайце час выканання і кост токеноў або запытаў праза функцыйнае рэзультат. Відкрытыя данні пра косцы запобегаюць неспакойным рахункам, калі працэс пераходзіць з дэмаверсіі ў спяльныя среды. Зробіце контрольную пазнаку пасля дорогіх крокаў. Функцыя вярнення не павінна знову нараховваць косты той самай вызову LLM, калі аператар прабуюць зноў запрацаваць пазнейшы вузел. Калі працуеце з 4 стадзямі Аўтаматычнага стыснення контэксту, спачатку запішыце умовы вярбавання: неабходныя данні, сігнал успеху і тое, што выходзіць пад частковым нявыпаннем. Такі список дапамагае заліцвачыць пазнейшыя змены ў кодзе. Дакументавайце як шлях успеху, так і шлях вяснавання. Прабывы, людзкія контролі і обработка некоректных паведамленняў є часткай продукту, а не пазнейшым дапрацоўкам.
5. Даўнэйшая памяць у межах размов
Метод 5 Даўнэйшай памяці працуе наякша, калі яго спрыяваць як мерыемую структуру. Запісаўце адну ідеальную транскрыпцію, адзін прыклад неудачы і зьмест карэкцый перш чым расширваць масштаб. Валічыце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісьць крок не выходзіць, прычына неудачы павінна вказваць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач. Рэзультаты графа павінны быць простымі та з адначытаемым типам. Вярнутыя структуры маскуюць інфармацыю пра тое, каней вузел запісаў канкрэтны поле, і спакойваюць працу пасля перарываў.
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
Этап «Як гэта пасходзіць» працуе наяўнейша, калі яго розглядаць як вимерную паверхню. Запісаўце адна «золатая» транскрыпцыю, адин прыклад неудачы і запіс пра вярнэнне да поперадньага стану прычым расшырэнню масштаба. Разглядзіце гэты этап як кантракт межа вхіднымі даннымі і падтвердзенымі выходнымі рэзультатамі. Даўце назвы артыфактам, задаце критэрыя успеху і не падзеўляйцеся частым, непূরным выкананнем задачы. Храніце стан графа ў простам і типаваным формате. Вкладзеныя блокі маскуюць інфармацыю пра тое, який вузел запісаў кожны поле, і спакшваюць продажчэнне роботы пасля перарываў.
Стварэнне агента для даследжэнняў: Асалівны карцэн
Этап стварэння агента для даследжэння працюе наяўней, калі яго спрыяваць як мерыемую паверхню. Зберагчыце адна ідеальная транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расширваць масштабы. Запісвайце час выканання і кост токена або запыту па боку ад функцыйнальных рэзультатаў. Візуабельнасць костаў з самага пачатку запобегае неспакойным рахункам, калі процес пераходзіць з дэмаверсіі ў спяльныя среды. Храніце стан графа ў простам і типаваным формате. Вярнутыя блокі маскуюць інфармацыю пра тое, який вузел запісаў які поле, і спакшваюць продовжэнне роботы пасля перарываў. Этап стварэння агента для даследжэння працюе наяўней, калі яго спрыяваць як мерыемую паверхню. Зберагчыце адна ідеальная транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расширваць масштабы. Дакументавайце як успішны, так і вярнучыся шляхы развіцця. Перапрыбуткі, людзкі контроль і обработка некоректных паведамленняў є часткай продукту, а не чымсь, што дадаецца пазней.
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)
The Deep Agents CLI
Для стадіі The Deep Agents CLI неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крэтыяры завершэння пры змены коду. Аперацыйныя працавнікі павінны магчымае перазапускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выйшоў, прычына нехарактэрыстыкі павінна вказываць на адзін конкрэтны аспект, а не на заплутаны процес. Заставіць людзкую апраўду для тых крокоў, якія выкарыстоўваюць грошы або зміняюць даны ў працэсе. Компіляцыйныя налашчэння не ўзначаюць павнае адпрацоўванне бізнес-процэса.
pip install deepagents
deepagents # launches the interactive CLI agent
Калі вам трэба (і калі не трэба) яго выкарыстоўваць
Для ўрагу «Калі трэба» і наступных стадзій неабходна пазначыць вхідныя даны, адпаведальнага за кожны крок і крэтарыя выходу пры зміне коду. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю, не падозрываючы прыхованы стан. Спрыяйце цій стадзіі як даговору межаў вхідных даных і перакананых выходных рэзультатаў. Даць назвы артыфактам, пазначыць крэтарыя успеху і не прымаць тыхню частковую завершанасць. Заставіць людзкія апраўленні для тых крокаў, якія выкарыстоўваюць грошы або зміняюць даны ў працэсе. Компіляцыйныя налашчанні не ўзроўнаўцуюцься з пачатковай завершанасцю задачы.
Чаму гэта важная больш, чым выпуск іншай парадыгры
У стадії «Чаму гэта мае большое значэнне» неабяжна практычная визначыць інпуты, адміністратара крока і крэтэрыя выходу пры зміне коду. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Запісвайце час выконання і кост токенаў або запытаў разам з функцыйнальнымі рэзультатамі. Відразлівае прадставленне костаў запобегае неспакойным рахункам, калі процес пераходзіць з дэмовай среды ў спакульную. Заставіце людзкую апраўдку на тых этапах, дзе выконваюцца грошовыя расходы або зміняюцыся даныя праўай среды. Працэс складання коду не є адпаведнікам пачатковай готовасці продукту. У стадії «Чаму гэта мае большое значэнне» неабяжна практычная визначыць інпуты, адміністратара крока і крэтэрыя выходу пры зміне коду. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Дакументавайце як «шчаслівы» шлях, так і шлях вяснавання проблем. Перапрыбуткі, людзкія контрольныя пункты і обработка некоректных паведамленняў є часткай самага продукту, а не чымсь, што дадаецца пазней.
Пачатак работы
Калі працуеце над этапам «Пачатак работы», спачатку запісайце умовы викорыстоўвання: неабходныя даны, сігнал успеху і тое, што выходзіць у разе частковага невыпання. Такі список контролю дапамагае залічваць пазнейшыя змены ў кодзе чыста.
Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, невыпанне должна паказваць на адну конкрэтную відпаведальнасць, а не на заплутаны ланцюг задач.
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"
Чек-ліст для эксплуатацыі
Калі працуеце над этапам «Чек-ліст для эксплуатацыі», спачатку запісайце умовы викорыстоўвання: неабходныя даны, сігнал успеху і тое, што выходзіць у разе частковага невыпання. Такі список контролю дапамагае залічваць пазнейшыя змены ў кодзе чыста.
Зберагаюце канфігурацыю праза ў кодзе прыемленае. Файлы сяродавішча, храненні секрэтных дадзенаў і флагі функцыйяй должны знаходзіцца ў аднам месцы, куды аператары можаюць адбавіць аудыт без неабяжнага чытання всей структуры.
Ствараюце контрольныя пункты пасля дорогіх крокаў. Функцыя вярнення роботы не должна занова нарахоўваць плата за той самы вызыв LLM, калі аператар прабуе зноў выконаць пазнейшы вузел.
Фіксуйце версіі залежнасцяў і запісвуйце хэш адобраза, які выканаў дамэ. Возможнасць павторнага стварэння результата лепшая за традыцыйныя знаёмства.
Документаваць трэба як шлях успеху, так і шлях вярнення да нормальнага стану. Прабывы, людзкія контрольныя пункты і обработка некоректных паведамленняў є часткай продукту, а не чымсь, што дадаецца пазней.
Ствараюце контрольныя пункты пасля дорогіх крокаў. Функцыя вярнення роботы не должна занова нарахоўваць плата за той самы вызыв LLM, калі аператар прабуе зноў выконаць пазнейшы вузел.
Перш чым запускать стак, заморозьце версіі, зафіксавце «золаты» транскрыпты для критичных шляхоў і паказваце крокі для вярнення да пачатковага стану. У спільных середавішчах неабходны ліміты частоты запытоў, перакананні ў належнасці тэнантам і чысткі власнік для ротацыі секрэтных даных. Валіце надзейнасць працы над красавімі, але еднаковыя дэманстрацыямі.
Прыметка для c6305757c342: не кладзіце ключы прадаўцаў у репазітарый, задаце верхнюю межу токенаў на кожную сесію і зберагачыце транскрыпты празаўседы ў фікстурах eval, каб пазнейшыя замены модэляў заставаліся порównаннімы.