ReACT agent和FC agent

发布于:2025-02-24 ⋅ 阅读:(13) ⋅ 点赞:(0)

rag系列文章目录


前言

大模型时代llm正在改变我们的生活,它可以帮助人类写作,写代码,翻译等等,但是llm的知识在训练时被冻结,无法直接使用api接入外部数据,这就需要llm agent。下面简要介绍两种agent,分别是ReACT agent和Function Call agent。

一、简介

ReAct Agent结合了推理(Reasoning)和行动(Acting),使智能体能够在执行任务时进行动态推理和决策。这种方法通过提示模板引导模型进行推理和行动,具有较高的通用性和灵活性。

ReACT 过程是迭代的。agent不断循环推理和行动,在从维基百科等外部环境收集更多信息的同时,不断完善其计划。根据新信息,agent可能会决定调整其策略或探索不同的途径以达到预期结果。agent可以选择使用不同的工具或根据环境反馈修改其方法。通过与外部世界互动,agent可以不断更新其知识库,在后续迭代中改进其推理和决策。
在这里插入图片描述
Function Call Agent获取问题后,首先调用LLM ,LLM 会分析请求并根据其训练数据、提供的提示和任何可用的上下文确定要调用的最相关函数。 LLM 实际上并不执行函数本身,它只是输出一个包含函数名称和参数(必要的输入参数)的 JSON 对象。然后,agent获取此 JSON 输出,执行函数,并将结果发送回 LLM生成响应。
在这里插入图片描述

二、示例说明

以下通过简单案例说明两种agent的执行过程
1、FC agent过程

# 用户请求:查询上海天气
→ 模型识别需要调用天气API
→ 生成结构化参数:{"location": "上海", "unit": "celsius"}
→ 执行get_weather(location="上海")
→ 返回结果:"上海当前气温25℃"

2、React agent过程

# 用户请求:爱因斯坦的出生地是否在德国境内?
→ 推理:需要先确认爱因斯坦的出生地
→ 行动:调用维基百科API搜索"爱因斯坦出生地"
→ 观察:返回结果"乌尔姆,德国"
→ 推理:验证乌尔姆是否属于德国
→ 行动:调用地理数据库查询"乌尔姆 国家归属"
→ 观察:返回"属于德国巴登-符腾堡州"
→ 生成最终答案:"是的,爱因斯坦出生于德国乌尔姆"

三、对比

区别 React agent FC agent
核心理念 将推理和行动结合成一个连续的循环。LLM“思考”问题,决定要采取的步骤,让代理根据其推理采取行动,然后观察结果以完善其理解。 具有函数调用功能的 LLM 根据用户的请求建议函数和参数,应用程序处理实际执行并将结果返回给 LLM 以集成到其响应中。
Prompt 技巧 非常依赖React prompt技巧,需要引导llm进行迭代推理和行动 除了定义函数及其参数外,不需要特定的prompt技术
决策 llm根据推理结果和相关进行,自行决定采取的行动 llm只是分析要做的功能和参数,由应用程序决策
侧重点 强调推理和规划过程,使 LLM 行动更加透明和可解释 侧重于使 LLM 能够以结构化方式与外部工具和 API 进行交互
擅长 擅长处理需要多步推理、复杂规划和理解上下文的任务。可以处理更多未预先定义操作的开放式任务。 擅长将 LLM 与外部系统集成并通过定义明确的函数执行特定任务
缺点 由于涉及推理步骤,计算成本可能很高。需要付出更多努力来定义prompt和操作 不太适合操作未预先定义的开放式任务。在处理复杂的推理过程时灵活性可能较低
场景案例 基于 LLM 的聊天机器人可以通过在网络上搜索信息、总结结果并提供简洁的答案来回答多跳问题 基于 LLM 的助手可以通过调用旅行 API、提供航班详细信息,然后生成确认消息来预订航班

总结

ReACT agent和FC agent之间的选择取决于手头的具体任务。如果任务涉及复杂的推理和不易定义为函数的操作,ReACT agent可能是更好的选择。如果任务涉及调用特定 API 或执行明确定义的操作,函数调用代理可能更合适。