# 小测验（不计分）[[quiz2]]

现在该测试您对*代码智能体*、*工具调用智能体*和*工具*章节的理解了。本测验为可选且不计分。

---

### Q1: 使用 `@tool` 装饰器创建工具与创建 `Tool` 的子类之间的主要区别是什么？

以下哪个陈述最能描述这两种定义工具方法的区别？

@tool 装饰器是检索类工具的强制要求，而 Tool 的子类仅用于文本生成任务",
    explain: "两种方法都适用于任何类型的工具，包括检索类和文本生成类工具。",
  },
  {
    text: "推荐使用 @tool 装饰器创建简单的基于函数的工具，而 Tool 的子类能为复杂功能或自定义元数据提供更大灵活性",
    explain: "正确。装饰器方法更简单，但子类化允许更定制化的行为。",
    correct: true
  },
  {
    text: "@tool 只能用于多智能体系统，而创建 Tool 的子类适用于单智能体场景",
    explain: "所有智能体（单或多）都可以使用这两种方法定义工具，没有此类限制。",
  },
  {
    text: "用 @tool 装饰函数可以替代文档字符串，而子类工具必须不包含文档字符串",
    explain: "两种方法都需要清晰的文档字符串。装饰器不会替代它们，子类仍然可以包含文档字符串。",
  }
]}
/>

---

### Q2: CodeAgent 如何使用 ReAct（推理+行动）方法处理多步骤任务？

哪个陈述正确描述了 CodeAgent 执行系列步骤来解决任务的方式？

---

### Q3: 在 Hugging Face Hub 上共享工具的主要优势是什么？

选择开发者可能上传和共享自定义工具的最佳原因。

---

### Q4: ToolCallingAgent 在执行操作方面与 CodeAgent 有何不同？

选择准确描述 ToolCallingAgent 工作方式的选项。

---

### Q5: smolagents 默认工具箱包含哪些内容？为什么要使用它？

哪个陈述最能体现 smolagents 默认工具箱的目的和内容？

---

恭喜完成测验！🎉 如果有任何问题让您感到困难，请重新访问*代码智能体*、*工具调用智能体*或*工具*章节以加强理解。如果您表现出色，那么您已踏上构建强大 smolagents 应用的道路！

