Tool Calling Patterns: ReAct 与其它工具调用方式
其他意图识别与工具调用方式 除了传统的 Slot Filling 和现代的 Function Calling,AI Agent 还有多种实现意图识别和工具调用的方式,各有特点和适用场景。 1. ReAct(Reasoning + Acting) ReAct 是一种让 LLM 交替进行推理(Reasoning)和行动(Acting)的方法,通过思维链(Chain of Thought)引导 LLM 一步步分析问题并选择工具。 工作原理 用户输入 → LLM 推理(Thought) → 决定行动(Action) → 执行工具 → 观察结果(Observation) → 继续推理 → ... 实现示例 react_prompt_template = """ 你是一个智能助手,可以使用以下工具: 1. search(query): 搜索信息 2. calculate(expression): 计算数学表达式 3. get_weather(city): 查询天气 请按以下格式回答: Thought: [你的思考过程] Action: [工具名称] Action Input: [工具参数] Observation: [工具返回的结果] ... (重复 Thought/Action/Observation 直到得出答案) Answer: [最终答案] 问题:{question} """ # 用户问题:"北京明天的天气适合户外活动吗?" # LLM 输出: """ Thought: 我需要先查询北京明天的天气 Action: get_weather Action Input: {"city": "北京", "date": "明天"} Observation: 明天北京天气:晴,温度 22°C,微风 Thought: 根据天气信息,晴天、温度适中、微风,非常适合户外活动 Answer: 根据天气预报,北京明天天气晴朗,温度 22°C,微风,非常适合户外活动。 """ 优势 可解释性强:每一步推理过程都清晰可见 灵活性高:LLM 可以动态调整策略 支持复杂任务:可以进行多步推理和工具调用 劣势 Token 消耗大:每次推理都需要完整的对话历史 速度较慢:需要多次 LLM 调用 格式依赖:依赖 LLM 严格遵循输出格式 2. Prompt-based Tool Selection(基于提示的工具选择) 通过精心设计的 Prompt 让 LLM 直接输出工具调用的 JSON 或结构化文本。 ...