SuperAPI AI 工具集

anthropic-tools

Anthropic 官方发布的工具与函数调用 SDK 实验项目,用于让 Claude 模型调用外部工具(如搜索、SQL 等),核心包含 BaseTool 与 ToolUser 两个类,并引入结构化 messages 提示格式。该仓库已标注弃用,不再维护,官方建议改用 Anthropic API 的工具调用功能;官方文档地址为 https://docs.anthropic.com/en/docs/build-with-claude/tool-use。项目处于 Alpha 阶段,仅作为研究预览,官方不承诺持续支持,不适用于生产环境。

访问官网

工具介绍

本项目是 Anthropic 推出的工具/函数调用(tool use / function calling)Python SDK,用于配合 Anthropic 模型使用外部工具。需要先明确:仓库已发布弃用通知,不再维护,官方建议改用 https://docs.anthropic.com/en/docs/build-with-claude/tool-use 中所述的官方 API 实现;同时该项目处于 Alpha 阶段,仅作研究预览,官方不承诺持续支持,也不适用于生产环境,生产可用的函数调用支持当时即将加入 Anthropic API。

主要能力与使用方式:

一、环境准备。需将 Anthropic API Key 设置为环境变量;若通过 AWS Bedrock 访问 Claude,则改为设置对应的 Bedrock 环境变量。可选:如需测试 Brave 搜索工具,需将 Brave API Key 设为环境变量。随后创建 Python 虚拟环境并安装依赖。

二、核心架构。项目提供两个主要类:BaseTool 和 ToolUser。BaseTool 用于定义单个工具,继承该类并实现 use_tool() 方法即可;实例化时需要传入 name(工具名称)、description(供 Claude 阅读的工具功能描述)和 parameters(工具接受的参数),并注意各自格式。ToolUser 接收一个由 BaseTool 子类组成的工具列表,创建实例后调用 use_tools() 方法并传入提示即可使用这些工具。执行模式设为 "automatic" 时会自动执行函数;默认的 "manual" 模式则把函数参数返回给客户端,由客户端自行执行。若通过 AWS Bedrock 访问 Claude,需将 first_party 参数设为 False(默认 True);使用 Bedrock 时该 SDK 仅支持 claude 2.1(anthropic.claude-v2:1)。

三、结构化 messages 格式。项目引入新的结构化输入输出格式,即消息字典组成的 Python 列表,意在模仿 Messages API 格式。单个消息字典可能包含多个字段,但不会同时包含全部字段。其中 tool_inputs 是字典列表,每个字典以 'tool_name' 键表示要使用的工具、以 'tool_arguments' 键表示传给该工具的参数;tool_inputs 消息也可附带 content(可为空字符串,也可包含工具调用请求之前的助手内容),消息按 {content}{tool_inputs} 顺序渲染给 Claude。官方提示:虽然返回前已尝试校验 tool_arguments,执行函数前仍建议额外检查,以防恶意或无效参数,也可在 use_tools 方法内部完成。tool_outputs 同样是字典列表,以 'tool_name' 键表示工具、以 'tool_result' 键表示结果;强烈建议(非强制)仅为已请求的 tool_inputs 提供 tool_outputs,并保持与 tool_inputs 相同顺序;tool_outputs 消息不能带 content,否则会报错。若 Claude 请求了不存在的工具或参数无效,应停止解析,改为向 Claude 回传带描述性 tool_error 的消息,而不是发送 tool_outputs。

四、执行模式差异。automatic 模式会代为处理 Claude 的全部 tool_inputs 消息、在输入上执行工具、向 Claude 传递错误等,只在 Claude 未发出工具使用请求(即返回 role='assistant' 的消息)时停下并返回下一条消息。该模式便于上手,但会隐藏中间过程,使用户无法在调用 use_tool() 前自行校验参数、无法细粒度控制回传给 Claude 的错误、也无法看到中间产生的 tool_inputs 与 tool_outputs 消息。manual 模式则保留上述能力:调用 use_tools() 后停在下一个消息(例如 tool_inputs 消息),由用户提供 tool_outputs 并传入新的消息集合以继续。项目还演示了如何编写轻量函数,在 manual 模式下自动解析 Claude 的响应并生成新的消息列表,返回包含 next_action(指示下一步应询问用户还是自动回传工具结果)与 messages(最新消息列表)的字典。

五、预置工具与示例。项目内置多个基于相同原语构建的常用工具,例如搜索或 SQL,方便更简单地使用。examples 文件夹提供常见用例与更高级用法示例,EXAMPLES.md 中有操作指引,包括:让 Claude 访问某个 API、让 Claude 调用 SQL 数据库、让 Claude 跨多种数据源搜索。

限制与状态:仓库已弃用、不再维护;SDK 为 Alpha 研究预览,不承诺支持,不用于生产;Bedrock 场景仅支持 claude 2.1;tool_outputs 不得包含 content;参数校验不保证完备,执行前需自行检查。其他未在资料中提及的内容暂未提供。