knowledge-vault/sources/references/AI学习笔记/多智能体与设计模式/智能体构建的思考.md

2.8 KiB
Raw Blame History

场景细分

第一个要思考的事情是:构建的业务场景能不能进行细分。拆分成不同的场景,每个场景只关注一个最小的业务。 目标是把所有的数据放到向量库中,然后通过向量检索全库搜索所有数据,给用户最详细的回答,让搜索没有盲区,搜什么都有。 显然这个应用是失败的因为不可能将TB级别的数据通过向量检索就完全解决了有太多语义上相似的chunck但是不相关的chunck出现后来我们增加了很复杂的意图识别通过数据类别进行分类。这些一切都行不通。 你需要将你的应用按照场景细分,而不是数据细分。 比如,对于同样都是医学类数据,科研人员和药店柜员要求的准确程与深度是截然不同的。 构建智能体也是一样的不是把所有可能会用到的工具都扔给智能体ReAct就可以搞定的 要思考:你构建的是什么场景?目标人群是谁?

流程拆分

场景细分之后,要考虑:流程是否可以拆分。不要完全让智能体帮你判断流程走向。 做过一个场景应用:患者过来问诊,智能体先收集患者的信息,然后根据这些信息做药品下单。 这两步流程我通过ReAct来实现的大概是让它智能的判断是否已经完全收集患者信息了如果是就总结相关内容调用function call下单。 它的智能判断让我瞠目结舌: 有时候患者没说完话就下单了,有时候患者说了很多明确表达说明了,还不下单。。 这个部署在生产环境上,肯定是不过关的。 如果将流程拆分出来不让智能体React来判断而是我通过固定的编码流程处理患者信息的手、让用户确认、然后在下单。改造之后的流程就完全没有问题了。 !IMG_2455.png

多智能体合作

思考过这样的问题吗coze、dify这些智能体工作流框架已经很好了为什么还要进行代码开发尤其是随着越来越多的智能体框架出现再加上OpenAI也开源了自己的多智能体swarm框架。

原因是:当场景细分、流程拆分后。 要将他们拼凑起来才可以完成更复杂的业务场景。只有工作流的话,简单场景没问题,复杂场景则开发的灵活度就较差了。

最后

ReAct的缺点是 让一个LLM做了太多的事情了尤其是在意图识别时会有产生很多偏差。 解决方案: 1. 不要按照数据拆分,按照场景拆分,先搞定最细粒度的场景。 2. 对小场景中的流程进行细致的节点拆分,将固定的流程先行标准化,从而降低大模型在选择过程中出现的不稳定性。 3. 逐步叠加小场景,通过多智能体的协同合作,最终构建出完整的大场景。