“Tool use (function calling)是Claude一个特定功能,允许它与外部客户端工具和函数进行交互。这使得Claude能够通过结构化输出与外部工具进行交互。如果得到指示,Claude可以从内部知识库和API中检索文档,完成需要实时数据或复杂计算的任务,并为具体请求协调Claude子代理。这意味着你可以为Claude装备自定义工具,以执行更广泛的任务。
使用Tool use (function calling)功能,可以显著扩展AI的能力,允许它执行许多超出基本文本生成和理解的任务通过这种功能,Claude不仅能够生成文本或回答问题,还能实际调用外部定义的函数或工具来执行特定操作,如获取当前的天气信息、执行数学计算等。
功能包括:
- 与外部工具的交互:Claude能够通过API与外部定义的工具进行交互,这些工具可以是任何客户端功能,如API调用、数据处理函数等。
- 自定义工具的集成:用户可以为Claude提供自定义工具集,包括工具的名称、描述和输入模式,这给予用户对Claude可以使用的工具完全的控制和灵活性。
- 增强任务执行能力:通过调用外部工具,Claude的能力得以扩展,不仅限于文本生成,还可以执行更复杂的操作,如获取实时数据、执行特定算法等。
- 个性化用户体验:用户可以根据自己的需要定义和提供工具,使Claude能够为特定的业务场景或个人需求提供个性化的解决方案。
- 公开测试阶段:这项功能目前处于公开测试阶段,Anthropic通过收集反馈持续迭代优化,以满足更广泛的用户需求。
Claude不仅能够与外部工具和API进行交互,还可以协调调用不同的子模型(子代理)来处理特定的请求。例如你可以将Claude Opus的智能与Claude Haiku的速度和经济性结合起来,处理大规模的数据和问题。 这意味着Claude能够根据需要选择并使用最适合完成特定任务的模型。这些子代理可能专门针对特定类型的问题或任务进行了优化,如文本理解、图像处理、数据分析等。
这样的设计使得Claude的应用范围大大扩展,提升了处理各种复杂任务的能力。例如,对于需要深度理解或专业知识的问题,Claude可以将请求转发给专门处理该领域问题的子代理;对于需要图像识别或处理的任务,它可以调用视觉处理模型来完成。
通过这种方式,Claude通过调用不同的模型或子代理,能够实现更精确、更高效的问题解决和任务执行,为用户提供更加丰富和专业的服务。
使用场景示例:
-
获取实时数据
- 调用外部API获取最新的天气信息、股票市场数据、新闻更新等。 用户可以询问Claude关于天气、股市或最新新闻的问题,Claude通过调用相应的外部API来提供实时数据。
执行计算和数据分析
- 利用外部工具进行复杂的数学计算、数据分析或统计操作,比如财务分析、科学计算等。 用户请求特定的计算或数据分析时,Claude将调用指定的工具来执行这些任务并返回结果。
内容创作与编辑
- 自动化地生成或编辑图像、视频或音频内容,比如根据用户的描述创建个性化的图像或视频。 用户可以描述他们想要的内容类型,Claude使用集成的内容创作工具来生成或编辑媒体文件。
语言翻译
- 调用翻译API将用户输入的文本翻译成其他语言,或者实现双向实时翻译功能。 通过向Claude提供翻译工具,用户可以
获得即时翻译服务,无论是将文本从一种语言翻译成另一种语言,还是进行实时双向翻译。
自动化工作流程
- 通过集成CRM系统、项目管理工具或其他企业应用软件,Claude能帮助自动化各种工作流程,如自动更新任务状态、查询客户信息或自动生成各类报告。
交互式游戏与教育应用
- Claude能够利用特定工具来创建交互式教育内容或游戏,提升学习体验。这包括语言学习应用中的对话练习、数学题求解等。
健康和健身指导
- 通过分析用户提供的健康数据或健身目标,Claude可以生成个性化的饮食和锻炼计划,帮助用户达成他们的健康和健身目标。
旅行和地理信息服务
- Claude可以提供旅行规划建议,查询特定地点的信息,或为用户制定个性化的旅游指南,帮助用户规划旅行。
社交媒体管理
- 通过分析趋势和用户行为,Claude可以帮助管理社交媒体账户,自动生成或推荐内容发布策略,提高社交媒体的互动和参与度。
客户服务和支持
- 集成客户服务系统后,Claude能够自动回答客户的常见问题,处理客户请求,或在需要时将客户请求转接给人工客服,提升客户服务效率和质量。
“Tool use (function calling)”功能极大地扩展了Claude的应用范围,从而能够支持更复杂、更具交互性的任务,进一步推动AI在各种场景下的实用性和创新性。
如何使用
以下是如何使用此功能的基本步骤:
1. 定义工具
首先,你需要定义一个或多个工具,每个工具都需要具备以下信息:
- 名称(name):工具的唯一标识符。
- 描述(description):详细说明工具的功能、使用场景和行为方式。
- 输入模式(input_schema):定义工具期望接收的参数,使用JSON Schema格式。
2. 提供工具给Claude
在API请求中,通过tools
参数提供上述定义的工具集给Claude。例如,如果你有一个获取天气信息的工具,你需要在API请求中指定这个工具的名称、描述以及如何接收位置参数。
3. 构建用户提示
在API请求中,提供一个用户提示(user prompt),这个提示可能需要使用一个或多个先前定义的工具来回答。例如,“今天旧金山的天气怎么样?”可能需要调用一个获取天气的工具。
4. 解析Claude的工具使用请求
当Claude决定需要使用一个工具来回答用户的问题时,它会构造一个格式正确的工具使用请求,并在API响应中返回。这个响应将包含stop_reason
为tool_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。
注意事项
- 在公开测试阶段,某些功能(如流式传输)可能尚不支持。
- 工具必须由用户在每个API请求中明确提供,Claude不包含任何内置的服务器端工具。
- 确保工具描述尽可能详细,以便Claude正确理解和使用它们。