快速开始指南
环境要求
前置条件
- Python 3.8+
- 一个支持工具调用的 LLM API 密钥(例如 Anthropic、OpenAI 等)
- 基本的 Python 编程知识
模型选择
DeepAgents 支持任何具备工具调用能力的模型。建议在实际项目中使用最新的模型以获得最佳性能:
- Anthropic: Claude 3.5 Sonnet 或更新版本
- OpenAI: GPT-4 或更新版本
- Google: Gemini 系列
- 其他支持工具调用的开源模型
安装步骤
方式一:使用 pip(推荐)
pip install deepagents
方式二:使用 uv(更快)
uv init
uv add deepagents
uv sync
可选依赖
根据你的使用场景,可能需要安装额外的依赖:
# 网络搜索支持
pip install deepagents tavily-python
# 深度研究支持
pip install deepagents arxiv
# 沙盒执行支持
pip install deepagents e2b-code-interpreter
配置 API 密钥
所有 LLM 提供商都要求你设置 API 密钥作为环境变量。
使用 .env 文件
在项目根目录创建 .env 文件:
ANTHROPIC_API_KEY="your-anthropic-key"
TAVILY_API_KEY="your-tavily-key"
然后在 Python 代码中加载:
from dotenv import load_dotenv
load_dotenv()
直接设置环境变量
export ANTHROPIC_API_KEY="your-anthropic-key"
export TAVILY_API_KEY="your-tavily-key"
你的第一个 Agent
最简单的例子
创建一个文件 simple_agent.py:
from deepagents import create_deep_agent
def get_weather(city: str) -> str:
"""获取指定城市的天气预报。"""
return f"{city}的天气是晴天!"
agent = create_deep_agent(
tools=[get_weather],
system_prompt="你是一个友好的天气助手。",
)
# 运行代理
result = agent.invoke(
{"messages": [{"role": "user", "content": "北京的天气怎么样?"}]}
)
# 输出结果
print(result["messages"][-1].content)
运行代码:
python simple_agent.py
代码说明
- 导入框架:导入
create_deep_agent函数 - 定义工具:创建一个带有文档字符串的普通 Python 函数
- 函数名自动成为工具名
- 文档字符串用作工具描述
- 类型注解用于参数验证
- 创建代理:通过
create_deep_agent()创建代理实例- 传入可用工具列表
- 设置系统提示词
- 执行代理:调用
invoke()方法,传入完整的消息历史 - 处理结果:从返回的字典中提取最后一条消息
一个更实用的例子:研究代理
创建一个 research_agent.py,演示文件系统和搜索能力:
import os
from tavily import TavilyClient
from deepagents import create_deep_agent
tavily_client = TavilyClient(api_key=os.environ["TAVILY_API_KEY"])
def search_web(query: str) -> str:
"""在互联网上搜索信息。"""
response = tavily_client.search(query=query, max_results=5)
results = response.get("results", [])
formatted = "\n".join([f"- {r['title']}: {r['content']}" for r in results])
return formatted or "未找到相关信息"
agent = create_deep_agent(
model="anthropic:claude-sonnet-4-6",
tools=[search_web],
system_prompt="""你是一个研究助手。
你的职责是:
1. 根据用户的查询进行网络搜索
2. 整理和总结搜索结果
3. 如果需要,进行多次搜索以获得全面的信息
4. 提供可信度高的信息"""
)
# 执行研究任务
result = agent.invoke(
{"messages": [{"role": "user", "content": "请研究最新的 AI 发展趋势"}]}
)
print(result["messages"][-1].content)
工作流程理解
代理执行流程
用户输入
↓
代理接收消息
↓
LLM 分析并调用工具
↓
工具执行并返回结果
↓
LLM 进一步分析(如需要)
↓
重复上述过程直到完成任务
↓
返回最终响应
消息格式
DeepAgents 使用标准的消息格式:
messages = [
{"role": "user", "content": "用户的问题"},
{"role": "assistant", "content": "代理的响应"},
# ... 更多消息
]
调试和日志
启用 LangSmith 追踪
为了更好地理解代理的行为,建议启用 LangSmith 追踪:
export LANGSMITH_TRACING=true
export LANGSMITH_API_KEY="your-langsmith-key"
export LANGSMITH_PROJECT="your-project-name"
这样所有的 API 调用、工具执行和中间结果都被记录,便于调试。
添加日志输出
import logging
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
# 现在所有 deepagents 的调试信息会被打印
常见错误排查
错误:ModuleNotFoundError: No module named 'deepagents'
原因:deepagents 未安装
解决:
pip install deepagents
错误:API 密钥认证失败
原因:
- 环境变量未正确设置
- 密钥已过期或无效
- 密钥对应的账户已禁用
解决:
- 检查环境变量名称是否正确
- 在提供商控制台验证密钥
- 生成新的密钥
工具未被调用
原因:
- 工具文档字符串不清晰
- 系统提示词未正确引导模型使用工具
- 模型认为无需使用工具
解决:
- 改进工具的文档字符串
- 在系统提示词中明确指出何时使用工具
- 更新为更新的模型版本
下一步
现在你已经掌握了基础知识,接下来可以:
完整示例项目模板
my-deepagents-project/
├── .env # API 密钥配置
├── .env.example # 密钥模板
├── requirements.txt # 依赖列表
├── agent.py # 主要代理逻辑
├── tools/ # 自定义工具目录
│ ├── __init__.py
│ ├── search.py # 搜索工具
│ └── data.py # 数据工具
├── skills/ # 技能库
│ └── research/
│ └── SKILL.md
└── README.md # 项目文档