【AI的未来 - AI Agent系列】【MetaGPT】4.1 细说我在ActionNode实战中踩的那些坑

news2025/1/2 4:04:39

文章目录

    • 1. MetaGPT = 0.5.2 版本的坑
      • 1.1 坑一:cannot import name "ActionNode" from "metagpt.actions.action"
      • 1.2 坑二:simple_fill 没有参数 schema
      • 1.3 坑三:ActionNode一直在循环执行,
    • 2. 升级成 MetaGPT GitHub最新源码(2024-01-16)之后的坑
      • 2.1 坑一:no attribute '_rc'
      • 2.2 坑二:no attribute '_states'
      • 2.3 坑三:'gpt-4-1106-preview' does not exist or you do not have access to it
      • 2.4 坑四:A non-annotated attribute was detected: 'input_num = 0'

上篇文章 【AI的未来 - AI Agent系列】【MetaGPT】4. ActionNode从理论到实战 中我们学习了MetaGPT中ActionNode的理论和基本用法,跑通了一个简单程序。

原理和代码实现都很简单,但是谁知道当时我遇到了多少坑… 本文带你看看我在上文中遇到的坑,希望能帮到你!

下面说下我遇到的坑:

1. MetaGPT = 0.5.2 版本的坑

听信了官方教程中的MetaGPT版本推荐,我之前的学习和实战都使用了0.5.2版本,所以一开始,ActionNode的学习也使用的此版本。
在这里插入图片描述

1.1 坑一:cannot import name “ActionNode” from “metagpt.actions.action”

在这里插入图片描述

  • 不知道为什么0.5.2版本无法从"metagpt.actions.action"导入ActionNode,看源码中,action_nodes.py是存在的

在这里插入图片描述

  • 解决方案:改为从 metagpt.actions.action_node 导入 ActionNode
# from metagpt.actions.action import Action, ActionNode
from metagpt.actions.action import Action
from metagpt.actions.action_node import ActionNode

1.2 坑二:simple_fill 没有参数 schema

  • 查看0.5.2版本的源码,simple_fill 的输入参数还叫 ‘to’,不叫 ‘schema’

在这里插入图片描述

  • 解决方案:schema 改为 to
# child = await i.simple_fill(schema=schema, mode=mode)
child = await i.simple_fill(to=schema, mode=mode)

1.3 坑三:ActionNode一直在循环执行,

如下图:一直在输出,这个都是ActionNode内的打印。
在这里插入图片描述

这个坑,是在ActionNode中循环,退不到我的代码中,所以我无从下手解决。促使了我升级到最新github代码… 后来我在高版本中遇到类似问题,好像是因为结果校验不通过,触发了重试。

2. 升级成 MetaGPT GitHub最新源码(2024-01-16)之后的坑

2.1 坑一:no attribute ‘_rc’

在这里插入图片描述

  • 从0.6版本开始,_rc这种成员变量都换成了不带下划线的:‘rc’
  • 解决方案:将 ‘_rc’ 全部换成 ‘rc’

2.2 坑二:no attribute ‘_states’

在这里插入图片描述

  • 解决方法同’rc’,将’_states’ 改为 ‘states’

2.3 坑三:‘gpt-4-1106-preview’ does not exist or you do not have access to it

在这里插入图片描述

  • 原因:前面讲过,MetaGPT读取配置的顺序:key.yaml > config.yaml > 环境变量。当我升级到github最新代码,源码编译后,源码中存在了config.yaml文件,里面默认的配置是gpt4。MetaGPT默认使用了config.yaml,我的环境变量便被忽略了。
  • 解决方案:在config.yaml中设置自己的配置。或者新建一个key.yaml来写自己的配置

2.4 坑四:A non-annotated attribute was detected: ‘input_num = 0’

在这里插入图片描述
这个是因为升级0.6版本后,0.6版本的校验更加严格,这类内的成员变量必须显式声明类型,否则会报错。

  • 解决方案
class SimplePrint(Action):
    input_num: int = 0 ######## <------ 加上这一句,显式声明变量类型

    def __init__(self, name="SimplePrint", input_num:int=0):
        super().__init__()

        self.input_num = input_num

还有几个坑忘记截图了… 不过上面也基本够了,应该能帮你省不少事儿~~~

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

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

相关文章

高精度算法笔记·····························

目录 加法 减法 乘法 除法 高精度加法的步骤&#xff1a; 1.高精度数字利用字符串读入 2.把字符串翻转存入两个整型数组A、B 3.从低位到高位&#xff0c;逐位求和&#xff0c;进位&#xff0c;存余 4.把数组C从高位到低位依次输出 1.2为准备 vector<int> A, B, …

模拟实现简单的shell

目录 1.实现交互界面 2.子串分割的问题&#xff0c;解决命令行 3.指令的判断 1.实现交互界面 我们模仿打印出来就好了&#xff1a; 现在已经有初步的形状了。 2.子串分割的问题&#xff0c;解决命令行 3.指令的判断 看上面有一行内建命令中的export&#xff0c;其实不对的&a…

C++初入(四)

1.万能头文件 #include <bits/stdc.h> 里面包含了大量我们日常所需的头文件&#xff0c;如果使用它&#xff0c;我们就可以减少大量时间去写头文件&#xff0c;但是其实在平常练习和实际运用中&#xff0c;该头文件几乎没有实际价值&#xff0c;原因&#xff1a;1.里面…

真实体验|微信新推出的工作流表现如何?

以小程序公众号消息推送为例&#xff0c;全面真实体验微信工作流新能力。详解到底能不能用&#xff1f;谁适合用&#xff1f; 上周微信云开发上线了「工作流」能力。支持通过拖拉拽的方式搭建流程&#xff0c;支持调用、时间、消息通知、支付等多种驱动场景的业务计算&#xf…

开源图床LightPicture搭建本地图片管理系统并实现无公网IP远程访问

文章目录 1.前言2. Lightpicture网站搭建2.1. Lightpicture下载和安装2.2. Lightpicture网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 现在的手机越来越先进&#xff0c;功能也越来越多&#xff0c;而手机…

工具 | WSL | WSL动不动就卡死

工具 | WSL | WSL动不动就卡死 PS C: Users flyer> ws1 由于连接方在一段时间后没有正确答复或连接的主机没有反应&#xff0c;连接尝试失败 Error code: Ws1/Service/0x8007274c wsl动不动就卡住 Error code: Wsl/Service/0x8007274c

文心一言 VS 讯飞星火 VS chatgpt (181)-- 算法导论13.4 4题

四、用go语言&#xff0c;在 RB-DELETE-FIXUP 代码的哪些行中&#xff0c;可能会检查或修改哨兵 T.nil &#xff1f; 文心一言&#xff1a; RB-DELETE-FIXUP 是红黑树中的一个操作&#xff0c;用于在删除一个节点后进行必要的调整以保持红黑树的性质。在这个过程中&#xff0…

Alinx ZYNQ 7020 LED调试--in RAM

设置拨码开关为JTAG方式 烧写LED bit stream a. 点击“Program device”烧录程序到FPGA中&#xff08;重新上电程序就丢失了&#xff09; b. /01_led/led.runs/impl_1/led.bit 程序烧录到Flash中 ZYNQ与以往的直接烧录Flash不同&#xff0c;首先必须PS&#xff0c;然后烧…

新定义51单片机(RD8G37)实现测距测速仪

本文描述用新定义51单片机&#xff08;RD8G37&#xff09;超声波一体测距传感器实现简单的测距测速仪。 测距仪演示效果 新定义RD8G37Q48RJ开发板 超声波测距模块&#xff1a; 8位并口屏 1、main.c unsigned short timeConsuming0; unsigned int oldDistance;void rectClearS…

Linux基础命令(超详细)

1、Linux命令入门 命令: 告诉我们要做什么事 选项: 规定做事的方式参数: 规定对谁做这件事 ls命令 # ls 展示目录中的文件信息 ls # -a 展示所有文件内容,包括隐藏文件(以点开头的文件内容) # -l 以列表形式详细展示文件内容 # -h 以合适的单位展示文件大小, 配合-l进行使用 #…

Google推广之关键字匹配类型

做过线上推广的小伙伴们应该都知道&#xff0c;关键字有肯定和否定形式&#xff0c;今天我们主要跟大家分享肯定式关键字的四种匹配类型。不同匹配面向的客户群体不尽相同&#xff0c;比如&#xff0c;我们可以使用“广泛匹配”类型&#xff0c;向广泛的受众群体展示广告&#…

电梯节能落座-智慧停车场️,电梯不仅可载人也可以载汽车!

电梯不仅可载人也可以载汽车哦&#xff01; 在北京市丰台区&#xff0c;有这么一个智慧停车场&#x1f17f;️ &#xff0c;共298个停车位&#xff0c;全部智能一体化&#xff0c;简直是“豪华” “智能” 的象征。 523能源&#xff1a;小伍&#xff0c;你跑题了... 小伍&am…

2023年的年度总结PPT不一样了?

添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 到了年终&#xff0c;需要撰写年度总结和制定计划了吗&#xff1f; 找不到合适的 PPT 模板&#xff1f; 感到缺乏灵感&#xff1f; 为做 PPT 绞尽脑汁&#xff1f; 为何不试试 AI 写 PPT 呢&#xff1f…

Docker篇之修改docker默认磁盘占用目录

一、前言 通常情况下&#xff0c;当我们默认安装docker服务时&#xff0c;在不指定默认存储路径时&#xff0c;docker会自动创建目录&#xff0c;经常会出现打满根目录的情况。 默认存储路径为&#xff1a;/var/lib/docker 下 可通过如下进行查询&#xff1a; docker info输出…

Pandas.DataFrame.drop() 删除行或列 详解 含代码 含测试数据集 随Pandas版本持续更新

关于Pandas版本&#xff1a; 本文基于 pandas2.1.2 编写。 关于本文内容更新&#xff1a; 随着pandas的stable版本更迭&#xff0c;本文持续更新&#xff0c;不断完善补充。 Pandas稳定版更新及变动内容整合专题&#xff1a; Pandas稳定版更新及变动迭持续更新。 Pandas API参…

web3.0基本概念简析

web3.0概念简析 web3.0的发展史 web1.0 仅用于展示&#xff0c;无法进行点赞评论等交互 web2.0 不仅可以展示&#xff0c;还可以上传视频、图片等&#xff0c;用户可以参与创作内容并获取收益。但还是中心化的模型 缺点 1 机械化的人机验证 2 账户安全无法保证 多年未登陆…

Mechanics 1-Mechanics Toolkit(课件-编辑中)

1.1 Quantities&#xff0c;Units&Modelling 1.1.1 Scalars(标量) & Vectors(矢量) Scalars: 跑步速度5m/s 实际应用中为什么要引入Vector&#xff1f; 这个数据如果在导弹拦截中够用吗&#xff1f; 除了速率(Speed)&#xff0c;还需要发射方向(direction) 因此用Spe…

[C++] opencv - Mat::convertTo函数介绍和使用场景

Mat::convertTo()函数 Converts an array to another data type with optional scaling. 该函数主要用于数据类型的相互转换。 The method converts source pixel values to the target data type. saturate_cast<> is applied at the end to avoid possible overf…

安装Sql2012提示:需要更新以前的Visual Studio 2010 实例

解决方案&#xff1a;先卸载visual studio 2010 ,安装SQL2012

net 8.0 + mysql 数据库的应用与实现

首先引入nutget包 第二步根目录创建一个文件夹名字自取&#xff0c;再建一个SqlContent类 using Microsoft.EntityFrameworkCore; using System.Data.Entity; using DbContext Microsoft.EntityFrameworkCore.DbContext;namespace YuanFuTouBao2022Core.Dao {public class Sql…