当前位置: 首页 > news >正文

【大语言模型】LangChain 核心模块介绍(Agents)

【大语言模型】LangChain 核心模块介绍(Agents)

  • 一、简介
  • 二、Agents 的核心概念
  • 三、实战案例
    • 3.1、需求说明
    • 3.2、实现思路
    • 3.3、完整源码

一、简介

我们都知道四肢的绝大部分动作都是由大脑决定的,大脑通过中枢神经下发自己的操作指令,四肢就可以按照我们的需求进行动作。

在这里插入图片描述

而大语言模型其实就相当于一个大脑的角色,其本身是无法直接进行任何操作的。那么就需要一个”中枢神经“,帮助它下发指令,传递反馈信息,这个中枢神经就是 Agent。

在这里插入图片描述
在官方文档中,有这样的一句说明,讲出了 Agents 的核心。

The core idea of agents is to use a language model to choose a sequence of actions to take.
代理的核心思想是使用语言模型来选择要采取的一系列行动。

如果在前面学习的过程中,通过 LangChain 让大模型了解的是“怎么思考”。那 Agents 的作用就是让大模型自己去决定“怎么做”。其实就是基于ReaAct理念的一种实践方式。

二、Agents 的核心概念

Agents 的核心思想是使用语言模型来选择要采取的一系列操作。语言模型所起到的作用为,被用作推理引擎来确定要采取哪些操作以及按什么顺序。在这个过程里面主要包含以下核心组件:

  • Schema
    • AgentAction
    • AgentFinish
    • Intermediate Steps
  • Agent
    • Agent Inputs
    • Agent Outputs
  • AgentExecutor
  • Tools
    • Considerations
  • Toolkits

三、实战案例

3.1、需求说明

通过 Agent 实现调用 Selenium 打开、退出浏览器、获取当前 URL 等操作。

3.2、实现思路

  • 实现工具包。
  • 初始化 Agent

3.3、完整源码

封装 Selenium 工具: 将会使用到的行为操作,提前封装起来

from selenium import webdriverclass WebAutoFramework:def __init__(self):self.driver = Noneif self.driver is None:# self.driver = webdriver.Firefox()option = webdriver.FirefoxOptions()option.binary_location = r"C:\Program Files (x86)\Mozilla Firefox\firefox.exe"self.driver = webdriver.Firefox(options=option)  # 这里添加的是driver的绝对路径self.driver.implicitly_wait(5)def open(self, url):self.driver.get(url)def quit(self):self.driver.quit()def get_title(self):return self.driver.title

定义工具池:将所有的行为操作,按照要求的tools规范定义清楚。

from langchain_core.tools import toolfrom Artificial_intelligence.大语言模型应用开发框架L2.核心模块Agents.web_auto_selenium import WebAutoFrameworkweb = WebAutoFramework()@tool
def open_web(url):"""打开一个网页"""web.open(url)# if __name__ == '__main__':
#     print(open.name)
#     print(open.args)
#     print(open.description)@tool
def quit_web():"""退出浏览器"""web.quit()@tool
def get_title():"""获取网页标题:return:"""print(web.get_title())tools = [open_web, quit_web, get_title]

初始化 Agent 并执行, 将封装好的 tools 传入 agent 中:

from langchain import hub
from langchain.agents import create_openai_functions_agent, AgentExecutor
from langchain_openai import ChatOpenAIfrom Artificial_intelligence.大语言模型应用开发框架L2.核心模块Agents.create_selenium_tools import tools
import osos.environ["OPENAI_API_KEY"] = "xxxxxxxxxxxxxxx"  # 将个人token替换到这个位置
os.environ["OPENAI_API_BASE"] = "xxxxxxxxxxxxxxx"prompt = hub.pull("hwchase17/openai-functions-agent")llm = ChatOpenAI(model="gpt-3.5-turbo")# 初始化 Agent
agent = create_openai_functions_agent(llm, tools, prompt)
# 初始化 Agent 的配置
agent_executor = AgentExecutor(agent=agent,tools=tools, verbose=True,return_intermediate_steps=True, handle_parsing_errors=True)
if __name__ == '__main__':agent_executor.invoke({"input": """请打开 https://www.baidu.com/ 网站返回当前的网页的标题,再退出浏览器。"""})

执行结果:

> Entering new AgentExecutor chain...Invoking: `open_web` with `{'url': 'https://www.baidu.com/'}`None
Invoking: `get_title` with `{}`百度一下,你就知道
None
Invoking: `quit_web` with `{}`None我已经打开了 https://www.baidu.com/ 网站,并获取了当前网页的标题为 "百度一下,你就知道"。现在已经退出了浏览器。如果您有任何其他问题或需要进一步帮助,请随时告诉我。> Finished chain.进程已结束,退出代码为 0

相关文章:

【大语言模型】LangChain 核心模块介绍(Agents)

【大语言模型】LangChain 核心模块介绍(Agents) 一、简介二、Agents 的核心概念三、实战案例3.1、需求说明3.2、实现思路3.3、完整源码 一、简介 我们都知道四肢的绝大部分动作都是由大脑决定的,大脑通过中枢神经下发自己的操作指令&#xf…...

19C-RAC 环境mgmtca.trc.1过大

客户监控告警/u01使用率超过80%,通过一层层目录查看,发现是mgmtca.trc.1过大导致的告警 [rootgsdb1 ~]# du -sh /u01/app/grid/cfgtoollogs/mgmtca/mgmtca.trc.1 103G /u01/app/grid/cfgtoollogs/mgmtca/mgmtca.trc.1 查看MOS文档:Huge …...

基于Spring Boot的同城宠物照看系统的设计与实现

一、摘要 在快节奏的现代生活中,宠物已成为许多家庭不可或缺的一部分。然而,宠物照看服务的需求也随之增长。为了满足这一需求,我们设计并实现了一款同城宠物照看系统,该系统利用Java技术和MySQL数据库,为用户提供一个…...

爬虫学习案例5

爬取b站一个视频 罗翔老师某一个视频很刑 单个完整代码: 安装依赖库 pip install lxml requests import osimport requests import re from lxml import etree import json # 格式化展开输出 from pprint import pprint # 导入进程模块 import subprocess head…...

视频监控汇聚平台方案设计:Liveweb视频智能监管系统方案技术特点与应用

随着科技的发展,视频监控平台在各个领域的应用越来越广泛。然而,当前的视频监控平台仍存在一些问题,如视频质量不高、监控范围有限、智能化程度不够等。这些问题不仅影响了监控效果,也制约了视频监控平台的发展。 为了解决这些问…...

ansible自动化运维(三)jinja2模板roles角色管理

相关文章ansible自动化运维(一)简介及清单,模块-CSDN博客ansible自动化运维(二)playbook模式详解-CSDN博客ansible自动化运维(四)运维实战-CSDN博客 三.Ansible jinja2模板 Jinja2是Python的全功能模板引…...

队列+宽搜_429. N 叉树的层序遍历_二叉树最大宽度

429. N 叉树的层序遍历 定义一个队列q,将一层的节点入队,并记录节点个数。根据节点的个数,出队列,并将其孩子入队列。出完队列,队列当前剩余节点的个数就是下次出队列的次数。直到队列为空 /* // Definition for a Nod…...

Windows11安装及使用nvm

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Windows11安装nvm 前言一、简介二、下载三、安装1、双击运行,同意协议,点击Next2、选择nvm安装路径,此路径也是环境变量NVM_HOME的路径&am…...

(一)机器学习 - 入门

数据集 数据集是一组数据的集合,这些数据可以是数值型、文本型、图形型等多种形式。数据集通常用于统计分析、机器学习、科学研究、商业智能等领域,以发现数据中的模式、趋势和关联性。 数据集的组成: 变量(Variables)…...

【解决】k8s使用kubeadm初始化集群失败问题整理

执行提示命令,查看报错信息 journalctl -xeu kubelet1、错误:running with swap on is no 报错 "command failed" err"failed to run Kubelet: running with swap on is no 解决: swap未禁用,需要禁用swap&…...

apache-dubbo

dubbo 文档地址 dubbo 官方文档地址 https://dubbo.apache.org/zh-cn/docs/user/references/api.html nacos 官方文档地址 https://nacos.io/zh-cn/docs/quick-start.html nacos下载地址 https://github.com/alibaba/nacos/releases/download/2.3.0/nacos-server-2.3.0.…...

ECharts柱状图-柱图2,附视频讲解与代码下载

引言: 在数据可视化的世界里,ECharts凭借其丰富的图表类型和强大的配置能力,成为了众多开发者的首选。今天,我将带大家一起实现一个柱状图图表,通过该图表我们可以直观地展示和分析数据。此外,我还将提供…...

【新人系列】Python 入门(十六):正则表达式

✍ 个人博客:https://blog.csdn.net/Newin2020?typeblog 📝 专栏地址:https://blog.csdn.net/newin2020/category_12801353.html 📣 专栏定位:为 0 基础刚入门 Python 的小伙伴提供详细的讲解,也欢迎大佬们…...

HTML综合

一.HTML的初始结构 <!DOCTYPE html> <html lang"en"><head><!-- 设置文本字符 --><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><!-- 设置网页…...

孚盟云 MailAjax.ashx SQL注入漏洞复现

0x01 产品简介 上海孚盟软件有限公司是一家外贸SaaS服务提供商,也是专业的外贸行业解决方案专业提供商。 全新的孚盟云产品,让用户可以用云模式实现信息化管理,让用户的异地办公更加流畅,大大降低中小企业在信息化上成本,用最小的投入享受大型企业级别的信息化服务,主要…...

解决“VMware虚拟机报Intel VT-x”错误

今天&#xff0c;在windows系统上&#xff0c;打开VMware WorkStation v15软件里的虚拟机&#xff0c;弹出"Intel VT-x处于禁用状态"错误&#xff0c;如图(1)所示&#xff1a; 图(1) 虚拟机报"Intel VT-x"错误 问题原因&#xff1a;当前电脑的BIOS没有开启…...

NiceGUI `ui.table` 基础

NiceGUI ui.table 基础 ui.table 是 NiceGUI 提供的一个组件&#xff0c;用于在页面上展示数据表格 基本概念 官方简介 A table based on Quasar’s QTable component. 参数参考rows:list of row objects; 行对象列表columns:list of column objects (defaults to the colu…...

分布式 Raft算法 总结

前言 相关系列 《分布式 & 目录》《分布式 & Raft算法 & 总结》《分布式 & Raft算法 & 问题》 参考文献 《Raft一致性算法论文译文》《深入剖析共识性算法 Raft》 简介 Raft 木筏是一种基于日志复制实现的分布式容错&一致性算法。在Raft算法…...

C++ 中面向对象编程如何实现动态绑定?

在 C 中&#xff0c;动态绑定&#xff08;Dynamic Binding&#xff09;是通过 虚函数&#xff08;virtual function&#xff09; 和 多态性&#xff08;polymorphism&#xff09; 来实现的。这是面向对象编程的重要特性之一&#xff0c;它允许程序在运行时根据对象的实际类型调…...

微服务-01

1.认识微服务 1.1 单体架构 单体架构&#xff08;monolithic structure&#xff09;&#xff1a;顾名思义&#xff0c;整个项目中所有功能模块都在一个工程中开发&#xff1b;项目部署时需要对所有模块一起编译、打包&#xff1b;项目的架构设计、开发模式都非常简单。 当项目…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 &#xff08;一&#xff09;实时滤波与参数调整 基础滤波操作 60Hz 工频滤波&#xff1a;勾选界面右侧 “60Hz” 复选框&#xff0c;可有效抑制电网干扰&#xff08;适用于北美地区&#xff0c;欧洲用户可调整为 50Hz&#xff09;。 平滑处理&…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...