Deep Agents
扫码查看

用于构建高级智能体的Python开发包

Deep Agents

综合介绍

Deep Agents 是一个Python开发包,它提供了一种通用的方法来构建能够处理复杂、多步骤任务的高级智能体(Agent)。传统的智能体通常以一个简单的循环方式调用工具,这种架构在处理长周期和复杂任务时会显得能力不足,而Deepagents通过引入规划工具、子智能体、文件系统和详细的提示词工程,解决了这一局限性。该项目的创建者是LangChain的作者Harrison Chase,其主要灵感来源于一个名为“Claude Code”的应用,旨在提供一个更具通用性的高级智能体构建框架。开发者可以使用Deepagents轻松地为自己的应用创建一个高级智能体,并通过组合不同的工具和指令,使其能够胜任研究、编码等多种复杂工作。

功能列表

  • 高级智能体创建: 提供create_deep_agent函数,快速构建一个集成了规划、文件操作和子智能体调用能力的高级智能体。
  • 内置规划工具: 内置一个简单的待办事项(Todo)规划工具,智能体可以通过该工具制定计划并追踪任务,从而更好地处理复杂流程。
  • 模拟文件系统: 提供一套虚拟文件系统工具,包括lsedit_fileread_filewrite_file。这些工具在内存中模拟文件操作,避免了直接操作本地文件系统带来的风险,允许多个智能体并行运行而互不干扰。
  • 支持子智能体: 允许主智能体调用一个或多个子智能体。这个功能有助于“上下文隔离”,避免主智能体的任务环境被污染。用户可以为子智能体定义不同的指令和工具集,使其专注于特定任务。
  • 可定制的工具集: 允许开发者传入自定义的工具列表,主智能体和子智能体都可以调用这些工具来完成特定任务。
  • 详细的系统提示: 内置了一个受“Claude Code”启发的详细系统提示(System Prompt),为智能体提供了如何使用内置工具和子智能体的清晰指令。这个提示对于确保智能体能够成功执行深度任务至关重要。
  • 模型可定制: 默认使用claude-sonnet-4-20250514模型,但用户可以根据需要替换为任何兼容LangChain的模型对象。
  • 与LangGraph集成: 基于LangGraph构建,可以直接利用LangGraph的流式处理、人在回路(human-in-the-loop)、内存管理等高级功能。

使用帮助

Deepagents是一个用于创建高级AI智能体的Python库,它封装了规划、文件管理和子智能体等复杂功能,让开发者可以专注于业务逻辑。以下是详细的安装和使用流程。

安装

你可以通过pip直接安装Deepagents。同时,为了运行基本示例,还需要安装tavily-python用于网络搜索。

pip install deepagents tavily-python

核心概念

Deepagents的核心是create_deep_agent函数,它通过整合以下四个关键组件来构建一个“深度”智能体:

  1. 规划工具 (Planning Tool): 智能体可以创建一个计划来指导其后续行动。
  2. 子智能体 (Sub Agents): 允许智能体将特定任务委托给专门的子智能体处理,以隔离上下文并提高效率。
  3. 文件系统 (File System): 提供一个虚拟的文件读写环境,方便智能体在执行任务时存储和读取信息。
  4. 详细的提示 (Detailed Prompt): 内置强大的系统提示,指导智能体如何协同使用上述工具。

快速上手:创建一个研究智能体

下面是一个创建研究智能体的简单示例,它利用Tavily搜索引擎来回答关于“LangGraph”是什么的问题。

1. 准备工作首先,你需要从Tavily获取一个API密钥,并将其设置为环境变量。

import os
# 推荐使用os.environ来管理你的API密钥
os.environ["TAVILY_API_KEY"] = "你的Tavily API密钥"```
**2. 定义工具**
你需要定义一个或多个工具,让智能体可以使用。在这个例子中,我们定义一个`internet_search`工具。
```python
from typing import Literal
from tavily import TavilyClient
def internet_search(
query: str,
max_results: int = 5,
topic: Literal["general", "news", "finance"] = "general",
include_raw_content: bool = False,
):
"""使用此工具通过指定的查询运行网络搜索。"""
tavily_async_client = TavilyClient(api_key=os.environ["TAVILY_API_KEY"])
return tavily_async_client.search(
query,
max_results=max_results,
include_raw_content=include_raw_content,
topic=topic,
)

3. 编写智能体指令为你的智能体编写清晰的指令,告诉它应该扮演什么角色以及如何使用提供的工具。

research_instructions = """
你是一个专业的研究员。
你的任务是进行彻底的研究,然后撰写一份精炼的报告。
你可以使用以下工具:
## `internet_search`
使用此工具对给定的查询进行互联网搜索。你可以指定结果数量、主题以及是否包含原始网页内容。
"""```
**4. 创建并调用智能体**
现在,使用`create_deep_agent`函数创建智能体,并调用它来执行任务。
```python
from deepagents import create_deep_agent
# 创建智能体实例
# 参数1: 工具列表
# 参数2: 指令
agent = create_deep_agent(
tools=[internet_search],
instructions=research_instructions,
)
# 调用智能体执行研究任务
result = agent.invoke({"messages": [{"role": "user", "content": "langgraph是什么?"}]})
# 查看结果
print(result)

高级用法:自定义子智能体

当你需要处理更加复杂的任务时,可以定义专门的子智能体。子智能体拥有自己独立的提示和工具集,非常适合用于处理需要“上下文隔离”的子任务。

例如,你可以创建一个专门用于深度研究的子智能体。

1. 定义子智能体子智能体通过一个字典列表进行定义,每个字典包含namedescriptionprompt等字段。

# 为子智能体编写专门的提示
sub_research_prompt = """你是一个专门进行深度研究的子智能体。请使用分配给你的工具来回答更深入的问题。"""
# 定义子智能体
research_sub_agent = {
"name": "research-agent",
"description": "用于研究更深入问题的智能体",
"prompt": sub_research_prompt,
# 可以在这里指定该子智能体能使用的工具,默认为全部工具
# "tools": ["internet_search"] 
}
# 将子智能体列表传递给主智能体
agent = create_deep_agent(
tools=[internet_search],
instructions=research_instructions,
subagents=[research_sub_agent]
)

在上面的配置中,主智能体在分析任务时,如果发现一个问题需要深入研究,它就可以调用名为research-agent的子智能体来处理。

使用内置文件系统

Deepagents提供了一个基于内存的虚拟文件系统,智能体可以用它来读写文件,而不会影响本地磁盘。

你可以在调用智能体时传入初始文件,并在结果中取回最终的文件状态。

# 初始文件状态
initial_files = {
"plan.txt": "第一步:研究LangGraph的定义。第二步:总结其核心功能。",
"notes.txt": ""
}
# 调用智能体,并传入文件
result = agent.invoke({
"messages": [{"role": "user", "content": "根据plan.txt执行研究,并将笔记写入notes.txt"}],
"files": initial_files
})
# 智能体执行完毕后,从返回结果中获取文件
final_files = result["files"]
print(final_files.get("notes.txt"))

智能体在执行过程中可以使用write_fileread_fileedit_filels等内置工具与这个虚拟文件系统进行交互。这个功能对于需要编写代码、生成报告或管理多文档任务的场景非常有用。

应用场景

  1. 深度研究与报告撰写用户提出一个复杂的研究课题,例如“分析人工智能在金融行业的最新应用”。Deepagents可以制定一个研究计划,利用搜索工具分步收集信息,使用文件系统工具将初步发现和关键数据点记录在虚拟文件中,最终整合所有信息生成一份结构清晰、内容详实的分析报告。
  2. 自动化代码生成与调试开发者可以创建一个“编码智能体”,用于根据需求文档自动编写代码。该智能体可以先使用write_file工具创建代码文件,然后编写代码。如果遇到问题,它可以调用搜索工具查找解决方案,或使用edit_file工具进行调试和修改,整个过程无需人工干预。
  3. 复杂任务规划与执行面对一个需要多个步骤才能完成的宏大任务,例如“为我的新项目创建一个完整的营销计划”,Deepagents可以首先利用其规划能力,将大任务分解为多个子任务(如市场分析、目标受众定位、渠道选择、内容创建等)。然后,它可以逐一执行或委托给专门的子智能体处理每个子任务。

QA

  1. Deepagents和LangChain是什么关系?Deepagents是由LangChain的作者创建的,并且基于LangChain的另一个库LangGraph构建。你可以把它看作是LangChain生态系统中的一个高级应用,它利用LangChain和LangGraph的核心功能,提供了一个更具体、更强大的智能体构建框架。
  2. 使用Deepagents是否需要付费?Deepagents本身是一个开源的Python库,使用它是免费的。但是,你在使用它时调用的底层大语言模型(LLM)或外部工具(如Tavily搜索API)可能会产生费用,这取决于你使用的服务商的定价策略。
  3. 相比于普通的LangChain智能体,Deepagents的主要优势是什么?主要优势在于它为处理复杂、长周期任务提供了“深度”。普通的智能体可能在一个简单的循环中操作,容易偏离目标或陷入死循环。Deepagents通过引入内置的规划工具、文件系统和子智能体机制,让智能体能够制定和执行长期计划,管理上下文信息,从而完成更具挑战性的工作。
  4. 我可以使用自己的大语言模型吗?可以。create_deep_agent函数接受一个model参数,你可以传入任何兼容LangChain的模型对象。这为你提供了极大的灵活性,可以选择使用OpenAI的GPT系列、Anthropic的Claude系列,或者其他开源模型。
微信微博Email复制链接