介绍 Using Tools LangChain

LangChain 是一个强大的开源框架,旨在帮助开发者更高效地构建和部署基于大语言模型(LLM)的应用。它提供了一整套工具和组件,使开发者能够轻松地将语言模型与其他数据源和工具集成。

核心功能

  1. 工具集成

    • 支持接入各种外部API和工具
    • 预置了Google搜索、计算器、Python REPL等常用工具
    • 可自定义工具开发,满足特定业务需求
  2. 链式调用

    • 允许将多个LLM调用和工具操作串联起来
    • 支持条件逻辑和循环控制
    • 实现复杂的工作流程自动化
  3. 记忆管理

    • 提供短期和长期记忆存储
    • 支持对话历史维护
    • 可实现上下文感知的交互

典型应用场景

  • 智能助手开发
  • 数据分析
  • 自动化工作流

背景描述

LangChain的社区提供了很多封装好的工具,可以直接拿来用(有的需要申请和配置API KEY)


安装依赖

pip install --upgrade --quiet  langchain-core langchain langchain-openai

编写代码

为了更有效地获取互联网上的最新信息,我们可以使用 DuckDuckGoSearchRun 这个强大的搜索功能工具。这个工具能够帮助我们直接调用 DuckDuckGo 搜索引擎的 API 接口,实现快速、隐私保护的网络搜索。

DuckDuckGoSearchRun 提供了以下优势:

  1. 隐私保护:与主流搜索引擎不同,DuckDuckGo 不会追踪用户搜索记录
  2. 即时结果:通过 API 调用可以直接获取最新的搜索结果
  3. 简单集成:可以很方便地集成到各种应用程序和工作流中

使用场景示例:

  • 在研究项目中快速获取最新的公开数据
  • 开发智能助手时需要实时网络搜索功能
  • 需要定期监控某些关键词的网络动态

基本使用方法:

  1. 安装必要的 Python 包:pip install duckduckgo-search
  2. 导入模块:from duckduckgo_search import ddg
  3. 执行搜索:results = ddg("搜索关键词", max_results=5)
  4. 处理返回的 JSON 格式结果

高级功能还包括:

  • 指定返回结果数量
  • 设置搜索区域(国家/地区)
  • 过滤特定时间段的结果
  • 获取图片、视频等多媒体搜索结果

代码示例

search = DuckDuckGoSearchRun()

template = """turn the following user input into a search query for a search engine:

{input}"""
prompt = ChatPromptTemplate.from_template(template)

# 使用GPT-4-Turbo 3.5完成的效果不好
model = ChatOpenAI(
    model="gpt-4-0125-preview"
)

chain = prompt | model | StrOutputParser() | search
message1 = chain.invoke({"input": "I'd like to figure out what games are tonight"})
print(f"message1: {message1}")

工具列表

文章还列出了工具包中封装的众多工具:

  • DuckDuckGoSearchRun / DuckDuckGoSearchResults
  • GoogleSearchRun / GoogleSearchResults
  • WikipediaQueryRun
  • WolframAlphaQueryRun
  • PythonREPLTool / PythonAstREPLTool
  • 各种Gmail工具
  • 各种文件操作工具

运行结果

message1: How to live stream NBA games tonight. Pelicans vs Thunder and Clippers vs Lakers will air on ESPN. Viewers can also stream NBA games on Sling TV...