加载中

智能体代表着从我们之前探讨的结构化工作流程中的一次转变。工作流程在您知道完成任务所需确切步骤时表现出色,而智能体则在前进路径不明确时大放异彩。您不需要定义一个严格的序列,而是给 Claude 一个目标和一组工具,然后让它自己弄清楚如何组合这些工具来实现目标。

这种灵活性使智能体对开发者很有吸引力。您可以构建一次智能体,确保它运行得相当不错,然后将其部署以处理各种各样的任务。然而,这种方法在可靠性和成本方面存在显著的缺点,我们将在后面探讨。

工具如何造就智能体

智能体的真正力量在于它们能够以意想不到的方式组合简单的工具。考虑一下我们在课程前面介绍过的一组基本日期时间工具:

  • get_current_datetime - 返回当前日期和时间
  • add_duration_to_datetime - 为给定日期添加时间
  • set_reminder - 为特定时间创建提醒

每个工具本身都很简单,但 Claude 可以组合它们来处理各种各样的请求:

对于"现在几点了?",Claude 只需调用 get_current_datetime。对于"11 天后是星期几?",它会先调用 get_current_datetime,然后调用 add_duration_to_datetime。像"设置一个下周三去健身房的提醒"这样更复杂的请求,则需要按顺序使用全部三个工具。

Claude 甚至能够识别何时需要额外的信息。当被问到"我的 90 天保修期什么时候到期?"时,它会先询问用户何时获得保修,然后使用该信息配合 add_duration_to_datetime 来计算到期日期。

工具应该是抽象的

构建有效智能体的关键洞见是提供相当抽象的工具,而不是高度专业化的工具。Claude Code 完美地展示了这一原则。

Claude Code 拥有通用、灵活的工具:

  • bash - 运行命令
  • glob - 查找文件
  • grep - 搜索文件内容
  • read - 读取文件
  • write - 创建文件
  • edit - 编辑文件
  • webfetch - 获取 URL

请注意 Claude Code 没有什么——像"重构"、"运行测试"或"安装依赖项"这样的专用工具。相反,它通过组合可用的基本工具来弄清楚如何完成这些任务。要安装依赖项,它会读取项目文件以了解配置,然后使用 bash 运行适当的安装命令。

最佳实践:提供相当抽象的工具

在构建智能体时,应专注于 Claude 可以创造性地组合的工具,而不是只能解决一个特定问题的工具。考虑一个社交媒体视频创作智能体:

适用于该智能体的有效工具可能包括:

  • bash - 提供对 FFMPEG 的访问以进行视频处理
  • generate_image - 根据文本提示创建图像
  • text_to_speech - 将文本转换为音频
  • post_media - 将内容发布到社交媒体

这套工具既能实现简单的交互,也能实现复杂的交互。用户可能会请求"创建并发布一个关于 Python 编程的视频",智能体会自动处理一切。或者,交互也可以更具协作性:

用户可能会说"我想让你制作一个关于 Python 的视频,但我想先为视频挑选一张初始图像"。智能体可以生成一张示例图像,展示给用户以供批准,一旦确认后再继续进行视频创作。

这种灵活性自然地源于在您的工具中提供恰当的抽象层次。每个工具都应该足够通用,以便在多种场景中都有用,但同时也要足够具体,以便在与其他工具组合时能够完成有意义的工作。