新智元报道

编辑:LRS

【新智元导读】OctoTools通过标准化工具卡和规划器,帮助LLMs高效完成复杂任务,无需额外训练。在16个任务中表现优异,比其他方法平均准确率高出9.3%,尤其在多步推理和工具使用方面优势明显。

大型语言模型(LLMs)目前仍然很难处理需要多步骤推理、特定领域知识或外部工具集成的复杂任务,有研究工作探索了使用预先构建的外部工具来增强LLMs处理复杂任务的能力,但这些方法需要对模型进行微调或额外训练以实现工具的集成,在不同任务之间难以灵活适应。

现有的方法要么依赖于静态的、预定义的工具集,要么缺乏高效的工具选择和规划机制,这种低效性会导致任务执行出错、计算成本增加,以及在应用于新领域时适应性受限。


传统增强LLMs的方法包括少量样本提示(few-shot prompting)、思维链(chain-of-thought reasoning)以及与外部工具接口的功能调用API;有的框架如LangChain和AutoGen允许LLMs够使用外部资源,但通常智能用于指定应用场景或需要大量的预配置,没有提供一种统一的多步骤规划和执行方法,因此在处理复杂推理问题时效果不佳。

此外,大多数现有方法缺乏对工具选择的结构化方法,导致执行效率低下。

最近,斯坦福大学推出一个无需训练、用户友好且易于扩展的开源智能体框架OctoTools框架,包含对工具选择的结构化方法,大幅提高执行效率的同时,还能够解决跨多个领域的复杂推理。

OctoTools引入了标准化的工具卡来封装工具功能,一个用于高级和低级规划的规划器(planner),以及一个执行工具使用的执行器(executor)。


论文链接:https://arxiv.org/pdf/2502.11271

代码链接:https://github.com/octotools/octotools

研究人员在16个不同的任务(包括MathVista、MMLU-Pro、MedQA和GAIA-Text)上验证了OctoTools的通用性,比GPT-4o的平均准确率提高了9.3%


此外,当提供相同的工具集时,OctoTools的性能全面优于AutoGen、GPT-Functions和LangChain,最多提高了10.6%的性能,在任务规划、有效工具使用和多步问题解决方面具有非常大的优势。

OctoTools框架

OctoTools框架的核心设计理念是让人工智能系统能够高效地使用外部工具,而无需额外的训练或框架调整。


主要包含工具卡片、规划器、执行器,还包含一个任务指定的工具集优化算法,能够学习为下游任务选择最有用的工具子集。

整个过程不断迭代,直到找到完整的解决方案。

工具卡片(Tool Cards)

工具卡片定义了工具使用的元数据,每个工具卡片的设计与框架是相对独立的,用户可以在不修改底层框架或智能体逻辑的情况下,轻松集成各种工具。

新的工具卡片可以无缝集成到框架中,而无需进行额外的训练或对框架进行调整,极大提高了工具的可扩展性和灵活性。


每个工具卡片代表一个工具及其必要的元数据,包括工具的名称、输入和输出类型,以及命令示例,为规划器和执行器提供了开发者的指导建议。

比如,图像描述工具(Image_Captioner_Tool)指出「在复杂场景中可能会出错」以及「可以考虑使用其他工具进行验证」;目标检测工具(Object_Detector_Tool)注明了其在检测对象方面的限制。

为了确保交互上的一致性,每个工具卡片都实现了两个标准功能:

execute()函数封装了工具的核心功能,例如生成代码片段或执行目标检测,执行结果以结构化格式存储,以支持不同的输出类型,例如生成的代码、检测到的目标或存储的文件;

get_metadata()函数允许规划器和执行器动态评估工具的能力,并理解其使用限制。

规划器(Planner)

规划器负责从宏观和微观两个层面进行规划,不仅关注整体目标,还会逐步细化每一步的动作,确保任务能够高效、精准地执行。

初始化

规划器首先会检查工具箱,加载所有工具卡片,每个工具都带有描述其输入输出模式和使用限制的元数据。

为了更高效地使用工具,规划器会根据专家建议或通过少量示例(few-shot)进行优化,选出工具子集。

查询分析与动作预测

当输入一个查询时,规划器会根据其初始化信息,为工具的使用制定一个初步的、宏观的计划:总结查询的目标,分析所需的技能,识别相关的工具,并特别指出需要验证的环节,确保每个后续的子目标都与原始查询保持一致。

随后,在每步内会提出一个行动(微观计划),实时细化并执行每个子目标,根据新信息或反馈进行调整。

上下文验证与解决方案总结

在每次执行命令后,上下文验证器会检查当前上下文是否已经解决了问题,是否所有子目标都已满足,并识别是否有模糊处理。

如果问题仍未解决,规划器会继续进入下一个循环,预测下一个动作。

整合答案时,会结合中间工具的输出,追溯推理步骤,并以简洁、用户友好的方式呈现最终解决方案。

执行器(Executor)

执行器负责生成可执行的命令,调用工具,并将结构化的结果保存在上下文中。

命令预测

当规划器预测出动作时,命令生成器(由语言模型驱动)会创建一个低层次的命令,形式为可执行的Python脚本,调用指定工具,并提供必要的输入,同时完成数据准备工作。

命令执行

命令执行器会在Python环境中运行生成的命令,并获取结果,包括工具的输出、日志或错误信息。轨迹保留了采取的动作、生成的代码以及获得的结果的清晰历史记录。

针对任务优化工具集

OctoTools工具箱包含多种工具,涵盖了不同的模态和技能,启用所有可用工具时具有很强的通用性,当为某个任务提供少量验证样本时,选出工具子集可以进一步提高效率和性能表现。

研究人员提出了一种自动化的算法为每个任务优化工具集配置,采用贪心搜索策略将计算复杂度降低到O(n),与工具数量线性相关。


实验结果

主要结论

研究人员对比了工具集优化后的框架OctoTools与其他三种基线方法的性能,包括:

1. 零样本(zero-shot):基础语言模型(gpt-4o-2024-08-06)直接回答问题,没有任何额外的提示;

2. 思维链(chain-of-thought,CoT):基础语言模型被提示“逐步思考”,以生成逐步推理的过程;

3. OctoTools基础版(OctoTools-base):仅使用基础工具,不进行任何外部集成。

在16个基准测试中,OctoTools在性能上取得了显著提升,比零样本和连贯推理基线分别高出9.3%和7.7%,比零样本(高出4.2%)和思维链(高出2.6%)的性能更强,表明该框架的逐步推理能力对性能的提升有显著贡献,即使不依赖外部工具集成也是如此。


其他智能体框架

研究人员还对比了三种常用的通用人工智能(GenAI)智能体框架:

1. GPT-Functions:使用GPT-4o通过函数调用用户指定的工具;

2. LangChain:提供多智能体协作、长期记忆和工具使用能力;

3. AutoGen:能够创建多个具有工具使用能力的自主智能体。

为了公平对比每个系统在多步骤中规划和使用工具的能力,研究人员将所有智能体框架(包括OctoTools)配置为使用相同的底层模型(GPT-4o)和超参数,使用相同的工具集,最大推理步数为10步,时间限制为300秒。


总体而言,OctoTools的表现优于其他智能体框架,平均准确率比AutoGen高出10.6%,比GPT-Functions高出7.5%,比LangChain高出7.3%


参考资料:

https://www.marktechpost.com/2025/02/22/stanford-researchers-introduce-octotools-a-training-free-open-source-agentic-ai-framework-designed-to-tackle-complex-reasoning-across-diverse-domains/

ad1 webp
ad2 webp
ad1 webp
ad2 webp