Langchain-agent入门笔记(1)

LangChain里的Agent实现

官方模块介绍文档:Agents — 🦜🔗 LangChain 0.0.191

官网API文档:Agents — 🦜🔗 LangChain 0.0.191

核心要点:

(1)需要依赖于用户输入的未知链。——区别于预先定义的调用链

(2)端到端方式

可参考资料:

问题迭代过程讲解博客1:ChatGPT|LangChain Agent原理介绍 - 掘金

问题迭代过程讲解博客2(感觉说的更加清楚明白):LangChain Agent 执行过程解析 OpenAI_YezIwnl的博客-CSDN博客

关键组件

AgentExecutor(执行者)

文档:Agent Executor | 🦜️🔗 LangChain

源代码:langchain.agents.agent — 🦜🔗 LangChain 0.0.191

说明:AgentExecutor在很大程度上可以被认为是一个使用SingleActionAgent循环(详见函数_take_next_step):

  1. 将用户输入和任何先前的步骤传递给代理
  2. 如果代理返回一个AgentFinish,则直接将其返回给用户
  3. 如果 Agent 返回一个(或者多个)AgentAction,则使用它来调用一个工具并获得一个Observation(如果是多个,则多轮调用 将得到的Observation放入Result的List中)
  4. 重复,将AgentAction和传递Observation回代理,直到AgentFinish发出

核心函数:_take_next_step

def _take_next_step(self,name_to_tool_map: Dict[str, BaseTool],color_mapping: Dict[str, str],inputs: Dict[str, str],intermediate_steps: List[Tuple[AgentAction, str]],) -> Union[AgentFinish, List[Tuple[AgentAction, str]]]:"""Take a single step in the thought-action-observation loop.Override this to take control of how the agent makes and acts on choices."""# Call the LLM to see what to do.output = self.agent.plan(intermediate_steps, **inputs)# If the tool chosen is the finishing tool, then we end and return.if isinstance(output, AgentFinish):return outputactions: List[AgentAction]if isinstance(output, AgentAction):actions = [output]else:actions = outputresult = []for agent_action in actions:self.callback_manager.on_agent_action(agent_action, verbose=self.verbose, color="green")# Otherwise we lookup the toolif agent_action.tool in name_to_tool_map:tool = name_to_tool_map[agent_action.tool]return_direct = tool.return_directcolor = color_mapping[agent_action.tool]tool_run_kwargs = self.agent.tool_run_logging_kwargs()if return_direct:tool_run_kwargs["llm_prefix"] = ""# We then call the tool on the tool input to get an observationobservation = tool.run(agent_action.tool_input,verbose=self.verbose,color=color,**tool_run_kwargs,)else:tool_run_kwargs = self.agent.tool_run_logging_kwargs()observation = InvalidTool().run(agent_action.tool,verbose=self.verbose,color=None,**tool_run_kwargs,)result.append((agent_action, observation))return result

 循环跳出条件(满足一项即可):
(1)self._take_next_step()返回AgentFinish类型,代表agent已经判定当前active可以finish,
(2)self._get_tool_return()返回一个AgentFinish,代表调用的工具已被标记直接返回结果(name_to_tool_map[agent_action.tool].return_direct)

llm = OpenAI(temperature=0)
tools = [SearchTool(), CalculatorTool()]
agent = initialize_agent(tools, llm, agent="zero-shot-react-description", verbose=True)
print("问题:")
print("答案:" + agent.run("告诉我'鸡你太美'是什么意思"))
  • react-docstore 使用react框架, 和docstore交互, 使用Search和Lookup工具, 前者用来搜, 后者寻找term, 举例: Wipipedia工具
  • self-ask-with-search 此代理只使用一个工具: Intermediate - Answer, 它会为问题寻找事实答案(指的非gpt生成的答案, 而是在网络中,文本中已存在的), 如 Google search API 工具
  • conversational-react-description 为会话设置而设计的代理, 它的prompt会被设计的具有会话性, 且还是会使用 ReAct框架来决定使用来个工具, 并且将过往的会话交互存入内存.

使用过程:

可以直接调用langchain.agents.initialize(https://python.langchain.com/en/latest/_modules/langchain/agents/initialize.html?highlight=initialize_agent#)

from langchain.agents import initialize_agent
from langchain.llms import OpenAI
from CustomTools import WeatherTool
from CustomTools import CustomCalculatorToolllm = OpenAI(temperature=0)tools = [WeatherTool(), CustomCalculatorTool()]agent = initialize_agent(tools, llm, agent="zero-shot-react-description", verbose=True)agent.run("Query the weather of this week,And How old will I be in ten years? This year I am 28")

Agent类型-预置的Agent

zero-shot-react-description

(1)最常用 基于React

(2)根据工具的描述, 和请求的string 来决定使用哪个工具(最基础的Aagent流程)

llm = OpenAI(temperature=0)
tools = [SearchTool(), CalculatorTool()]
agent = initialize_agent(tools, llm, agent="zero-shot-react-description", verbose=True)print("问题:")
print("答案:" + agent.run("告诉我'鸡你太美'是什么意思"))

react-docstore

使用react框架, 和docstore交互, 使用SearchLookup工具, 前者用来搜, 后者寻找term, 举例: Wipipedia工具

self-ask-with-search

此代理只使用一个工具: Intermediate Answer, 它会为问题寻找事实答案(指的非gpt生成的答案, 而是在网络中,文本中已存在的), 如 Google search API 工具

conversational-react-description

为会话设置而设计的代理, 它的prompt会被设计的具有会话性, 且还是会使用 ReAct框架来决定使用来个工具, 并且将过往的会话交互存入内存.

使用过程:可以直接调用langchain.agents.initialize(langchain.agents.initialize — 🦜🔗 LangChain 0.0.191)

from langchain.agents import initialize_agent
from langchain.llms import OpenAI
from CustomTools import WeatherTool
from CustomTools import CustomCalculatorToolllm = OpenAI(temperature=0)tools = [WeatherTool(), CustomCalculatorTool()]agent = initialize_agent(tools, llm, agent="zero-shot-react-description", verbose=True)agent.run("Query the weather of this week,And How old will I be in ten years? This year I am 28")

initialize_agent内部调用agent_cls.from_llm_and_tools,返回一个AgentExecutor(默认为zero-shot-react-description

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

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

相关文章

5分钟带你了解Android Room

1、前言 最近在开发中,Room用的比较多,时不时要查资料,干脆写一篇Room的使用和Room的封装。如果写的不好,或者有错误之处,恳请在评论、私信、邮箱指出,万分感谢🙏 2、添加依赖 dependencies …

AI自动生成代码,是时候冷静下来思考如何保障代码安全了

HDC期间可参与华为开发者大会Check新人抽奖活动,活动链接在文末。 华为开发者大会2023将于7月7日与各位开发者进行见面,本次大会的主题演讲内容为:AI重塑千行百业。 自从AI聊天被推出之后,其热度就一直是高居不下。身边的小伙伴们…

如何将数据表格快速转换成LaTeX格式?

1.首先,在这个网站Comprehensive TEX Archive Network中下载宏文件。不要担心内存问题,很小的,下载后只有几百k。 2.其次,打开你的excel,将下载后的文件直接拖拽到excel表中,excel表格顶部会出现加载项这个…

油猴Tampermonkey及脚本使用

用Chrome浏览器的应该都知道,Chrome的优势之一就是有各种拓展的插件,使得我们浏览,工作效率都更高。 今天给大家推荐的一款”神器插件”叫 油猴,英文为 Tampermonkey 油猴是什么 Tampermonkey 是一款浏览器脚本管理插件&#x…

油猴(Tampermonkey)使用教程

油猴有很大的可玩性,里面只有你想不到的,没有他做不到的。下面是油猴的安装步骤以及使用方法~~ 安装 1.win10系统下,打开“开始”,找到微软的商店 2.打开之后,右上角搜索Tampermonkey。 3.安装油猴APP。&#xff08…

超简单安装油猴(tampermonkey)脚本及使用教程

超简单的油猴安装教程 第一步第二步第三步 第一步 下载Tampermonkey.crx (1.24MB) 提取码:nb1l 第二步 点击谷歌浏览器右上角,找到更多工具,然后点击拓展程序。 打开开发者模式 第三步 简单拖拽,把下载好的文件拖拽进第二步…

Chrome油猴(Tampermonkey)脚本使用及常用脚本分享

在我们使用浏览器的时候总是抱怨他的功能不够强大,缺少这个缺少那个,那么好,浏览器支持的一强大的功能-----扩展,也就是我们常说的插件,在这里我要介绍的是一款特别好用的插件,用来管理用户的脚本&#xff…

油猴脚本手机版|油猴tampermonkey手机版

手机浏览器中的功能太少,想下载一些插件?那么推荐你先安装个油猴脚本手机版,也就是油猴tampermonkey手机版,这是备受大家喜欢的一款类似电脑浏览器中的油猴一样的手机插件脚本,相信在电脑中使用过该插件的小伙伴们都知…

最简单的油猴(tampermonkey)脚本安装及使用教程-2023

1.下载压缩包 链接:https://pan.baidu.com/s/1JwPMWa8ZWh54VTC4Iopm2w?pwda0fi 提取码:a0fi 2.下载好的文件解压 3.点击谷歌浏览器右上角,找到更多工具,然后点击拓展程序。 4.加载已解压程序 5.成功

油猴使用教程

如何使用油猴脚本 安装脚本管理器安装脚本使用脚本 安装脚本管理器 方式一(推荐): GreasyFork官方网址 进入官网根据自己的浏览器下载对应的脚本管理器,下面以Microsoft Edge为例安装脚本管理器。 根据提示安装即可(…

油猴脚本安装以及使用方法

使用油猴脚本。首先得在Edge浏览器中安装油猴的拓展。打开到如上图所示的加载项页面。然后搜索Tampermonkey,图中所示的第三个,点击获取安装成功油猴了。接下来步骤,打开拓展显示→点击获取新脚本→搜索优学院→第一个安装显示出来的脚本安装…

Tampermonkey(油猴)脚本编写快速入门

目录 油猴脚本概述 脚本注释/注解 脚本权限 grant 添加新脚本 自定义网页倒计时 网页浏览离开黑屏保护 微博视频下载助手 华为云工作项列表突出展示工作项 Greasy Fork 发布脚本 油猴脚本概述 Tampermonkey 是一款免费的浏览器扩展和最为流行的用户脚本管理器&#…

油猴脚本(Tampermonkey)的获取与简单使用

油猴脚本的使用 什么是油猴脚本 「油猴」可以通过安装各类脚本对网站进行定制。当然伟大的脚本面向的是所有上网者,所以借由各位大神的脚本我们能实现更多更强大的功能,例如: 直接下载百度网盘文件(全速)重新定制繁杂的微博页面去掉视频播放…

关于Tampermonkey(油猴)的安装和使用的小白教程

一、Tampermonkey的介绍 Tampermonkey是一个神奇的网络插件,真的是新时代的黑科技,学生党的福音。Tampermonkey对于我来说可是个 好东西。请一定要看下去!! 二、Tampermonkey的安装所需 1.Google Chrome浏览器(其他…

油猴的详细安装(google chrome)

GoogleChrome 一、第一种为了方便我们直接在网盘中获取油猴 一、第一种为了方便我们直接在网盘中获取油猴 tampermonkey 是一款免费的浏览器扩展和最为流行的用户脚本管理器,它适用于 Chrome, Microsoft Edge, Safari, Opera Next, 和 Firefox。虽然有些受支持的浏…

油猴(Tampermonkey)安装教程

油猴简介 Tampermonkey(油猴)是一款免费的浏览器扩展和最为流行的用户脚本管理器,它适用于 Chrome, Microsoft Edge, Safari, Opera Next, 和 Firefox。虽然有些受支持的浏览器拥有原生的用户脚本支持,但 Tampermonkey 将在您的用…

使用Tampermonkey油猴子给浏览器开个挂

油猴简介 一、油猴是什么 油猴(Tampermonkey)是免费的浏览器扩展和用户脚本管理器, 油猴子很特别, 它本身是一个无限手套(脚本管理器), 通过安装无限宝石(脚本), 能为我们提供超神的功能!它可以应用在多款浏览器上,比如谷歌浏览器,QQ浏览器&#xff0c…

【关于油猴的安装和使用的教程】

【 关于油猴的安装和使用的教程】 1.0 油猴简介2.0 安装环境2.1 安装Google Chrome2.2 下载油猴 3.0 总结参考文献 1.0 油猴简介 Tampermonkey是一个神奇的网络插件,真的是新时代的黑科技,学生党的福音。Tampermonkey对于我来说可是个 好东西。请一定要…

很简单的安装油猴(tampermonkey)脚本及使用教程

超简单的油猴安装教程 第一步 第二步 第三步 第一步 下载Tampermonkey.crx (1.24MB) 提取码:2264 第二步 点击谷歌浏览器右上角,找到更多工具,然后点击拓展程序。 打开开发者模式 第三步 简单拖拽,把下载好的文件拖拽进…

油猴的简介和安装

目录 1.油猴简介 2.油猴插件安装 方法1 方法2 3.获取油猴脚本 4.脚本的使用 4.1 脚本的设置及功能 4.2 安装油猴脚本 4.3 新建脚本 5.脚本编写方法 功能注释 脚本权限 编写脚本 1.油猴简介 油猴脚本是一款免费的浏览器扩展和最为流行的用户脚本管理器&#xff0c…