8.5 本章实战练习

8.5 本章实战练习

本节提供实战练习,帮助读者掌握 ReAct 框架和函数调用的实际编写技巧。

练习一:理解 ReAct 的 Thought-Action 循环

目标:不写代码,纯手写模拟一个 智能体(agent) 的思考与行动过程,建立对 ReAct 范式的直觉认知。

场景背景: 你(扮演 AI 模型)拥有一个工具箱,里面有两个工具:

  1. wikipedia_search(query):返回关于这个词条的第一段摘要。

  2. calculator(expression):返回数学表达式的结算结果。

用户问题: “Leo DiCaprio 拿奥斯卡影帝的那部电影,当年全球票房除以 1000 万是多少?”

任务: 请完全按照 Thought(思考) -> Action(行动) -> Observation(观察)的格式,写出解决这个问题的完整日志。

示例格式

Thought: 我需要知道 Leo DiCaprio 拿奥斯卡影帝的电影是哪部。
Action: wikipedia_search("Leonardo DiCaprio Oscar best actor movie")
Observation: [假设 Wikipedia 返回:莱昂纳多·迪卡普里奥在 2016 年凭借《荒野猎人》(The Revenant)获得奥斯卡最佳男主角...]
...

练习二:设计函数调用 Schema

目标:掌握如何为大模型编写清晰的工具调用 Schema(以 JSON 结构定义)。

场景背景: 你正在为一个电商智能客服开发 智能体(agent)。你需要提供一个“查询订单物流”的工具。

任务: 请根据 OpenAI 或通用大模型的 Function Calling 格式要求,编写这个工具的 JSON Schema。

要求包含:

  1. 工具名称(必须为英文单词及下划线组合)

  2. 工具描述(给模型看的,描述非常关键,要说明何时调用它)

  3. 参数定义:必须包含 order_id(字符串),user_phone(字符串,可选用于验证),以及明确这些参数的描述。


练习三:防范”工具级联故障”

目标:设计更鲁棒的 智能体(agent) 系统提示词,处理工具调用出错的情况。

场景描述: 如果上面练习二中的“查询订单物流”工具由于网络问题返回了:{"error": "API Timeout, please try again later"}。 很多初级 智能体(agent) 看到这个报错,会立刻直接转述给用户:“API 超时了,请稍后再试。”这就暴露了内部实现,体验很差。

任务: 为这个 智能体(agent) 编写一段 专属的系统提示词,以规范它在使用工具遇到各种错误时的表现。 要求处理以下三种情况:

  1. 工具报错(如超时、500 错误)。

  2. 工具返回“未找到该订单”(无数据)。

  3. 模型自身的参数提取失败或猜测。

挑战:如何用最简洁的语言,让模型像一个专业、有温度的客服一样“兜底”这些工程问题?

最后更新于