当前位置: 首页 > 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;项目的架构设计、开发模式都非常简单。 当项目…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库&#xff0c;专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性&#xff0c;并提供了一个通用的框架&…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南&#xff1a;从入门到实战 一、Grunt 是什么&#xff1f; Grunt是一个基于 Node.js 的前端自动化任务运行器&#xff0c;主要用于自动化执行项目开发中重复性高的任务&#xff0c;例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...