Agent抽象&管理
业务PD做AI技术结合业务场景的尝试时,需要经常做技术可行性尝试,例如需要测试Agent智能体的推理过程是否合理,是否能按照自己的思维路径落地,推理一致性问题等。在基建没有完成之前,资源有限的情况下,如果通过写脚本支持业务反复验证测试、参数调整等,技术成本比较高。体会到AI项目与传统项目落地的差异后,意识到后续不同场景的迭代都会经历这样的过程,提供给产技一个类似大学“实验室”的地方,让他们做自己各种各样的验证,是AI项目落地过程中必不可少的一环,于是就有了搭建Agent实验室的想法,提供给产技做业务探索和提效工具,提高业务迭代效率。
▐ Agent101实验室
基于自己对AI技术的理解,做数据建模、类型抽象,搭建了自己的AI运维实验室,并不断地完善和补充功能,让AI“实验室”应用到产技日常开发和业务迭代中去,AI实验室设计思路如下图。
搭建Agent实验室,是为了提供给产技快速构建Agent,验证业务想法的测试场地,提供可以组合现有的已有工具,搭属于自己的私有Agent模版的平台,让业务技术快速试错。
Agent实验平台提供能力如下:
- 提供Agent抽象、管理和测试,每个人都能基于现在的工具快速搭建自己的智能体,做业务场景验证和工具串联验证。类似于你提供一个注入"tool"工具,构建"Agent" Spring bean的方式,可以在页面做Agent调用和能力验证。
Agent管理页面
- 提供工具定义抽象,工具描述管理、工具类型抽象,让工具管理可视化,实现工具的可视化配置,根据工具功能抽象通用工具、中断器、选择器等工具类型。详见下图。
图-工具管理页面
- 提供工具接口数据mock等能力,通过Agent测试链路中mock工具返回,实现在没有工具功能实现的前提下,能验证LLM智能ReAct流程对工具的理解和判断,评测Agent是否能达到业务预期,降低业务试错成本。
图-工具数据mock&Agent测试页面
工具类型和定义
▐ 工具分类
Agent可以通过学习调用外部API来获取模型权重中所缺少的额外信息,这些信息包括当前信息、代码执行能力和访问专有信息源等。这对于预训练后难以修改的模型权重来说是非常重要的。
掌握使用工具是人类最独特和重要的特质之一。我们通过创造、修改和利用外部工具来突破我们身体和认知的限制。同样地,我们也可以为语言模型(LLM)提供外部工具来显著提升其能力,LLM可以利用搜索引擎、数据库、API等工具,获取和整理相关信息,以满足用户的需求。
在工具的使用过程中,有必要对工具的类型进行归类使用,确认工具边界后,开发者在定义和使用工具过程中,能更好的根据业务提供更好工具。目前FC部门内部工具的分类,是根据不同工作的作用来划分。目前平台支撑的工具类型有以下分类。
▐ 工具类型定义
工具的类型是以工具的使用特性为标准抽象的,一类工具的定义,会与底层Agent模版工程做协议,Agent模版工程会区分不同的类型,做不同的动作。例如通用工具,Agent会使用通用工具模版,按照工具提供的描述拼接给LLM,LLM规划使用工具时候,Agent模版工程会按照通用工具的协议,执行配置接口/方法的调用,按照返回协议,解析工具返回,给到Agent做Observations:
中断的定义:
中断是指Agent在做规划和调用工具时候的一种行为。Agent执行用户指令的时候,遇到不能继续执行的情况,可以先中止流程的继续执行,需要外部输入或者反馈后,继续后续推理流程的动作。
例如用户需要执行一个订单退款操作,但是在订单查询的时候,查到了多个订单,这个时候需要先中断退款的操作,反馈给用户,让用户选择其中的一个订单继续执行。
- 通用类型
是否中断:否
执行:Agent执行到通用类型工具的时候,不会中断推理-执行的流程。
通用型工具定义:LLM判断需要调用工执行,系统需要执行一段工程化指令来获取答案,并且不会中断ReAct流程的时候,可以使用通用型工具。通用型工具目前支持外调服务(tpp/hsf)来获取答案,也支持调用本地方法来获取结果。
使用场景:业务场景中,需要借助外部工具查询信息、执行操作、逻辑处理等,都可以抽象成通用工具给LLM使用。例如外调订单接口,查询用户的历史订单;外调商家接口,查询商家信息等等。
支持类型:
- HSF :工程以hsf方式,提供外调服务执行查询、写、等业务定制操作。
- TPP :工程TPP形式,提供外调服务执行查询、写、等业务定制操作。
- LOCAL:工程本地方法、JAR包形式,提供定制业务操作。
- 其他:待扩展类型
- 中断类型
执行这个类型的工具,会中断ReAct推理过程,等待外部反应或者用户输入,才能继续推理流程。
选择器
是否中断:是
执行:Agent执行到选择器类型工具的时候,会中断推理-执行的流程。
选择器定义:工具实现一个集合的输入,让用户做一次选择。
使用场景:在业务实现的过程中,往往会遇见需要用户再次决策的场景,例如让用户选择目标商品集合的一个继续操作,这个时候就需要使用选择器。
支持类型:
- 订单选择器:如果LLM判断使用一个工具只需要一个订单,而上一个工具查询出多个订单的时候,可以使用订单选择器,让用户确认一个订单,继续继续使用工具做后续流程。
- 商品选择器:如果LLM判断使用一个工具只需要一个商品,而上一个工具查询出多个商品的时候,可以使用商品选择器,让用户确认一个商品,继续继续使用工具做后续流程。
使用选择器的时候,需要注意前台做样式的适配和定制,目前支持的订单选择器和商品选择器,需要APP端适配展示卡片。
中断器
是否中断:是
执行:Agent执行到中断器类型工具的时候,会中断推理-执行的流程。
中断定义:工具实现一个自定义输出,输出可以是一个页面地址或者一个协议地址,让用户做反馈。
使用场景:在业务实现的过程中,会遇见需要用户补充信息的场景,例如盯降级的场景,如果用户没有给出需要盯降价的商品,【盯降价】的工具就无法继续执行,这个时候可以使用中断器,中断流程后,返回盯降价的商品选择页面让用户补充信息,用户盯价商品后,LLM使用【盯降价】工具创建盯价任务。
支持类型:
- 业务中断器:使用中断器,中断流程,返回页面动作,让用户反馈信息。
使用中断器时候,需要注意中断以后跟端上协议,中断器要配合APP端上动作,才能起到让用户补充信息的作用。
▐ 工具异常定义