Agent基础:大模型交互与推理技术Prompt 工程、Function Calling、ReAct、Self-Refine

以下是对四个紧密关联的大模型交互与推理技术------Prompt 工程、Function Calling、ReAct、Self-Refine------的系统化讲解。它们常被组合使用以提升大语言模型(LLMs)在复杂任务中的表现,尤其在构建智能 Agent 时。


一、定义解析

技术 全称/英文 中文含义 核心目标
Prompt 工程 Prompt Engineering 提示词工程 通过精心设计输入提示(prompt),引导模型输出更准确、可靠、符合任务需求的结果。
Function Calling Function Calling 函数调用 让 LLM 能够识别何时需要调用外部工具(如 API、数据库、计算器),并生成结构化参数供执行。
ReAct Reasoning + Acting 推理-行动协同范式 通过交替生成"推理"(Thought)和"动作"(Action),实现模型与环境的闭环交互,增强决策能力。
Self-Refine Self-Refinement 自我优化机制 模型在生成初步答案后,主动反思其质量,并基于反馈进行迭代修正,提升输出准确性或完整性。

✅ 这四项技术共同服务于一个更高目标:让 LLM 从"被动回答者"转变为"主动思考者+执行者"。


二、核心逻辑

1. Prompt 工程

  • 输入设计:通过指令(Instruction)、示例(Few-shot)、角色设定(Role)、约束条件(Constraints)等元素构造 prompt。
  • 输出引导:控制模型输出格式(如 JSON、步骤列表)、风格(正式/口语)、内容范围(避免幻觉)。
  • 关键技巧:链式思维(CoT)、分步引导、错误预防性提示(如"若不确定,请回答'我不知道'")。

2. Function Calling

  • 触发机制:模型判断当前任务是否需外部信息(如查天气、计算、搜索)。
  • 结构化输出 :模型不直接回答,而是输出函数名 + 参数(如 {"name": "get_weather", "args": {"city": "北京"}})。
  • 执行-反馈闭环:外部系统执行函数后,将结果作为新上下文输入模型,继续生成最终回答。

3. ReAct

  • 循环流程
    Thought → Action → Observation → Thought → ... → Final Answer
  • 双通道协同
    • Reasoning(推理):解释为何采取某动作、当前状态、目标进展;
    • Acting(行动):调用工具、点击按钮、查询数据库等。
  • 依赖外部环境:必须有可交互的"世界"(如网页、API、模拟器)提供 Observation。

4. Self-Refine

  • 三阶段流程
    1. 生成初稿(Draft):模型给出初步答案;
    2. 自我批评(Critique):分析答案的缺陷(如事实错误、逻辑漏洞、遗漏要点);
    3. 优化重写(Refine):基于批评生成改进版。
  • 可迭代多次:支持多轮 refine 直到满足质量阈值(或达到最大轮次)。

三、关键细节

技术 关键点 注意事项
Prompt 工程 - Few-shot 示例质量 > 数量 - 明确禁止幻觉的指令有效 - 使用 XML/JSON 标记结构化输出 避免模糊指令(如"好好回答");不同模型对 prompt 敏感度差异大
Function Calling - 需预定义函数 schema(名称、参数、描述) - 模型需训练/微调支持结构化输出 - 支持多函数并行调用(部分平台) 若函数描述不清,模型可能误调用;参数类型错误常见(如字符串 vs 数字)
ReAct - 推理需具体、可操作(避免空泛) - Observation 必须真实、及时 - 适用于多跳推理任务(如复杂问答、网页导航) 上下文长度限制易导致早期推理丢失;无外部环境则无法运行
Self-Refine - 批评环节需具体(不能只说"不好") - 初稿质量影响 refine 上限 - 可结合人类反馈或规则校验器 多轮 refine 可能陷入局部最优;增加延迟和 token 消耗

四、实例说明

场景:用户问「明天上海适合户外跑步吗?」

组合使用流程:
  1. Prompt 工程:系统预设角色为"健康助手",并要求"若需天气信息,请调用 get_weather 函数"。
  2. Function Calling
    • 模型输出:{"name": "get_weather", "args": {"city": "上海", "date": "tomorrow"}}
    • 系统执行后返回:{"temperature": 18°C, "condition": "多云", "aqi": 45}
  3. ReAct 循环
    • Thought: "AQI < 50 属于优,温度适宜,适合跑步。"
    • Action: 无(无需进一步工具)
    • Final Answer: "明天上海天气多云,18°C,空气质量优,非常适合户外跑步!"
  4. Self-Refine(可选)
    • 初稿:"明天可以跑步。"
    • 批评:"未说明原因,缺乏具体数据支撑。"
    • 优化后:"根据天气预报,明天上海18°C、多云、AQI 45,非常适合跑步。"

💡 实际系统中,这四项技术常被集成:Prompt 设定规则 → Function Calling 获取数据 → ReAct 规划步骤 → Self-Refine 优化表述。


五、常见误区

误区 纠正说明
误区1:认为"写好 prompt 就万能" Prompt 工程有上限,复杂任务必须结合工具调用与推理机制(如 ReAct)才能突破 LLM 的知识边界。
误区2:Function Calling = 普通 API 调用 关键区别在于:模型自主决定何时调用、调哪个函数、传什么参数,而非固定流程。
误区3:ReAct 就是 CoT + 工具调用 ReAct 强调动态交互闭环,而 CoT 是静态推理链。ReAct 能处理"工具返回失败需重试"等动态场景,CoT 不能。
误区4:Self-Refine 总能提升质量 若初稿存在根本性错误(如误解问题),自我批评可能无法识别;需结合外部验证(如检索、规则)才可靠。
误区5:四项技术必须全用 应按任务复杂度选择:简单问答只需 Prompt 工程;多跳查询用 ReAct + Function Calling;高精度输出可加 Self-Refine。

总结

这四项技术构成了现代 LLM Agent 的"认知骨架":

  • Prompt 工程是"语言接口",
  • Function Calling是"手脚",
  • ReAct是"行动大脑",
  • Self-Refine是"自我纠错机制"。

合理组合,方能打造真正可靠的智能体。

相关推荐
Elaine3363 小时前
Gemini生成的3D交互圣诞树(娱乐版)
3d·交互·three.js·前端可视化
MoSTChillax3 小时前
用 Figma Make 提示词生成可交互应用原型:从入门到避坑
prompt·figma·原型设计·产品原型·figma make
向下的大树3 小时前
React 环境搭建 + 完整 Demo 教程
前端·react.js·前端框架
2501_916007474 小时前
React Native 混淆在真项目中的方式,当 JS 和原生同时暴露
javascript·react native·react.js·ios·小程序·uni-app·iphone
终极前端开发协会4 小时前
【web前端 - 齐枭飞】乾坤【qiankun】应用,主项目与子项目交互详细代码,里面有详细代码,可直接粘贴过去 直接应用 ,
前端·前端框架·交互
用户8168694747255 小时前
Context API 的订阅机制与性能优化
前端·react.js
异界蜉蝣5 小时前
React Fiber架构:Diff算法的演进
前端·react.js·前端框架
T___T5 小时前
从 0 搭建 React 待办应用:状态管理、副作用与双向绑定模拟
前端·react.js·面试
xiaoxue..6 小时前
单向数据流不迷路:用 Todos 项目吃透 React 通信机制
前端·react.js·面试·前端框架