当前位置: 首页 > news >正文

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

文章目录

    • 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.lryc.cn/news/284722.html

相关文章:

  • Android学习(五):常用控件
  • 基于YOLOv8的学生课堂行为检测,引入BRA注意力和Shape IoU改进提升检测能力
  • 【前后端分离与不分离的区别】
  • ubuntu-20.04.6-live-server-amd64安装教程-完整版
  • C for Graphic:Sliced Circle Image
  • 入门级的 DataV 教程,适用于 Vue 2
  • JVM工作原理与实战(二十一):内存管理
  • Win10 打开文件突然鼠标变成一个蓝色大圈卡住点不了也打不开文件,重启电脑也是这样
  • 论文阅读笔记AI篇 —— Transformer模型理论+实战 (四)
  • Template -- Vue2
  • zookeeper window 安装
  • Redis 面试题 | 02.精选Redis高频面试题
  • 大数据开发之kafka(完整版)
  • 单体架构、微服务和无服务器架构
  • Github仓库使用方式
  • Harmony Ble蓝牙App(四)描述符
  • C# 实现单线程异步互斥锁
  • Java设计模式中策略模式可以解决许多if-else的代码结构吗? 是否能满足开闭原则?
  • [C#]C# winform部署yolov8目标检测的openvino模型
  • 力扣刷MySQL-第五弹(详细讲解)
  • 用C语言实现简单的三子棋游戏
  • Yaklang 中的类型和变量
  • C语言从入门到实战——编译和链接
  • 【实战教程】ThinkPHP6分页功能轻松实现,让你的网站更高效!
  • 专业130+总分380+哈尔滨工程大学810信号与系统考研经验水声电子信息与通信
  • 旅游项目day08
  • 蓝桥杯真题(Python)每日练Day2
  • IntelliJ IDEA 拉取gitlab项目
  • RHCSA上课笔记(前半部分)
  • C++代码入门05 字符串容器