【LangChain】7.聊天模型-搜索工具与内置工具
2026/7/30 3:33:38 网站建设 项目流程

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

文章目录

  • 7. 聊天模型-搜索工具与内置工具
    • 1. LangChain 内置工具生态
      • 1.1 BaseTool 与 BaseToolkit
      • 1.2 如何查找和使用内置工具
    • 2. TavilySearch 搜索引擎
      • 2.1 Tavily 简介
      • 2.2 申请 API Key
      • 2.3 API Playground 测试
      • 2.4 UseCases 演示
    • 3. 代码接入 TavilySearch
      • 3.1 安装依赖
      • 3.2 配置环境变量
      • 3.3 基础使用示例
      • 3.4 运行效果
      • 3.5 与工具调用流程的衔接
    • 4. 搜索工具 + 结构化输出预览
    • 5. 总结

在前一小节内容中,我们学会了如何用@toolStructuredTool自定义工具。然而,很多常用功能(搜索、数据库查询、网页浏览等)LangChain 已经内置集成——我们可以直接使用,无需从零手写。


1. LangChain 内置工具生态

1.1 BaseTool 与 BaseToolkit

LangChain 中的所有工具都基于两个基类:

基类说明示例
BaseTool单个工具的基类搜索工具、计算器、API 调用器
BaseToolkit一组相关工具的集合(工具包)数据库工具箱、文件系统工具箱

在 LangChain 的源码Lib/site-packages/中全局搜索BaseToolBaseToolkit,可以看到所有已继承实现的内置工具:

1.2 如何查找和使用内置工具

  1. 在 LangChain API Reference 中搜索工具类名
  2. 查看对应工具的文档,了解初始化参数和用法
  3. 按需安装对应的集成包(如langchain-tavilylangchain-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. 代码接入 TavilySearch

3.1 安装依赖

pipinstall-Ulangchain-tavily

3.2 配置环境变量

将申请的 API Key 配置为环境变量TAVILY_API_KEY

# Windows 命令提示符setTAVILY_API_KEY=your_api_key_here# 或在 Python 代码中直接设置importos os.environ["TAVILY_API_KEY"]="your_api_key_here"

3.3 基础使用示例

fromlangchain_openaiimportChatOpenAIfromlangchain_core.messagesimportHumanMessagefromlangchain_tavilyimportTavilySearch# 1. 定义模型model=ChatOpenAI(model="gpt-4o-mini")# 2. 定义搜索工具(max_results 控制返回结果数量)tool=TavilySearch(max_results=4)# 3. 绑定工具到模型model_with_tools=model.bind_tools([tool])# 4. 用户提问messages=[HumanMessage("北京今天的天气怎么样?")]# 5. 模型决定调用搜索工具ai_message=model_with_tools.invoke(messages)messages.append(ai_message)# 6. 执行工具调用,获取搜索结果fortool_callinai_message.tool_calls:tool_message=tool.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 与工具调用流程的衔接

本示例与上一小节中完整工具调用流程完全一致:

  1. 定义工具-> 这里使用的是TavilySearch(而非@tool自定义工具)
  2. 绑定工具->model.bind_tools([tool]),与自定义工具绑定方式相同
  3. 模型选择工具-> LLM 根据"天气"等关键词自动选择搜索工具
  4. 执行工具->tool.invoke(tool_call),返回ToolMessage
  5. 组装消息列表->HumanMessage+AIMessage+ToolMessage
  6. 最终回复-> 模型结合搜索结果生成自然语言回答

Tip:内置工具即拿即用
TavilySearch本身就是一个BaseTool实例,可直接调用tool.invoke(),也支持.name.description.args等工具属性,与自定义工具完全兼容。


4. 搜索工具 + 结构化输出预览

TavilySearch 不仅仅可以配合自然语言回答使用,还可以和with_structured_output()方法结合,直接输出结构化的结果对象。

下面的示例演示了搜索后如何将结果解析为SearchResult模型:

fromlangchain_core.messagesimportHumanMessagefromlangchain_openaiimportChatOpenAIfromlangchain_tavilyimportTavilySearchfrompydanticimportBaseModel,FieldclassSearchResult(BaseModel):"""结构化搜索对象"""query:str=Field(description="搜索查询")findings:str=Field(description="查询结果摘要")model=ChatOpenAI(model="gpt-4o-mini")tool=TavilySearch(max_results=4)model_with_tools=model.bind_tools([tool])messages=[HumanMessage("北京今天的天气怎么样?")]ai_message=model_with_tools.invoke(messages)messages.append(ai_message)fortool_callinai_message.tool_calls:tool_message=tool.invoke(tool_call)messages.append(tool_message)# 将结果解析为结构化输出model_with_structured=model_with_tools.with_structured_output(SearchResult)result=model_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 对象 |

主要内容到这里就结束啦

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询