代理型AI的崛起

现在,很多新开发的工具库和低代码平台让构建AI代理变得更加简单。工具调用是生成式AI具备“代理型”特性的重要因素之一,它让AI不仅能进行对话,还能执行复杂任务。通过调用工具(函数),AI代理可以替你行动,处理多步骤、需要决策的复杂问题,并与外部数据源互动。
本文将探讨AI是如何通过工具调用进行推理,讲解使用工具时的挑战,介绍评估工具调用能力的方法,并提供一些模型与工具交互的实例。


推理表达:解决问题的方式


成功的AI代理背后有两种关键的推理方式:一种是通过评估和规划来推理,另一种是通过工具使用来推理。
通过评估和规划推理是指AI能够有效地分解问题,反复进行规划、评估进展并调整方法,直到任务完成。像链式思维(CoT)、ReAct和提示分解(Prompt Decomposition)等技术,都是为了让模型通过分步解决问题来增强推理能力。这种方式关注宏观层面的思考,通过迭代处理确保任务被正确执行。
而通过工具使用进行推理则是指AI如何与环境互动,决定调用哪个工具以及如何组织调用。这种推理更侧重于如何正确地执行工具调用,而不太关注调用结果的反思。
虽然这两种推理方式都很重要,但并不是每次都要结合使用。例如,OpenAI的o1模型在规划推理方面表现优异,它经过了链式思维的训练,能够解决复杂问题。不过,o1目前没有明确的工具调用功能。
相比之下,一些模型专门为工具调用进行了微调,它们能非常高效地生成函数调用并与API交互。伯克利函数调用排行榜(BFCL)是一个很好的工具,用来比较不同模型的函数调用表现。最新的BFCL v3数据集甚至加入了多步、多轮函数调用的测试,进一步增加了难度。
这两种推理方式各自独立都很强大,但如果结合起来,将能创建既能分解复杂任务又能自主互动的AI代理。


工具调用的挑战:复杂代理行为的管理


构建可靠的AI代理需要解决很多挑战。在处理复杂问题时,代理通常需要同时处理多个任务,比如规划、在合适的时间使用合适的工具、正确地格式化调用内容、记住之前的输出,避免重复循环等。
如果任务太多,单个代理很容易被压垮,因此很多情况下,表面上是一个代理在工作,实际上背后是多个代理一起协作完成任务。通过分工,不同的模型和代理可以同时处理不同的任务部分,从而更高效地解决问题。
然而,工具调用虽然强大,也有它的难点。代理需要理解可用的工具,选择合适的工具,准确地格式化输入,并可能根据其他代理或人的反馈调整调用。很多模型经过微调,专门用于精确地调用函数。


在微调工具调用模型时,有几个关键点需要考虑:
•    工具选择:模型需要理解工具之间的关系,选择最合适的工具,必要时进行嵌套调用。
•    格式处理:虽然大多数模型使用JSON格式进行工具调用,但其他格式如YAML或XML也可能使用。模型需要包含每个工具调用的适当参数。
•    数据集的多样性:用于训练的数据集应覆盖多步、多轮函数调用的复杂性,并进行适当评估,避免过拟合。


评估工具调用的基准


随着语言模型越来越多地使用工具,很多数据集应运而生,用来评估和提升模型的工具调用能力。最受欢迎的两个基准是伯克利函数调用排行榜(BFCL)和 Nexus 函数调用基准,Meta公司用它们来评估Llama 3.1系列模型的性能。
•    伯克利函数调用排行榜(BFCL):BFCL数据集包含2000个问题-函数-答案对,覆盖多种编程语言。目前有三个版本,每个版本都在不断增强,以更好地反映现实场景。最近的BFCL v3版本增加了多步、多轮工具调用,非常适合测试需要多次调用工具的代理应用。
•    Nexus 函数调用基准:这个基准评估模型在零样本函数调用和API使用方面的表现,覆盖单一调用、并行调用和嵌套调用任务。Nexusflow发布了专门用于函数调用的 NexusRaven-V2 模型。
•    ToolACE:ToolACE团队创造了一种生成合成数据集的方法,涵盖了单次调用、并行调用、嵌套调用等任务,并发布了一个微调的Llama-3.1-8B-Instruct模型。
这些基准有助于我们评估模型在工具调用上的推理能力,也反映了模型向更具专门化发展的趋势。

工具调用实例
如果你想了解工具调用的实际应用,以下是几个从简单到复杂的例子:
•    入门级:ChatGPT:这是体验工具调用的最佳起点,ChatGPT可以直接调用工具,例如进行网络搜索。比如,当你问“这周的最新AI新闻是什么?”ChatGPT-4o会进行网络搜索并给出结果。


•    中级:使用支持工具调用的模型并定义自定义工具:在这个阶段,你可以使用具有工具调用能力的模型,查看它们如何选择并使用工具。比如在Databricks Playground中使用Llama 3.1模型,定义一些自定义工具并观察模型如何调用它们。


•    高级:定义代理来执行工具调用:代理不仅能生成工具调用,还能执行它们。你可以使用LangGraph、AutoGen、Semantic Kernel等库快速创建代理,这些代理可以使用像GPT-4o或Llama 3.1这样的模型,支持用户对话并执行工具调用。


总之,
未来的代理系统将由具备强大推理能力的模型驱动,能够有效地与环境互动。随着研究的不断推进,我们可能会看到更多专门用于特定任务的小型模型出现,例如专注于工具调用和规划的模型。而通过结合这些能力,我们可以构建更有效的代理系统,提升用户体验。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值