智能体时代:Agent开发的三重境界
引言
随着人工智能技术的飞速发展,Agent(智能体)的概念已经从科幻小说走进了现实世界。Agent可以被理解为一种具有一定智能的软件实体,它能够自主地执行任务、做出决策并与其他系统交互。
在AI技术公众号的运营过程中,我们收到了许多关于Agent开发的咨询,因此,本文将从技术角度出发,为大家解析这三个阶段的演进方式,并各自提供一个代码demo案例,为新手程序员提供一份Agent开发的指南。
- Demo地址:https://github.com/q2wxec/langgraph-demo/tree/master/coalagent/
当作能理解语义的API使用
在Agent开发的初级阶段,我们可以将大语言模型视为一种能理解自然语言的API。这意味着,我们可以像调用任何传统API一样,向Agent发送请求,并期望得到一个经过理解和处理的响应。
在这个阶段开发的智能体,大多是在传统软件业务流程中,嵌入LLM的能力,对软件功能进行增强。对LLM使用局限在其对自然语言的理解能力上,应用场景大多局限在,文本生成、总结等方面,与传统软件开发调用各类工具的api的模式并无明显区别。典型用例如下:
短视频文案创作
我们可以将Agent作为一个内容生成器,输入视频的关键信息,Agent则能够根据这些信息生成吸引人的文案。这个过程可以看作是将Agent作为一个文本生成API来使用。
新闻日报总结
另一个典型的应用场景是新闻内容的自动总结。Agent可以接收大量的新闻数据,然后通过自然语言理解能力,提炼出关键信息,生成一份简洁的新闻日报。结合网页信息获取工具,我基于LangChain做了一个简单的新闻总结demo见github。
在这一阶段,Agent的开发主要集中在如何更好地理解和处理自然语言上。开发者在AI领域只需要熟悉自然语言处理(NLP)的基本原理,在AI工程上用到最多的也限于提示词优化,就能够利用现有的AI模型来实现这一功能。
当作自然语言编程工具使用
从API到编程工具的转变
在第二阶段,Agent不再仅仅是一个理解语言的API,而是一个可以进行自然语言编程的工具。这意味着,开发者可以通过自然语言来指导Agent完成更复杂的任务。
在这个阶段开发的智能体,不再局限于文本理解的场景。通过提示词工程,function_calling等方式,能够让大语言模型按提示要求格式化输出内容,进而在一定程度上能够重塑传统软件业务流程的多个环节,可以说是通过LLM进行自然语言编程应用。典型用例如下:
数据表汇总与去重
在这个场景中,Agent接收多个数据表,然后通过自然语言提示,自动进行数据汇总和去重,最终输出一份整洁的汇总表。使用LangGraph的流程编排,我实现了一个结合数据处理,过滤,去重,汇总的数据表汇总demo见github。
自动推动业务流程
通过AI执行意图识别,Agent可以在某些业务流程中减少人工审核环节,自动识别并推动流程的执行。关于大语言模型的意图识别,我在之前的一篇文章LLM意图识别器实践中进行过详细讲解,有兴趣的小伙伴可以点击详读。
为了实现这一阶段的功能,开发者需要掌握提示词工程和function_calling等技术。这些技术允许开发者通过自然语言来指导Agent的行为,使其能够按照预期执行特定的任务。
当作真正的智能使用
在Agent开发的第三阶段,Agent被真正当作一个智能体来使用。这时,Agent不再只是一个简单的API或者工具,而是成为了一个具有自主决策能力的智能伙伴。
这个阶段的智能体开发,与大家理解的AI原生应用开发大体相同(虽然AI原生应用也没有一个规范统一的定义),但这个阶段的应用开发与传统软件开发的思维方式确实是完全不同了,LLM被真正当作智能来使用。
在软件开发时,可能更多要思考的是,这个事情如果是由一个人类团队来执行,
- 需要哪些角色(提示词Role限定)
- 这些相关角色需要具备哪些技能(tools绑定)
- 团队之间应该如何交互(state设置)
- 团队之间的工作如何流转(workflow的设置)
可以看到,这个阶段LLM不再作为API独立存在,而是绑定了角色和技能,并需要进行多个agent的组合,已经与人类智能的使用方式一致。典型用例如下:
Plan-and-Execute
Plan-and-Execute指的是涉及规划与执行两个主要步骤的过程,Agent需要根据给定的目标自主生成计划,并基于计划步骤自动执行任务,这要求Agent具备理解计划、制定策略并执行任务的能力。
例如,如果给定的任务是“计划一次从北京到上海的旅行”,那么大语言模型的“规划”步骤可能包括确定旅行日期、选择交通方式、预订住宿和活动等,而“执行”步骤则可能涉及生成详细的行程安排和必要的预订步骤。
作者结合搜索和自动问答工具,使用Plan-and-Execute做了一款搜索问答增强demo见github。
示例2:BabyAgI
BabyAGI是一个由开发者Yohei Nakajima创建的AI驱动的任务管理系统。它利用OpenAI和Pinecone APIs来创建、优先排序和执行任务
在这一阶段,开发者需要考虑的是如何将Agent与人类团队的工作方式相结合。这涉及到角色限定、技能绑定、状态设置以及工作流程的设置等多个方面。
结语
Agent开发的三重境界代表了AI技术从简单应用到深度融合的演进过程。随着技术的不断进步,我们有理由相信,Agent将在未来的软件开发中扮演越来越重要的角色。对于程序员而言,理解并掌握Agent开发的这三个阶段,将有助于他们更好地适应未来的技术发展趋势。