本文来自微信公众号:王智远李宗瑞 姐妹花李宗瑞 姐妹花,作家:王智远,原文标题:《Claude发布一套智能体构建指南》,题图来自:AI生成
上周五,2024年12月20日。Anthropic这家AI公司发布一份答复,题目是《Building effective agents》(构建高效的智能代理)。
你可能没听过Anthropic,但他们的产物你可能知说念,比如Claude系列的AI助手,有Claude 3.5 Haiku和Claude 3.5 Sonnet等等。
这份答复,是基于他们夙昔一年与数十个团队互助构建LLM(大言语模子)代理系统的教学回想。我周末看了,简略有五点内容:
1. 对代理系统Agents的界说;
2. 盘问什么时候用代理系统;
3. 五种中枢的责任流模式;
4. 一些现实中的例子;
终末,给开荒者提供一些推论分解。
我合计内容对开荒者,或者对智能体、责任流感兴味的东说念主挺有匡助;是以,把有价值的内容聚会后,跟你陈诉下。
一
Agents不少东说念主听过,Anthropic这家公司奈何聚会的呢?他们认为,代理不错有好多种界说。
有些客户把代理看作王人备寂寞的系统,不错万古分自主运行,使用各式用具来完成复杂的任务;另一些客户则把这个词用来描写那些按照事前设定的经过运行的系统。
在Anthropic,把所有这些不同的形势都叫作念代理系统(agentic systems),但在责任流(Workflows)和代理(Agents)之间,有很大的区别。
区别在哪呢?
责任流,是提前写好的代码来调解东说念主和用具的系统;代理是我方动态管束我方的经过和用具使用,保抓对完成任务方式的截至。
这种区别很紧迫,因为它帮咱们聚会了代理系统的实质:即,不是所有的AI赞助系统都得王人备自主,随机候一个提前设定好的责任流更稳当某些情况。
那么,什么时候该用责任流、什么时候该用智能体?
其认为,如果任务界说得很通晓,责任流更稳当,因为它能提供可推测性和一致性。
如果要大规模的天真性和模子驱动的决策,代理是更好的遴荐,但对好多欺诈来说,优化单个LLM调用,配合检索和凹凸文示例频繁就够用了。
往常地说:责任流更稳当任务明确、法度固定的责任。就像你按照食谱作念菜,每一步都写得六根清净,唯有随着作念就行了。
而智能体稳当要天真应付、脚踏两只船的情况。比如:你要去一个新城市冒险,莫得固定的道路,要凭据实践情况来决定下一步奈何走,此时,智能体能帮你在复杂多变的环境中作念出决策。
对于界说,这是第一部老实容。第二部分是什么呢?
Anthropic建议,咫尺,看到市面有四种流行开荒框挺火。永诀是:LangChain的LangGraph、Amazon Bedrock的AI Agent框架、Rivet和Vellum。
肯定你看到名字有些聚会不透,别惊悸,我和你同样,于是,索性查了一下。
先说说LangChain。它是一个用具,帮咱们创建和管束言语模子(LLM)的责任流。你不错把它遐想成一个图表,帮开荒者把不同的任务和法度连起来,这么,就能通晓地知说念每一步该奈何作念,调遣起来也浮浅。
接下来是Amazon Bedrock的AI Agent框架。
这是亚马逊提供的一个框架,像一个用具箱,内部有好多现成的用具和资源;帮开荒者快速搭建智能欺诈,你不错用它来遐想和运行各式AI任务,无须重新启动。
然后是Rivet,它是一个拖放式的图形用户界面(GUI)用具,专门用来构建言语模子的责任流。
咱们不错把它遐想成拼积木同样,把不同的功能和法度拖到所有,变成一个完竣的责任经过,这种方式省略直不雅,稳当不太会编程的东说念主。
终末是Vellum,它亦然一个图形用户界面用具,主如若用来构建和测试复杂的责任流;遐想完成后,你不错在Vellum里测试,确保一切正常运行。就像一个实验室,让你不错在内部尝试各式有缱绻。
总的来说,四个用具区别在于:LangGraph用图表结合任务和法度;Amazon Bedrock的AI Agent框架提供全面的用具箱,让开荒者无须从零启动;Rivet是一个拖放式的GUI用具,稳当不懂编程的东说念主;Vellum专注于复杂责任流的遐想和测试。
Anthropic给了一个建议:
开荒者不错先顺利用LLM API来开荒,因为好多功能用几行代码就能管束;如果要用框架,一定要弄懂底层代码,要谨防,框架可能会让调试变难,别因为框架功能多就乱加复杂性。
它们还至极提醒,客户常犯的一个诞妄是,对框架底层竣事存诬告。这告诉咱们,用具仅仅赞理,简直紧迫的是聚会背后的意旨。
是以,论断是:1. 框架如实能让一些基本任务变省略,比如调用LLM、界说息争析用具、连络调用,但框架不应该成为咱们增多不必要复杂性的事理;2. 保抓系统省略、好爱戴、好调试,这才是最紧迫的。
二
第三部分,答复中慎重先容五种中枢责任流模式。
这部分很紧迫,率先提到,教唆链式责任流(Prompt chaining)。奈何聚会?
遐想一下,你要完成一个复杂的写稿任务,比如写一篇很棒的营销案牍。你可能先写个大纲,查验一下大纲合不对格,然后,再凭据大纲写出完竣的案牍。
这种责任流的重点是,把一个大任务拆成一连串的小法度。每个法度都是一个LLM调用来处理的,何况背面的法度会用前一个法度的遵循当作输入。
在这个过程里,你还不错加一些查验点(答复里叫“gate”),确保一切都在正确的轨说念上。
这种责任流最稳当能明确分红几个固定小任务的情况。主要标的是让每个LLM调用都专注于更省略的任务,进步举座的准确性,固然可能会多花点时分。
具体例子是:
文档写稿经过:第一步,生成文档大纲;第二步,查验大纲是否稳当特定圭臬;第三步,基于审核过的大纲写完竣文档。
上风是每个法度都专注作念一个任务,进步准确性;不错在要津点加质料查验;经过通晓,容易调试和优化。
第二种是:路由责任流(Routing)。
这个模式挺专诚念念,处理好多用户肯求时,会遭遇各式万般的问题;有的问题省略,有的要专科技能复古,还有的可能波及退款这种敏锐操作。
路由责任流,要津是先对问题进行分类,然后诱骗到最合适的处理经过,这么作念的刚正很显着:不错针对不同类型的任务优化不同的处理方式,而不是用一个通用的宗旨来应付所有情况。
举个例子:
客户作事系统里,收到用户的问题后,路由责任流不错先判断这是个一般问题、退款肯求仍是技能复古需求,然后永诀诱骗到不同的处理经过。
更机灵的是,它还能凭据问题的复杂度遴荐用不同才调的模子。比如,省略常见的问题不错交给像Claude 3.5 Haiku这么快速的模子处理,复杂或不常见的问题不错交给像Claude 3.5 Sonnet这么开阔的模子来解决。
这么既能保证作事质料,又能优化资本和速率,要津是,这种分类不错通过LLM来完成,也不错用传统的分类模子或算法。
是以,它的上风在于天真性和可扩张性,随着业务的发展,你不错落幕添加新的分类和处理经过,不会影响现存的功能。
三
第三种,是并行化责任流(Parallelization),这个模式稳当要同期处理好多任务。
比如:你在作念一个大相貌,得同期探讨好几个方面;肖似于开荒软件,要一个模子来查验用户输入的安全性,同期另一个模子来生成代码。
并行化责任流,便是为了应付这种要同期作念多件事的情况遐想。
答复里说,并行化主要有两种竣事方式:
1. 把任务拆成寂寞的小任务,让它们同期进行,这么不错省时分;2. 通过投票机制,让好几个模子处理并吞个任务,然后汇总遵循;这么作念的刚正是,你能从不同的角度获取不同的输出,进步遵循的委果度。
总的来说,它像一个多功能团队,每个东说念主都作念我方最擅长的事,所有互助,终末获取一个更强的遵循。
第四种,调解者-责任者责任流(Orchestrator-workers)是什么?
你在组织一场音乐会,总得有个东说念主来管大局,确保每个细节都能顺利进行,这个东说念主就像“调解者”。
其他东说念主就精良具体的活儿,比如:调音响、弄灯光、卖票这些,他们便是“责任者”,调解者得凭据现场情况天真调遣谁干什么。
答复里说,调解者-责任者责任流的点子是一个中央LLM(便是调解者)来动态分派任务,让好多责任者LLM去完成这些任务。
这么,调解者能凭据实践情况,天真决定要作念哪些小活儿,而不是一启动就把法度都定死了。
这个模式稳当你没法提前知说念具体要干啥的情况,比如软件开荒里的编程任务,每次凭据需求,可能要改好多文献,调解者就能凭据实践情况决定哪些活儿先干,哪些不错放一放。
总之,调解者-责任者责任流就像是一位领导家。
接下来说说第五种:评估者-优化者责任流(Evaluator-optimizer),这个模式稳当要反复变嫌和响应的任务。
比如:你写著述,可能先写个草稿,然后请一又友望望,提提办法;你凭据办法再修改,让著述更好。这个过程就跟评估者-优化者责任流差未几。
再举个例子,咱们搜一个东西可能要好几轮;评估者责任流,会望望当今的搜索遵循满不悠闲要求,不悠闲连接搜,直到找到想要的信息。
答复里说,这种责任流的要津是轮回:
一个LLM先给出初步的复兴,另一个LLM来评估这个复兴,然后提供响应,这个过程不错一遍遍重叠,直到获取一个更好的遵循。
刚正在于它不错一遍遍变嫌,通过抵制的响应和调遣,终末的输出质料能进步好多;是以,评估者-优化者责任流就像一个严格的裁剪,帮你把著述改得更好。
以上五种中枢责任流模式,你对哪一种印象比拟深?
记不住也不波折,有一个宗旨是,用个东说念主责任的方式,去镶嵌几种模式中,望望哪些业务、相貌、任务稳当哪一种。
四
第四部分主要陈述了:智能代理奈何责任。其提到:代搭理先凭据用户的大叫或者和用户的互动,来搞通晓要干啥。一朝任务明确,代理就我方启动干活。
干活时,代理得知说念周围的情况,比如用用具获取的遵循或者代码运行的响应,这么它才调知说念我方干得奈何样。
如果代理在干活的时候碰到贫寒,它不错停驻来,找东说念主问问,确保任务能顺利完成;任务干完毕就终局了,但也不错先设定好一些住手的条目,比如最多干若干次,这么能截至所有过程。
在第10页中,Anthropic给了一些实践例子。
他们强调,代理至极稳当处理洞开性的问题,尤其是法度不好推测的任务。因为代理能我方干活,是以,在信任它们的场所,它们能帮大忙。
比如:有个编码代理,用来解决软件工程里的任务,代理我方先望望哪些文献需要改,然后响应出来,这么能大大进步开荒的速率。
终末,第五部分里,Anthropic给出了一套开荒用具的好点子,他们合计:
1. 用具在代理系统里至极紧迫。它们能让代理和外面的作事、API好好疏导;是以,用具遐想和作念出来时要通晓明白,这么代理用起来才顺遂。
2. 开荒者得给模子迷漫的时分念念考。别让模子在生成输出的时候卡壳,用具的输入阵势和参数描写要阳春白雪,这么模子才调更好地聚会和用这些用具。
3. 用具的界说和规格要和举座的教唆工程同样青睐。开荒者要探讨不同阵势对模子弘扬的影响。比如:在裁剪文献时,不错遴荐用各异阵势或者重写所有文献,要确保选的阵势能让模子更容易生成正确的输出。
答复还建议要多作念测试,不雅察模子奈何用用具,然后凭据测试遵循抵制变嫌用具的遐想,通过运行好多示例输入,开荒者不错发现模子可能犯的诞妄,然后变嫌。
终末,创建一个好的代理筹划机接口(ACI)也很紧迫,开荒者要确保用具用起来省略顺利,这么用户体验才好;通过这些秩序,Anthropic但愿能帮开荒者在开荒用具的时候逃避常见的坑,确保代理系统能高效运行。
注目:[1].Anthropic. Building effective agents. 2024.12.20;地址:https://www.anthropic.com/research/building-effective-agents
本文来自微信公众号:王智远,作家:王智远