为什么要采用ActionNode的数据结构?
随着Agent需求的复杂化,SOP也会复杂化。动作的执行不再只是线性,需要支持CoT、ToT、GoT等技术,使用 ActionNode 可以实现统一抽象。
之前的Action,我们是用结构化的prompt形式,用markdown文本输入一个很长的文本信息,然后在action的run方法中解析LLM返回的信息,这种方式的灵活性是比较差的。
而对于LLM的请求,实际上都可以拆解为结构化的填槽:指定问题的上下文、需求、目的、输出格式。
对于写出一个有 SOP 且完整的文档,人类的撰写方式实际上是分解文档的子标题,对子标题进行动作的编排以及填槽。而通俗的来看SOP应该在被规划进行逐一执行,而不是硬编码在prompt当中要求llm一次性进行返回。我们平常用llm写文章的时候就会发现生成的回复往往是各个章节均衡的。对于写代码而言,llm往往能够生成一个60-75行左右的详细代码,而对于复杂的系统级需求,它生成的代码往往只能提供一个结构和部分注释。
ActionNode,实现了结构化填槽,使LLM请求和返回都更加标准化。
参考文档: