GPT - 4o、Deepseek - R1 等高级模型已展现出令人惊叹的「深度思考」能力:理解上下文关联、拆解多步骤问题、甚至通过思维链(Chain - of - Thought)进行自我验证、自我反思等推理过程。
但是,多数主流模型仍在基础问题上犯错,复杂四则运算计算失误,简单「两个小数比大小」出错、甚至连数清楚 strawberry 里有几个「r」都能翻车……即使提示像 R1 这样具备深度思考能力的大模型也要消耗大量的 token 才能勉强答对。
合适的工具调用能够拓展大模型的能力边界,但现有工具调用方式将大模型限制在预设的工具使用框架内,更像是一个被动的「提线木偶」,而非真正具备主动性的智能体。主要体现在以下几个方面:
复旦大学知识工场实验室团队在开源项目 SimpleGRPO 中开源实现了大模型自主工具调用机制,通过引入大模型的深度思考能力,从根本上重构了大模型工具调用的范式。该技术使大模型实现了从被动执行的「提线木偶」到具备自主决策能力的智能体的根本跃迁。
表. 一般模型和融入思考进行自主工具调用的模型在工具调用上的能力表现的差异
我们使用强化学习算法给 LLM 装上「决策中枢」,实现两种神仙模式:
方案 1【边想边干】:LLM 思考到一半突然写代码辅助解决 → 编译器运行 → 继续思考完成后续的推理
当大模型在生成推理或解决问题的过程中,意识到某些步骤需要借助编程工具(如 Python)来完成时,它会直接生成相应的代码片段,并通过编译器执行这些代码,执行结果会被捕获并作为输入重新融入到大模型的推理过程中。
这种即时反馈机制使得模型能够动态调整后续的生成内容。这种方式类似于人类在解决问题时,发现某个计算或分析任务复杂到需要用程序来辅助,便动手编写代码并运行结果。
方案 2【专业分工】:LLM 负责提需求,直接说「我需要计算 38 和 16 的最小公倍数」,专属代码小弟秒速响应!强强联手更精准!
生成模型在推理过程中,当遇到需要编程工具协助的任务时,会明确描述出需求。例如,「我需要计算一组数据的标准差」或「请帮我实现一个排序算法」。这种需求描述通常以自然语言的形式表达,清晰且易于理解。接收到需求后,专门的代码生成模型会根据描述生成对应的 Python 代码。
该模型经过大量代码训练,擅长将自然语言需求转化为准确的代码实现。生成的代码通过编译器执行,执行结果被返回给生成模型。生成模型根据结果调整后续推理路径,确保整个过程连贯一致。
大模型自主调用 Python 命令行
我们首先在简单数学题上验证模型能否通过强化学习学会调用工具计算器来辅助解决问题,并观察其泛化性。我们设定模型可在回答中通过「>>>」调用 Python 命令行,检测到需要调用 python 程序时,编译执行并将代码运行结果插入到先前的生成过程中。以 Qwen2.5 - 7B 为基础模型,在 GSM8K 上训练。
以前:瞎蒙(甚至理直气壮答错)
现在:秒写代码 print(3.11 > 3.9),输出 False,铁证如山!
以前:靠概率硬猜(结果常漏数)
现在:直接上代码 "strawberry".count('r'),精准输出 3!
模型调用 Python 程序
面对更难的问题时,我们发现命令行难以发挥作用。例如,模型使用 Python 来解方程时,需要导入相应的包,如果使用互相独立的命令行难以完成,将多个命令行一起执行则模型容易在格式和代码编写上出错。因此,我们尝试让模型自己写整段的 python 程序。
训练结果如下:
模型内心 OS:「这题手算会崩,看我召唤 Python!」
实验细节
1、训练数据集构建:
从 MATH、Numina、OpenThoughts 中筛选训练问题时按照以下原则:
2、测试数据集: 以 GSM8K 题目为原型,将其中的数值替换成超大(9~11 位)或者更加复杂(小数)的数值。
3、算法:GRPO
4、训练技巧:
5、模型选择:
生成模型:Qwen2.5 - 7B - Instruct
代码模型:Qwen2.5 - 7B - Instruct
实验结果
以前:硬着头皮硬算,强行编答案
现在:思考后主动使用工具辅助解决
其他有意思的观察:
当模型编写的 python 代码出现编译报错、没有输出或运行超时:
以前:出现错误后,后续生成的内容全部出错
现在:模型会根据报错信息继续调整策略
以前:特定领域微调后并不会迁移到未见任务上
现在:掌握工具后可以在其他领域灵活使用
case1: Knight & Knave (Logic - RL)
case2: CountDown
我们探索了结合大模型的深度思考能力提升大模型自主工具调用的能力的两种方式,包括让大模型边思考边行动、以及让大模型提出调用工具的需求。
我们发现,通过强化学习的训练方式,边想边干和专业分工两种方式都能够使大模型灵活、自主地调用工具,并在生成过程中多次调用工具,将工具调用的结果无缝融入后续的推理与决策流程中。
更重要的是,这种自主工具调用能力展现出强大的泛化性,能够成功应用于完全未见过的任务场景,表现出令人惊叹的潜力。
这一研究成果为未来大模型深度思考能力的实际应用提供了重要的参考价值和技术基础。我们计划在不久后发布相关技术报告或论文,对这些方法进行更详细的阐述和讨论,敬请期待。
文章来自于“机器之心”,作者“肖仰华教授、梁家卿青年副研究员领导,博士生韩槿一,硕士生李廷云、熊程元、姜子上、王昕奕等同学”。
【开源免费】Browser-use 是一个用户AI代理直接可以控制浏览器的工具。它能够让AI 自动执行浏览器中的各种任务,如比较价格、添加购物车、回复各种社交媒体等。
项目地址:https://github.com/browser-use/browser-use
【开源免费】AutoGPT是一个允许用户创建和运行智能体的(AI Agents)项目。用户创建的智能体能够自动执行各种任务,从而让AI有步骤的去解决实际问题。
项目地址:https://github.com/Significant-Gravitas/AutoGPT
【开源免费】MetaGPT是一个“软件开发公司”的智能体项目,只需要输入一句话的老板需求,MetaGPT即可输出用户故事 / 竞品分析 / 需求 / 数据结构 / APIs / 文件等软件开发的相关内容。MetaGPT内置了各种AI角色,包括产品经理 / 架构师 / 项目经理 / 工程师,MetaGPT提供了一个精心调配的软件公司研发全过程的SOP。
项目地址:https://github.com/geekan/MetaGPT/blob/main/docs/README_CN.md
【开源免费】XTuner 是一个高效、灵活、全能的轻量化大模型微调工具库。它帮助开发者提供一个简单易用的平台,可以对大语言模型(LLM)和多模态图文模型(VLM)进行预训练和轻量级微调。XTuner 支持多种微调算法,如 QLoRA、LoRA 和全量参数微调。
项目地址:https://github.com/InternLM/xtuner
【开源免费】LangGPT 是一个通过结构化和模板化的方法,编写高质量的AI提示词的开源项目。它可以让任何非专业的用户轻松创建高水平的提示词,进而高质量的帮助用户通过AI解决问题。
项目地址:https://github.com/langgptai/LangGPT/blob/main/README_zh.md
在线使用:https://kimi.moonshot.cn/kimiplus/conpg00t7lagbbsfqkq0