关于在智能体开发中的数据传输的格式问题——状态图就类似于集装箱,数据就是集装箱里面的东西

 智能体就像一个人,它懂设计,会使用工具,还会写代码;但,它并没有执行代码的能力。





在智能体开发中,由于涉及到大模型和工具,以及其它一些处理逻辑,因此数据传输是智能体中的重中之重;虽然Langgraph等框架提供了数据传输的载体——状态图。


但数据传输在智能体中并没有大家想象中的那么简单,虽然其很基础,也很显眼;但可能很多人都没有注意到,那就是数据传输的格式问题。






智能体中的数据传输




以Langgraph为例,为了解决数据在智能体和不同工具之间进行流转,因此提出了状态的理念,使用状态图在智能体中进行数据传输;但有一点需要注意的是,状态图只提供了一种数据传输的方式,并没有约束其数据传输的格式。


状态图就类似于运输过程中的集装箱,在智能体中的流转就类似于集装箱在汽车,火车,轮船上流转;因为状态图的标准性,因此任何数据都可以放到状态图中,然后在智能体的各个环节中进行处理。


但集装箱并没有规定里面只能放什么,因此只要在不违法的前提下,任何东西都可以放到集装箱里。


同理,在状态图中你可以放字符串,JSON,XML,HTML等等多种格式的数据。


为什么要注意这一点?


原因就在于前面说的话——大模型就像一个人,它可以写代码,但它不能执行代码。


因此,在智能体的调用过程中,传参时我们只能传一些字符串,JSON对象等与平台无关的数据格式;原因就在于,有些人在开发的过程中会把一些程序对象当做参数传递给模型或工具。


比如说,在数据分析领域中,pandas的DataFrame对象就是一个常用的数据集对象;因此,在工具开发中有些人之间把DataFrame对象当做参数传递给工具。


但等到真正执行的时候才发现,根据跑不起来;至于原因就是前面所说的,在智能体中进行数据传递,需要的是与平台无关的数据格式,如JSON;而不是把编程语言中的对象当做参数进行传递,因为大模型没有执行代码的能力。


而且从实际的开发经验来看,在Langgraph中大模型调用工具,一般情况下都是把参数当做字符串类型进行传递;然后在工具中再由开发人员自己手动解析。


而这一点也是在开发数据分析智能体时发现的, 当时在测试过程中;明明把数据都传给工具了,但在工具中获取的数据还是不完全的,甚至大部分数据都丢失了。


所以说,智能体或者说大模型它懂得编程,但它并不会执行代码,你直接丢给它一些代码或对象,它也处理不了;因此在数据传输的过程中,我们需要的把数据丢给智能体,而不是把代码丢给智能体。









(文:AI探索时代)

发表评论