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

给AI用工具的能力——Agent

ReAct框架:

Reason + Action,推理与行动结合

可以借助思维链,用小样本提示展示给模型一个ReAct框架

推理:针对问题或上一步观察的思考

行动:基于推理,与外部环境的一些交互(调用外部工具,比如搜索引擎、代码解释器等,也可以自定义工具)

观察:对行动得到的结果进行查看

agent(智能体、代理):

能理解用户查询或指令,进行推理并执行特定任务,最后输出响应。

三要素:

模型(agent的大脑)

工具列表

提示词(告诉模型要遵循ReAct框架,以及可以使用的工具有哪些)

1、temperature=0:因为不希望模型太有创造力,而是在后序能严格按照ReAct框架进行输出。

2、自定义工具:

需继承自BaseTool类,实际调用_run方法来使用工具。

记得把工具放进tools列表里。

tools = [ TextLengthTool() ]

3、提示模板可以在langchain hub上找

langchain hub:用于管理和共享Langchain相关资源的在线平台

比如要使用ReAct,可以用里面名为structured-chat-agent的提示模板。

pip install langchainhub(才能从该hub拉取内容)

from langchain import hub

prompt = hub.pull("hwchase17/structured - chat - agen") 参数为要拉取的提示词在langchain hub上的路径

返回值类型是ChatPromptTemplate。内容就是让模型遵循ReAct,并把工具介绍作为变量。

如何使用?

准备好三要素后,

 1、除了agent,实际执行的叫agent executor(agent执行器),

在agent中传入tools只是为了让agent知道有哪些工具可以使用,发出指令;

agent执行器才是实际调用工具的那个,所以它也要能访问tools。

2、如果想连续对话,需要指定memory参数。

注意:memory_key要为"chat_history",因为提示模板里记忆的变量名叫chat_history。

3、handle_parsing_errors = True,当agent在解析工具输出、生成回复等过程中遇到解析错误时,Agent Executor会尝试采取措施处理错误,而不是让程序直接终止。此处表示如果模型没有按ReAct框架输出时,agent执行器会把错误作为观察返回给模型。

4、verbose = True:以详细模式运行。agent执行器被调用后不是直接返回最终结果,而是还返回具体行动过程。默认为False。

5、AgentExecutor像是一个协调者,它会将用户输入(input)、工具调用结果以及对话内存(memory)等信息整合处理,并按照agent的决策机制所要求的格式和方式,把输入数据传递给agent,以便agent基于此进行决策和规划。这样的设计实现了职责分离,agent专注于决策规划,AgentExecutor负责执行和信息整合传递等工作 。

所以把input和memory传给agent executor而不是agent。

 

6、最后调用agent_executor.invoke方法,参数是一个字典,含键值" input "。

更多现成agent执行器: 

PAL(Program - aided Language Models):程序辅助语言模型,一种将自然语言处理与编程能力相结合以解决复杂问题的 AI 系统。

python_agent

比如可以让AI生成做计算的代码,借助Python解释器,算出最终答案。(即Agent生成代码后,再指示Agent Executor调用相应工具来执行代码。为什么是Agent生成代码?因为懂代码知识的是模型。)

pip install langchain_experimental

from langchain_experimental.tools import PythonREPLTool(Python交互式解释器,可以用于执行Python命令)

from langchain_experimental.agents.agent_toolkits import create_python_agent(LangChain 中用于创建专门处理 Python 相关任务的智能体执行器的函数)

1、为什么不用显式传入提示模板?

因为create_python_agent函数通常有内置的默认提示模板。

2、在create_python_agent函数的内部创建了智能体(agent)。

 

create_python_agent函数会根据传入的语言模型(如ChatOpenAI对象)、工具(如PythonREPLTool)等参数,按照 LangChain 内部的逻辑和机制,构建出一个适合处理 Python 相关任务的智能体。之后,该函数会基于创建好的智能体等信息,进一步实例化并返回AgentExecutorAgentExecutor来负责执行智能体的决策等操作 。

3、不直接支持handle_parsing_errors参数,但是可以把它放进更多参数里,作为键值。

 csv_agent

csv(Comma - Separated Values,逗号分隔值),一种常见的用于储存数据的纯文本格式。

注意是英文逗号。可以用excel打开csv文件,是表格的形式。

pip install  pandas

pip install tabulate(因为CSV agent底层会用到Pandas库和Tabulate库)

内置默认提示模板:

1、为什么create_csv_agent没有tools参数,而create_python_agent有agent参数?

create_csv_agent:

内部已集成专门针对 CSV 文件处理的工具,用户无需额外提供工具列表。

专注于 CSV 文件处理任务,功能相对单一和固定,适用于仅需处理 CSV 文件相关任务的场景。

create_python_agent:

本身不预设特定工具,而是要求用户根据具体任务需求传入所需工具。

因为 Python 应用场景广泛,从简单的代码执行、文件操作到复杂的网络交互、数据处理等,不同任务所需工具差异很大,所以需要用户灵活配置工具,以满足多样化的 Python 任务需求。

2、实际上也是通过执行Python代码得到的答案。

 让工具箱集成多种工具:

现有自定义工具,和现成的agent执行器(需要转换成Tool类型)

func参数赋值为使用工具时调用的函数名或方法名,因为使用agent执行器时,调用的是invoke方法,所以把执行器的invoke方法作为参数传入即可。

(函数:一段独立的代码块,用于完成特定的任务。它可以在模块的顶层定义,不依赖于任何特定的类或对象,是全局范围内可调用的代码单元。

方法:与类或对象相关联的函数,定义在类的内部,是类的一部分。它通常用于操作对象的属性或执行与对象相关的特定行为。如list.append()是列表类的一个方法。)

相关文章:

给AI用工具的能力——Agent

ReAct框架: Reason Action,推理与行动结合 可以借助思维链,用小样本提示展示给模型一个ReAct框架 推理:针对问题或上一步观察的思考 行动:基于推理,与外部环境的一些交互(调用外部工具&…...

Jupyter Lab的使用

Lab与Notebook的区别: Jupyter Lab和Jupyter notebook有什么区别,这里找到一篇博客不过我没细看, Jupyter Lab和Jupyter Notebook的区别 - codersgl - 博客园 使用起来Lab就是一个更齐全、功能更高级的notebook, 启用滚动输出: 有时候一个…...

【从零开始的LeetCode-算法】922. 按奇偶排序数组 II

给定一个非负整数数组 nums, nums 中一半整数是 奇数 ,一半整数是 偶数 。 对数组进行排序,以便当 nums[i] 为奇数时,i 也是 奇数 ;当 nums[i] 为偶数时, i 也是 偶数 。 你可以返回 任何满足上述条件的…...

RabbitMQ深度探索:前置知识

消息中间件: 消息中间件基于队列模式实现异步 / 同步传输数据作用:可以实现支撑高并发、异步解耦、流量削峰、降低耦合 传统的 HTTP 请求存在的缺点: HTTP 请求基于响应的模型,在高并发的情况下,客户端发送大量的请求…...

『 C++ 』中不可重写虚函数的实用案例

文章目录 框架设计:保障核心逻辑稳定避免误操作:防止逻辑混乱确保接口一致:库与API设计 在C编程里,用final关键字修饰、不允许被继承(重写)的虚函数其实很有用。接下来我就结合实际案例,给大家讲…...

Redis - String相关命令

目录 setgetmsetmgetsetnx、setex、psetexincr、incrby、decr、decrby、incrbyfloatappendgetrangesetrangestrlen字符串类型编码方式总结 Redis - String Redis存储的字符串,是直接按二进制方式存储,不会做任何编码转换,存的是什么&#xff…...

pytorch基于FastText实现词嵌入

FastText 是 Facebook AI Research 提出的 改进版 Word2Vec,可以: ✅ 利用 n-grams 处理未登录词 比 Word2Vec 更快、更准确 适用于中文等形态丰富的语言 完整的 PyTorch FastText 代码(基于中文语料),包含&#xff1…...

3D人脸建模:高精度3D人脸扫描设备快速生成真人脸部3D模型

什么是3D人脸建模? 3D人脸建模,即借助特定技术手段,获取人脸三维数据,并构建出能精准呈现人脸形状、纹理等特征的三维模型。这一技术广泛应用于计算机视觉、人机交互、虚拟现实、影视制作等多个领域,为各行业都带来了前所未有的创…...

4.PPT:日月潭景点介绍【18】

目录 NO1、2、3、4​ NO5、6、7、8 ​ ​NO9、10、11、12 ​ 表居中或者水平/垂直居中单元格内容居中或者水平/垂直居中 NO1、2、3、4 新建一个空白演示文稿,命名为“PPT.pptx”(“.pptx”为扩展名)新建幻灯片 开始→版式“PPT_素材.doc…...

冷链监控系统

前后端源码 wx :bright12389 冷链系统需求分析 1. 项目背景 冷链系统用于监控和管理冷链物流过程中的环境参数(如温度、湿度),确保货物在运输、存储过程中的质量安全。系统需支持实时监控、历史数据分析、异常告警等功能。 2.…...

VSCode中代码颜色异常

检查右下角语言模式是否是HTML, 如果不是就点击更改为HTML模式即可...

表格标签的使用

一.表格标签 1.1表格标签的作用 用来显示和展示数据&#xff0c;不是用来布局页面的。 1.2表格的基本语法 <table> //用于定义表格标签 <tr> // table row 用于定义表格中的行&#xff0c;必须嵌套在<table> </table>标签中 <td>单元格内的文…...

llama.cpp GGUF 模型格式

llama.cpp GGUF 模型格式 1. Specification1.1. GGUF Naming Convention (命名规则)1.1.1. Validating Above Naming Convention 1.2. File Structure 2. Standardized key-value pairs2.1. General2.1.1. Required2.1.2. General metadata2.1.3. Source metadata 2.2. LLM2.2.…...

嵌入式硬件篇---HAL库内外部时钟主频锁相环分频器

文章目录 前言第一部分&#xff1a;STM32-HAL库HAL库编程优势1.抽象层2.易于上手3.代码可读性4.跨平台性5.维护和升级6.中间件支持 劣势1.性能2.灵活性3.代码大小4.复杂性 直接寄存器操作编程优势1.性能2.灵活性3.代码大小4.学习深度 劣势1.复杂性2.可读性3.可维护性4.跨平台性…...

【IoCDI】_@Bean的参数传递

目录 1. 不创建参数类型的Bean 2. 创建一个与参数同类型同名的Bean 3. 创建多个与参数同类型&#xff0c;其中一个与参数同名的Bean 4. 创建一个与参数同类型不同名的Bean 5. 创建多个与参数同类型但不同名的Bean 对于Bean修饰的方法&#xff0c;也可能需要从外部传参&…...

[特殊字符] ChatGPT-4与4o大比拼

&#x1f50d; ChatGPT-4与ChatGPT-4o之间有何不同&#xff1f;让我们一探究竟&#xff01; &#x1f680; 性能与速度方面&#xff0c;GPT-4-turbo以其优化设计&#xff0c;提供了更快的响应速度和处理性能&#xff0c;非常适合需要即时反馈的应用场景。相比之下&#xff0c;G…...

【模型】Bi-LSTM模型详解

1. 模型架构与计算过程 Bi-LSTM 由两个LSTM层组成&#xff0c;一个是正向LSTM&#xff08;从前到后处理序列&#xff09;&#xff0c;另一个是反向LSTM&#xff08;从后到前处理序列&#xff09;。每个LSTM单元都可以通过门控机制对序列的长期依赖进行建模。 1. 遗忘门 遗忘…...

directx12 3d开发过程中出现的报错 一

报错&#xff1a;“&”要求左值 “& 要求左值” 这个错误通常是因为你在尝试获取一个临时对象或者右值的地址&#xff0c;而 & 运算符只能用于左值&#xff08;即可以放在赋值语句左边的表达式&#xff0c;代表一个可以被引用的内存位置&#xff09;。 可能出现错…...

Ubuntu 24.04 安装 Poetry:Python 依赖管理的终极指南

Ubuntu 24.04 安装 Poetry&#xff1a;Python 依赖管理的终极指南 1. 更新系统包列表2. 安装 Poetry方法 1&#xff1a;使用官方安装脚本方法 2&#xff1a;使用 Pipx 安装 3. 配置环境变量4. 验证安装5. 配置 Poetry&#xff08;可选&#xff09;设置虚拟环境位置配置镜像源 6…...

读写锁: ReentrantReadWriteLock

在多线程编程场景中&#xff0c;对共享资源的访问控制极为关键。传统的锁机制在同一时刻只允许一个线程访问共享资源&#xff0c;这在读写操作频繁的场景下&#xff0c;会因为读操作相互不影响数据一致性&#xff0c;而造成不必要的性能损耗。ReentrantReadWriteLock&#xff0…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

云原生安全实战:API网关Kong的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关&#xff08;API Gateway&#xff09; API网关是微服务架构中的核心组件&#xff0c;负责统一管理所有API的流量入口。它像一座…...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版&#xff0c;莫兰迪调色板清新简约工作汇报PPT模版&#xff0c;莫兰迪时尚风极简设计PPT模版&#xff0c;大学生毕业论文答辩PPT模版&#xff0c;莫兰迪配色总结计划简约商务通用PPT模版&#xff0c;莫兰迪商务汇报PPT模版&#xff0c;…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...