跳到主要内容

模型与提供商

支持的模型概览

DeepAgents 与任何支持工具调用(Tool Calling)能力的 LLM 模型兼容。这意味着模型必须能够:

  • 理解工具定义和参数
  • 决定何时以及如何调用工具
  • 以结构化的方式响应工具调用

主流模型提供商

Anthropic Claude 系列

推荐模型

  • Claude 3.5 Sonnet(生产环境推荐)
  • Claude 3.5 Haiku(轻量级、快速)
  • Claude 3 Opus(高级推理)

特点

  • 强大的推理能力和上下文理解
  • 原生支持工具使用
  • 支持扩展思考(Extended Thinking)

配置方式

from deepagents import create_deep_agent

agent = create_deep_agent(
model="anthropic:claude-3-5-sonnet-20241022",
tools=[your_tools],
)

OpenAI GPT 系列

推荐模型

  • GPT-4o(多模态能力强)
  • GPT-4 Turbo
  • GPT-4 Mini(成本优化)

特点

  • 稳定的工具调用能力
  • 支持多模态输入
  • API 非常稳定成熟

配置方式

from deepagents import create_deep_agent

agent = create_deep_agent(
model="openai:gpt-4o",
tools=[your_tools],
)

Google Gemini

推荐模型

  • Gemini 2.0 Flash
  • Gemini 1.5 Pro
  • Gemini 1.5 Flash(轻量级)

特点

  • 先进的推理能力
  • 支持大量上下文
  • 性能与成本具有竞争力

配置方式

from deepagents import create_deep_agent

agent = create_deep_agent(
model="google:gemini-2.0-flash",
tools=[your_tools],
)

其他提供商

CohereMistralGroq 等也提供具有工具调用能力的模型。完整列表和配置详见 LangChain 官方文档。

模型选择指南

性能维度对比

模型推理能力速度成本上下文最佳用途
GPT-4o⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐128K复杂推理、多模态
Claude 3.5 Sonnet⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐200K一般用途、长文本
Gemini 2.0 Flash⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐1M快速响应、大量数据
GPT-4 Mini⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐128K简单任务、成本控制
Claude 3.5 Haiku⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐200K快速反应、开发测试

选型建议

生产环境

  • 如果需要最佳性能 → Claude 3.5 Sonnet
  • 如果需要多模态支持 → GPT-4o
  • 如果需要处理大量数据 → Gemini 2.0 Flash

开发测试

  • 快速迭代 → Claude 3.5 Haiku 或 GPT-4 Mini
  • 降低成本 → 任何 Mini/Flash 系列

特殊场景

  • 需要长期记忆 → 任何支持大上下文的模型
  • 需要代码生成 → GPT-4o 或 Claude 系列
  • 需要实时响应 → Gemini 2.0 Flash

模型配置

基本配置

最简单的方式是使用模型字符串标识符:

from deepagents import create_deep_agent

agent = create_deep_agent(
model="openai:gpt-4o",
tools=[search_tool, read_file_tool],
)

高级配置

对于需要自定义参数的场景,使用 init_chat_model() 函数:

from langchain.chat_models import init_chat_model
from deepagents import create_deep_agent

model = init_chat_model(
model="anthropic:claude-3-5-sonnet-20241022",
temperature=0.7, # 控制创意程度(0.0-1.0)
max_tokens=2000, # 单次响应最大字数
top_p=0.9, # 核采样参数
)

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

使用提供商特定类

对于特定的配置需求,可以直接使用提供商的模型类:

from langchain_anthropic import ChatAnthropic
from deepagents import create_deep_agent

model = ChatAnthropic(
model="claude-3-5-sonnet-20241022",
temperature=0.5,
max_tokens=4000,
thinking={
"type": "enabled",
"budget_tokens": 10000 # Anthropic 扩展思考功能
}
)

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

高级配置选项

网络韧性配置

对于在不稳定网络环境中运行的应用,可以配置重试策略:

from langchain.chat_models import init_chat_model
from deepagents import create_deep_agent

model = init_chat_model(
model="anthropic:claude-3-5-sonnet-20241022",
max_retries=10, # 默认值为 6
timeout=120, # 请求超时时间(秒)
)

agent = create_deep_agent(model=model)

重试行为说明

  • 自动重试网络错误和速率限制错误
  • 自动重试服务器 5xx 错误
  • 不会重试客户端错误(4xx),如认证失败

令牌计数和成本控制

from langchain_core.callbacks import get_openai_token_counter

# 估算成本
token_counter = get_openai_token_counter()
estimated_tokens = token_counter.estimate_token_count("your input text")

# 设置最大令牌限制
model = init_chat_model(
model="openai:gpt-4o",
max_tokens=1000, # 防止过度支出
)

流式响应和部分结果

agent = create_deep_agent(
model="anthropic:claude-3-5-sonnet-20241022",
tools=[your_tools],
)

# 流式处理响应
for chunk in agent.stream(
{"messages": [{"role": "user", "content": "处理这个大任务"}]},
stream_mode="updates",
):
print(chunk) # 实时查看进度

运行时动态模型切换

在某些应用中,可能需要根据用户选择或其他条件在运行时切换模型。使用中间件实现这一功能:

from deepagents import create_deep_agent
from langchain.chat_models import init_chat_model

def get_agent_with_model_selection(user_model_preference: str):
"""根据用户偏好创建代理"""

model_map = {
"fast": init_chat_model("openai:gpt-4-mini"),
"balanced": init_chat_model("openai:gpt-4o"),
"powerful": init_chat_model("anthropic:claude-3-5-sonnet-20241022"),
}

agent = create_deep_agent(
model=model_map.get(user_model_preference, model_map["balanced"]),
tools=[your_tools],
)

return agent

# 使用示例
user_choice = "fast" # 或从 UI 获取
agent = get_agent_with_model_selection(user_choice)
result = agent.invoke({"messages": [{"role": "user", "content": "..."}]})

性能优化建议

1. 提示工程

system_prompt = """你是一个专业的 Python 开发助手。

在回复前,你应该:
1. 理解用户的具体需求
2. 考虑最佳实践和代码质量
3. 提供可立即使用的代码示例

对于每个建议,解释为什么这是最佳方案。"""

agent = create_deep_agent(
model="anthropic:claude-3-5-sonnet-20241022",
system_prompt=system_prompt,
tools=[your_tools],
)

2. 工具优化

# ❌ 不好:工具参数过多
def complex_search(query, date_from, date_to, language, region, ...): pass

# ✅ 好:接口简洁明确
def search(query: str) -> str:
"""搜索相关信息。query 可以包含日期和其他过滤条件。"""
pass

3. 上下文管理

# 对于长的对话历史,定期清理或总结
def cleanup_context(messages, max_tokens=8000):
"""保持消息历史在合理大小"""
total_tokens = 0
kept_messages = [messages[0]] # 保留系统消息

for msg in reversed(messages[1:]):
msg_tokens = len(msg.content) // 4 # 粗略估算
if total_tokens + msg_tokens < max_tokens:
kept_messages.insert(1, msg)
total_tokens += msg_tokens
else:
break

return kept_messages

成本估算

按使用场景

应用类型推荐模型平均成本/1000 调用适用规模
企业助手Claude 3.5 Sonnet$5-10小到中型
批量处理GPT-4 Mini$2-5大规模
实时对话Gemini 2.0 Flash$3-8中到大型
开发测试任何 Mini$1-3非生产

成本优化技巧

  1. 使用缓存机制:避免重复处理相同数据
  2. 批量处理:合并多个请求
  3. 选择合适的模型大小:不要过度配置
  4. 监控 token 使用:设置告警阈值

故障排查

模型不支持工具调用

症状Error: Model does not support tool calling

解决

  • 确认模型版本支持工具调用
  • 查看 LangChain 官方文档获取最新支持的模型列表
  • 升级 langchain 和 相关提供商包

API 速率限制

症状RateLimitError: 429 Too Many Requests

解决

# 添加重试和退避
model = init_chat_model(
model="openai:gpt-4o",
max_retries=10,
)

# 或手动添加延迟
import time
import random

def call_with_backoff(agent, messages, max_retries=3):
for attempt in range(max_retries):
try:
return agent.invoke({"messages": messages})
except Exception as e:
if attempt < max_retries - 1:
wait_time = 2 ** attempt + random.random()
time.sleep(wait_time)
else:
raise

令牌超限

症状Error: Maximum context length exceeded

解决

  • 减少消息历史长度
  • 使用更长上下文的模型
  • 实现消息总结/压缩机制

下一步