LLM之LangChain(二)| LangChain中的Agent

       在本文中,我们将讨论LangChain中的Agent及其各种类型。但在深入研究Agent之前,让我们先了解一下什么是LangChain和Agent。

一、什么是LangChain?

       LangChain是一种功能强大的自动化工具,可用于各种任务,它提供了可用于创建agent的各种工具。

Agents:agent是一种旨在与现实世界交互的软件程序。LangChain提供不同类型的代理商。

Tools:LangChain提供有助于开发agent的工具。

要了解更多关于LangChain的信息,可以参考:https://www.c-sharpcorner.com/article/getting-started-with-langchain/

二、什么是Agent?

       LangChain中的Agent是为了与现实世界互动而构建的,它们可以自动执行任务并参与现实世界的场景。LangChain代理可用于各种任务,如回答问题、生成文本、翻译语言、总结文本等。

三、LangChain中的代理类型

       LangChain中的Agent使用LLM(语言学习模型)来确定要采取的操作以及顺序。

3.1 Zero-shot ReAct

       Zero-shot ReAct Agent是一种语言生成模型,即使不经过特定数据的训练,也可以创建真实的上下文。它可以用于各种任务,如生成创造性的文本格式、语言翻译和生成不同类型的创造性内容。

from langchain.agents import initialize_agent, load_tools, AgentTypefrom langchain.llms import OpenAIllm = OpenAI(openai_api_key="your_api_key")tools = load_tools(["wikipedia", "llm-math"], llm=llm)agent = initialize_agent(tools , llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)output_1=agent.run("4 + 5 is ")output_2=agent.run("when you add 4  and 5 the result comes 10.")print(output_1)print(output_2)

       在上面的代码中,导入了LangChain库,并通过设置OpenAI API Key来初始化OpenAI语言模型(LLM)。该代码使用维基百科和数学信息工具设置AI代理,将代理类型指定为ZERO_SHOT_REACT_DESCRIPTION代理。然后,代码提供两个提示来演示与代理的一次性交互。

3.2 Conversational ReAct

       此代理是为在会话设置中使用而设计的,它结合了React框架来确定使用哪个工具,并利用内存来记住以前的对话交互。

from langchain.agents import initialize_agent, load_toolsfrom langchain.llms import OpenAIfrom langchain.memory import ConversationBufferMemoryllm = OpenAI(openai_api_key="...")tools = load_tools(["llm-math"],  llm=llm)memory = ConversationBufferMemory(memory_key="chat_history")conversational_agent = initialize_agent(    agent="conversational-react-description",     tools=tools,     llm=llm,    verbose=True,    max_iterations=3,    memory=memory,)output_1=conversational_agent.run("when you add 4  and 5 the result comes 10.")output_2=conversational_agent.run("4 + 5 is ")print(output_1)print(output_2)

      上面的代码通过导入必要的模块、设置了OpenAI LLM API Key、加载LLM-math等特定工具进行数学运算以及创建会话缓冲内存来演示LangChain库的使用。然后使用指定的代理类型、工具、LLM和其他参数初始化会话代理。该代码展示了与代理交互的两个提示。

3.3 ReAct Docstore

       该代理使用React框架与文档存储进行通信。它要求提供名称相同的“搜索”工具和“查找”工具。“搜索”工具用于搜索文档,而“查找”工具则在最近找到的文档中查找术语。

from langchain.agents import initialize_agent, Toolfrom langchain.llms import OpenAIfrom langchain import Wikipediafrom langchain.agents.react.base import DocstoreExplorerllm = OpenAI(openai_api_key="...")docstore = DocstoreExplorer(Wikipedia())tools=[    Tool(name="Search", func=docstore.search, description="useful for when you need to ask with search"),    Tool(name="Lookup", func=docstore.lookup, description="useful for when you need to ask with lookup")]react_agent= initialize_agent(tools, llm, agent="react-docstore")print(react_agent.run("Full name of Narendra Modi is Narendra Damodardas Modi?")) # look on the keywords then go for searchprint(react_agent.run("Full name of Narendra Modi is Narendra Damodardas Modi."))

        上面的代码从LangChain导入必要的模块,并使用API Key初始化OpenAI语言模型(LLM)。它建立了一个以维基百科为源的文档存储资源管理器。定义了两个工具,“搜索”和“查找”,其中“搜索”工具搜索文档,“查找”工具执行术语查找。

3.4 Self-ask with Search

        此代理使用中间回答工具进行自我提问。

from langchain.agents import initialize_agent, Toolfrom langchain.llms import OpenAIfrom langchain import Wikipediallm = OpenAI(openai_api_key="...")wikipedia = Wikipedia()tools = [    Tool(        name="Intermediate Answer",        func=wikipedia.search,        description='wikipedia search'    )]agent = initialize_agent(    tools=tools,    llm=llm,    agent="self-ask-with-search",    verbose=True,)print(agent.run("what is the capital of Japan?"))

       上述代码从LangChain库导入必要的模块,包括代理和语言模型,它设置了一个具有特定代理配置的会话代理,称为“self-ask-with-search”。该代理使用“Intermediate Answer”工具来执行维基百科搜索。

四、常见问题FAQ

问:在LangChain中,Chain和Agent有什么区别?

答:LangChain中Agent和Chain之间的主要区别在于,Agent使用语言模型来确定其动作,而Chain是由开发人员设置的预定义动作序列。Agent使用语言模型根据用户输入和可用工具生成响应,而Chain遵循固定的输入/输出过程。

问:Verbose()做什么?

答:verbose选项可以在屏幕上显示详细的运行信息。

问:LangChain的温度是多少?

答:默认情况下,LangChain聊天模型的创建温度值为0.7。温度参数控制输出的随机性。较高的值(如0.7)使输出更随机,而较低的值(例如0.2)使输出更有重点和确定性。

参考文献:

[1] https://bakshiharsh55.medium.com/agents-in-langchain-3eb92f206a5f

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

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

相关文章

Python高级语法:自定义上下文管理器

在Python中,可以使用contextlib模块来自定义上下文管理器。上下文管理器通常用于资源的分配和释放,例如文件的打开和关闭、数据库连接的建立和断开等。 下面是一个示例,演示如何使用上下文管理器来打开和关闭文件: from context…

【项目搭建二】SpringBoot引入druid、mybatis、mybatisPlus

引入druid 添加依赖 pom.xml中增加以下依赖&#xff1a; <!-- Mysql驱动 --> <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.31</version> </dependency> <!-…

Cobalt: 我愿称之为IDEA最美配色☕️

先来个预览&#xff1a; Cobalt是为IntelliJ IDEA和Java语言优化的一个配色主题&#xff0c;以现代和科技感的蓝色为主。题主相信哪怕是一个简单的主题配色&#xff0c;都是可以给开发者们带来更有生产力、更舒适的创作心境。希望你会喜欢&#xff01; 另外Cobalt这个名字取自…

【开源】基于JAVA的教学资源共享平台

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 课程档案模块2.3 课程资源模块2.4 课程作业模块2.5 课程评价模块 三、系统设计3.1 用例设计3.2 类图设计3.3 数据库设计3.3.1 课程档案表3.3.2 课程资源表3.3.3 课程作业表3.3.4 课程评价表 四、系统展…

04章【面向对象(上)】

文章目录 面向对象基本概念类与对象类和对象的定义格式对象与内存分析封装性构造方法this关键字值传递与引用传递对象的一对一关系static关键字main方法分析代码块单例设计模式对象数组与管理 面向对象基本概念 什么是面向对象&#xff1a; 面向对象是一种编程思想。面向对象…

经典ABR算法介绍:Pensieve (SIGCOMM ‘17) 原理及训练指南

文章目录 前言Pensieve原理*Pensieve重训练参考Oboe [SIGCOMM 18]Comyco [MM 19]Fugu [NSDI 20] A3C熵权重衰减思路实现 前言 Pensieve是DASH点播视频中最经典的ABR算法之一&#xff0c;也是机器学习类&#xff08;Learning-based&#xff09;ABR算法的代表性工作。Pensieve基…

Redis面试题23

Redis 的持久化机制是什么&#xff1f; 答&#xff1a;Redis 提供了两种持久化机制来保证数据的持久性&#xff0c;即 RDB&#xff08;Redis Database&#xff09;和 AOF&#xff08;Append Only File&#xff09;。 RDB 持久化&#xff1a;RDB 是 Redis 默认的持久化方式。它…

母婴品牌找小红书达人卖货怎么做?

小红书母婴种草推广&#xff0c;就是品牌方找小红书上的达人进行产品体验和内容分享&#xff0c;从而达到卖货的目的&#xff0c;软广形式更容易被大众所接受&#xff0c;而且小红书平台上的宝妈用户群体都是有一定消费水平的一二线城市用户&#xff0c;所以这样就会形成一套完…

十一、常用API——正则表达式

目录 练习1&#xff1a; 正则表达式的作用 正则表达式 字符类&#xff08;只匹配一个字符&#xff09; 预定义字符&#xff08;只匹配一个字符&#xff09; 数量词 类 Pattern 正则表达式的构造摘要 反斜线、转义和引用 字符类 行结束符 组和捕获 Unicode 支持 与…

第3章 无监督学习与预处理

目录 1. 无监督学习的类型2. 无监督学习的挑战3. 预处理与缩放3.1 不同类型的预处理3.2 应用数据变换3.3 对训练数据和测试数据进行相同的缩放快捷方式与高效的替代方法 3.4 预处理对监督学习的作用 4. 降维、特征提取与流形学习4.1 主成分分析&#xff08;PCA&#xff09;4.1.…

大数据StarRocks(八):集群扩缩容

一、FE扩缩容 StarRocks FE 节点分为 Follower 节点和 Observer 节点。Follower 节点参与选举投票和写入&#xff0c;Observer 节点只用来同步日志&#xff0c;扩展读性能。 注意&#xff1a; 所有 FE 节点的 http_port 必须相同。Follower FE 节点&#xff08;包括 Leader …

Vue Axios——前端技术栈

文章目录 基本介绍Vue是什么&#xff1f; MVVMVue的使用快速入门注意事项和使用细节 Vue 数据绑定机制分析数据单向渲染注意事项和细节 双向数据绑定事件绑定示例&#xff1a;注意事项和使用细节课后作业1课后作业2 修饰符示例 条件渲染/控制: v-if v-showv-if VS v-show课后作…

山海鲸可视化软件:引领航空业数字化转型的智慧机场解决方案

作为山海鲸可视化软件的开发者&#xff0c;我们深知在当今数字化时代&#xff0c;数据可视化的重要性。特别是在航空业&#xff0c;数据可视化不仅可以提高运营效率&#xff0c;还能为决策者提供更准确、实时的信息。为此&#xff0c;我们推出了一款专为智慧机场设计的可视化解…

最简单安装anaconda

1、下载 wget https://mirrors.bfsu.edu.cn/anaconda/archive/Anaconda3-2022.10-Linux-x86_64.sh 2、激活 source ~/.bashrc

Backtrader 文档学习-Order General

Backtrader 文档学习-Order General Cerebro是backtrader中的关键控制系统&#xff0c;策略&#xff08;子类&#xff09;是最终用户的关键控制点&#xff0c;后者需要连接系统其他部分的方法&#xff0c;这就是订单扮演的关键角色。 Order将strategy的逻辑做出的决策转换为适…

HTML中div内容垂直居中显示

HTML中要将 div 元素的内容垂直居中显示&#xff0c;你可以使用 CSS 的 flexbox 或者 grid 布局来实现。下面分别介绍两种方法。 方法一&#xff1a;使用 flexbox 布局 <!DOCTYPE html> <html><head><style>.container {display: flex;align-items: …

外观设计重要还是实用性重要?

外观设计和实用性在产品设计中都非常重要&#xff0c;二者并不是对立的关系&#xff0c;而是相辅相成的。以下是我对外观设计和实用性的看法&#xff1a; 首先&#xff0c;外观设计的重要性。产品的外观设计直接影响到产品的品牌形象、市场吸引力和用户体验。一个具有吸引力和…

SDL2 连续帧图像显示

QT使用SDL多窗口显示视频&#xff08;linux&#xff0c;ubuntu&#xff09;_linux qt sdl-CSDN博客 QT使用SDL播放YUV视频 - C - QT SDL调用OPENGL渲染图像 - C - 心得 C 使用SDL显示RGB图像数据_c sdl-CSDN博客 SDL库入门&#xff1a;掌握跨平台游戏开发和多媒体编程_sdl开…

解决:Cannot call sendError() after the response has been committed问题

问题&#xff1a;执行导出操作后台日志打印 Cannot call sendError() after the response has been committed 原因&#xff1a;执行了第一个输出后&#xff0c;开启了关闭流操作&#xff0c;且关闭流后面还有第二个输出&#xff0c;故报错 解决&#xff1a;将第二个输出操作…

亚马逊卖食品有什么具体要求?亚马逊卖食品好做吗?—站斧浏览器

亚马逊卖食品有什么具体要求&#xff1f; 首先&#xff0c;亚马逊要求卖家提供食品的详细信息&#xff0c;包括产品描述、成分表、营养信息和包装规格等。这些信息对于消费者来说至关重要&#xff0c;它们可以帮助消费者了解产品的特点和质量&#xff0c;并做出明智的购买决策…