【书生·浦语大模型实战营第二期】Lagent AgentLego 智能体应用搭建——学习笔记6

devtools/2024/9/24 13:13:02/

文章目录

  • 概述
  • Lagent: 轻量级智能体框架
    • Lagent Web Demo
    • 用Lagent自定义工具
  • AgentLego:组装智能体“乐高”
    • 直接使用AgentLego
    • 作为智能体工具使用AgentLego
    • AgentLego自定义工具
  • 参考资料

概述

Lagent是什么
一个轻量级开源智能体框架,提供了一些典型工具以增强大语言模型的能力,目前已支持包括 AutoGPT、ReAct 等在内的多个经典智能体范式

AgentLego是什么
一个提供了多种开源工具 API 的多模态工具包,提供了如下表展示的工具
image.png

Lagent和AgentLego的关系
Lagent 是一个智能体框架,而 AgentLego 是作为工具包,在相关智能体的功能支持模块发挥作用
image.png

Lagent: 轻量级智能体框架

Lagent Web Demo

  1. 使用LMDeploy部署:
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

image.png

  1. 使用Lagent Web Demo:
streamlit run internlm2_agent_web_demo.py --server.address 127.0.0.1 --server.port 7860

image.png

  1. lagent启动成功!

image.png

试验结果展示
image.png

用Lagent自定义工具

使用Lagent自定义工具的步骤

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

创建天气查询的工具文件->获取API KEY->使用LMDeploy部署服务->启动web-demo
image.png

AgentLego_44">AgentLego:组装智能体“乐高”

目标检测工具为例

AgentLego_46">直接使用AgentLego

安装目标检测工具(基于 mmdet (MMDetection) 算法库中的 RTMDet-Large 模型)的依赖

pip install openmim==0.3.9
mim install mmdet==3.3.0

image.png

AgentLego_53">作为智能体工具使用AgentLego

使用LMDeploy进行api_server部署
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

image.png

启动AgentLego WebUI
使用AgentLego WebUI
配置Agent
image.png

配置Tools
image.png

结果展示
image.png

AgentLego_73">用AgentLego自定义工具

基于AgentLego自定义工具步骤

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

工具文件创建-> 注册新工具->使用AgentLego进行体验
“请帮我生成一幅描述山东威海的油画”
image.png
虽然效果不是那么好,但也是能看的,u1s1,这真的好像元宵喜乐会的网图啊!

参考资料

  1. Lagent & AgentLego 智能体应用搭建

http://www.ppmy.cn/devtools/33974.html

相关文章

C++ 动态内存

C程序的内存映射像 C程序中变量的内存分配方式 从静态存储区分配 全局变量和静态变量 在栈(stack)上创建 存放函数参数值,局部变量值等。 在执行函数调用时,系统在栈上为函数内的句柄变量及形参分配内存,函数执行结束时&#xff0…

线性数据结构-手写队列-哈希(散列)Hash

什么是hash散列? 哈希表的存在是为了解决能通过O(1)时间复杂度直接索引到指定元素。这是什么意思呢?通过我们使用数组存放元素,都是按照顺序存放的,当需要获取某个元素的时候,则需要对数组进行遍历,获取到指…

初识Vue-插槽(详解插槽slot的运用)

目录 一、slot介绍 1. 概念 2. 特点 3. 功能 4. 用法 5. 应用 二、slot语法 1. 默认插槽 2. 命名插槽 3. 作用域插槽 小结 三、slot应用实例 1.动态表单组件 2.博客系统的文章组件 3.商品列表 四、总结 一、slot介绍 1. 概念 Vue.js中的插槽是一种机制&#…

虚拟机jvm下

jvm原理与实践 java程序的跨平台特性 jvm基本结构 JVM类加载流程和内存结构总览 类加载 加载阶段 类加载 验证阶段 类加载 准备阶段 类加载 解析阶段 类加载 初始化阶段 程序计数器 虚拟机栈&本地方法栈 栈帧操作 堆 方法区 永久代 元空间 垃圾回收 可触及性

关于前后端的参数传递

以前端javascript,后端nodejsexpress为例,后端可以从前端发来的request里获取这些属性:header、query、url、params、body,其中params和query是从url中解析获得,不过express已帮我们做好了,就不用我们自己再…

我用ADAU1467加5个ADAU1772,做20进10出的音频处理板(二十八):滤波器-图形通用滤波器(二阶)

作者的话 ADAU1467是现阶段ADI支持最多通道的ADAU音频DSP,他配合外部的AD/DA,可以实现最多32路音频通道,接了一个小项目,我拿它做了一块20进10出的板,10个MIC/LINE输入,10个LINE IN输入,10个HPOUT&#xf…

【C语言】自定义类型——联合体和枚举

一、联合体(共用体) 1.1 联合体的声明 与结构体一样,联合体也是由一个或者多个成员构成,这些成员可以是不同的类型 看一个联合体的例子: 可以看出联合体和结构体的声明很相似,只是关键字发生了改变。 1…

Vue 2 组件创建全指南:一步一步学习

文章目录 步骤 1: 创建组件文件步骤 2: 定义模板步骤 3: 添加脚本步骤 4: 添加样式步骤 5: 使用组件 步骤 1: 创建组件文件 通常,一个 Vue 组件被创建为一个单文件组件 (Single File Component),这意味着它的模板、脚本和样式都包含在一个 .vue​ 文件中…