AI 工具 付费 ⏱ 阅读约 35 分钟 2026/6/1

用 Claude API 给你的项目加 AI 能力

手把手教你接入 Anthropic Claude API,实现流式输出、对话历史管理、系统提示词配置,10 行代码让你的应用拥有 AI 对话能力。

为什么选 Claude API

Claude 是 Anthropic 开发的 AI 模型,在代码生成、长文本理解、指令遵循方面表现优秀。

Claude 3.5 Sonnet 是目前性价比最高的选择:

  • 输入:$3 / 百万 tokens
  • 输出:$15 / 百万 tokens
  • 上下文窗口:200K tokens

第一步:获取 API Key

  1. 前往 console.anthropic.com
  2. 注册账号并充值(最低 $5)
  3. 进入 API KeysCreate Key
  4. 复制保存,只显示一次

第二步:安装 SDK

npm install @anthropic-ai/sdk

第三步:基础调用

import Anthropic from '@anthropic-ai/sdk';

const client = new Anthropic({
  apiKey: process.env.ANTHROPIC_API_KEY,
});

const message = await client.messages.create({
  model: 'claude-3-5-sonnet-20241022',
  max_tokens: 1024,
  messages: [
    {
      role: 'user',
      content: '用 TypeScript 写一个防抖函数',
    },
  ],
});

console.log(message.content[0].text);

第四步:流式输出(打字机效果)

// Express 接口示例
app.post('/api/chat', async (req, res) => {
  const { message } = req.body;

  // 设置 SSE 响应头
  res.setHeader('Content-Type', 'text/event-stream');
  res.setHeader('Cache-Control', 'no-cache');
  res.setHeader('Connection', 'keep-alive');

  const stream = await client.messages.stream({
    model: 'claude-3-5-sonnet-20241022',
    max_tokens: 2048,
    messages: [{ role: 'user', content: message }],
  });

  for await (const chunk of stream) {
    if (chunk.type === 'content_block_delta' && chunk.delta.type === 'text_delta') {
      res.write(`data: ${JSON.stringify({ text: chunk.delta.text })}

`);
    }
  }

  res.write('data: [DONE]

');
  res.end();
});

第五步:多轮对话

// 维护对话历史
const conversationHistory: Array<{ role: 'user' | 'assistant'; content: string }> = [];

async function chat(userMessage: string): Promise<string> {
  // 添加用户消息
  conversationHistory.push({ role: 'user', content: userMessage });

  const response = await client.messages.create({
    model: 'claude-3-5-sonnet-20241022',
    max_tokens: 1024,
    system: '你是一个专业的编程助手,用中文回答问题,代码要有注释。',
    messages: conversationHistory,
  });

  const assistantMessage = response.content[0].text;

  // 添加 AI 回复到历史
  conversationHistory.push({ role: 'assistant', content: assistantMessage });

  return assistantMessage;
}

第六步:系统提示词最佳实践

系统提示词(System Prompt)决定了 AI 的行为模式。

const systemPrompt = `
你是一个专业的客服助手,服务于一家在线教育平台。

你的职责:
1. 回答用户关于课程的问题
2. 帮助用户解决技术问题
3. 引导用户完成购买流程

你不应该:
1. 讨论与平台无关的话题
2. 提供竞争对手的信息
3. 做出超出你权限的承诺

回答风格:
- 简洁友好,不超过 200 字
- 如果不确定,说"我需要帮你转接人工客服"
`;

费用控制技巧

// 限制对话历史长度,避免 token 超支
function trimHistory(history: Message[], maxMessages = 20): Message[] {
  if (history.length <= maxMessages) return history;
  // 保留最近的消息,但始终保留第一条(通常是重要的上下文)
  return [history[0], ...history.slice(-(maxMessages - 1))];
}