第二章:环境搭建

本节课手把手教你搭建开发环境,包括Python安装、DeepAgents及各模型SDK的配置,让你从零开始跑通第一个Agent。

2.1 安装 DeepAgents

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 基础安装
pip install deepagents

# 如果你用 OpenAI
pip install deepagents langchain-openai

# 如果你用 Anthropic
pip install deepagents langchain-anthropic

# 如果你用 Google Gemini
pip install deepagents langchain-google-genai

# 全家桶(推荐初学者)
pip install deepagents langchain-openai langchain-anthropic langchain-community

支持的模型提供商:

提供商模型字符串示例安装命令
OpenAI"openai:gpt-4o"pip install langchain-openai
Anthropic"anthropic:claude-sonnet-4-6"pip install langchain-anthropic
Google"google_genai:gemini-2.5-flash"pip install langchain-google-genai
Azure OpenAI"azure_openai:gpt-4o"pip install langchain-openai
Ollama(本地)"ollama:llama3"pip install langchain-ollama
OpenRouter"openrouter:anthropic/claude-sonnet-4-6"pip install langchain-openrouter
百炼(千问)见下方国内模型接入pip install langchain-openai

2.2 API Key 配置

1
2
3
4
5
6
7
8
9
10
# 选择你使用的模型厂商,设置对应的环境变量
export OPENAI_API_KEY="sk-..."
export ANTHROPIC_API_KEY="sk-ant-..."
export GOOGLE_API_KEY="AIza..."

# 百炼(千问)— 通过 OpenAI 兼容接口接入
export DASHSCOPE_API_KEY="sk-..."

# 如果需要网络搜索工具(可选)
export TAVILY_API_KEY="tvly-..."

在 Python 中设置(也可以):

1
2
import os
os.environ["OPENAI_API_KEY"] = "sk-..."

Windows 用户注意:用 PowerShell 设置环境变量:

1
$env:OPENAI_API_KEY = "sk-..."

2.3 第一个 Agent

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from deepagents import create_deep_agent

# 定义一个简单的工具
def get_weather(city: str) -> str:
"""获取指定城市的天气信息"""
# 实际项目中这里会调用天气 API
return f"{city}今天晴,25°C,微风"

# 创建 Agent — 就这么简单!
agent = create_deep_agent(
model="openai:gpt-4o", # 模型,格式为 "厂商:模型名"
tools=[get_weather], # 你的自定义工具
system_prompt="你是一个有帮助的天气助手", # 系统提示词
)

# 运行 Agent
result = agent.invoke({
"messages": [{"role": "user", "content": "北京今天天气怎么样?"}]
})

# 获取回答
print(result["messages"][-1].content)
# 输出:北京今天晴,25°C,微风。建议穿着轻薄衣物...

发生了什么?

  1. 你传入了一个用户消息:”北京今天天气怎么样?”
  2. Agent 自动识别需要调用 get_weather 工具
  3. 调用工具获得结果
  4. 基于工具结果生成自然语言回答

对比传统 Web 开发:这就像你写了一个 API,但不需要手动写路由、控制器、中间件 — 框架帮你把”理解请求 → 选择处理函数 → 执行 → 返回结果”的流程自动化了。

2.4 三种模型配置方式

DeepAgents 支持三种方式指定模型,灵活度递增:

方式一:简单字符串(推荐新手)

1
agent = create_deep_agent(model="openai:gpt-4o")

方式二:init_chat_model(需要自定义参数)

1
2
3
4
from langchain.chat_models import init_chat_model

model = init_chat_model("openai:gpt-4o", max_retries=10, timeout=120)
agent = create_deep_agent(model=model)

方式三:直接模型类(最灵活)

1
2
3
4
from langchain_openai import ChatOpenAI

model = ChatOpenAI(model="gpt-4o", temperature=0, max_tokens=4096)
agent = create_deep_agent(model=model)

连接韧性:模型默认自动重试失败请求(指数退避),默认 6 次重试。对于不稳定网络,建议 max_retries=10-15

2.5 国内模型接入(百炼/千问)

国内厂商(如阿里百炼、DeepSeek、智谱等)大多提供 OpenAI 兼容接口,因此可以用 ChatOpenAI + 自定义 base_urlinit_chat_model 接入,无需额外安装。

百炼(千问)接入示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import os
from langchain_openai import ChatOpenAI
from deepagents import create_deep_agent

# 1. 设置 API Key
os.environ["DASHSCOPE_API_KEY"] = "sk-xxx"

# 2. 用 ChatOpenAI 指向百炼的 OpenAI 兼容端点
model = ChatOpenAI(
model="qwen-plus", # 百炼模型名
api_key=os.getenv("DASHSCOPE_API_KEY"), # 百炼 API Key
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1", # 百炼兼容端点
)

# 3. 像往常一样创建 Agent
agent = create_deep_agent(
model=model,
tools=[get_weather],
system_prompt="你是一个有帮助的天气助手",
)

# 4. 运行
result = agent.invoke({
"messages": [{"role": "user", "content": "北京今天天气怎么样?"}]
})
print(result["messages"][-1].content)

关键点:核心就是 ChatOpenAI + base_url 参数,把请求从 OpenAI 官方端点”转发”到百炼端点。模型名、API Key 都用百炼的即可。

用 init_chat_model 接入百炼

如果你偏好 init_chat_model 的写法,也可以,关键是指定 model_provider="openai"(因为百炼走的是 OpenAI 兼容协议),然后传入 base_urlapi_key

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import os
from langchain.chat_models import init_chat_model
from deepagents import create_deep_agent

os.environ["DASHSCOPE_API_KEY"] = "sk-xxx"

# 用 init_chat_model 接入百炼 — 注意 model_provider 必须是 "openai"
model = init_chat_model(
model="qwen-plus",
model_provider="openai", # 百炼兼容 OpenAI 协议,所以用 openai
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)

agent = create_deep_agent(model=model, tools=[get_weather])

为什么 model_provider="openai" 因为百炼的接口兼容 OpenAI 协议,init_chat_model 底层会实例化 ChatOpenAI,所以 base_urlapi_key 等参数都能正确传递。

其他国内模型速查

厂商base_url模型名示例
阿里百炼https://dashscope.aliyuncs.com/compatible-mode/v1qwen-plus, qwen-max, qwen-turbo
DeepSeekhttps://api.deepseek.com/v1deepseek-chat, deepseek-reasoner
智谱 AIhttps://open.bigmodel.cn/api/paas/v4glm-4-plus, glm-4-flash
月之暗面https://api.moonshot.cn/v1moonshot-v1-8k, moonshot-v1-32k
硅基流动https://api.siliconflow.cn/v1各种开源模型

规律:只要厂商提供 OpenAI 兼容接口,就能用 ChatOpenAI(base_url=..., api_key=..., model=...) 一行搞定,接入方式完全一样。

2.6 可观测性(LangSmith)

强烈建议开启 LangSmith 追踪,帮你调试 Agent 行为:

1
2
export LANGSMITH_TRACING=true
export LANGSMITH_API_KEY="lsv2_..."

开启后,你可以在 LangSmith 控制台看到:

  • 每次工具调用的输入和输出
  • Agent 的决策过程
  • Token 消耗统计
  • 执行时间分布