上篇文章 【AI的未来 - AI Agent系列】【MetaGPT】4. ActionNode从理论到实战 中我们学习了MetaGPT中ActionNode的理论和基本用法,跑通了一个简单程序。
原理和代码实现都很简单,但是谁知道当时我遇到了多少坑… 本文带你看看我在上文中遇到的坑,希望能帮到你!
下面说下我遇到的坑:
听信了官方教程中的MetaGPT版本推荐,我之前的学习和实战都使用了0.5.2版本,所以一开始,ActionNode的学习也使用的此版本。
# from metagpt.actions.action import Action, ActionNode
from metagpt.actions.action import Action
from metagpt.actions.action_node import ActionNode
# child = await i.simple_fill(schema=schema, mode=mode)
child = await i.simple_fill(to=schema, mode=mode)
如下图:一直在输出,这个都是ActionNode内的打印。
这个坑,是在ActionNode中循环,退不到我的代码中,所以我无从下手解决。促使了我升级到最新github代码… 后来我在高版本中遇到类似问题,好像是因为结果校验不通过,触发了重试。
这个是因为升级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
还有几个坑忘记截图了… 不过上面也基本够了,应该能帮你省不少事儿~~~