支持私有云部署
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


AI大模型的2种模型能力Function call 和ReAct

发布日期:2025-04-02 17:33:46 浏览次数: 1558 作者:AgentLight
推荐语

AI大模型如何实现与现实世界交互?Function Call和ReAct能力是关键。

核心内容:
1. AI大模型交互能力的重要性及Function Call和ReAct的提出背景
2. Function Call的技术原理、代码示例和典型应用场景
3. ReAct的技术原理及其在复杂任务执行中的优势

杨芳贤
53A创始人/腾讯云(TVP)最具价值专家

年来,随着AI大模型的快速发展,如何让这些模型更好地与现实世界交互成为了一个重要课题。Function Call 和 ReAct 作为两种重要的模型能力,为大模型提供了更强大的工具调用和任务执行能力。我们将深入探讨这两种能力的背景、原理、应用场景以及它们之间的对比。帮助你深入了解他们的价值。



01

背景介绍


AI大模型(如GPT-4、PaLM等)在自然语言处理、文本生成等任务中表现出色,但它们的能力往往局限于文本生成和推理。为了让大模型能够与现实世界中的工具、API或外部系统交互,研究人员提出了 Function Call 和 ReAct 两种能力。


  • Function Call:允许大模型调用外部函数或API,从而扩展其能力范围。

  • ReAct:结合推理(Reasoning)和行动(Action),使模型能够在复杂任务中动态规划并执行多步操作


    这两种能力的出现,标志着大模型从“纯文本生成”向“任务执行”的转变。


02

Function Call


2.1 技术原理


Function Call 是一种让大模型调用外部函数或API的能力。其核心思想是将模型的输出解析为具体的函数调用请求,然后由外部系统执行该请求并返回结果。模型可以根据任务需求动态选择需要调用的函数


具体流程如下:


  1. 模型接收用户输入。进行意图识别判断是否来调用函数。

  2. 模型根据输入内容生成函数调用请求(包括函数名和参数)。

  3. 外部系统执行数并返回结果。

  4. 模型将结果整合,并将结果转化为自然语言进行输出



    2.2 代码示例


    以下是一个简单的Function Call示例,假设我们有一个天气查询API


# 定义天气查询函数def get_weather(city: str):    # 调用天气API(假设已实现)    return f"Weather in {city}: Sunny, 25°C" # 模型生成的函数调用请求function_call = {    "name": "get_weather",    "parameters": {"city": "北京天气怎么样"}} # 执行函数调用result = get_weather(**function_call["parameters"])print(result)  # 输出: 北京: 晴天, 25°C


当用户在输入“北京天气怎么样”时,模型可以自动的来进行API的调取,获取天气信息,并返回结果。


2.3 典型应用场景


  • 工具调用:如查询天气、翻译文本、计算数学公式等。

  • 数据获取:从数据库或API中获取实时数据。

  • 自动化任务:如发送邮件、生成报告等。



03

ReAct


3.1 技术原理


ReAct(Reasoning + Acting)是一种结合推理和行动的任务执行框架。与Function Call不同,ReAct不仅调用工具,还通过多步推理动态规划任务执行路径。模型会根据当前状态和环境反馈决定下一步行动


ReAct的核心流程:


  1. 模型接收任务输入。

  2. 模型进行推理,生成下一步行动(如调用工具或回答问题)。

  3. 执行行动并获取结果。

  4. 根据结果更新状态,继续推理,直到任务完成。


    3.2 代码示例

以下是一个简单的ReAct示例,假设任务是查询某城市的天气并推荐是否适合出行:

# 定义工具函数def get_weather(city: str):    return f"Weather in {city}: Sunny, 25°C" # ReAct任务执行def react_task(city: str):    # 第一步:获取天气    weather = get_weather(city)    print(weather)        # 第二步:推理是否适合出行    if "Sunny" in weather:        return f"It's a good day to visit {city}!"    else:        return f"Maybe reconsider visiting {city}." # 执行任务result = react_task("Beijing")print(result)  # 输出: It's a good day to visit Beijing!


如果你输入“北京”,它会返回:“Weather in Beijing: Sunny, 25°C”(北京天气:晴天,25摄氏度)。


第二步呢,
它会根据天气信息,判断是否适合出行:


  • 如果天气是晴天(Sunny),它会告诉你:“It's a good day to visit [城市名]!”(今天很适合去这个城市玩!)。

  • 如果天气不是晴天,它会建议你:“Maybe reconsider visiting [城市名].”(也许你应该重新考虑是否去这个城市)。

    那整体的代码执行呢就是:

  • 你告诉任务:“请帮我判断北京是否适合出行。”

  • 任务会先获取北京的天气,发现是晴天,于是告诉你:“It's a good day to visit Beijing!”(今天很适合去北京玩!)。



3.3 典型应用场景


  • 复杂任务规划:如旅行规划、项目分解等。

  • 动态决策:根据环境反馈调整行动策略。

  • 多工具协作:结合多个工具完成复杂任务。



04

Function Call 和 ReAct 对比


特性
Function Call
ReAct
核心能力调用外部函数或API

推理 + 行动

动态规划任务

通用场景简单工具调用、数据获取

复杂任务规

多步推理

灵活性

依赖预定义函数

可动态调整行动路径

实现复杂度简单较高
交互性单向调用多轮交互



05

案例解析


任务:根据用户输入的书名,查询书籍的详细信息,并判断是否值得阅读。


使用 Function Call 实现:


步骤:

  1. 调用一个“书籍查询工具”,根据书名获取书籍的详细信息(比如评分、作者等)。

  2. 根据书籍的评分,直接判断是否值得阅读。

运行过程:

  • 用户输入书名:《小王子》。

  • 系统调用“书籍查询工具”,获取《小王子》的评分(比如 4.5/5)。

  • 系统直接判断:如果评分大于 4,就推荐阅读。

  • 返回结果:“《小王子》评分 4.5,值得阅读!”



使用 ReAct 实现

步骤:

  1. 推理用户的需求:用户想了解《小王子》是否值得阅读。

  2. 调用“书籍查询工具”,获取《小王子》的详细信息(评分、作者、简介等)。

  3. 推理是否需要进一步分析:比如,除了评分,还要看作者的知名度。

  4. 调用“作者信息工具”,查询《小王子》的作者(圣埃克苏佩里)的知名度。

  5. 综合评分和作者知名度,判断是否值得阅读。

  6. 返回结果:“《小王子》评分 4.5,作者是著名作家圣埃克苏佩里,强烈推荐阅读!”


显然,ReAct在复杂任务中表现更优,而Function Call更适合简单直接的调用场景。



06

总结



Function Call 和 ReAct 是AI大模型的两大重要能力,它们分别适用于不同的场景


  • Function Call 适合简单、直接的、确定性的任务

  • ReAct 合复杂、多步推理的任务规划


随着AI技术的进一步发展,这两种能力将为大模型带来更广泛的应用场景,从简单的工具调用到复杂的任务执行,AI大模型的能力边界将不断扩展。未来,我们可以期待更多结合这两种能力的创新应用,为各行各业带来更多可能性。

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询