Function Call & ReACT,Agent应用落地的加速器

图片

探索智能体Agent的未来之路:Function Call与ReACT框架的较量,谁能引领未来?

©作者|格林

来源|神州问学

引言

各大平台出现智能体应用创建,智能体逐渐落地,背后的使用哪种框架?

随着各大平台,例如百度千帆APPbuilder、阿里百炼、字节的扣子等等,逐渐落地智能体应用,其背后的技术和框架引起了广泛关注。智能体(Agent),也称为代理 ,是一种使用大语言模型(LLM)来促进推理过程并根据模型的建议采取行动的实体。尽管大语言模型在自然语言理解和生成方面取得了巨大进步,但仍然也存在一些限制:知识有限并难以实时更新、缺乏审查与安全控制、以及无法直接执行语言之外的任务。光使用模型本身现阶段还难以直接满足实际场景的需求,因此,开发智能体成为了一种应用解决方案。

智能体的基本概念是在没有人工定义工作流(Workflow)的情况下,利用外部工具或功能,选择要执行的一系列操作。对于 toB 产品,智能体能够解决功能点繁多、使用链路冗长、使用方法复杂难上手等问题。从技术角度来看,智能体通过大模型理解用户意图并生成结构化描述,进而执行相关操作。因此,智能体在实际应用中扮演着至关重要的角色,成为了连接大模型和现有应用的桥梁。

市场上现在出现了众多种类的智能体应用,其中大致可以分为两种主要的方式:以ReACT行动链为主的较为复杂的智能体结构,和以Function Calling(函数调用)模型为主的轻量级智能体结构。

一、 两种框架原理概述:

“吟游诗人分为两种,一种懂得如何写诗,另一种懂得根据意境引用别人写的诗”

1.1.  ReACT 大致原理与历史

在大模型的涌现能力刚被人们发掘的时候,人们意识到生成式AI的潜力可能不止局限于文本内容的生成,如果让大模型能够和外部世界交互,是不是就能获得更广泛的信息,甚至对外部环境造成一定影响?基于这个出发点,研究者把推理(例如思维链提示)和行动(例如 WebGPT、SayCan、ACT-1)进行结合,并提出了ReACT框架,其核心思想是将推理和行动结合起来,形成一个智能、自主的智能体结构,并拥有与外部环境交互的能力。

ReACT框架的一个关键特点是其任务拆解模块,能够将复杂的任务拆解成一系列更小、更明确的子任务,这些子任务更容易被模型理解和执行,让模型不再“消化不良”。例如,ReACT可以帮助模型决定进行API调用、执行查询等操作,天气预报、计算器是大家耳熟能详的例子。这样,模型就可以在与外部源交互的过程中收集更多的信息,以更好地完成复杂的任务。

图片

ReACT技术的一个关键挑战是如何在API调用中处理函数参数。为了解决这个问题,通常需要要求模型返回特定格式的响应,以便区分不同的阶段(思考、行动、观察)。

图片

ReAct框架的应用已经在多种语言和决策任务中得到了验证,其有效性在问答、事实验证等任务中得到了展示。在早期的智能体应用尝试中,LangChain就提供了以ReACT为框架的智能体应用开发方式。基于ReAct通过与简单的维基百科API交互,生成类似人类的任务解决轨迹,比没有推理痕迹的基线更容易解释。这种方式也成为了业界对于智能体应用的早期定义:有着较为明确的自然语言规划列表,以及一套复杂的工具使用方式。

ReAct框架的成功激发了更多类似的研究和项目,如XAgent、Autogen等。这些项目都对智

### 如何在 React 函数组件中调用 Agent 模型 为了在 React 函数组件中调用 Agent 模型的方法,可以遵循以下模式。Agent 的核心是由 LLM 驱动的大脑模块[^1],因此可以通过定义清晰的接口来与其交互。 #### 定义 Agent 接口 首先,在前端环境中集成 Agent 模型时,通常需要通过 API 或者本地 SDK 来实现通信。假设我们有一个名为 `agentApi` 的对象,它封装了与 Agent 模型交互的功能: ```javascript // 假设这是用于调用 Agent 方法的 API 封装 const agentApi = { callFunction: async (functionName, params) => { const response = await fetch('/api/agent', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ functionName, params }), }); return response.json(); } }; ``` #### 在函数组件中使用 Agent 接下来是在 React 函数组件中实际调用这些方法的方式。这里展示了一个简单的例子,说明如何触发 Agent 并处理其返回的结果。 ```jsx import React, { useState } from 'react'; const MyComponent = () => { const [result, setResult] = useState(null); const handleCallAgent = async () => { try { // 调用 Agent 中的一个具体功能 const functionResponse = await agentApi.callFunction('exampleFunction', { param1: 'value1' }); // 更新状态以显示结果 setResult(functionResponse); } catch (error) { console.error('Error calling agent:', error); } }; return ( <div> <h3>Calling Agent Model</h3> <button onClick={handleCallAgent}>Call Agent Function</button> {result && <p>Result: {JSON.stringify(result)}</p>} </div> ); }; export default MyComponent; ``` 上述代码展示了如何在一个按钮点击事件中调用 Agent 提供的功能,并将结果显示给用户。这里的重点在于通过 `fetch` 请求向后端发送数据并接收响应。 #### 自定义属性支持(可选) 如果涉及到更复杂的场景,比如自定义图像或其他媒体类型的输入,则可以根据环境配置额外的支持机制。例如 HTML `<image>` 标签语法可用于注册某些特性[^2],这可能适用于特定的应用程序上下文中。 另外,对于进一步优化用户体验而言,还可以利用设置中的规则选项来自定义 AI 行为[^3],从而更好地满足不同用户的个性化需求。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值