“ 智能体开发过程中存在很多问题,但由于其执行过程是个黑盒,因此其调试存在更多的困难。”
最近一段时间一直在搞智能体方面的开发,主要方向是数据分析智能体;采用的框架是langchain家族的Langgraph框架;原因就在于Langgraph有很强的定制功能。
但是,在实际开发的过程中却一步一步坎,面临着各种各样的问题;比如说数据分析结果不准确,找不到数据或文件,在多链路的过程中,智能体只能处理一般的需求,另一半需求被忽视。
但不能因为开发过程中存在问题,就不管不问了,毕竟功能还是要做;因此我们需要思考的是怎么解决问题,所以这里就记录一下解决问题的思路。
智能体开发过程中问题解决的思路
在智能体开发过程中最大的问题最大的问题就是不确定性,原因在于大模型完全不可控;再加上智能体是以大模型为核心的功能模块,而大模型的执行过程又是一个黑盒,虽然可以使用一些工具监控大模型的执行过程,比如说Langsmith但整体上来说,智能体的运行过程还存在很多的不可控因素。
目前我们的需求是基于pandas对excel,csv,数据库等结构化数据,使用大模型做数据分析,比如说统计;给大模型提供一个Python运行环境,并给出数据结构,让大模型根据自己的理解去生成pandas代码去执行,然后获取结果。

之后,再根据统计结果,对数据进行可视化,也就是生成图表,比如说echart表,柱状图,折线图等等。
而经过几天的demo测试,发现大模型调用pandas进行数据分析出现很多不可控的因素;比如说有时候大模型会虚构一个文件路径,导致找不到数据文件;其次,大模型生成结果不稳定,比如会生成一些和数据完全无关的内容,或者仅仅只给出一个解决问题的思路,但却不自动执行。
然后,在对数据进行统计分析之后,无法调用图表生成工具生成图表;只执行到数据分析就结束了;再有就是调用了图表生成工具,生成的结果是错误的或者无法正常生成;更有甚者,大模型会连续调用所有的工具,即使这个工具和目前的业务没什么关联。
所以,遇到这种问题应该怎么处理?
其实类似于这种问题,考验的是我们解决问题的能力,简单来说就是解决问题的方法;而不仅仅只是考验我们的技术。
对应用开发者来说,大家做开发基本上都是基于第三方的开源框架或工具;而且很多功能都已经封装好了,我们只需要会使用即可;而遇到这种问题,我们又不可能一点一点的去翻源码,而且时间上也不允许;毕竟公司招你来是解决问题的,不是让你来学习的。
因此,这时我们首先需要定位问题,然后拆解问题;比如说这个数据分析的功能,需要调用Pandas进行数据分析,然后使用图表工具生成图表。
这时如果出现问题,我们首先需要做的并不是把整个流程串起来跑;而是要学会定位问题,然后拆分问题。比如说无法生成图表是因为图表工具有问题,还是说根本没有调用图表工具;或者是第一步的数据分析就有问题,导致分析结果有问题,然后无法生成图表。

因此,这时我们应该把整个链路给拆开,先确认数据分析的结果是否有问题,是否稳定;因此我们就可以把图表生成工具给拿掉,然后只进行数据分析;如果数据分析有问题,到底是因为模型的原因,还是数据的原因,亦或者你数据分析的流程本身就有问题。
而这时我们就需要使用替换法,比如说更换模型,更换一个能力更强的模型;看看是否能够进行准确的数据分析,如果测试结果是模型有问题,那么就非常简单换一个模型就行了;而如果测试结果不是模型的问题,那么可能就是你开发的功能有问题,这时就需要去分析你的代码和逻辑是否有问题。
但我们很多人会因为嫌麻烦或就是单纯的懒,就像一次把功能给跑通;在哪里像无头苍蝇一样,到处乱转,然后偶尔还会嘀咕刚刚还好好的,然后什么都没动,为什么现在就不行了呢。
总之,遇到这种问题最好的方式就是使用调试工具或者根据自己的经验,先大概定位问题的位置,然后把影响因素控制到最小,然后再进行测试;这样才能更加准确地定位问题。
(文:AI探索时代)