加载中

您的第一次 API 调用

第 2 课5 分钟
加载中

您的第一次 API 调用

向 Claude 打招呼也许能让您心生暖意,但这并没有什么实际用处。在本课中,我们将向 Claude 发送一些真实的内容,并获取结构化的洞察——只需不到 20 行代码。

环境搭建

首先,从 platform.claude.com 获取一个 API 密钥。在进行第一次 API 调用之前,请在 Claude Console 的账单页面确认您有余额。如果没有,请在那里充值。

Claude Console 对话框显示了一个新创建的 API 密钥,带有复制密钥按钮,并有一条警告提示该密钥之后将无法再次查看

将该 API 密钥存放在 .env.local 文件中,使其不纳入版本控制。把密钥硬编码在源文件中正是它们最终泄露到 GitHub 上的原因——请将它们放在环境文件中。

接下来,安装 SDK:

npm install @anthropic-ai/sdk

请求的结构

每次 API 调用都通过 messages.create 函数进行。您需要指定三项内容:

  • 一个模型——由哪个 Claude 模型来处理该请求
  • 一个 max tokens 限制——对响应长度的上限设置
  • 一份消息列表——具有 user 或 assistant 角色的对象,其结构与您在其他地方与 Claude 对话的方式类似

以下是其最基本形式的样子:

typescript
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic();

const msg = await client.messages.create({
  model: "claude-sonnet-5",
  max_tokens: 2048,
  messages: [{
    role: "user",
    content: "Hello, Claude",
  }],
});

一个真实示例:审查有缺陷的代码

让我们给 Claude 一些比"hello"更有意思的东西。我们会给它一些有缺陷的代码,并让它进行审查。下面就是全部内容——一个文件,大约 20 行代码:

typescript
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic();

const buggyCode = `
function add(a, b) {
  return a - b;
}
`;

const response = await client.messages.create({
  model: "claude-sonnet-5",
  max_tokens: 2048,
  system: "You are a terse senior code reviewer. Give feedback in one paragraph.",
  messages: [
    { role: "user", content: `Review this code:\n${buggyCode}` },
  ],
});

for (const block of response.content) {
  if (block.type === "text") {
    console.log(block.text);
  }
}

这里有两点需要注意:

  1. system 提示是您塑造人设的地方。我想要一个言简意赅的资深审查者,而不是喋喋不休的那种——所以我就这样说明。
  2. 响应中的 message.content 是一个由多个块组成的数组,而不是一个字符串。对于一个基本的文本回复,通常只有一个 text 类型的块,但 Claude 可以返回多个块——文本、工具调用、思考——所以我们始终要遍历并检查每个块的类型。

运行它,Claude 会发现 add 实际上在做减法,并用一段话告诉您。就是这样,整个 API 调用就完成了。

运行脚本后的终端输出:Claude 回应说该函数名为 add,但实际使用的是减法,并建议将 return a - b 改为 return a + b

从脚本到产品

在真实的产品中,同样的 messages.create 结构正是诸如摘要接口之类功能背后的引擎。从数据库中取出一份会议记录,连同一个写着"提取要点和风险"的系统提示一起交给 Claude,将结果保存回该数据行,再返回给前端界面。这其实是同一次调用——只是被包装在了一个路由处理函数中而已。

一个演示性网页应用中的会议仪表盘,列出了已记录的项目会议,每条记录都带有一段转录预览,以及一个由同一 API 调用驱动的"生成摘要"按钮

小结

  • 您的第一次 API 调用是一个 messages.create 函数,它包含一个模型、一个令牌限制以及消息。
  • 将您的 API 密钥存放在 .env.local 文件中,使其不纳入版本控制。
  • 添加一个系统提示来塑造 Claude 的行为。
  • 响应中的 content 是一个由多个块组成的数组——请遍历并检查每个块的 type。
  • 从这里开始,之后的一切都是在此模式之上构建的。