AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


原理与实战:利用Agent技术提升AI应用效能
发布日期:2024-06-03 18:08:30 浏览次数: 1891 来源:神州问学


Agent如何实现多任务自动化与优化

©作者|CodeDan

来源|神州问学


Agent是什么?


AI目前使用上是有缺陷的,比如信息的实时性等,导致无法主动更新自己的知识,导致出现事实幻觉。而且语言大模型目前最适合的依旧是自然语言交互的处理,在与外部其他工具的交互功能暂时还不是很强大。


所以Langchain通过Agent(智能体)即可具备让LLM模型辅助进行思想推理的能力,并且可根据推理去调用外部工具获取结果。


Agent代理是一种多功能的程序,它类似于一个可以与各种工具交互的工具。根据用户的需求,它能够提供多种工具供用户选择,并且能够同时提供多种工具的功能,还可以将一个工具作为另一个工具的输入,实现数据的流畅传递和处理。



上述过程有很多地方需要大模型来思考如何进行下一步的推断,但是大模型是不会主动去推理下一步应该做什么的,这个时候需要我们进行思维上的引导,从而让大模型能够自主的进行步骤的推理。


ReAct思维链:在语言模型中协同推理与行动


ReAct的核心在于推理(Reason)和行动(Action),其可以让Agent利用模型进行动态推理,并采取行动与外界环境互动。



模拟场景:你在售卖雨伞的过程中,经常会经历由于天气变化而导致的雨伞当天价格不同,那么,每天早上你会如何为你的雨伞定价?


人类回答:我需要知道明天武汉天气如何(推理),我会去天气预报上面查一查今天的天气如何(行动),然后我会根据这个天气是晴天还是雨天,来确定我要定价多少(推理),最后计算出一个售价(行动)!


上述回答中,已经包含了推理和行动。如果交给Agent构造推理逻辑,则为以下步骤:


推理1:我需要知道明天武汉天气如何

行动1:调用天气查询工具,查一查今天的天气如何

观察1:明天武汉的天气将以晴朗为主,预计最高气温为29°C,最低气温为19°C。空气质量指数为中等,风速为3公里每小时,湿度为77%。整体来看,天气状况良好,适合户外活动


推理2:明天天气是晴天,那下一步为需要检索数据库,查看往常店铺晴天售卖定价是多少

行动2:调用数据库工具,查看店铺往常晴天售卖定价

观察2:店铺晴天往常售价是20块钱


推理3:店铺晴天往常售价是20块钱

行动3:返回今天的售价可以是20块钱

而在代码中,我们可以通过LangChain快速构建Agent,下述Agent均使用LangChain进行演示。



常用Agent介绍


自然语言询问数据库Agent


在数据库管理中,我们通过结构化查询语言(SQL)来完成所有操作。SQL是一种专门的语言,用于向计算机明确传达我们从数据库中提取信息或执行操作的需求。这意味着,我们不仅需要掌握这种技术,还要深入了解我们正在处理的数据。


但是现在我们可以通过Agent完成从"人为使用SQL告诉数据库我们想要什么”到“直接告诉数据库我们想要什么''的转变,从而更加方便无基础的人员进行数据的操作。



步骤一:我需要知道目前系统中都有谁


步骤二:LLM解析问题,获取关键点(比如获取当前数据库的表集合以及每个表的备注信息,选中表的结构信息等)。然后生成相应的SQL查询语句(SELECT * FROM USER;)


步骤三:执行SQL。生成的SQL会被送到指定的Databases中去执行,LLM会将查询结果解析,并将数据总结与问题相应的结果


步骤四:提供答案,将结果翻译成自然语言并提供出来。


项目实战


数据库种类:MySQL

数据库名称:test



那么数据库Agent是如何把当前有多少用户准确"翻译"成select count(*) AS total_users FROM tb_user的呢?


这个就要归功于组成此Agent的关键组成prompt,即让LLM模型具备推理,行动能力的关键。让我们来追溯到create_sql_agent这个方法的源码里,定位到创建agent的代码中寻找一下其对应的prompt。



备注:此提示词为agent类型为openai-tools时的数值,当创建的agent属于其他类型时,可以自行查看源码。


Python代码执行器Agent


在使用大模型的过程中,我们往往会发现如果问题中包含统计,计算以及推算等复杂的数学计算时,大模型往往提供的答案精准度不高,甚至很离谱。


这是因为大模型如ChatGPT是基于自然语言处理(NLP)的预训练生成模型,主要目的是生成和理解自然语言文本。它通过大量的文本数据进行训练,学习语言模式、语法和语义。


然而,它并不是为精确的数学计算和逻辑推理而设计的。并且从深层来说大模型生成答案的机制是基于概率的。它通过对每个可能的词进行评分来生成最有可能的下一个词。这种方法在处理自然语言生成任务时表现良好,但在处理精确数学计算时,可能会导致误差。模型生成的每一步都是基于概率的估计,而不是严格的数学规则。


所以当需要进行精确数学计算时,我们可以将这个步骤交给python解释器,由python解释器计算完成后将结果交给LLM模型,而这种通过将ai生成的代码交给代码解释器并运行获取结果的方式被称为程序语言辅助模型(Program-Aided-Language-Models),简称PAL。


1. 用户输入:用户提交请求或问题并且大语言模型(LLM,如ChatGPT)接收并分析用户输入。


2. 代码生成:LLM生成用于精确数学计算的Python代码。


3. Python解释器:执行生成的Python代码。


4. 计算结果返回:Python解释器将计算结果返回给LLM。


5. 结果整合:LLM将计算结果整合到最终的回答中并转为自然语言返回用户输出


项目实战


前置环境:

pip install langchain_experimental



老样子我们来看一下create_python_agent源码中agent的提示词:



多个Agent如何管理


在一个AI应用系统中,通常会有多个Agent协同工作。而如何让多个Agent能够有序并且按照原有需求进行合理的编排获取最终的高准确度结果,那么Agent意图识别在多个Agent管理中起着至关重要的作用。


什么是Agent意图识别?


是指让大语言模型(LLM)基于上下文信息,从一组备选项中选择合适的类别,填入相应参数并进行格式化输出的能力。其在Agent管理上主要具备以下特点:


1. 任务分配和协调:通过意图识别,各Agent可以明确自身职责和任务,并根据整体任务需求进行协调和分工。例如,在多步任务处理过程中,不同Agent可以负责不同步骤,确保任务顺利完成。


2. 减少冲突和冗余:精准的意图识别能够避免多个Agent重复执行相同任务或产生冲突。每个Agent能够理解全局意图和自己的具体任务,确保各自工作互不干扰,提升整体效率。


3. 信息共享和协作:意图识别使得各Agent能够理解彼此的目标和行为,通过信息共享实现协作。例如,在智能办公系统中,一个Agent可以负责会议安排,另一个Agent负责会议记录和跟进,通过意图识别和信息共享实现无缝协作。


4. 环境反馈和调整:在多个Agent系统中,意图识别能够帮助各Agent理解环境反馈,进行行为调整。例如,一个Agent在执行过程中遇到问题,可以通过环境反馈识别自身意图是否正确,并请求其他Agent的协助或进行自我调整。



项目实战(简化版本意图识别Agent)



让我们来看看执行过程和结果:



看看最外层的prompt提示词,这个是其能够正确推理和选择相应Agent的关键(可以适当修改提示词增加意图识别的能力):



总结


Agent技术通过结合LLM的自然语言处理能力和外部工具的交互能力,极大地扩展了AI应用的范围和实用性。无论是在数据库查询还是复杂计算领域,Agent都能提供更加智能和高效的解决方案。同时,多个Agent的协同工作和意图识别技术,进一步提升了AI系统的整体性能和用户体验。



53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询