🔰 Deep Agents Quickstart — собираем первого агента
Quickstart-страницу Deep Agents целиком.
Это 6 шагов + объяснение «как это работает» + куда идти дальше. Разбираю по косточкам.
🎯 Что мы построим
Research-агент, который:- ищет информацию в интернете- управляет контекстом через файловую систему (сбрасывает большие результаты в файлы)- спавнит субагентов для сложных подзадач- синтезирует финальный отчёт
📦 Шаг 1: Установка
bashКопировать# pip pip install deepagents # или uv (быстрее) uv init uv add deepagents uv sync Требования:API-ключ любого провайдера + модель с поддержкойtool calling.
🔑 Шаг 2: API ключи
bashКопироватьexport ANTHROPIC_API_KEY="your-api-key"# или OpenAI / Google / OpenRouter / Fireworks / Baseten / Ollama# Tavily нужен только если не используешь встроенный search провайдераexport TAVILY_API_KEY="your-tavily-api-key"> 💡Совет:Можно ходить черезLangSmith Gateway— свои ключи или кредиты LangSmith.
🔍 Шаг 3: Поисковый инструмент
Вариант А — встроенный search провайдера (рекомендуется):pythonКопироватьfrom deepagents import create_deep_agent # Google — server-side, без пакета и ключа internet_search ={"google_search":{}}# OpenAI internet_search ={"type":"web_search"}# Anthropic internet_search ={"type":"web_search_20260209","name":"web_search"}
Вариант Б — Tavily (любой провайдер):pythonКопировать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"])definternet_search( query:str, max_results:int=5, topic: Literal["general","news","finance"]="general", include_raw_content:bool=False,):"""Run a web search"""return tavily_client.search( query, max_results=max_results, include_raw_content=include_raw_content, topic=topic,)
🤖 Шаг 4: Создаём агента
python
Копироватьresearch_instructions ="""You are an expert researcher. Your job is to conduct thorough research and then write a polished report. You have access to an internet search tool as your primary means of gathering information.
`internet_search` Use this to run an internet search for a given query. You can specify the max number of results to return, the topic, and whether raw content should be included. """ agent =create_deep_agent( model="anthropic:claude-sonnet-4-6",# или google_genai:gemini-3.6-flash, openai:gpt-5.5 и т.д. tools=[internet_search], system_prompt=research_instructions,)3 аргумента— и агент готов. Под капотом:FilesystemMiddleware+SubAgentMiddleware+ LangGraph runtime.
📊 Шаг 5: LangSmith (опционально, для трассировки)
bashКопироватьexport LANGSMITH_TRACING=true export LANGSMITH_API_KEY="your-langsmith-api-key"В UI LangSmith увидишь: tool calls, делегирование субагентам, LLM responses.
🚀 Шаг 6: Запуск
pythonКопироватьresult = agent.invoke({"messages":[{"role":"user","content":"What is langgraph?"}]})print(result["messages"][-1].content)
Всё.
Никакой ручной сборки графа, никаких checkpointer'ов, никакой маршрутизации.
🧠 Как это работает под капотом
Агентавтоматически:1.Ищетчерезinternet_search2.Сбрасывает большие результаты в FSчерезwrite_file/read_file— экономит контекстное окно3.Спавнит субагентовдля сложных подзадач4.Синтезирует отчёт> 💡Хочешь планирование черезwrite_todos?
Опционально подключиTodoListMiddleware:>pythonКопировать>from langchain.agents.middleware import TodoListMiddleware > agent =create_deep_agent(model=..., middleware=[TodoListMiddleware()])>
🌊 Streaming из коробки
pythonКопироватьfor chunk in agent.stream({"messages":[{"role":"user","content":"..."}]}):print(chunk)Видишь tool calls, tool results, ответы субагентов в реальном времени.---
🆚 Что под капотом: маппинг на LangGraph
┌─────────────────────┐
│ FilesystemMiddleware│ ← write_file, read_file, ls...
│ (offload контекста) │
└──────────┬──────────┘
│
[User Input] → [Agent Node] ───┼──→ [ToolNode: search, write_file, ...]
↑ │ │
│ ↓ │
│ [SubAgentMiddleware] ←─── если задача │
│ │ сложная, спавнит │
│ ↓ субагента │
└──── [Messages State] ←────────────────────────┘
Компонент Deep Agents | LangGraph-примитив ||----------------------|---------------------||create_deep_agent| СборкаStateGraphсMessagesState|| FilesystemMiddleware | Кастомные node + middleware, оборачивающие tool calls || SubAgentMiddleware |Command(goto=...)или invoke sub-graph ||agent.invoke|graph.invokeс checkpointer'ом под капотом ||interrupt_on|interruptиз LangGraph || Streaming |graph.streamс типизированными events |То естьDeep Agents — это сахар над LangGraph, который уже решил за тебя типовые проблемы: где хранить контекст, как делегировать, как не упасть от токенов.
🚦 Следующие шаги
Quickstart предлагает 4 направления:
1.🎨 Customize— кастомные system prompts, tools,subagents
2.🧠 Memory— долговременная память черезAGENTS.md
3.☁ Deploy to production—Managed Deep Agentsв LangSmith4.🧪 Test & evaluate— автоматические тесты в LangSmith Evaluation---
🛠 Что делать прямо сейчас
Если хочешьсобрать и запуститьпервого агента — у тебя всё есть выше:
1. Выбери провайдера (рекомендуюAnthropic— там автоматический prompt caching экономит деньги)
2.pip install deepagents
3. Скопируй код шагов 3–64.
Экспериментируй с system_prompt — это самый мощный рычаг