LangChain 67 深入理解LangChain 表达式语言30 调用tools搜索引擎 LangChain Expression Language (LCEL)

LangChain系列文章

  1. LangChain 50 深入理解LangChain 表达式语言十三 自定义pipeline函数 LangChain Expression Language (LCEL)
  2. LangChain 51 深入理解LangChain 表达式语言十四 自动修复配置RunnableConfig LangChain Expression Language (LCEL)
  3. LangChain 52 深入理解LangChain 表达式语言十五 Bind runtime args绑定运行时参数 LangChain Expression Language (LCEL)
  4. LangChain 53 深入理解LangChain 表达式语言十六 Dynamically route动态路由 LangChain Expression Language (LCEL)
  5. LangChain 54 深入理解LangChain 表达式语言十七 Chains Route动态路由 LangChain Expression Language (LCEL)
  6. LangChain 55 深入理解LangChain 表达式语言十八 function Route自定义动态路由 LangChain Expression Language (LCEL)
  7. LangChain 56 深入理解LangChain 表达式语言十九 config运行时选择大模型LLM LangChain Expression Language (LCEL)
  8. LangChain 57 深入理解LangChain 表达式语言二十 LLM Fallbacks速率限制备份大模型 LangChain Expression Language (LCEL)
  9. LangChain 58 深入理解LangChain 表达式语言21 Memory消息历史 LangChain Expression Language (LCEL)
  10. LangChain 59 深入理解LangChain 表达式语言22 multiple chains多个链交互 LangChain Expression Language (LCEL)
  11. LangChain 60 深入理解LangChain 表达式语言23 multiple chains链透传参数 LangChain Expression Language (LCEL)
  12. LangChain 61 深入理解LangChain 表达式语言24 multiple chains链透传参数 LangChain Expression Language (LCEL)
  13. LangChain 62 深入理解LangChain 表达式语言25 agents代理 LangChain Expression Language (LCEL)
  14. LangChain 63 深入理解LangChain 表达式语言26 生成代码code并执行 LangChain Expression Language (LCEL)
  15. LangChain 64 深入理解LangChain 表达式语言27 添加审查 Moderation LangChain Expression Language (LCEL)
  16. LangChain 65 深入理解LangChain 表达式语言28 余弦相似度Router Moderation LangChain Expression Language (LCEL)
  17. LangChain 66 深入理解LangChain 表达式语言29 管理prompt提示窗口大小 LangChain Expression Language (LCEL)

在这里插入图片描述

1. 使用工具tools

您可以轻松地使用任何可运行的工具。下面的例子是调用duckduckgo搜索

# !pip install langchain duckduckgo-search
from langchain.prompts import ChatPromptTemplate
from langchain.tools import DuckDuckGoSearchRun
from langchain_community.chat_models import ChatOpenAI
from langchain_core.output_parsers import StrOutputParser

from dotenv import load_dotenv  # 导入从 .env 文件加载环境变量的函数
load_dotenv()  # 调用函数实际加载环境变量

from langchain.globals import set_debug  # 导入在 langchain 中设置调试模式的函数
set_debug(True)  # 启用 langchain 的调试模式

search = DuckDuckGoSearchRun()

template = """将以下用户输入转换为搜索引擎的搜索查询::

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

model = ChatOpenAI()
chain = prompt | model | StrOutputParser() | search
response = chain.invoke({"input": "我想弄清楚今晚有什么体育运动可以看"})
print('response >> ', response)

输出

(.venv) zgpeace@zgpeaces-MacBook-Pro git:(develop) ✗% python LCEL/tools.py                                ~/Workspace/LLM/langchain-llm-app
[chain/start] [1:chain:RunnableSequence] Entering Chain run with input:
{
  "input": "我想弄清楚今晚有什么体育运动可以看"
}
[chain/start] [1:chain:RunnableSequence > 2:prompt:ChatPromptTemplate] Entering Prompt run with input:
{
  "input": "我想弄清楚今晚有什么体育运动可以看"
}
[chain/end] [1:chain:RunnableSequence > 2:prompt:ChatPromptTemplate] [7ms] Exiting Prompt run with output:
{
  "lc": 1,
  "type": "constructor",
  "id": [
    "langchain",
    "prompts",
    "chat",
    "ChatPromptValue"
  ],
  "kwargs": {
    "messages": [
      {
        "lc": 1,
        "type": "constructor",
        "id": [
          "langchain",
          "schema",
          "messages",
          "HumanMessage"
        ],
        "kwargs": {
          "content": "将以下用户输入转换为搜索引擎的搜索查询::\n\n我想弄清楚今晚有什么体育运动可以看",
          "additional_kwargs": {}
        }
      }
    ]
  }
}
[llm/start] [1:chain:RunnableSequence > 3:llm:ChatOpenAI] Entering LLM run with input:
{
  "prompts": [
    "Human: 将以下用户输入转换为搜索引擎的搜索查询::\n\n我想弄清楚今晚有什么体育运动可以看"
  ]
}
[llm/end] [1:chain:RunnableSequence > 3:llm:ChatOpenAI] [2.06s] Exiting LLM run with output:
{
  "generations": [
    [
      {
        "text": "今晚有什么体育赛事直播?",
        "generation_info": {
          "finish_reason": "stop",
          "logprobs": null
        },
        "type": "ChatGeneration",
        "message": {
          "lc": 1,
          "type": "constructor",
          "id": [
            "langchain",
            "schema",
            "messages",
            "AIMessage"
          ],
          "kwargs": {
            "content": "今晚有什么体育赛事直播?",
            "additional_kwargs": {}
          }
        }
      }
    ]
  ],
  "llm_output": {
    "token_usage": {
      "completion_tokens": 16,
      "prompt_tokens": 46,
      "total_tokens": 62
    },
    "model_name": "gpt-3.5-turbo",
    "system_fingerprint": null
  },
  "run": null
}
[chain/start] [1:chain:RunnableSequence > 4:parser:StrOutputParser] Entering Parser run with input:
[inputs]
[chain/end] [1:chain:RunnableSequence > 4:parser:StrOutputParser] [1ms] Exiting Parser run with output:
{
  "output": "今晚有什么体育赛事直播?"
}
[tool/start] [1:chain:RunnableSequence > 5:tool:duckduckgo_search] Entering Tool run with input:
"今晚有什么体育赛事直播?"
[tool/end] [1:chain:RunnableSequence > 5:tool:duckduckgo_search] [2.98s] Exiting Tool run with output:
"中央电视台体育频道(cctv-5)是中国开播最早、规模最大、拥有世界众多顶级赛事独家报道权的专业体育频道。于1995年1月1日正式开播,全天24小时播出,是中国观众收看体育赛事的首选频道 咪咕体育和抖音视频成为了两个备选的观赛平台,球迷们可以通过这些渠道在线观看其他精彩的比赛。 咪咕直播篮球时间表(图) 咪咕直播篮球时间表(图) cctv5一直以来是体育赛事的权威直播平台,为球迷们提供了高质量的观赛体验。 这场比赛将看到中国男足迎战缅甸男足,比赛的开球时间定在了9月21日晚上7点25分。对于中国男足来说,这将是一场重要的较量,他们将努力争取2连胜,取得小组赛的出色开局。 中央5台今日节目表(中央5台今晚有足球直播) 中央5台今日节目表(中央5台今晚有 ... _腾讯新闻 今晚7点现场直播:世预赛中韩男足,决战深圳! 深圳特区报 2023-11-21 16:59:23 发布于 广东 深圳特区报官方账号 + 关注 11月21日晚8点 国足将在深圳龙岗大运中心体育场 迎来世界杯预选赛36强赛的首个主场 时隔6年 中国男足与韩国队 再次相遇在世预赛的赛场上 成为了近年来最受关注的比赛之一 球票一天内售罄 预计有超4万球迷现场为国足加油 主场对决 直播带你场内外围观 今晚(11月21日)7点 读特融媒体记者将"兵分两路" 在大运中心体育场进行现场直播 场外记者带你感受球迷热情 场内记者为你探秘赛场风云 现场氛围有多燃? 有多少球迷前来观赛? 哪些应援口号戳中你的心? 锁定 读特客户端、读特新闻直播间 ! 球迷互动 一起来当"预言家" 直播期间 央视体育频道(CCTV5)直播国乒,体育赛事频道(CCTV5+)直播斯诺克世锦赛,中超被迫让路, 上海申花客场挑战梅州客家的比赛被安排在央视奥林匹克频道(CCTV16) 进行直播,当然,央视没有像以往一样在两大电视端平台直播中超,也是考虑到前国足主帅李铁、陈戌源等众多体育局和中国足协高管正在接受调查! 上海五星体育和广州市广播电视台南国都市频道也将进行直播。 首轮比赛中,上海申花主场1比0力挫山东泰山,梅州客家客场1比1战平北京国安。 得到巨资注入的老牌球队上海申花若能在客场击败球王李惠堂的家乡球队梅州客家,将暂时独占领头羊位置。"
[chain/end] [1:chain:RunnableSequence] [5.06s] Exiting Chain run with output:
{
  "output": "中央电视台体育频道(cctv-5)是中国开播最早、规模最大、拥有世界众多顶级赛事独家报道权的专业体育频道。于1995年1月1日正式开播,全天24小时播出,是中国观众收看体育赛事的首选频道 咪咕体育和抖音视频成为了两个备选的观赛平台,球迷们可以通过这些渠道在线观看其他精彩的比赛。 咪咕直播篮球时间表(图) 咪咕直播篮球时间表(图) cctv5一直以来是体育赛事的权威直播平台,为球迷们提供了高质量的观赛体验。 这场比赛将看到中国男足迎战缅甸男足,比赛的开球时间定在了9月21日晚上7点25分。对于中国男足来说,这将是一场重要的较量,他们将努力争取2连胜,取得小组赛的出色开局。 中央5台今日节目表(中央5台今晚有足球直播) 中央5台今日节目表(中央5台今晚有 ... _腾讯新闻 今晚7点现场直播:世预赛中韩男足,决战深圳! 深圳特区报 2023-11-21 16:59:23 发布于 广东 深圳特区报官方账号 + 关注 11月21日晚8点 国足将在深圳龙岗大运中心体育场 迎来世界杯预选赛36强赛的首个主场 时隔6年 中国男足与韩国队 再次相遇在世预赛的赛场上 成为了近年来最受关注的比赛之一 球票一天内售罄 预计有超4万球迷现场为国足加油 主场对决 直播带你场内外围观 今晚(11月21日)7点 读特融媒体记者将\"兵分两路\" 在大运中心体育场进行现场直播 场外记者带你感受球迷热情 场内记者为你探秘赛场风云 现场氛围有多燃? 有多少球迷前来观赛? 哪些应援口号戳中你的心? 锁定 读特客户端、读特新闻直播间 ! 球迷互动 一起来当\"预言家\" 直播期间 央视体育频道(CCTV5)直播国乒,体育赛事频道(CCTV5+)直播斯诺克世锦赛,中超被迫让路, 上海申花客场挑战梅州客家的比赛被安排在央视奥林匹克频道(CCTV16) 进行直播,当然,央视没有像以往一样在两大电视端平台直播中超,也是考虑到前国足主帅李铁、陈戌源等众多体育局和中国足协高管正在接受调查! 上海五星体育和广州市广播电视台南国都市频道也将进行直播。 首轮比赛中,上海申花主场1比0力挫山东泰山,梅州客家客场1比1战平北京国安。 得到巨资注入的老牌球队上海申花若能在客场击败球王李惠堂的家乡球队梅州客家,将暂时独占领头羊位置。"
}
response >>  中央电视台体育频道(cctv-5)是中国开播最早、规模最大、拥有世界众多顶级赛事独家报道权的专业体育频道。于1995年1月1日正式开播,全天24小时播出,是中国观众收看体育赛事的首选频道 咪咕体育和抖音视频成为了两个备选的观赛平台,球迷们可以通过这些渠道在线观看其他精彩的比赛。 咪咕直播篮球时间表() 咪咕直播篮球时间表() cctv5一直以来是体育赛事的权威直播平台,为球迷们提供了高质量的观赛体验。 这场比赛将看到中国男足迎战缅甸男足,比赛的开球时间定在了9月21日晚上7点25分。对于中国男足来说,这将是一场重要的较量,他们将努力争取2连胜,取得小组赛的出色开局。 中央5台今日节目表(中央5台今晚有足球直播) 中央5台今日节目表(中央5台今晚有 ... _腾讯新闻 今晚7点现场直播:世预赛中韩男足,决战深圳! 深圳特区报 2023-11-21 16:59:23 发布于 广东 深圳特区报官方账号 + 关注 11月21日晚8点 国足将在深圳龙岗大运中心体育场 迎来世界杯预选赛36强赛的首个主场 时隔6年 中国男足与韩国队 再次相遇在世预赛的赛场上 成为了近年来最受关注的比赛之一 球票一天内售罄 预计有超4万球迷现场为国足加油 主场对决 直播带你场内外围观 今晚(11月21日)7点 读特融媒体记者将"兵分两路" 在大运中心体育场进行现场直播 场外记者带你感受球迷热情 场内记者为你探秘赛场风云 现场氛围有多燃? 有多少球迷前来观赛? 哪些应援口号戳中你的心? 锁定 读特客户端、读特新闻直播间 ! 球迷互动 一起来当"预言家" 直播期间 央视体育频道(CCTV5)直播国乒,体育赛事频道(CCTV5+)直播斯诺克世锦赛,中超被迫让路, 上海申花客场挑战梅州客家的比赛被安排在央视奥林匹克频道(CCTV16) 进行直播,当然,央视没有像以往一样在两大电视端平台直播中超,也是考虑到前国足主帅李铁、陈戌源等众多体育局和中国足协高管正在接受调查! 上海五星体育和广州市广播电视台南国都市频道也将进行直播。 首轮比赛中,上海申花主场1比0力挫山东泰山,梅州客家客场1比1战平北京国安。 得到巨资注入的老牌球队上海申花若能在客场击败球王李惠堂的家乡球队梅州客家,将暂时独占领头羊位置。

代码

https://github.com/zgpeace/pets-name-langchain/tree/develop

参考

https://python.langchain.com/docs/expression_language/cookbook/tools

你可能感兴趣的:(LLM-Large,Language,Models,langchain,搜索引擎,chatgpt,人工智能,python)