学习目标 #
- 1.了解整个工具使用工作流程
- 2.编写结构正确的 tool_result 消息
- 3.实现利用工具使用的聊天机器人
在本课中,我们将实现我们之前介绍的“完整”4 步工具使用工作流程。到目前为止,我们已经看到 Claude 使用了工具,但我们还没有向 Claude 发送包含我们工具功能结果的后续请求。以下是完整 4 步流程的回顾:
为 Claude 提供工具和用户提示:(API 请求) #
定义您希望 Claude 可以访问的工具集,包括其名称、描述和输入模式。
提供可能需要使用其中一个或多个工具来回答的用户提示,例如“我可以用 500 美元购买多少股通用汽车股票?”
Claude 使用工具:(API 响应) #
Claude 评估用户提示并决定是否有任何可用工具可以帮助用户的查询或任务。如果是,它还会决定使用哪个工具以及使用哪些输入。
Claude 输出格式正确的工具使用请求。
API 响应将具有 tool_use 的 stop_reason,表明 Claude 想要使用外部工具。
提取工具输入、运行代码并返回结果:(API 请求) #
在客户端,您应该从 Claude 的工具使用请求中提取工具名称和输入。
在客户端运行实际的工具代码。
通过使用包含 tool_result 内容块的新用户消息继续对话,将结果返回给 Claude。
Claude 使用工具结果来制定响应:(API 响应) #
收到工具结果后,Claude 将使用该信息来制定对原始用户提示的最终响应。
在本课中,我们将介绍整个过程。下面是该过程的总体概述图:
下面的图表解释了我们的脚本如何工作:
以下是一些真实的交流,说明了我们希望实现的最终结果:
用户:截至 2024 年,谁获得的奥斯卡奖更多,克里斯托弗·诺兰还是本·斯蒂勒?
克劳德想为克里斯托弗·诺兰(工具使用)写一篇文章
克劳德想为本·斯蒂勒(工具使用)写一篇文章
克劳德:截至 2024 年,电影制片人克里斯托弗·诺兰凭借 2023 年的电影《奥本海默》获得了 2 项奥斯卡最佳导演奖和最佳影片奖。另一方面,演员兼喜剧演员本·斯蒂勒迄今为止的职业生涯中还没有获得过任何奥斯卡奖,尽管他还获得了艾美奖和 MTV 电影奖等其他奖项。所以直接回答这个问题,截至 2024 年,克里斯托弗·诺兰获得的奥斯卡奖(2)比本·斯蒂勒多,而本·斯蒂勒没有获得任何奖项。
这是另一个例子:
用户:谁赢得了 2024 年大师赛?
Claude 想要获得一篇关于 2024 年大师赛的文章(工具使用)
Claude:Scottie Scheffler 赢得了 2024 年大师赛,这是他第二次赢得大师赛。他领先亚军 Ludvig Åberg 四杆,后者首次参加大师赛。
如果我们问 Claude 一个它不需要使用我们的工具就能回答的问题,它应该立即回答,而无需使用我们的维基百科搜索工具:
用户:谁赢得了 2021 年大师赛?
Claude:松山英树赢得了 2021 年大师赛,成为首位赢得大满贯高尔夫锦标赛的日本男子。他以 278(-10)的成绩在奥古斯塔国家高尔夫俱乐部夺得绿夹克。
以下是此过程结束时的消息列表: