Claude发布函数调用工具:Tool use 允许模型与外部系统进行交互

“Tool use (function calling)是Claude一个特定功能,允许它与外部客户端工具和函数进行交互。这使得Claude能够通过结构化输出与外部工具进行交互。如果得到指示,Claude可以从内部知识库和API中检索文档,完成需要实时数据或复杂计算的任务,并为具体请求协调Claude子代理。这意味着你可以为Claude装备自定义工具,以执行更广泛的任务。

使用Tool use (function calling)功能,可以显著扩展AI的能力,允许它执行许多超出基本文本生成和理解的任务通过这种功能,Claude不仅能够生成文本或回答问题,还能实际调用外部定义的函数或工具来执行特定操作,如获取当前的天气信息、执行数学计算等。

功能包括:

  1. 与外部工具的交互:Claude能够通过API与外部定义的工具进行交互,这些工具可以是任何客户端功能,如API调用、数据处理函数等。
  2. 自定义工具的集成:用户可以为Claude提供自定义工具集,包括工具的名称、描述和输入模式,这给予用户对Claude可以使用的工具完全的控制和灵活性。
  3. 增强任务执行能力:通过调用外部工具,Claude的能力得以扩展,不仅限于文本生成,还可以执行更复杂的操作,如获取实时数据、执行特定算法等。
  4. 个性化用户体验:用户可以根据自己的需要定义和提供工具,使Claude能够为特定的业务场景或个人需求提供个性化的解决方案。
  5. 公开测试阶段:这项功能目前处于公开测试阶段,Anthropic通过收集反馈持续迭代优化,以满足更广泛的用户需求。

Claude不仅能够与外部工具和API进行交互,还可以协调调用不同的子模型(子代理)来处理特定的请求。例如你可以将Claude Opus的智能与Claude Haiku的速度和经济性结合起来,处理大规模的数据和问题。 这意味着Claude能够根据需要选择并使用最适合完成特定任务的模型。这些子代理可能专门针对特定类型的问题或任务进行了优化,如文本理解、图像处理、数据分析等。

这样的设计使得Claude的应用范围大大扩展,提升了处理各种复杂任务的能力。例如,对于需要深度理解或专业知识的问题,Claude可以将请求转发给专门处理该领域问题的子代理;对于需要图像识别或处理的任务,它可以调用视觉处理模型来完成。

通过这种方式,Claude通过调用不同的模型或子代理,能够实现更精确、更高效的问题解决和任务执行,为用户提供更加丰富和专业的服务。

使用场景示例:

“Tool use (function calling)”功能极大地扩展了Claude的应用范围,从而能够支持更复杂、更具交互性的任务,进一步推动AI在各种场景下的实用性和创新性。

如何使用

以下是如何使用此功能的基本步骤:

1. 定义工具

首先,你需要定义一个或多个工具,每个工具都需要具备以下信息:

2. 提供工具给Claude

在API请求中,通过tools参数提供上述定义的工具集给Claude。例如,如果你有一个获取天气信息的工具,你需要在API请求中指定这个工具的名称、描述以及如何接收位置参数。

3. 构建用户提示

在API请求中,提供一个用户提示(user prompt),这个提示可能需要使用一个或多个先前定义的工具来回答。例如,“今天旧金山的天气怎么样?”可能需要调用一个获取天气的工具。

4. 解析Claude的工具使用请求

当Claude决定需要使用一个工具来回答用户的问题时,它会构造一个格式正确的工具使用请求,并在API响应中返回。这个响应将包含stop_reasontool_use,表明Claude希望使用一个外部工具。

5. 执行工具代码

在客户端,根据Claude的请求提取工具名称和输入参数,然后运行实际的工具代码。例如,如果Claude请求获取天气信息,你需要执行相应的代码来调用天气API。

6. 将结果返回给Claude

将工具的执行结果作为一个新的用户消息返回给Claude,包含一个tool_result内容块。Claude将使用这些信息来形成对原始用户提示的最终响应。

示例代码

以下是一个简化的示例,展示了如何向Claude提供工具并接收工具使用请求的过程:

{
“model”: “claude-3-opus-20240229”,
“max_tokens”: 1024,
“tools”: [
{
“name”: “get_weather”,
“description”: “Get the current weather in a given location”,
“input_schema”: {
“type”: “object”,
“properties”: {
“location”: {
“type”: “string”,
“description”: “The city and state, e.g. San Francisco, CA”
}
},
“required”: [“location”]
}
}
],
“messages”: [
{
“role”: “user”,
“content”: “What is the weather like in San Francisco?”
}
]
}

当收到工具使用请求后,你需要在客户端执行获取天气的工具,并将结果通过新的API请求返回给Claude。

注意事项

官方文档:https://docs.anthropic.com/claude/docs/tool-use

退出移动版