LLM之LangChain(二)| LangChain中的Agent

news2024/11/19 11:26:50

       在本文中,我们将讨论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.coloradmin.cn/o/1385875.html

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

相关文章

卸载Notepad++!事实已证明,它更牛逼……

本文系统全面的介绍了 Sublime Text,旨在成为最优秀的 Sublime Text 中文教程。 前言 Sublime Text 是一款跨平台代码编辑器(Code Editor),从最初的 Sublime Text 1.0,到现在的 Sublime Text 3.0,Sublime …

突破界限:首个国产DeepSeek MoE的高效表现

前言 在人工智能技术的快速发展过程中,国产首个开源MoE(Mixture of Experts)大模型——DeepSeek MoE的推出,不仅标志着中国在全球AI领域的重大突破,而且在计算效率和模型性能上展现了显著的优势。这款160亿参数的模型…

医疗器械生物学评价系列标准

医疗器械生物学评价系列标准(GB/T 16886/ISO 10993)是保障医疗器械安全的基础标准,内容涵盖医疗器械生物学评价基本指导原则、各项生物学试验方法、样品制备方法、理化表征方法等,是医疗器械生物学试验、评价、技术审批的重要依据,是医疗器械…

计算机图形学作业:Cohen-Sutherland和Liang-Barsky 裁剪算法

参考书籍和资料: Liang-Barsky参考下面视频14.2.1 [14.2.1]--讲解经典的梁友栋-巴斯基算法。_哔哩哔哩_bilibili Cohen-Sutherland参考孔令德的计算机图形学实验及课程设计(第二版),实验五直线段的裁剪 题目如下: …

R语言【文章复现】——集成式地绘制高分辨率的多样性分布图,对方法的检验和优化,以及处理思路的思考

参考文献 本文对一篇 2022 年发表在 New Phytologist 的绘图方法文章中的技术路线进行复现。 An integrated high-resolution mapping shows congruent biodiversity patterns of Fagales and Pinales Summary 文中,作者针对在全球尺度上绘制物种分布图提出了一种全新的方法…

大白菜U盘安装系统-戴尔电脑

1. 把U盘插入电脑,启动盘去大白菜官网找,镜像可以去微软官网下,想要专业版的网上找资源。 2. 重启电脑,等出现log之后狂按F12,进入BOSS模式。 3. 选择UEFI...也就是下面白色的,按下回车。 4. 选第一个 5.…

数据结构_C++语言描述_高教出版社

contents 前言一、绪论1.1 数据分析结构存储算法计算1.1.1 逻辑结构1.1.2 存储结构1.1.3 算法实现 1.2 数据类型1.3 算法方法 二、线性表2.1 线性表的逻辑结构2.2 线性表的存储结构2.2.1 顺序存储结构2.2.2 链式存储结构 2.3 线性表的操作算法2.3.1 顺序表的操作算法2.3.2 链表…

RK3568驱动指南|驱动基础进阶篇-进阶3 驱动代码使用Makefile的宏

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工…

Nvidia Jetson AGX Orin使用CAN与底盘通信(ROS C++ 驱动)

文章目录 一、Nvidia Jetson AGX Orin使用CAN通信1.1 CAN使能配置修改GPIO口功能1.2 can收发测试 二、通过CAN协议编写CAN的SocketCan ROS1驱动程序2.1 通讯协议2.2 接收数据节点2.3 发送数据节点2.4 功能包配置 三、ROS2驱动程序 一、Nvidia Jetson AGX Orin使用CAN通信 参考…

linux手动安装 vscode-server

适用场景 很多时候,我们需要在本机(比如windows)通过remote ssh访问远程服务器(一般是ubuntu),但经常出现 vscode 一直连不上远程服务器的情况,看一下 log: 这个log表示远程服务器…

【2023年收入最高的10种编程语言】

在过去的一年时间里(2022 年 10 月 1 日到 2023 年 10 月 1 日) ,DevJobsScanner 分析了来自世界各地的超过 1000 万份开发工作机会,以了解市场以及最热门、薪酬最高的编程语言。值得注意的是,本项研究只关注了来自美国…

【Linux】网络诊断 traceroute命令详解

目录 一、traceroute概述 1.1 traceroute命令简介 1.2 命令格式 1.3 原理 1.4 命令功能 二、使用实例 实例1:traceroute 用法简单、最常用的用法 实例2:跳数设置 实例3:设置探测数据包数量 实例4:显示IP地址&#xff0c…

什么是SAMBA?如何配置?方法来了!

/bin/bash 目录 SAMBA SMB协议 SMB连接过程 samba主要有两个进程 Linux下搭建samba服务器实现文件共享 Linux客户端: Windows客户端: SAMBA samba是SMB文件共享协议的应用软件,可以让Linux系统和Windows系统之间相互共享资源。 在Lin…

3d模型素材亮度和对比度如何调整呢?

1、修改材质参数:打开3ds Max后,选择要调整亮度和对比度的3D模型素材。然后,进入材质编辑器,选择相应的材质球。在材质编辑器中,你可以调整材质的漫反射、反射和高光等参数,这些参数将影响模型的亮度和对比…

K8S的dashboard使用账号密码登录

原文网址:K8S的dashboard使用账号密码登录-CSDN博客 简介 本文介绍K8S的dashboard使用账号密码登录的方法。 ----------------------------------------------------------------------------------------------- 分享Java真实高频面试题,吊打面试官&…

美颜技术对比:如何根据项目选择不同的美颜SDK?

各位开发者应该非常清楚,为了在项目中取得最佳效果,选择合适的美颜SDK至关重要。本篇文章,笔者将通过对比不同美颜SDK的关键特性,帮助开发者根据项目需求做出明智的选择。 一、技术原理对比 不同的美颜SDK可能采用不同的技术原理…

如何使用CFImagehost结合内网穿透搭建私人图床并无公网ip远程访问

[TOC] 推荐一个人工智能学习网站点击跳转 1.前言 图片服务器也称作图床,可以说是互联网存储中最重要的应用之一,不仅网站需要图床提供的外链调取图片,个人或企业也用图床存储各种图片,方便随时访问查看。不过由于图床很不挣钱&a…

大数据开发之Hive(压缩和存储)

第 9 章:压缩和存储 Hive不会强制要求将数据转换成特定的格式才能使用。利用Hadoop的InputFormat API可以从不同数据源读取数据,使用OutputFormat API可以将数据写成不同的格式输出。 对数据进行压缩虽然会增加额外的CPU开销,但是会节约客观…

Qt QTableView和QStandardItemModel包含搜索出现的文本及隐藏顶层节点

前言 使用Qt进行开发时,树结构一般是使用QTreeWidget或使用QTreeViewQStandardItemModel结合。 查找 如果要进行查找树的所有项中,是否包含某文本,就需要遍历。 QTreeWidget查找 以下是使用QTreeWidget进行查找: 首先初始化一…

Python 将列表数据写入文件(txt, csv,excel)

写入txt文件 def text_save(filename, data):#filename为写入txt文件的路径,data为要写入数据列表. file open(filename,a) for i in range(len(data)): s str(data[i]).replace([,).replace(],)#去除[],这两行按数据不同,可以选择 s s.replace(&quo…