实战项目:Tavily 搜索、Deep Agent 与工具选择器
实战项目:Tavily 搜索、Deep Agent 与工具选择器
前面讲的都是基础组件,这篇看看它们在真实项目里怎么组合。三个案例:联网搜索 Agent、深度研究 Agent、工具选择中间件。
Tavily 搜索 Agent
Tavily 是专为 AI Agent 设计的搜索 API,返回结构化结果,比直接爬网页方便很多:
from tavily import TavilyClient
from langchain.agents import create_agent
tavily = TavilyClient()
def internet_search(query: str, max_results: int = 5,
topic: str = "general"):
"""Run a web search"""
return tavily.search(query, max_results=max_results, topic=topic)
agent = create_agent(
model="openai:gpt-4.1-mini",
tools=[internet_search],
system_prompt="你是一个研究专家,用搜索工具收集信息并写报告。",
)
topic 参数支持 general、news、finance,不同场景用不同值。
Deep Agent
deepagents 库提供了 create_deep_agent,自带规划、文件系统、子任务等能力:
from deepagents import create_deep_agent
agent = create_deep_agent(
model=model,
tools=[internet_search],
system_prompt="你是研究专家,先规划步骤再执行。",
)
result = agent.invoke({"messages": [
{"role": "user", "content": "深度研究 LangGraph 是什么,写调研报告"}
]})
Deep Agent 会自动拆解任务、分步执行、综合结果。适合复杂的研究类任务。
LLMToolSelectorMiddleware
工具多了,每次都把所有工具传给模型会浪费 token。LLMToolSelectorMiddleware 用一个轻量模型先筛选相关工具:
from langchain.agents.middleware import LLMToolSelectorMiddleware
agent = create_agent(
model="openai:gpt-4.1-mini",
tools=[tool_1, tool_2, tool_3, calculate, internet_search],
middleware=[
LLMToolSelectorMiddleware(
model="openai:gpt-4o-mini",
max_tools=2,
always_include=["tool_4"],
),
],
)
max_tools=2 表示每次最多选 2 个相关工具传给主模型。always_include 指定必须包含的工具。这样既省 token 又提高准确率。
小结
Tavily 解决联网搜索问题,Deep Agent 解决复杂任务拆解问题,ToolSelector 解决工具多了的筛选问题。三个实战案例,三个不同的角度。