本示例展示如何将 LangChain 的 Tavily 搜索工具封装为 FunctionTool,集成到 trpc-agent 中使用,验证第三方工具链接入的完整链路。
- LangChain 工具封装:将
langchain-tavily的TavilySearch包装为异步函数,再通过FunctionTool注册到 Agent - 实时搜索能力:借助 Tavily 搜索引擎,Agent 可回答需要实时或最新信息的问题
- 会话状态管理:使用
InMemorySessionService创建会话并注入user_name状态 - 流式事件处理:通过
runner.run_async(...)消费事件流,打印工具调用与工具返回
本例是单 Agent 示例,不涉及多 Agent 分层路由:
langchain_tavily_agent (LlmAgent)
├── model: OpenAIModel
├── tools:
│ └── tavily_search(query, max_results)
└── session: InMemorySessionService (state 注入 user_name)
关键文件:
- examples/langchain_tools/agent/agent.py:构建
LlmAgent、挂载 Tavily 搜索工具 - examples/langchain_tools/agent/tools.py:Tavily 搜索工具实现,封装
TavilySearch - examples/langchain_tools/agent/prompts.py:提示词模板
- examples/langchain_tools/agent/config.py:环境变量读取(LLM 配置 + Tavily API Key)
- examples/langchain_tools/run_agent.py:测试入口,执行搜索查询
这一节用于快速定位"工具封装、Agent 组装、事件输出"三条核心链路。
- 导入
langchain_tavily.TavilySearch,在异步函数tavily_search中调用tool.ainvoke(query) - 对返回结果做归一化处理(兼容 dict 和 list 两种响应格式),统一输出
status、query、result_count、results - 异常时返回
{"status": "error", "error_message": ...},保证 Agent 不会因工具异常崩溃
- 使用
LlmAgent组装搜索助手,通过FunctionTool(tavily_search)挂载工具 - 提示词指引 Agent 在用户提出需要实时信息的问题时调用
tavily_search
- 使用
runner.run_async(...)消费事件流 event.partial=True时打印文本分片- 完整事件中区分并打印:
function_call(工具调用)function_response(工具返回)
- Python 3.12
git clone https://github.com/trpc-group/trpc-agent-python.git
cd trpc-agent-python
python3 -m venv .venv
source .venv/bin/activate
pip3 install -e .
pip3 install langchain-tavily在 examples/langchain_tools/.env 中配置(或通过 export):
TRPC_AGENT_API_KEYTRPC_AGENT_BASE_URLTRPC_AGENT_MODEL_NAMETAVILY_API_KEY(Tavily 搜索的 API Key,可在 https://tavily.com 获取)
cd examples/langchain_tools
python3 run_agent.py🆔 Session ID: 95ea1edd...
📝 User: Search for today's major news in the AI field
🤖 Assistant:
🔧 [Invoke Tool: tavily_search({'query': "today's major news in AI field", 'max_results': 5})]
📊 [Tool Result: {'status': 'success', 'query': "today's major news in AI field", 'result_count': 5, 'results': [...]}]
Here are today's major developments in the AI field:
1. **OpenAI Announces New Model**: OpenAI released its latest model with improved reasoning capabilities...
2. **Google DeepMind Research Breakthrough**: A new paper demonstrates advances in protein structure prediction...
3. **AI Regulation Update**: The EU published new guidelines for AI governance...
Let me know if you'd like more details on any of these topics!
----------------------------------------
结论:符合本示例测试要求。
- 工具路由正确:搜索类问题正确调用
tavily_search - 工具参数正确:
query与max_results参数符合用户意图 - 工具结果被正确消费:Agent 根据搜索返回的结果进行归纳总结,输出可读答案
- LangChain 封装有效:
TavilySearch被成功封装为FunctionTool,与 trpc-agent 无缝集成
说明:该示例每轮使用新的 session_id,主要验证的是 LangChain 工具集成与调用链路,不强调跨轮记忆一致性。
- 快速验证 LangChain 第三方工具集成到 trpc-agent 的链路:适合使用本示例
- 验证实时搜索能力(Tavily)+ Agent 工具调用完整流程:适合使用本示例
- 需要测试多 Agent 分层路由:建议使用
examples/graph等多 Agent 示例