DeepAgents
你将学会: 用 create_deep_agent 拿到文件系统和子代理;知道规划是 opt-in。
前置: L02、L09。还是「模型调工具」循环,多了 harness。

适合:要写/搜很多中间文件、要派隔离上下文的小弟、任务会跑很久。
不适合:一个天气查询(L02 就够)。
write_todos 从 deepagents 0.7 起要自己加 TodoListMiddleware。DeepSeek 没有内置网页搜索。
完整代码
from dotenv import load_dotenv
load_dotenv()
from deepagents import create_deep_agent
from langchain.agents.middleware import TodoListMiddleware
from langchain.chat_models import init_chat_model
model = init_chat_model(
"deepseek:deepseek-chat",
temperature=0.5,
max_tokens=2500,
timeout=300,
max_retries=6,
)
def get_weather(city: str) -> str:
"""Get weather for a given city."""
return f"It's always sunny in {city}!"
agent = create_deep_agent(
model=model,
tools=[get_weather],
system_prompt="需要事实时调用工具。用中文短答。",
)
print(agent.invoke(
{"messages": [{"role": "user", "content": "sf 天气?"}]}
)["messages"][-1].content)
planned = create_deep_agent(
model=model,
tools=[get_weather],
middleware=[TodoListMiddleware()],
)
print("已创建带 write_todos 的 agent =>", type(planned).__name__)
子代理(可选加跑)
from dotenv import load_dotenv
load_dotenv()
from deepagents import create_deep_agent
from langchain.chat_models import init_chat_model
model = init_chat_model(
"deepseek:deepseek-chat",
temperature=0.5,
max_tokens=2500,
timeout=300,
max_retries=6,
)
def internet_search(query: str) -> str:
"""Run a web search. Demo stub."""
return f"Hits for {query}: LangGraph 是图运行时。"
researcher = {
"name": "researcher",
"description": "调研一个主题。一次一个主题。",
"system_prompt": "调用 internet_search,只返回不超过 80 字的摘要。",
"tools": [internet_search],
}
agent = create_deep_agent(
model=model,
subagents=[researcher],
system_prompt="用户要调研时,用 task 工具交给 researcher。",
)
print(agent.invoke({
"messages": [{"role": "user", "content": "调研 LangGraph 是什么,中文三句。"}]
})["messages"][-1].content)
磁盘上的 Skills/Memory 见仓库 14-DeepAgents/Skills技能.py(读 _skills/)。和 Claude Agent SDK 的差异见 Comparison对比.py。
练习
- 用自己的话填这张表:天气查询 / 公司制度问答 / 调研十篇资料写报告 —— 分别用 L02、L05 还是本课?
- 不加
TodoListMiddleware问一个多步骤问题,再加了对比(观察是否出现 todos)。
本章验收
- 能独立写出最小
create_deep_agent - 能解释和
create_agent的差别(文件系统、子代理、规划 opt-in)
阶段 3 过关: 能向别人讲清三套入口,不背定义,用「我遇到什么问题」举例。
下一课:观测与部署
JavaWeb
Spring
MyBatis
linux
消息队列
JavaSE
工具
片段
AI
搜索
dy