anthropic-sdk-typescript
Anthropic 官方 TypeScript SDK,Node.js 环境下一行命令安装,访问 C
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Anthropic 官方 TypeScript SDK,Node.js 环境下一行命令安装,访问 C
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下,你想在自己写的网站后台调用 Claude 完成智能问答,但你不想直接折腾 HTTP 请求的签名、鉴权、重试逻辑——就好比你用微信支付不需要自己写加密算法一样。Claude SDK for TypeScript 就是帮你把这些底层细节封装好的官方工具包,让你只需要几行代码,就能让 Claude 替你干活。
这个包由 Anthropic 官方维护,是访问 Claude API 最规范、最稳定的途径。截至目前已有超过 1991 颗 GitHub 星标,被超过 350 个项目 fork 引用,NPM 周下载量持续增长。
图1:@anthropic-ai/sdk 在 NPM 上的版本徽章
Claude SDK for TypeScript 是 Anthropic 在 2024 年正式推出的官方 TypeScript 客户端库。它的出现背景是:随着 Claude API 功能越来越丰富(工具调用、Agent、MCP、流式输出、结构化输出等),开发者需要一个强类型、高可维护性的封装层,而不是每次都自己拼 JSON 请求。
这个 SDK 的设计哲学非常明确:TypeScript First。所有的 API 响应、工具定义、消息参数都有完整的类型标注,配合 Zod schema 验证,开发体验接近于本地函数调用。包作者还引入了 @modelcontextprotocol/sdk 作为开发依赖,表明对 MCP(Model Context Protocol)生态的原生支持。
该仓库目前已积累超过 1100 次提交,288 个正式发布版本,版本号遵循 release-please 自动化发布流程,由 GitHub Actions 驱动,版本管理极为规范。
Claude SDK 的源码结构清晰,分为以下几个核心模块:
| 模块 | 路径 | 职责 |
|---|---|---|
| client | src/client.ts | SDK 入口,管理 HTTP 客户端、配置和请求分发 |
| resources | src/resources/ | 按 API 资源划分:messages、completions、models、beta |
| tools | src/tools/ | 工具调用核心,包含 agent-toolset 和 memory 工具包 |
| core | src/core/ | 底层 HTTP 请求、重试、错误处理逻辑 |
| streaming | src/streaming.ts | Server-Sent Events 流式输出封装 |
| pagination | src/pagination.ts | 分页支持(cursor-based pagination) |
| uploads | src/uploads.ts | 文件上传支持(PDF、图片等多媒体输入) |
这种按资源类型分层的架构,最大好处是按需引入。如果你只需要消息 API,只需导入 client.messages;如果你要用 Agent,只需要 client.beta.environments,不会把整个 SDK 的重量都带进来。
最基础的调用方式,几行代码完成一次完整的对话:
import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic(); // 自动从环境变量读取 ANTHROPIC_API_KEY
const message = await client.messages.create({
max_tokens: 1024,
messages: [{ role: 'user', content: 'Hello, Claude' }],
model: 'claude-opus-4-6',
});
console.log(message.content);
Claude 的工具调用能力是这个 SDK 最强大的部分。开发者可以定义任意自定义工具,Claude 会自动决定何时调用哪个工具、传什么参数,并自动处理多轮对话中的上下文传递:
const tools: Anthropic.Tool[] = [
{
name: 'get_weather',
description: '获取指定地点的天气',
input_schema: {
type: 'object',
properties: { location: { type: 'string' } },
},
},
];
const message = await client.messages.create({
model: 'claude-sonnet-4-5-20250929',
max_tokens: 1024,
messages: [{ role: 'user', content: 'SF 的天气如何?' }],
tools,
});
// Claude 自动返回 tool_use 类型的内容块
SDK 的一大亮点是对 Model Context Protocol 的原生支持。MCP 是一种让 AI 模型连接外部数据源和工具的标准化协议。通过 SDK 提供的 mcp_servers 参数,你可以直接配置 MCP 服务器地址,让 Claude 在对话中自动调用这些外部工具:
anthropic.beta.messages.stream({
model: 'claude-sonnet-4-5-20250929',
mcp_servers: [{
type: 'url',
url: 'http://mcp-server.example.com/sse',
name: 'my-server',
tool_configuration: {
enabled: true,
allowed_tools: ['echo', 'add'], // 白名单控制
},
}],
messages: [{ role: 'user', content: 'Calculate 1+2' }],
});
SDK 的 Beta 接口还提供了完整的 Agent 管理能力:创建环境(Environment)、注册 Agent、管理 Session(会话)、流式接收事件。这使得开发者可以在自己的应用中构建多 Agent 系统:
const environment = await client.beta.environments.create({ name: 'my-env' });
const agent = await client.beta.agents.create({ name: 'my-agent', model: 'claude-sonnet-4-6' });
const session = await client.beta.sessions.create({ environment_id: environment.id, agent: { type: 'agent', id: agent.id } });
// 向 Session 发送消息,流式接收 Agent 响应
SDK 支持 Server-Sent Events 流式输出,可以逐 token 渲染 AI 的思考过程和回复,非常适合前端聊天界面:
const stream = client.messages.stream({
messages: [{ role: 'user', content: '如何用 Rust 递归列出目录?' }],
model: 'claude-sonnet-4-5-20250929',
max_tokens: 1024,
});
stream.on('contentBlock', (block) => console.log('contentBlock:', block));
stream.on('message', (msg) => console.log('message:', msg));
for await (const event of stream) {
console.log('event:', event);
}
配合 Zod 或 JSON Schema,SDK 可以强制 Claude 以特定 JSON 格式输出,非常适合数据提取、分类等场景:
// 使用 Zod 定义输出结构
const tools = [{
name: 'extract_info',
description: 'Extract structured info',
input_schema: { type: 'object', properties: {...} },
}];
const result = await client.messages.create({ ..., tools });
安装极其简单:
npm install @anthropic-ai/sdk
# 或
yarn add @anthropic-ai/sdk
# 或
pnpm add @anthropic-ai/sdk
环境要求:Node.js 18 以上,无需 GPU,无需特殊硬件,一台普通的 Node 服务器即可运行。
SDK 会自动从环境变量 ANTHROPIC_API_KEY 读取 API 密钥。如果你习惯显式传入,也可以在初始化时传入:
const client = new Anthropic({ apiKey: 'sk-...' });
CLI 工具:bin/cli 提供了命令行接口,支持直接运行 prompt 而无需写代码文件。
peerDependencies 中 Zod 是可选的,但如果需要 Zod schema 验证的自动补全和类型推断,建议安装 zod@^3.25.0 || ^4.0.0。Claude SDK for TypeScript 的出现,标志着 Claude 生态从"通用 API 调用"走向"专业化 SDK 生态"。随着 Claude 在企业场景中的深度应用,强类型 SDK 的价值愈发凸显:类型安全降低了生产环境的 bug 率,模块化设计让按需引入成为可能,而对 MCP 协议的原生支持则让 Claude 可以无缝接入更广泛的 AI 工具生态。
对于 TypeScript/Node.js 开发者来说,这个 SDK 是接入 Claude 最规范、最省心的路径。Anthropic 官方维护保证了与 API 版本的同步更新,而超过 350 个 fork 项目表明它已经被广泛参考和衍生使用。