【LangChain】7.聊天模型-搜索工具与内置工具

发布时间:2026/7/30 3:33:44
【LangChain】7.聊天模型-搜索工具与内置工具 7. 聊天模型-搜索工具与内置工具文章目录7. 聊天模型-搜索工具与内置工具1. LangChain 内置工具生态1.1 BaseTool 与 BaseToolkit1.2 如何查找和使用内置工具2. TavilySearch 搜索引擎2.1 Tavily 简介2.2 申请 API Key2.3 API Playground 测试2.4 UseCases 演示3. 代码接入 TavilySearch3.1 安装依赖3.2 配置环境变量3.3 基础使用示例3.4 运行效果3.5 与工具调用流程的衔接4. 搜索工具 结构化输出预览5. 总结在前一小节内容中我们学会了如何用tool和StructuredTool自定义工具。然而很多常用功能搜索、数据库查询、网页浏览等LangChain 已经内置集成——我们可以直接使用无需从零手写。1. LangChain 内置工具生态1.1 BaseTool 与 BaseToolkitLangChain 中的所有工具都基于两个基类基类说明示例BaseTool单个工具的基类搜索工具、计算器、API 调用器BaseToolkit一组相关工具的集合工具包数据库工具箱、文件系统工具箱在 LangChain 的源码Lib/site-packages/中全局搜索BaseTool和BaseToolkit可以看到所有已继承实现的内置工具1.2 如何查找和使用内置工具在 LangChain API Reference 中搜索工具类名查看对应工具的文档了解初始化参数和用法按需安装对应的集成包如langchain-tavily、langchain-community等2. TavilySearch 搜索引擎2.1 Tavily 简介这里我们以 TavilySearch 为例介绍一下如何使用内置工具支持获取最新、最实时的网络信息Tavily 是一个专为 AI 智能体设计的搜索引擎和传统搜索引擎如 Google、Bing不同它的核心优势在于专为 LLM 检索与推理需求打造返回结构化、可解析的搜索结果、显著优于传统搜索引擎的语义相关性理解能力、返回 JSON 格式数据便于直接用于后续推理和生成流程、Tavily 官网https://www.tavily.com/2.2 申请 API Key在 Tavily 官网登录支持 Google 账号登录进入 API Keys 页面点击添加新 Key填写名称后 Create创建后复制保存该 Key与 OpenAI API Key 类似关闭后不再显示。2.3 API Playground 测试在左侧 API Playground 中可以选择已创建的 Key模拟搜索请求测试效果Playground 会返回完整的搜索结果包括标题、链接、摘要等结构化数据并展示对应的 Python 调用代码。2.4 UseCases 演示左侧 UseCases 中提供了多种集成场景例如 Chat 模式——输入北京今天的天气怎么样搜索引擎自动获取最新天气信息系统再结合 LLM 生成自然语言回答。3. 代码接入 TavilySearch3.1 安装依赖pipinstall-Ulangchain-tavily3.2 配置环境变量将申请的 API Key 配置为环境变量TAVILY_API_KEY# Windows 命令提示符setTAVILY_API_KEYyour_api_key_here# 或在 Python 代码中直接设置importos os.environ[TAVILY_API_KEY]your_api_key_here3.3 基础使用示例fromlangchain_openaiimportChatOpenAIfromlangchain_core.messagesimportHumanMessagefromlangchain_tavilyimportTavilySearch# 1. 定义模型modelChatOpenAI(modelgpt-4o-mini)# 2. 定义搜索工具max_results 控制返回结果数量toolTavilySearch(max_results4)# 3. 绑定工具到模型model_with_toolsmodel.bind_tools([tool])# 4. 用户提问messages[HumanMessage(北京今天的天气怎么样)]# 5. 模型决定调用搜索工具ai_messagemodel_with_tools.invoke(messages)messages.append(ai_message)# 6. 执行工具调用获取搜索结果fortool_callinai_message.tool_calls:tool_messagetool.invoke(tool_call)messages.append(tool_message)# 7. 模型根据搜索结果生成自然语言回答print(model.invoke(messages).content)3.4 运行效果运行上述代码模型会依次经历以下流程TavilySearch聊天模型用户TavilySearch聊天模型用户北京今天的天气怎么样调用搜索工具(北京天气)返回结构化搜索结果今天北京天气多云气温18~28°C微风...输出示例今天的北京天气如下温度大约在18.3摄氏度左右有微风。以下是详细天气预报及相关链接 - 当前气温18.3°C天气状况多云... - 更多信息请参考[链接1] [链接2] ...3.5 与工具调用流程的衔接本示例与上一小节中完整工具调用流程完全一致定义工具- 这里使用的是TavilySearch而非tool自定义工具绑定工具-model.bind_tools([tool])与自定义工具绑定方式相同模型选择工具- LLM 根据天气等关键词自动选择搜索工具执行工具-tool.invoke(tool_call)返回ToolMessage组装消息列表-HumanMessageAIMessageToolMessage最终回复- 模型结合搜索结果生成自然语言回答Tip:内置工具即拿即用TavilySearch本身就是一个BaseTool实例可直接调用tool.invoke()也支持.name、.description、.args等工具属性与自定义工具完全兼容。4. 搜索工具 结构化输出预览TavilySearch 不仅仅可以配合自然语言回答使用还可以和with_structured_output()方法结合直接输出结构化的结果对象。下面的示例演示了搜索后如何将结果解析为SearchResult模型fromlangchain_core.messagesimportHumanMessagefromlangchain_openaiimportChatOpenAIfromlangchain_tavilyimportTavilySearchfrompydanticimportBaseModel,FieldclassSearchResult(BaseModel):结构化搜索对象query:strField(description搜索查询)findings:strField(description查询结果摘要)modelChatOpenAI(modelgpt-4o-mini)toolTavilySearch(max_results4)model_with_toolsmodel.bind_tools([tool])messages[HumanMessage(北京今天的天气怎么样)]ai_messagemodel_with_tools.invoke(messages)messages.append(ai_message)fortool_callinai_message.tool_calls:tool_messagetool.invoke(tool_call)messages.append(tool_message)# 将结果解析为结构化输出model_with_structuredmodel_with_tools.with_structured_output(SearchResult)resultmodel_with_structured.invoke(messages)print(result)# 输出示例: SearchResult(query北京天气, findings北京今日多云18~28°C...)关于with_structured_output()的完整用法Pydantic / TypedDict / JSON Schema 三种定义方式将在下一讲中详细展开。5. 总结学习了如何在 LangChain 中使用内置工具和搜索引擎知识点说明内置工具生态LangChain 基于BaseTool/BaseToolkit集成了大量常用工具TavilySearch专为 AI 设计的搜索引擎返回结构化搜索结果接入流程安装包 → 配置 API Key →TavilySearch()定义工具 →bind_tools()绑定与自定义工具对比内置工具使用方法与tool自定义工具完全相同结构化输出预览搜索工具可与with_structured_output()配合直接解析为 Pydantic 对象搜索结果 ||接入流程| 安装包 → 配置 API Key →TavilySearch()定义工具 →bind_tools()绑定 ||与自定义工具对比| 内置工具使用方法与tool自定义工具完全相同 ||结构化输出预览| 搜索工具可与with_structured_output()配合直接解析为 Pydantic 对象 |主要内容到这里就结束啦