04大模型应用策略体系

alex
5
2025-12-22

一、介绍:大模型应用策略体系

├── 推理策略

│ ├── 链式思考 (CoT)

│ └── ReAct(包含工具调用决策) ← 你的直觉部分正确

├── 工具调用策略

│ └── Function Calling(具体实现标准) ← 这是明确的工具调用策略

├── 优化策略

│ └── Reflection(自我改进策略) ← 这是质量策略

└── 规划策略

├── ToT(思维树)

└── GoT(思维图)

二、Function Calling(函数调用)、ReAct(Reasoning + Acting)、Reflection(反思)介绍

1、Function Calling(函数调用)

概念

Function Calling 是大模型与外部工具、API 和服务交互的标准方式,使 LLM 能够执行具体操作而不仅仅是生成文本。

核心机制

  • 函数描述:提供函数名、参数(类型、描述)和用途的清晰说明

  • 意图识别:模型分析用户请求,判断是否需要调用函数

  • 参数提取:从自然语言中提取结构化参数

  • 执行调用:系统执行实际函数调用

  • 结果整合:将执行结果融入模型回复

# 示例:OpenAI Function Calling格式
functions = [
    {
        "name": "get_weather",
        "description": "获取指定城市的天气信息",
        "parameters": {
            "type": "object",
            "properties": {
                "location": {"type": "string", "description": "城市名称"},
                "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}
            }
        }
    }
]

2、ReAct(Reasoning + Acting)

概念

ReAct 是一种结合推理(Reasoning)和行动(Acting)的框架,模仿人类“思考-行动-观察”的循环过程。

核心流程

思考 → 行动 → 观察 → 思考 → ...

关键技术组件

2.1. 推理(Reasoning)

  • 分析当前情况

  • 确定需要的信息

  • 规划下一步行动

2.2. 行动(Acting)

  • 选择适当的工具/动作

  • 执行具体操作

  • 包括Function Calling

2.3. 观察(Observation)

  • 接收行动结果

  • 更新上下文理解

2.4工作模式示例

用户:北京的人口是多少?比上海多吗?

ReAct循环:

1. 思考:需要获取北京和上海的人口数据

2. 行动:调用get_population("北京")

3. 观察:北京人口2189万

4. 思考:现在需要上海人口数据

5. 行动:调用get_population("上海")

6. 观察:上海人口2487万

7. 思考:上海人口更多,计算差异

8. 回答:上海人口更多,多出约298万人

class ReActAgent:
    def __init__(self, llm, tools):
        self.llm = llm
        self.tools = tools
        self.memory = []
    
    def step(self, observation):
        # 结合历史生成思考
        thought = self.llm.generate_reasoning(observation, self.memory)
        
        # 决定行动
        action = self.llm.decide_action(thought, self.tools)
        
        if action['type'] == 'tool_call':
            # 执行工具调用
            result = self.execute_tool(action)
            self.memory.append(('action', action, result))
            return result
        elif action['type'] == 'answer':
            return action['content']

3. Reflection(反思)

核心机制

1. 生成阶段

  • 模型产生初始回答

  • 包含推理过程

2. 反思阶段

  • 批判性评估自身回答

  • 识别问题:事实错误、逻辑漏洞、不完整等

  • 提出改进建议

3. 修正阶段

  • 基于反思结果重新生成

  • 整合改进意见

反思类型

自我反思

# 示例反思提示
reflection_prompt = """
请批判性评估以下回答:
1. 事实准确性如何?
2. 逻辑是否严密?
3. 是否完整回答了问题?
4. 有哪些可以改进的地方?

原始回答:{original_answer}
"""

多角度反思

  • 事实核查反思

  • 逻辑一致性反思

  • 完整性反思

  • 伦理安全性反思

实现模式

单次反思

输入 → 生成回答 → 反思 → 修正回答 → 输出

迭代反思

输入 → 生成 → 反思1 → 修正1 → 反思2 → 修正2 → ... → 输出

多模型反思

  • 主模型生成

  • 批评模型评估

  • 修正模型改进

class ReflectionAgent:
    def __init__(self, generator, critic):
        self.generator = generator  # 生成模型
        self.critic = critic        # 批判模型
    
    def reflect_and_refine(self, question, max_iterations=3):
        answer = self.generator(question)
        
        for i in range(max_iterations):
            # 反思
            critique = self.critic(question, answer)
            
            if critique['needs_improvement']:
                # 基于反思重新生成
                refinement_prompt = f"""
                原始回答:{answer}
                批评意见:{critique['feedback']}
                请改进回答:
                """
                answer = self.generator(refinement_prompt)
            else:
                break
        
        return answer

三者的关系与整合

用户问题

ReAct框架启动

├── 思考:分析问题需求

├── 行动:通过Function Calling获取信息

├── 观察:接收工具返回结果

└── 整合:生成初步答案

Reflection启动

├── 自我评估:检查准确性、完整性

├── 识别不足:发现遗漏或错误

└── 触发修正:可能需要额外Function Calling

最终优化答案

完整架构示例

class IntelligentAgent:
    def __init__(self, llm, tools):
        self.llm = llm
        self.tools = tools
        self.react = ReActModule(llm, tools)
        self.reflector = ReflectionModule(llm)
    
    def process(self, query, max_react_steps=5, max_reflections=2):
        # ReAct循环
        context = {"query": query}
        for step in range(max_react_steps):
            # 推理和行动
            thought, action = self.react.think_and_act(context)
            
            if action["type"] == "final_answer":
                # 进入反思阶段
                for ref in range(max_reflections):
                    improved = self.reflector.reflect_and_improve(
                        query, 
                        action["answer"]
                    )
                    if improved["satisfactory"]:
                        return improved["answer"]
                
                return action["answer"]
            
            # 执行工具调用
            result = self.execute_function(action)
            context.update(result)

Function Calling、ReAct、Reflection 对比总结表

技术特性对比

维度

Function Calling

ReAct

Reflection

核心理念

大模型调用外部工具的标准化接口

思考-行动-观察的推理循环

自我评估与改进的反思机制

主要目的

扩展LLM能力边界,连接外部系统

解决复杂多步问题,透明推理

提高输出质量,自我纠错

工作模式

单次或序列化函数调用

循环迭代:思考→行动→观察

生成→评估→改进循环

输出形式

结构化参数 → 执行结果

思考链 + 动作序列 + 结果

原始答案 + 反思 + 改进答案

关键技术

函数描述、意图识别、参数提取

推理规划、工具选择、状态跟踪

自我批评、错误识别、迭代优化

定位总结表

技术

在大模型中的本质

类比

所在层级

核心目标

Function Calling

一种标准化交互协议/接口

大模型的 “手和脚”

应用接口层

拓展能力边界,让大模型能安全、可控地调用外部工具和API,从“纯聊天”变为“能办事”。

ReAct

一种问题求解的框架/范式

大模型的 “思维和工作流”

推理决策层

增强复杂推理能力,通过“思考-行动”循环,将问题拆解、规划并执行,模仿人类的解决问题过程。

Reflection

一种自我优化的机制/过程

大模型的 “质检员和复盘系统”

后处理与优化层

提升输出质量和可靠性,通过自我评估、批评和修正,减少错误,让输出更准确、更周全。

架构角色对比

维度

Function Calling

ReAct

Reflection

在系统中的角色

执行层(手脚)

控制层(大脑)

质检层(监督员)

数据流向

单向:LLM → 参数 → 工具 → 结果

循环:思考 → 行动 → 观察 → 新思考

双向:生成 → 评估 → 再生成

依赖关系

依赖工具/API的可用性和质量

依赖Function Calling和推理能力

依赖评估标准和生成能力

可扩展性

高(添加新函数即可扩展)

中(需要调整推理逻辑)

中(需要定义反思标准)

三者的协同关系与演进视图

策略.png

应用场景对比

维度

Function Calling

ReAct

Reflection

典型用例

天气查询、计算、数据库操作

复杂研究、多步骤问题求解

内容审核、错误纠正、质量提升

问题复杂度

简单到中等(特定任务)

高(需要多步推理)

所有复杂度(侧重质量)

实时性要求

高(直接调用)

中(多步处理耗时)

低(额外反思时间)

准确性要求

取决于工具可靠性

中等(可中途调整)

极高(多次验证)

适用阶段

信息获取阶段

问题求解全过程

答案生成后处理

组合使用场景

组合模式

描述

适用场景

FC + ReAct

使用Function Calling作为ReAct的行动组件

需要外部数据的复杂问题求解

FC + Reflection

调用工具后对结果进行反思验证

高可靠性数据查询和报告生成

ReAct + Reflection

在ReAct循环中加入反思步骤

科学研究、复杂决策支持

FC + ReAct + Reflection

完整智能体架构

自主AI系统、高要求专业助手

选择指南

考虑因素

推荐技术

理由

简单工具调用

Function Calling

直接、高效、标准化

复杂多步问题

ReAct

透明推理、灵活调整

高质量输出要求

Reflection

自我改进、减少错误

实时性优先

Function Calling

延迟最低

可解释性重要

ReAct + Reflection

完整思考和改进过程可见

成本敏感

Function Calling

计算开销最小

可靠性关键

三者结合

全面质量保证

更精准的分类

1. Function Calling → 纯粹的“工具调用策略”

  • 定位:工具调用的执行层规范

  • 核心问题:“工具调用这件事,应该用什么格式、什么标准来做?”

  • 类比:HTTP协议之于网络通信——定义了通信的格式和规则

2. ReAct → “推理与行动策略”

  • 包含:工具调用策略 + 推理策略 + 状态管理策略

  • 核心问题:“面对复杂问题,应该如何思考、何时行动、如何决策?”

  • 工具调用在ReAct中:只是Action的一种具体实现方式

  • 类比:项目管理方法论——包含任务分配(工具调用)、进度跟踪、决策调整

3. Reflection → “质量改进策略”

  • 可能涉及工具调用:但只是作为验证手段

  • 核心问题:“如何评估和改进已有的输出/决策?”

  • 类比:软件测试和质量审查流程——可能发现bug需要修复(调用工具验证)

动物装饰