【InternLM】Lagent智能体应用搭建

1. Lagent和AgentLego

1.1 Lagent

Lagent 是一个开源的 LLM 智能体框架,允许使用者快速将一个大语言模型转换成智能体,并提供一些典型工具来激发大语言模型的潜能。Lagent 框架图如下:
在这里插入图片描述
Lagent 包含三个主要模块:agents,llms 和 actions。

agents 实现了多种智能体,如 ReAct,AutoGPT。

llms 支持多种大语言模型,包括在 HuggingFace 上托管的开源模型(Llama-2, InterLM)及 GPT3.5/4 等闭源模型。

actions 包含一系列工具,并提供工具执行器来统一管理。

Lagent 目前已经支持了包括 AutoGPT、ReAct 等在内的多个经典智能体范式,也支持了如下工具:

Arxiv 搜索
Bing 地图
Google 学术搜索
Google 搜索
交互式 IPython 解释器
IPython 解释器
PPT
Python 解释器

1.2 AgentLego

AgentLego 是一个提供了多种开源工具 API 的多模态工具包,旨在像是乐高积木一样,让用户可以快速简便地拓展自定义工具,从而组装出自己的智能体。通过 AgentLego 算法库,不仅可以直接使用多种工具,也可以利用这些工具,在相关智能体框架(如 Lagent,Transformers Agent 等)的帮助下,快速构建可以增强大语言模型能力的智能体。

AgentLego 目前提供了如下工具:
在这里插入图片描述

1.3 Lagent和AgentLego的关系

综上,Lagent 是一个智能体框架,而 AgentLego 与大模型智能体并不直接相关,而是作为工具包,在相关智能体的功能支持模块发挥作用。

两者之间的关系可以用下图来表示:

Lagent
AgentLego
处理
调用工具
工具输出
工具功能支持
输入
大语言模型
是否需要调用工具
一般输出
智能体输出

2. 实践

2.1 使用 LMDeploy 部署Lagent Web Demo

参照官方示例进行实践:

执行如下代码使用 LMDeploy 启动一个 api_server:

lmdeploy serve api_server /root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-7b \--server-name 127.0.0.1 \--model-name internlm2-chat-7b \--cache-max-entry-count 0.1

基于streamlit启动Lagent Web Demo:

cd /root/agent/lagent/examples
streamlit run internlm2_agent_web_demo.py --server.address 127.0.0.1 --server.port 7860

启用ArxivSearch插件,搜索:请帮我搜索关于大模型agent的高引用论文,返回界面截图如下:
在这里插入图片描述

2.2 用 Lagent 自定义工具

使用agent 自定义工具主要分为以下几步:

  1. 继承 BaseAction 类;
  2. 实现简单工具的 run 方法;或者实现工具包内每个子工具的功能;
  3. 简单工具的 run 方法可选被 tool_api 装饰;工具包内每个子工具的功能都需要被 tool_api 装饰

参照官方示例进行部署,实现一个调用和风天气 API 的工具以完成实时天气查询的功能。

问题1:请帮我查询今天上海的天气
在这里插入图片描述
问题2:请帮我查询4月23日到4月25日上海的天气情况
API似乎不支持这种天气范围的查询
在这里插入图片描述

2.3 直接使用 AgentLego

参照官方文档进行实践,其背后采用mmdet (MMDetection) 算法库中的 RTMDet-Large 模型进行目标检测。

试验结果如下图,可见整体还是比较准确的。

在这里插入图片描述

2. 4 用 AgentLego 自定义工具

AgentLego 在这方面提供了较为详尽的文档,文档地址为 https://agentlego.readthedocs.io/zh-cn/latest/modules/tool.html 。自定义工具主要分为以下几步:

  1. 继承 BaseTool 类
  2. 修改 default_desc 属性(工具功能描述)
  3. 如有需要,重载 setup 方法(重型模块延迟加载)
  4. 重载 apply 方法(工具功能实现)

示例调用MagicMaker的 API 以实现图像生成的工具。
在这里插入图片描述

4. 参考资料

  1. https://github.com/InternLM/Tutorial/blob/camp2/agent/README.md

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

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

相关文章

【数据结构】二叉树(定义、性质、存储、遍历、构造)解析+完整代码

文章目录 1.树的基本概念2.二叉树的概念2.1 二叉树定义和特性2.2 二叉树性质2.3 二叉树的存储2.3.1 顺序存储2.3.2 链式存储 3.二叉树的遍历3.1 先序遍历3.2 中序遍历3.3 后序遍历3.4 层序遍历3.5 由遍历序列构造二叉树A.前序中序遍历序列B.后序中序遍历序列C.层序中序遍历序列…

G2024-04-24 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-04-24统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目5TypeScript项目3PowerShell项目1C++项目1非开发语言项目1LLaMA模型的C/C++移植 创建周期:306 天开发语言:C, C++协议类型:MIT Li…

【嵌入式】Arduino IDE + ESP32开发环境配置

一 背景说明 最近想捣鼓一下ESP32的集成芯片,比较了一下,选择Arduino IDE并添加ESP32支持库的方式来开发,下面记录一下安装过程以及安装过程中遇到的坑。 二 下载准备 【1】Arduino IDE ESP32支持一键安装包(非常推荐&#xff0…

消息队列 Kafka 入门篇(二) -- 安装启动与可视化工具

一、Windows 10 环境安装 1、下载与解压 首先,访问Apache Kafka的官方下载地址: https://kafka.apache.org/downloads 在本教程中,我们将使用kafka_2.13-2.8.1版本作为示例。下载完成后,解压到您的工作目录的合适位置&#xff…

【动态规划】C++ 子序列问题(递增子序列、数对链、定差子序列、斐波那契子序列...)

文章目录 1. 前言2. 例题最长递增子序列 3. 算法题3.1_摆动序列3.2_最长递增子序列的个数3.3_最长数对链[3.4_ 最长定差子序列](https://leetcode.cn/problems/longest-arithmetic-subsequence-of-given-difference/description/)3.5_最长的斐波那契子序列的长度3.6_最长等差数…

jvm知识点总结(一)

JVM的跨平台 java程序一次编写到处运行。java文件编译生成字节码,jvm将字节码翻译成不同平台的机器码。 JVM的语言无关性 JVM只是识别字节码,和语言是解耦的,很多语言只要编译成字节码,符合规范,就能在JVM里运行&am…

小程序AI智能名片商城系统直连:打造用户与企业无缝对接的新时代!

在高度不确定性的商业环境中,企业如何快速响应市场变化,实现与用户的零距离接触?答案就是——小程序AI智能名片商城系统直连!这一创新工具不仅为企业打开了与用户直接连接的大门,更为企业提供了持续收集用户反馈、快速…

基于Python+Selenium+Pytest的Dockerfile如何写

使用 Dockerfile 部署 Python 应用程序与 Selenium 测试 在本文中,我们将介绍如何使用 Dockerfile 部署一个 Python 应用程序,同时利用 Selenium 进行自动化测试。我们将使用官方的 Python 运行时作为父镜像,并在其中安装所需的依赖项和工具…

3 命名实体识别调优化

能走到这里说明你对模型微调有了一个基本的认识。那么开始一段命名实体的任务过程,下面使用huggingface官网的数据。 1 准备模型 下面的模型自己选择一个吧,我的内存太第一个模型跑不了。 https://huggingface.co/ckiplab/bert-base-chinese-ner/tree…

stack、queue(priority_queue)的模拟实现和deque的简单介绍

stack和queue(priority_queue) 1. 容器适配器 适配器(Adapter):一种用来修饰容器(Containers)或仿函数(Functors)或迭代器(Iterator)接口的东西。 适配器是一种设计模式,该模式将一个类的接口转换成客户希望的另外一个接口。 现实中拿插座来说&#xf…

react引入iconfont的svg图标

react引入iconfont的svg图标 本文目录 react引入iconfont的svg图标普通图标通过link引入css组件内引入css使用 svg图标通过script引入js组件内引入js使用 通过封装组件自定义封装组件中调用 通过antd封装使用 普通图标 通过link引入css <link rel"stylesheet" h…

无门槛做数据可视化,真的假的?

做数据可视化确实没有太高的门槛&#xff0c;不管是企业还是个人都能找到适合自己的BI数据可视化工具&#xff0c;通过点击、拖拉的操作实现自主分析、智能分析、数据可视化&#xff0c;还可实现大屏可视化、移动端数据可视化分析&#xff0c;实现实施监控数据、日常运营决策、…