【书生3.2】Lagent 自定义你的 Agent 智能体

news2024/9/28 21:28:32

Lagent 自定义你的 Agent 智能体

    • 1 环境准备
    • 2 启动模型
    • 3 部署lagent
    • 4 可视化页面及配置
    • 5 自定义工具的智能体

1 环境准备

直接复用之前的xtuner或者llamaindex环境

# 安装其他依赖包
conda activate llamainde
pip install termcolor==2.4.0
pip install lmdeploy==0.5.2

pip install griffe==0.48 # 重要

2 启动模型

# 这里我使用的是早前下载的internlm2-chat-7b
conda activate llamainde
lmdeploy serve api_server /project/serve/xtuner/Shanghai_AI_Laboratory/internlm2-chat-7b --model-name internlm2-chat-7b

3 部署lagent

另启动一个窗口

# 创建目录以存放代码
mkdir -p /project/serve/camp3
cd /project/serve/camp3
git clone https://github.com/InternLM/lagent.git
cd lagent && git checkout 81e7ace && pip install -e . && cd ..

cd /project/serve/camp3/lagent
conda activate llamaindex
streamlit run examples/internlm2_agent_web_demo.py

4 可视化页面及配置

注意模型ip不要带http

这里用的internlm2-chat-7b, 使用工具的效果不是很直接,它会再询问一下。

在这里插入图片描述

5 自定义工具的智能体

(base) [root@localhost ~]# cd /project/serve/camp3/lagent/
(base) [root@localhost lagent]# touch lagent/actions/magicmaker.py
(base) [root@localhost lagent]# vim lagent/actions/magicmaker.py 
(base) [root@localhost lagent]# vim examples/internlm2_agent_web_demo.py 
(base) [root@localhost lagent]# 


#magicmaker.py
import json
import requests

from lagent.actions.base_action import BaseAction, tool_api
from lagent.actions.parser import BaseParser, JsonParser
from lagent.schema import ActionReturn, ActionStatusCode


class MagicMaker(BaseAction):
    styles_option = [
        'dongman',  # 动漫
        'guofeng',  # 国风
        'xieshi',   # 写实
        'youhua',   # 油画
        'manghe',   # 盲盒
    ]
    aspect_ratio_options = [
        '16:9', '4:3', '3:2', '1:1',
        '2:3', '3:4', '9:16'
    ]

    def __init__(self,
                 style='guofeng',
                 aspect_ratio='4:3'):
        super().__init__()
        if style in self.styles_option:
            self.style = style
        else:
            raise ValueError(f'The style must be one of {self.styles_option}')
        
        if aspect_ratio in self.aspect_ratio_options:
            self.aspect_ratio = aspect_ratio
        else:
            raise ValueError(f'The aspect ratio must be one of {aspect_ratio}')
    
    @tool_api
    def generate_image(self, keywords: str) -> dict:
        """Run magicmaker and get the generated image according to the keywords.

        Args:
            keywords (:class:`str`): the keywords to generate image

        Returns:
            :class:`dict`: the generated image
                * image (str): path to the generated image
        """
        try:
            response = requests.post(
                url='https://magicmaker.openxlab.org.cn/gw/edit-anything/api/v1/bff/sd/generate',
                data=json.dumps({
                    "official": True,
                    "prompt": keywords,
                    "style": self.style,
                    "poseT": False,
                    "aspectRatio": self.aspect_ratio
                }),
                headers={'content-type': 'application/json'}
            )
        except Exception as exc:
            return ActionReturn(
                errmsg=f'MagicMaker exception: {exc}',
                state=ActionStatusCode.HTTP_ERROR)
        image_url = response.json()['data']['imgUrl']
        return {'image': image_url}

  1. 创建magicmaker.py文件

  2. 修改 /root/agent_camp3/lagent/examples/internlm2_agent_web_demo.py 来适配我们的自定义工具。

    1. from lagent.actions import ActionExecutor, ArxivSearch, IPythonInterpreter 的下一行添加 from lagent.actions.magicmaker import MagicMaker
    2. 在第27行添加 MagicMaker()
  3. 重新启动**streamlit run examples/internlm2_agent_web_demo.py

这里与教程不一样的是,图片并没有直接展示出来,要点击才能查看

在这里插入图片描述
在这里插入图片描述

bug

ModuleNotFoundError: No module named 'griffe.enumerations

在这里插入图片描述

pip install griffe==0.48

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Gazebo Harmonic gz-harmonic 和 ROS2 Jazzy 思考题 建图和导航 SLAM Navigation

仿真 效果还挺好的。 SLAM建图 SLAM 仿真测试录屏 配置环境 Gazebo Harmonic ROS Jazzy 导航 …… 提示 这篇文档详细介绍了如何在ROS 2环境中使用SLAM(Simultaneous Localization and Mapping,即同时定位与地图构建)和Nav2(N…

XXE-labs靶场通关攻略

环境地址自行查找 1.寻找靶机地址 使用工具goby进行扫描 因为我的靶场是搭在ubuntu上 直接查找系统是Ubuntu的就可以找到 靶机IP 172.16.1.183 2.访问靶场 3.使用目录扫描工具进行扫描 使用kali自带的dirsearch进行扫描 可以看到一个robots.txt文件 4.访问robots.txt文件 …

白夜剧场再出爆款《边水往事》,这次能“带飞”优酷吗?

这个暑期档,优酷靠着白夜剧场悬疑新作《边水往事》再下一城。 谁能想到刚开播时无人问津的《边水往事》竟然“爆”了,8月16日首播当天市占率仅仅1.73%,播放量不到700万,而在上线第十天,《边水往事》终于逆袭夺冠&…

#QT 笔记一

重点:面试考试大概率涉及,需要不借助任何资料掌握。掌握:面试考试可能涉及,需要不借助任何资料掌握。熟悉:面试考试可能涉及,可以稍微参考资料掌握。了解:面试考试小概率涉及,面试拔…

Navicat连接SqlServer

一、前提条件 本地已经安装好了SqlServer和navicat 二、操作 打开sqlserver配置管理器 tcp默认关闭,我们右击打开 需要重启服务才能生效 三、效果

【ACM出版,EIScopus快检索-高录用】2024年数字经济与计算机科学国际学术会议(DECS2024,9月20-22)

欢迎参加2024年数字经济与计算机科学国际学术会议(DECS2024),本次大会得到了马来西亚理工大学、北京科技大学经济管理学院、南京信息工程大学、马来西亚敦胡先翁大学的大力支持! 旨在汇聚全球在数字经济与计算机科学领域内的研究者…

《黑神话:悟空》爆火,对程序员的 5 点启示(1)

# 前言 2024年8月,被誉为 “首部国产 3A 大作” 的《黑神话:悟空》一段13分钟的实机演示视频,简直像是给全球玩家投下了一颗冲击弹,瞬间炸开了一片热闹场面,点燃了海内外游戏和西游文化爱好者的热情,迅速地…

How to work with OpenAI maximum context length is 2049 tokens?

题意:"如何处理OpenAI的最大上下文长度为2049个tokens的问题?" 问题背景: Id like to send the text from various PDFs to OpenAIs API. Specifically the Summarize for a 2nd grader or the TL;DR summarization APIs. "…

重谈地址空间

虚拟地址是如何转化的物理地址的? 我们以32位计算机为例子 32 为计算机的虚拟地址就是32位。 32 位的虚拟地址 分为三个部分 为 10 10 12; 这是由页表内部的结构决定的。 页表分为两级 虚拟地址的前十位为一级页表对应的位置, 次10位表示…

鸿蒙(API 12 Beta3版)【识别本地图片】

基本概念 图片识码能力支持对图库中的码图进行扫描识别,并获取信息。 场景介绍 图片识码能力支持对图库中的条形码、二维码、MULTIFUNCTIONAL CODE进行识别,并获得码类型、码值、码位置信息。该能力可用于一图单码和一图多码的识别,比如条…

【HarmonyOS】模仿个人中心头像图片,调用系统相机拍照,从系统相册选择图片和圆形裁剪显示 (二)

【HarmonyOS】模仿个人中心头像图片,调用系统相机拍照,从系统相册选择图片和圆形裁剪显示 (二) Demo效果展示: 方案思路: 1.修改调用相机的方式,使用cameraKit进行相机的调用,拍照…

怎么扫描试卷去除笔迹?建议试试这样做

怎么扫描试卷去除笔迹?在现代教育和办公环境中,电子版试卷的管理和使用变得越来越普遍。然而,手写答案和批注常常使得电子版试卷难以恢复到原始的空白状态。为了满足这一需求,市场上涌现出许多能够扫描试卷并去除笔迹的技术和工具…

巧用 HTML 列表:<ul>、<ol>、<dl>的实用指南

目录 无序列表 容器级标签 有序列表 定义列表 一个dt配很多dd 每一个dl里面只有一个dt和dd 一个dl配多个dt 多级列表 无序列表 <ul>标签用于定义无序列表。无序列表的特点是各个列表项之间没有特定的顺序&#xff0c;通常以小圆点作为先导符号。所有主流浏览器…

模拟+思维(时间规划烧饼)

前言&#xff1a;这个题目就是我们小时候学的的活动规划烧饼&#xff0c;我们要先算出我们最大耗时是多少&#xff0c;然后再对我们的活动进行规划 题目地址 我们这个题目还要求算出k&#xff08;执行次数&#xff09;我的做法是写两遍代码&#xff0c;其实也可以存起来&#x…

“重启就能解决一切问题”,iPhone重启方法大揭秘

随着iPhone不断更新换代&#xff0c;其设计与操作方式也在不断进化。从最初的实体Home键到如今的全面屏设计&#xff0c;iPhone的操作逻辑也随之发生了改变。 对于那些习惯了传统安卓手机操作的用户来说&#xff0c;iPhone的重启方式可能会显得有些不同寻常。下面我们就来一起…

学习之SQL语句之DCL(数据控制语言)

DCL英文全称是Data Control Language(数据控制语言)&#xff0c;用来管理数据库用户、控制数据库的访问 权限

滚柱导轨:数控机床高效运行的驱动力

机床制造者最关心的莫过于机床的精度&#xff0c;刚性和使用寿命&#xff0c;对导轨系统的关注甚少。但导轨为机床功能的实现奠定了可靠的基础&#xff0c;各种类型的机床工作部件&#xff0c;都是利用控制轴在指定的导轨上运动。机床设计者根据机床的类型和用途选用各种不同形…

前波士顿咨询Platinion董事总经理陈果加入望繁信科技

“很荣幸邀请果总加盟望繁信科技&#xff01;作为中国互联网可以查到的写作流程挖掘介绍文章第一人&#xff0c;他的先驱性工作为流程挖掘在中国的知识普及和应用创新做出了重要贡献&#xff01;更难能可贵的&#xff0c;是我们和果总在价值观层面高度契合&#xff01;我们非常…

Git学习尚硅谷(001 git介绍)

尚硅谷Git入门到精通全套教程&#xff08;涵盖GitHub\Gitee码云\GitLab&#xff09; 总时长 4:52:00 共45P 此文章包含第1p-第p7的内容 文章目录 git介绍课程介绍git概述 何为版本控制集中式版本控制工具分布式版本控制工具git简史工作机制代码托管中心 git的安装 git介绍 课…

游泳时用什么耳机听歌好?四大实力非凡的高销游泳耳机严选

随着人们健康意识的提升和生活方式的变化&#xff0c;游泳已成为广受欢迎的健身方式之一。在水中畅游的同时&#xff0c;聆听喜爱的音乐可以让整个过程更加愉悦。然而&#xff0c;并非所有的耳机都适合在水下使用&#xff0c;因此选择一款适合游泳的耳机变得尤为重要。 近年来&…