LangChain 23 Agents中的Tools用于增强和扩展智能代理agent的功能

news2024/11/18 23:45:51

LangChain系列文章

  1. LangChain 实现给动物取名字,
  2. LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字
  3. LangChain 3使用Agent访问Wikipedia和llm-math计算狗的平均年龄
  4. LangChain 4用向量数据库Faiss存储,读取YouTube的视频文本搜索Indexes for information retrieve
  5. LangChain 5易速鲜花内部问答系统
  6. LangChain 6根据图片生成推广文案HuggingFace中的image-caption模型
  7. LangChain 7 文本模型TextLangChain和聊天模型ChatLangChain
  8. LangChain 8 模型Model I/O:输入提示、调用模型、解析输出
  9. LangChain 9 模型Model I/O 聊天提示词ChatPromptTemplate, 少量样本提示词FewShotPrompt
  10. LangChain 10思维链Chain of Thought一步一步的思考 think step by step
  11. LangChain 11实现思维树Implementing the Tree of Thoughts in LangChain’s Chain
  12. LangChain 12调用模型HuggingFace中的Llama2和Google Flan t5
  13. LangChain 13输出解析Output Parsers 自动修复解析器
  14. LangChain 14 SequencialChain链接不同的组件
  15. LangChain 15根据问题自动路由Router Chain确定用户的意图
  16. LangChain 16 通过Memory记住历史对话的内容
  17. LangChain 17 LangSmith调试、测试、评估和监视基于任何LLM框架构建的链和智能代理
  18. LangChain 18 LangSmith监控评估Agent并创建对应的数据库
  19. LangChain 19 Agents Reason+Action自定义agent处理OpenAI的计算缺陷
  20. LangChain 20 Agents调用google搜索API搜索市场价格 Reason Action:在语言模型中协同推理和行动
  21. LangChain 21 Agents自问自答与搜索 Self-ask with search
  22. LangChain 22 LangServe用于一键部署LangChain应用程序
    在这里插入图片描述

1. tools 用于增强和扩展Agents

在Langchain框架中,tools是一种重要的组件,用于增强和扩展智能代理(agent)的功能。这些tools提供了一系列附加能力,使得代理可以执行特定的任务,处理复杂的数据类型,或与外部服务进行交互。以下是对Langchain中tools的详细解释:
在这里插入图片描述

定义和作用

  • 定义tools在Langchain中指的是可以被智能代理用来执行特定操作或任务的功能模块或服务。
  • 作用:这些工具使得代理不仅限于其内置的语言处理能力,还可以执行更复杂的任务,如数据分析、图像处理、网络搜索等。

类型和示例

  1. 数据处理工具:用于处理和分析数据,如数据清洗、格式转换、统计分析等。
  2. 搜索工具:使代理能够进行网络搜索,获取信息或回答查询。
  3. 交互工具:用于提高与用户的交互效果,如自然语言理解、情感分析等。
  4. API集成:允许代理与外部API进行交互,获取或发送数据。

实现方式

  • 集成tools通常通过API或特定的编程接口集成到Langchain框架中。
  • 配置:开发者可以根据需要配置和定制tools,以适应特定的应用场景。

应用场景

  • 多功能代理:使用tools扩展代理的能力,让其能处理更多类型的任务。
  • 特定任务:针对特定的业务需求或技术挑战,定制相应的tools
  • 用户体验:通过交互和数据处理工具,提高代理与用户互动的质量和效果。

优势和局限性

  • 优势:提供灵活性和扩展性,使代理能够适应多种不同的任务和场景。
  • 局限性:依赖外部服务或数据源可能带来安全性和可靠性方面的考虑。

结论

Langchain中的tools为开发者提供了一种强大的方式来增强智能代理的功能和适用范围。通过合理地选择和配置这些工具,可以创建出能够处理复杂任务、提供丰富交互体验的高效智能代理。然而,开发者需要考虑到集成外部工具的安全性和稳定性,确保整体系统的可靠运行。

2. Langchain的tools的arxiv

在Langchain中,arxiv是一种特定的工具(tool),用于与Arxiv API进行交互。Arxiv API是一个公开的接口,允许用户访问Arxiv数据库中的大量科学论文和出版物。下面是对arxiv工具的详细介绍:

Arxiv API Wrapper

  • 功能ArxivAPIWrapper是一个封装器(wrapper),它简化了与Arxiv API的交互,使得在Langchain中可以方便地获取论文信息。
  • 用途:通过这个工具,Langchain智能代理可以查询Arxiv数据库,获取特定论文的信息,如标题、作者、摘要、发表日期等。

使用方式

  • 初始化:首先,需要创建ArxivAPIWrapper的实例。这通常在初始化智能代理时通过load_tools函数完成。
  • 查询:可以通过传递论文的唯一标识符(如arXiv ID)来查询特定论文的详细信息。

示例应用

  • 论文摘要获取:可以获取指定论文的摘要,用于了解论文的主要内容和贡献。
  • 作者信息查询:可以检索特定作者的发布论文列表或其研究领域。
  • 论文搜索:支持按关键词或其他条件搜索相关论文。

优点

  • 直接访问:提供了直接访问科学论文数据库的便利,方便在智能代理中嵌入学术研究的功能。
  • 自动化信息检索:可以自动化地检索和处理大量学术数据,提高效率。

使用场景

  • 学术研究辅助:用于帮助研究人员快速找到相关的学术资料。
  • 教育和学习:在教育应用中,可以用于获取特定领域的最新研究成果。

注意事项

  • 版权和使用限制:在使用Arxiv API获取的数据时,需要遵守相关的版权和使用条款。
  • 数据准确性:虽然Arxiv提供的是学术论文,但用户在使用这些信息时仍需自行判断其准确性和可靠性。

总的来说,Langchain中的arxiv工具提供了一个方便的接口,让智能代理能够轻松访问和利用Arxiv上的丰富学术资源。

3. 代码实现

读取paper 的信息 Large Language Models
在这里插入图片描述

Tools/chat_tools_arxiv.py这段代码主要用于演示如何使用Langchain结合OpenAI聊天模型和Arxiv API来获取论文相关的信息。代码中包含了从加载环境变量、初始化智能代理到使用API获取数据的完整流程。

from langchain.llms import OpenAI  # 导入Langchain库的OpenAI模块,提供与OpenAI模型的交互功能
from langchain.prompts import PromptTemplate  # 导入用于创建和管理提示模板的模块
from langchain.chains import LLMChain  # 导入用于构建基于大型语言模型的处理链的模块
from dotenv import load_dotenv  # 导入dotenv库,用于从.env文件加载环境变量,管理敏感数据如API密钥
from langchain.chat_models import ChatOpenAI  # 导入用于创建和管理OpenAI聊天模型的类
from langchain.agents import AgentType, initialize_agent, load_tools  # 导入用于初始化智能代理和加载工具的函数
from langchain.utilities import ArxivAPIWrapper  # 导入Arxiv API的包装器,用于与Arxiv数据库交互

load_dotenv()  # 调用dotenv函数加载.env文件中的环境变量

llm = ChatOpenAI(temperature=0.0)  # 创建一个温度参数为0.0的OpenAI聊天模型实例,温度0意味着输出更确定性
tools = load_tools(["arxiv"])  # 加载Arxiv工具,以便代理可以访问Arxiv数据库信息

agent_chain = initialize_agent(
    tools,
    llm,
    agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
    verbose=True,  # 初始化一个智能代理,使用零次学习的方式来根据描述做出反应
)

paper = "2307.05782"
response = agent_chain.run("请描述论文的主要内容 " + paper)  # 运行代理链,获取指定论文ID的内容描述
print(response)  # 打印论文描述的响应

arxiv = ArxivAPIWrapper()
docs = arxiv.run(paper)  # 使用Arxiv API获取特定论文的详细信息
print(docs)  # 打印论文的详细信息

author = arxiv.run("Michael R. Douglas")  # 使用Arxiv API获取指定作者的信息
print(author)  # 打印作者信息

nondocs = arxiv.run("1605.08386WWW")  # 尝试使用一个非标准格式的ID来获取信息,可能无法正确检索
print(nondocs)  # 打印这次非标准检索的结果

运行结果如下

(develop)⚡ % python Tools/chat_tools_arxiv.py                            ~/Workspace/LLM/langchain-llm-app


> Entering new AgentExecutor chain...
I need to find the main content of the paper with the given arXiv ID.
Action: arxiv
Action Input: 2307.05782
Observation: Published: 2023-10-06
Title: Large Language Models
Authors: Michael R. Douglas
Summary: Artificial intelligence is making spectacular progress, and one of the best
examples is the development of large language models (LLMs) such as OpenAI's
GPT series. In these lectures, written for readers with a background in
mathematics or physics, we give a brief history and survey of the state of the
art, and describe the underlying transformer architecture in detail. We then
explore some current ideas on how LLMs work and how models trained to predict
the next word in a text are able to perform other tasks displaying
intelligence.
Thought:The main content of the paper is about large language models, specifically focusing on the development of OpenAI's GPT series. It provides a history and survey of the state of the art, describes the transformer architecture, and explores current ideas on how LLMs work and their ability to perform various tasks displaying intelligence.
Final Answer: The main content of the paper is about large language models, with a focus on OpenAI's GPT series and their underlying transformer architecture.

> Finished chain.
The main content of the paper is about large language models, with a focus on OpenAI's GPT series and their underlying transformer architecture.
(develop)⚡ % python Tools/chat_tools_arxiv.py                            ~/Workspace/LLM/langchain-llm-app
Published: 2023-10-06
Title: Large Language Models
Authors: Michael R. Douglas
Summary: Artificial intelligence is making spectacular progress, and one of the best
examples is the development of large language models (LLMs) such as OpenAI's
GPT series. In these lectures, written for readers with a background in
mathematics or physics, we give a brief history and survey of the state of the
art, and describe the underlying transformer architecture in detail. We then
explore some current ideas on how LLMs work and how models trained to predict
the next word in a text are able to perform other tasks displaying
intelligence.
(develop)⚡ % python Tools/chat_tools_arxiv.py                            ~/Workspace/LLM/langchain-llm-app
Published: 2006-02-24
Title: Understanding the landscape
Authors: Michael R. Douglas
Summary: Based on comments made at the 23rd Solvay Conference, December 2005,
Brussels.

Published: 2005-08-09
Title: Random algebraic geometry, attractors and flux vacua
Authors: Michael R. Douglas
Summary: This is a submission to the Encyclopedia of Mathematical Physics (Elsevier,
2006) and conforms to its referencing guidelines.

Published: 2001-05-02
Title: D-Branes and N=1 Supersymmetry
Authors: Michael R. Douglas
Summary: We discuss the recent proposal that BPS D-branes in Calabi-Yau
compactification of type II string theory are Pi-stable objects in the derived
category of coherent sheaves.
(develop)⚡ % python Tools/chat_tools_arxiv.py                            ~/Workspace/LLM/langchain-llm-app
No good Arxiv Result was found

4. 根据给定的描述或指令理解并执行任务ZERO_SHOT_REACT_DESCRIPTION

Langchain中的ZERO_SHOT_REACT_DESCRIPTION是一种用于定义和构建智能代理(agent)的方法,属于Langchain框架中的一个组件。它专注于实现代理的“零次学习”(zero-shot learning)能力,即在没有针对具体任务进行专门训练的情况下,根据描述直接做出反应和处理问题。下面详细解释这个概念:

零次学习(Zero-Shot Learning)

  • 定义:零次学习是一种机器学习方法,使得模型能够处理它在训练阶段没有直接见过的任务或数据。这种方法依赖于模型对问题的一般理解和处理能力。
  • 应用:在Langchain中,这意味着智能代理可以根据描述直接处理各种问题,而不需要针对每种问题进行单独的训练。

Langchain中的ZERO_SHOT_REACT_DESCRIPTION

  • 作用:这个模式使得代理能够根据给定的描述或指令理解并执行任务。代理会使用其内置的语言模型来解析和响应问题。
  • 实现:通常,这涉及到使用大型语言模型(如GPT系列)来解析自然语言描述,并根据这些描述生成回应或执行操作。
  • 优势:这种方法的优势在于灵活性和广泛的适用性,代理不需要对每一种特定的任务类型进行训练即可应对新问题。
  • 局限性:然而,由于它依赖于模型的通用理解能力,可能在特定、复杂或非常专业化的任务上不如专门训练的模型准确。

应用场景

  • 多功能代理:能够处理各种类型的查询和任务,如信息检索、简单的数据分析、生成文本等。
  • 快速适应新任务:在新场景或对新类型的问题作出响应时,不需要额外的训练或配置。

结论

ZERO_SHOT_REACT_DESCRIPTION在Langchain中为开发者提供了一种构建能够处理多种任务的通用智能代理的方法。这种方法特别适合于快速开发和部署、需要高度灵活性和广泛适用性的应用场景。然而,对于需要高度专业化或极端精确度的任务,可能需要考虑其他更专门化的解决方案。

代码

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

参考

https://python.langchain.com/docs/integrations/tools/arxiv

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1294748.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

KST指标底背离选股公式,通过变动率ROC合成动量震荡指标

KST指标(KnowSureThing)是由马丁普林斯(Martin Pring)于1992年发明的技术分析指标,目的在于及时识别价格趋势的变化和转折点,同时避免短期震荡指标不稳定的缺点。KST指标结合了四个周期的ROC(变…

学习记录---kubernetes中备份和恢复etcd

一、简介 ETCD是kubernetes的重要组成部分,它主要用于存储kubernetes的所有元数据,我们在kubernetes中的所有资源(node、pod、deployment、service等),如果该组件出现问题,则可能会导致kubernetes无法使用、资源丢失等情况。因此…

HarmonyOS学习 第2节 DevEco Studio工程介绍

工程配置页 界面布局介绍 代码编辑区、通知栏、工程目录区、预览区 工程目录区 便于理解,可以切换为 Ohos AppScope主要用于存放整个应用公共的信息与资源 entry默认的初始模块ets文件用于存放编写的代码文件configuration存放相应模块的配置文件resources对应模块…

上证指数近十年走势图

上证指数是中国股市的晴雨表,其近十年的走势图展现了中国经济波动、政策变化、国际形势等多重因素对股市的影响。让我们一起通过这张图,深入探讨上证指数的波动,了解其中的因果关系和背后的故事。 2013-2015:震荡上行 回顾近十年…

【FPGA】Verilog:BCD 加法器的实现

0x00 XOR 运算在 2 的补码加减法中的应用 2 的补码加减法的特点是,当从某个数中减去负数时,将其转换为正数的加法来计算,并将减去正数的情况转换为负数的加法来计算,从而将所有减法运算转换为加法运算。在这种情况下,…

windows系统nodeJs报错node-sass npm ERR! command failed

报错信息 npm WARN deprecated request2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142 npm WARN deprecated tar2.2.2: This version of tar is no longer supported, and will not receive security updates. Please upgrade asa…

DDD架构思想专栏一《初识领域驱动设计DDD落地》

引言 最近准备给自己之前写的项目做重构,这是一个单体架构的小项目,后端采用的是最常见的三层架构。因为项目比较简单,其实采用三层架构就完全够了。但是呢,小编最近在做DDD架构的项目,于是就先拿之前写的一个老项目试…

解决Eslint和Prettier关于三元运算符的冲突问题

三元运算符Prettier的格式化 三元运算符Eslint的格式要求 解决办法 // eslint加入配置,屏蔽标红报错indent: [error, 2, { ignoredNodes: [ConditionalExpression] }]效果

HCIP —— BGP 基础 (上)

BGP --- 边界网关协议 (路径矢量协议) IGP --- 内部网关协议 --- OSPF RIP ISIS EGP --- 外部网关协议 --- EGP BGP AS --- 自治系统 由单一的组织或者机构独立维护的网络设备以及网络资源的集合。 因 网络范围太大 需 自治 。 为区分不同的AS&#…

智能优化算法应用:基于浣熊算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于浣熊算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于浣熊算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.浣熊算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

1 接口测试介绍

在软件测试工作中,接口测试是必不可少的。接口测试一般是发生在单元测试之后,系统测试之前。当开发人员输出API文档后,测试人员就可以开始编写接口测试用例了。接口测试可以让测试人员更早的介入,不需要等待前后端联调完成才开始测…

信息化,数字化,智能化三者是同一概念么?

引言 在当今科技和商业领域,信息化、数字化和智能化是三个极为关键的概念。信息化强调信息的获取、传递和应用,数字化则是将物理实体转化为数字形式,而智能化则赋予系统更高级的智能和自主性。这些概念的交汇与融合塑造着我们的现实&#xf…

Windows下安装Nginx

Nginx简介 Nginx 是一个高性能的HTTP和反向代理web服务器,其特点是占有内存少,并发能力强,其并发能力在同类型的网页服务器中表现较好。 Nginx安装 下载地址 安装稳定版本 下载完成后进行解压 可以双击nginx.exe 启动nginx 也可以打开cm…

基于POSIX标准的Linux进程间通信

文章目录 1 管道(匿名管道)1.1 管道抽象1.2 接口——pipe1.3 管道的特征1.4 管道的四种情况1.5 匿名管道用例 2 命名管道2.1 创建一个命名管道——mkfifo2.2 关闭一个管道文件——unlink2.3 管道和命名管道的补充2.4 命名管道用例 3 共享内存3.1 原理3.2…

中国特供阉割版 RTX 4090 曝光,老黄这操作绝了

到了现在大伙儿应该发现:国内禁售 NVIDIA RTX 4090 显卡这事儿基本实锤了。 实际上根据老美规定,从上个月 17 号开始,凡是公司主体在中国的显卡品牌,就已经不能生产和销售 RTX 4090。 以后厂商想要卖 4090 只能以整机形式出售&am…

第一启富金:新添澳大利亚(ASIC)牌照

第一启富金:澳大利亞證券及投資委員會(ASIC) GOLDWELL GLOBAL PTY LTD 是 WHOLESALE INVESTOR SERVICES PTY LTD(CAR 編號 001304943)的企業授權代表開發澳大利亞客戶,WHOLESALE INVESTOR SERVICES PTY LT…

二维码智慧门牌管理系统升级:提升社会管理和公共服务水平

文章目录 前言一、升级的意义二、升级方案三、升级后的好处 前言 随着科技不断进步,二维码智慧门牌管理系统在公共管理和服务领域扮演关键角色。随着需求的增长,现有系统已难以满足各方需求。因此,系统升级成为紧迫任务。 一、升级的意义 升…

静态HTTP和动态HTTP的混合使用:最佳实践

在当今的互联网环境中,静态HTTP和动态HTTP各有其优势和局限。静态HTTP具有速度快、安全性高和易于维护的特点,而动态HTTP则能够实现动态交互和处理大量动态数据。为了充分利用两者的优势,越来越多的网站开始采用静态HTTP和动态HTTP混合使用的…

存储成本降71%,怪兽充电历史库迁移OceanBase

怪兽充电作为共享充电宝第一股,业务增长迅速,以至于业务架构不停地增加组件。在验证 OceanBase 可以简化架构并带来更大的业务价值后,首次尝试在历史库中使用 OceanBase 替代 MySQL,存储成本降低 71%。本文为怪兽充电运维架构部王…

性能优化,单台4核8G机器支撑5万QPS

前言 这篇文章的主题是记录一次Python程序的性能优化,在优化的过程中遇到的问题,以及如何去解决的。为大家提供一个优化的思路,首先要声明的一点是,我的方式不是唯一的,大家在性能优化之路上遇到的问题都绝对不止一个…